diff --git a/.ci/actool.sh b/.ci/actool.sh new file mode 100755 index 0000000000..5be658d2bb --- /dev/null +++ b/.ci/actool.sh @@ -0,0 +1,22 @@ +#!/bin/sh -e + +# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + +# SPDX-FileCopyrightText: Copyright 2026 crueter +# SPDX-License-Identifier: GPL-3.0-or-later + +_svg=dev.eden_emu.eden.svg +_icon=dist/eden.icon +_composed="$_icon/Assets/$_svg" +_svg="dist/$_svg" + +rm "$_composed" +cp "$_svg" "$_composed" + +xcrun actool "$_icon" \ + --compile dist \ + --platform macosx \ + --minimum-deployment-target 11.0 \ + --app-icon eden \ + --output-partial-info-plist /dev/null diff --git a/.ci/android/build.sh b/.ci/android/build.sh index 1fb721b3b2..b76fb80bdd 100755 --- a/.ci/android/build.sh +++ b/.ci/android/build.sh @@ -1,21 +1,137 @@ -#!/bin/bash -e +#!/bin/sh -e -# SPDX-FileCopyrightText: 2025 eden Emulator Project +# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project # SPDX-License-Identifier: GPL-3.0-or-later -export NDK_CCACHE=$(which ccache) +NUM_JOBS=$(nproc 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null || echo 2) +export CMAKE_BUILD_PARALLEL_LEVEL="${NUM_JOBS}" +ARTIFACTS_DIR="$PWD/artifacts" -if [ ! -z "${ANDROID_KEYSTORE_B64}" ]; then +: "${CCACHE:=false}" +RETURN=0 + +usage() { + cat < Build flavor (variable: TARGET) + Valid values are: legacy, optimized, standard, chromeos + Default: standard + -b, --build-type Build type (variable: TYPE) + Valid values are: Release, RelWithDebInfo, Debug + Default: Debug + -n, --nightly Create a nightly build. + +Extra arguments are passed to CMake (e.g. -DCMAKE_OPTION_NAME=VALUE) +Set the CCACHE variable to "true" to enable build caching. +The APK and AAB will be output into "artifacts". + +EOF + + exit "$RETURN" +} + +die() { + echo "-- ! $*" >&2 + RETURN=1 usage +} + +target() { + [ -z "$1" ] && die "You must specify a valid target." + + TARGET="$1" +} + +type() { + [ -z "$1" ] && die "You must specify a valid type." + + TYPE="$1" +} + +while true; do + case "$1" in + -r|--release) DEVEL=false ;; + -t|--target) target "$2"; shift ;; + -b|--build-type) type "$2"; shift ;; + -n|--nightly) NIGHTLY=true ;; + -h|--help) usage ;; + *) break ;; + esac + + shift +done + +: "${TARGET:=standard}" +: "${TYPE:=Release}" +: "${DEVEL:=true}" + +TARGET_LOWER=$(echo "$TARGET" | tr '[:upper:]' '[:lower:]') + +case "$TARGET_LOWER" in + legacy) FLAVOR=Legacy ;; + optimized) FLAVOR=GenshinSpoof ;; + standard) FLAVOR=Mainline ;; + chromeos) FLAVOR=ChromeOS ;; + *) die "Invalid build flavor $TARGET." +esac + +case "$TYPE" in + RelWithDebInfo|Release|Debug) ;; + *) die "Invalid build type $TYPE." +esac + +LOWER_FLAVOR=$(echo "$FLAVOR" | sed 's/./\L&/') +LOWER_TYPE=$(echo "$TYPE" | sed 's/./\L&/') + +if [ -n "${ANDROID_KEYSTORE_B64}" ]; then export ANDROID_KEYSTORE_FILE="${GITHUB_WORKSPACE}/ks.jks" - base64 --decode <<< "${ANDROID_KEYSTORE_B64}" > "${ANDROID_KEYSTORE_FILE}" + echo "${ANDROID_KEYSTORE_B64}" | base64 --decode > "${ANDROID_KEYSTORE_FILE}" + SHA1SUM=$(keytool -list -v -storepass "${ANDROID_KEYSTORE_PASS}" -keystore "${ANDROID_KEYSTORE_FILE}" | grep SHA1 | cut -d " " -f3) + echo "-- Keystore SHA1 is ${SHA1SUM}" fi cd src/android chmod +x ./gradlew -./gradlew assembleRelease -./gradlew bundleRelease +set -- "$@" -DUSE_CCACHE="${CCACHE}" -if [ ! -z "${ANDROID_KEYSTORE_B64}" ]; then +nightly() { + [ "$NIGHTLY" = "true" ] +} + +if nightly || [ "$DEVEL" != "true" ]; then + set -- "$@" -DENABLE_UPDATE_CHECKER=ON +fi + +if nightly; then + NIGHTLY=true +else + NIGHTLY=false +fi + +echo "-- building..." + +./gradlew "copy${FLAVOR}${TYPE}Outputs" \ + -Dorg.gradle.caching="${CCACHE}" \ + -Dorg.gradle.parallel="${CCACHE}" \ + -Dorg.gradle.workers.max="${NUM_JOBS}" \ + -PYUZU_ANDROID_ARGS="$*" \ + -Pnightly="$NIGHTLY" \ + --info + +if [ -n "${ANDROID_KEYSTORE_B64}" ]; then rm "${ANDROID_KEYSTORE_FILE}" fi + +echo "-- Done! APK and AAB artifacts are in ${ARTIFACTS_DIR}" + +ls -l "${ARTIFACTS_DIR}/" diff --git a/.ci/android/package.sh b/.ci/android/package.sh deleted file mode 100755 index c2eb975a02..0000000000 --- a/.ci/android/package.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh - -# SPDX-FileCopyrightText: 2025 eden Emulator Project -# SPDX-License-Identifier: GPL-3.0-or-later - -GITDATE="$(git show -s --date=short --format='%ad' | sed 's/-//g')" -GITREV="$(git show -s --format='%h')" -ARTIFACTS_DIR="$PWD/artifacts" -mkdir -p "${ARTIFACTS_DIR}/" - -REV_NAME="eden-android-${GITDATE}-${GITREV}" -BUILD_FLAVOR="mainline" -BUILD_TYPE_LOWER="release" -BUILD_TYPE_UPPER="Release" - -cp src/android/app/build/outputs/apk/"${BUILD_FLAVOR}/${BUILD_TYPE_LOWER}/app-${BUILD_FLAVOR}-${BUILD_TYPE_LOWER}.apk" \ - "${ARTIFACTS_DIR}/${REV_NAME}.apk" || echo "APK not found" - -cp src/android/app/build/outputs/bundle/"${BUILD_FLAVOR}${BUILD_TYPE_UPPER}"/"app-${BUILD_FLAVOR}-${BUILD_TYPE_LOWER}.aab" \ - "${ARTIFACTS_DIR}/${REV_NAME}.aab" || echo "AAB not found" - -ls -la "${ARTIFACTS_DIR}/" diff --git a/.ci/license-header.rb b/.ci/license-header.rb deleted file mode 100644 index dda5522026..0000000000 --- a/.ci/license-header.rb +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/ruby -# frozen_string_literal: true - -license_header = <<~EOF - // SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project - // SPDX-License-Identifier: GPL-3.0-or-later - EOF - -print 'Getting branch changes...' -branch_name = `git rev-parse --abbrev-ref HEAD`.chomp -branch_commits = `git log #{branch_name} --not master --pretty=format:"%h"`.split("\n") -branch_commit_range = "#{branch_commits[-1]}^..#{branch_commits[0]}" -branch_changed_files = `git diff-tree --no-commit-id --name-only #{branch_commit_range} -r`.split("\n") -puts 'done' - -print 'Checking files...' -issue_files = [] -branch_changed_files.each do |file_name| - if file_name.end_with?('.cpp', '.h', '.kt', '.kts') and File.file?(file_name) - file_content = File.read(file_name) - if not file_content.start_with?(license_header) - issue_files.push(file_name) - end - end -end -puts 'done' - -if issue_files.empty? - puts "\nAll changed files have correct headers" - exit 0 -end - -puts <<-EOF - -The following #{issue_files.length} files have incorrect license headers: -#{issue_files.join("\n")} - -The following license header should be added to the start of all offending files: -=== BEGIN === -#{license_header} -=== END === - -If some of the code in this PR is not being contributed by the original author, the files which have been exclusively changed by that code can be ignored. -If this happens, this PR requirement can be bypassed once all other files are addressed. -EOF - -exit 1 diff --git a/.ci/license-header.sh b/.ci/license-header.sh index d14d5adf42..6b19f91185 100755 --- a/.ci/license-header.sh +++ b/.ci/license-header.sh @@ -1,86 +1,248 @@ #!/bin/sh -e -HEADER="$(cat "$PWD/.ci/license/header.txt")" +# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later -echo "Getting branch changes" +# specify full path if dupes may exist +EXCLUDE_FILES="CPM.cmake CPMUtil.cmake GetSCMRev.cmake renderdoc_app.h tools/cpm tools/shellcheck.sh tools/update-cpm.sh tools/windows/vcvarsall.sh externals/stb externals/glad externals/getopt externals/gamemode externals/FidelityFX-FSR externals/demangle externals/bc_decoder externals/cmake-modules" -BRANCH=`git rev-parse --abbrev-ref HEAD` -COMMITS=`git log ${BRANCH} --not master --pretty=format:"%h"` -RANGE="${COMMITS[${#COMMITS[@]}-1]}^..${COMMITS[0]}" -FILES=`git diff-tree --no-commit-id --name-only ${RANGE} -r` +# license header constants, please change when needed :)))) +YEAR=2026 +HOLDER="Eden Emulator Project" +LICENSE="GPL-3.0-or-later" -#FILES=$(git diff --name-only master) +usage() { + cat << EOF +Usage: $0 [uc] +Compares the current HEAD to the master branch to check for license +header discrepancies. Each file changed in a branch MUST have a +license header, and this script attempts to enforce that. -echo "Done" +Options: + -u, --update Fix license headers, if applicable; + if the license header exists but has the incorrect + year or is otherwise malformed, it will be fixed. + + -c, --commit Commit changes to Git (requires --update) + +Copyright $YEAR $HOLDER +Licensed under $LICENSE + +The following files/directories are marked as external +and thus will not have license headers asserted: +EOF + + for file in $EXCLUDE_FILES; do + echo "- $file" + done + + exit 0 +} + +while true; do + case "$1" in + (-u|--update) UPDATE=true ;; + (-c|--commit) UPDATE=true; COMMIT=true ;; + ("$0") break ;; + ("") break ;; + (*) usage ;; + esac + + shift +done + +# human-readable header string +header() { + header_line1 "$1" + header_line2 "$1" +} + +header_line1() { + echo "$1 SPDX-FileCopyrightText: Copyright $YEAR $HOLDER" +} + +header_line2() { + echo "$1 SPDX-License-Identifier: $LICENSE" +} + +check_header() { + begin="$1" + file="$2" + + # separate things out as spaces to make our lives 100000000x easier + content="$(head -n5 < "$2" | tr '\n' ' ')" + + line1="$(header_line1 "$begin")" + line2="$(header_line2 "$begin")" + + # perl and awk are actually awful, so to avoid this problem we avoid it by avoiding it + if ! echo "$content" | grep -o "$line1 $line2" >/dev/null; then + # SRC_FILES is Kotlin/C++ + # OTHER_FILES is sh, CMake + case "$begin" in + "//") + SRC_FILES="$SRC_FILES $file" + ;; + "#") + OTHER_FILES="$OTHER_FILES $file" + ;; + esac + fi +} + +BASE=$(git merge-base master HEAD) +FILES=$(git diff --name-only "$BASE") for file in $FILES; do [ -f "$file" ] || continue - EXTENSION="${file##*.}" - case "$EXTENSION" in - kts|kt|cpp|h) - CONTENT="`cat $file`" - case "$CONTENT" in - "$HEADER"*) ;; - *) BAD_FILES="$BAD_FILES $file" ;; - esac - ;; + # skip files that are third party (crueter's CMake modules, sse2neon, etc) + for pattern in $EXCLUDE_FILES; do + case "$file" in + *"$pattern"*) + excluded=true + break + ;; + *) + excluded=false + ;; + esac + done + + [ "$excluded" = "true" ] && continue + + case "$file" in + *.cmake|*.sh|*CMakeLists.txt) + begin="#" + ;; + *.kt*|*.cpp|*.h|*.qml) + begin="//" + ;; + *) + continue + ;; esac + + check_header "$begin" "$file" done -if [ "$BAD_FILES" = "" ]; then - echo - echo "All good." +if [ -z "$SRC_FILES" ] && [ -z "$OTHER_FILES" ]; then + echo "-- All good." exit fi -echo "The following files have incorrect license headers:" echo -for file in $BAD_FILES; do echo $file; done +if [ "$SRC_FILES" != "" ]; then + echo "-- The following source files have incorrect license headers:" -cat << EOF + HEADER=$(header "//") -The following license header should be added to the start of all offending files: + for file in $SRC_FILES; do echo "-- * $file"; done + + cat << EOF + +-- The following license header should be added to the start of these offending files: === BEGIN === $HEADER === END === -If some of the code in this PR is not being contributed by the original author, -the files which have been exclusively changed by that code can be ignored. -If this happens, this PR requirement can be bypassed once all other files are addressed. EOF -if [ "$FIX" = "true" ]; then - echo - echo "FIX set to true. Fixing headers." - echo - - for file in $BAD_FILES; do - cat $file > $file.bak - - cat .ci/license/header.txt > $file - echo >> $file - cat $file.bak >> $file - - rm $file.bak - - git add $file - done - - echo "License headers fixed." - - if [ "$COMMIT" = "true" ]; then - echo - echo "COMMIT set to true. Committing changes." - echo - - git commit -m "Fix license headers" - - echo "Changes committed. You may now push." - fi -else - exit 1 fi + +if [ "$OTHER_FILES" != "" ]; then + echo "-- The following CMake and shell scripts have incorrect license headers:" + + HEADER=$(header "#") + + for file in $OTHER_FILES; do echo "-- * $file"; done + + cat << EOF + +-- The following license header should be added to the start of these offending files: + +=== BEGIN === +$HEADER +=== END === + +EOF + +fi + +cat << EOF + If some of the code in this PR is not being contributed by the original author, + the files which have been exclusively changed by that code can be ignored. + If this happens, this PR requirement can be bypassed once all other files are addressed. + +EOF + +if [ "$UPDATE" = "true" ]; then + TMP_DIR=$(mktemp -d) + echo "-- Fixing headers..." + + for file in $SRC_FILES $OTHER_FILES; do + case $(basename -- "$file") in + *.cmake|*CMakeLists.txt) + begin="#" + shell="false" + ;; + *.sh) + begin="#" + shell=true + ;; + *) + begin="//" + shell="false" + ;; + esac + + # This is fun + match="$begin SPDX-FileCopyrightText.*$HOLDER" + + # basically if the copyright holder is already defined we can just replace the year + if head -n5 < "$file" | grep -e "$match" >/dev/null; then + replace=$(header_line1 "$begin") + sed "s|$match|$replace|" "$file" > "$file".bak + mv "$file".bak "$file" + else + header "$begin" > "$TMP_DIR"/header + + if [ "$shell" = "true" ]; then + # grab shebang + head -n1 "$file" > "$TMP_DIR/shebang" + echo >> "$TMP_DIR/shebang" + + # remove shebang + sed '1d' "$file" > "$file".bak + mv "$file".bak "$file" + + # add to header + cat "$TMP_DIR"/shebang "$TMP_DIR"/header > "$TMP_DIR"/new-header + mv "$TMP_DIR"/new-header "$TMP_DIR"/header + else + echo >> "$TMP_DIR/header" + fi + + cat "$TMP_DIR"/header "$file" > "$file".bak + mv "$file".bak "$file" + fi + + [ "$shell" = "true" ] && chmod a+x "$file" + [ "$COMMIT" = "true" ] && git add "$file" + done + + echo "-- Done" +fi + +if [ "$COMMIT" = "true" ]; then + echo "-- Committing changes" + + git commit -m "Fix license headers" + + echo "-- Changes committed. You may now push." +fi + +[ -d "$TMP_DIR" ] && rm -rf "$TMP_DIR" diff --git a/.ci/linux/build.sh b/.ci/linux/build.sh index 7c8bed1279..2a0a7e58b1 100755 --- a/.ci/linux/build.sh +++ b/.ci/linux/build.sh @@ -1,6 +1,6 @@ #!/bin/bash -e -# SPDX-FileCopyrightText: 2025 eden Emulator Project +# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project # SPDX-License-Identifier: GPL-3.0-or-later case "$1" in @@ -67,8 +67,9 @@ else export EXTRA_CMAKE_FLAGS=("${EXTRA_CMAKE_FLAGS[@]}" -DYUZU_USE_PRECOMPILED_HEADERS=OFF) fi + if [ "$DEVEL" != "true" ]; then - export EXTRA_CMAKE_FLAGS=("${EXTRA_CMAKE_FLAGS[@]}" -DENABLE_QT_UPDATE_CHECKER=ON) + export EXTRA_CMAKE_FLAGS=("${EXTRA_CMAKE_FLAGS[@]}" -DENABLE_UPDATE_CHECKER=ON) fi if [ "$USE_WEBENGINE" = "true" ]; then @@ -103,7 +104,7 @@ cmake .. -G Ninja \ -DYUZU_USE_QT_MULTIMEDIA=$MULTIMEDIA \ -DYUZU_USE_QT_WEB_ENGINE=$WEBENGINE \ -DYUZU_USE_FASTER_LD=ON \ - -DYUZU_ENABLE_LTO=ON \ + -DENABLE_LTO=ON \ "${EXTRA_CMAKE_FLAGS[@]}" ninja -j${NPROC} diff --git a/.ci/linux/eden.dwfsprof b/.ci/linux/eden.dwfsprof index bc360f0d46..9a3bee6f14 100644 --- a/.ci/linux/eden.dwfsprof +++ b/.ci/linux/eden.dwfsprof @@ -1,6 +1,6 @@ AppRun eden.desktop -org.eden_emu.eden.desktop +dev.eden_emu.eden.desktop shared/bin/eden shared/lib/lib.path shared/lib/ld-linux-x86-64.so.2 diff --git a/.ci/linux/package.sh b/.ci/linux/package.sh index 911fea2f7b..838476097a 100755 --- a/.ci/linux/package.sh +++ b/.ci/linux/package.sh @@ -1,6 +1,6 @@ #!/bin/sh -e -# SPDX-FileCopyrightText: 2025 eden Emulator Project +# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project # SPDX-License-Identifier: GPL-3.0-or-later # This script assumes you're in the source directory @@ -59,15 +59,15 @@ VERSION="$(echo "$EDEN_TAG")" mkdir -p ./AppDir cd ./AppDir -cp ../dist/org.eden_emu.eden.desktop . -cp ../dist/org.eden_emu.eden.svg . +cp ../dist/dev.eden_emu.eden.desktop . +cp ../dist/dev.eden_emu.eden.svg . -ln -sf ./org.eden_emu.eden.svg ./.DirIcon +ln -sf ./dev.eden_emu.eden.svg ./.DirIcon UPINFO='gh-releases-zsync|eden-emulator|Releases|latest|*.AppImage.zsync' if [ "$DEVEL" = 'true' ]; then - sed -i 's|Name=Eden|Name=Eden Nightly|' ./org.eden_emu.eden.desktop + sed -i 's|Name=Eden|Name=Eden Nightly|' ./dev.eden_emu.eden.desktop UPINFO="$(echo "$UPINFO" | sed 's|Releases|nightly|')" fi diff --git a/.ci/translate.sh b/.ci/translate.sh deleted file mode 100755 index 55104b7c76..0000000000 --- a/.ci/translate.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -for i in dist/languages/*.ts; do - SRC=en_US - TARGET=`head -n1 $i | awk -F 'language="' '{split($2, a, "\""); print a[1]}'` - - # requires fd - SOURCES=`fd . src/yuzu -tf -e ui -e cpp -e h -e plist` - - lupdate -source-language $SRC -target-language $TARGET $SOURCES -ts /data/code/eden/$i -done diff --git a/.ci/update-icons.sh b/.ci/update-icons.sh deleted file mode 100755 index 99adbfae66..0000000000 --- a/.ci/update-icons.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh -e - -# SPDX-FileCopyrightText: 2025 eden Emulator Project -# SPDX-License-Identifier: GPL-3.0-or-later - -which png2icns || [ which yay && yay libicns ] || exit -which magick || exit - -export EDEN_SVG_ICO="dist/org.eden_emu.eden.svg" -svgo --multipass $EDEN_SVG_ICO - -magick -density 256x256 -background transparent $EDEN_SVG_ICO \ - -define icon:auto-resize -colors 256 dist/eden.ico || exit -convert -density 256x256 -resize 256x256 -background transparent $EDEN_SVG_ICO \ - dist/yuzu.bmp || exit - -export TMP_PNG="dist/eden-tmp.png" -magick -size 1024x1024 -background transparent $EDEN_SVG_ICO $TMP_PNG || exit -png2icns dist/eden.icns $TMP_PNG || exit -cp dist/eden.icns dist/yuzu.icns -rm $TMP_PNG diff --git a/.ci/windows/build.sh b/.ci/windows/build.sh old mode 100644 new mode 100755 index 7504630a57..48cca8eb4d --- a/.ci/windows/build.sh +++ b/.ci/windows/build.sh @@ -1,58 +1,44 @@ -#!/bin/bash -e +#!/bin/bash -ex -# SPDX-FileCopyrightText: 2025 eden Emulator Project +# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project # SPDX-License-Identifier: GPL-3.0-or-later -if [ "$DEVEL" != "true" ]; then - export EXTRA_CMAKE_FLAGS=("${EXTRA_CMAKE_FLAGS[@]}" -DENABLE_QT_UPDATE_CHECKER=ON) +if [ "$COMPILER" == "clang" ] +then + EXTRA_CMAKE_FLAGS+=( + -DCMAKE_CXX_COMPILER=clang-cl + -DCMAKE_C_COMPILER=clang-cl + -DCMAKE_CXX_FLAGS="-O3" + -DCMAKE_C_FLAGS="-O3" + ) + + BUILD_TYPE="RelWithDebInfo" fi -if [ "$CCACHE" = "true" ]; then - export EXTRA_CMAKE_FLAGS=("${EXTRA_CMAKE_FLAGS[@]}" -DUSE_CCACHE=ON) -fi +[ -z "$WINDEPLOYQT" ] && { echo "WINDEPLOYQT environment variable required."; exit 1; } -if [ "$BUNDLE_QT" = "true" ]; then - export EXTRA_CMAKE_FLAGS=("${EXTRA_CMAKE_FLAGS[@]}" -DYUZU_USE_BUNDLED_QT=ON) -else - export EXTRA_CMAKE_FLAGS=("${EXTRA_CMAKE_FLAGS[@]}" -DYUZU_USE_BUNDLED_QT=OFF) -fi - -if [ -z "$BUILD_TYPE" ]; then - export BUILD_TYPE="Release" -fi - -if [ "$WINDEPLOYQT" == "" ]; then - echo "You must supply the WINDEPLOYQT environment variable." - exit 1 -fi - -if [ "$USE_WEBENGINE" = "true" ]; then - WEBENGINE=ON -else - WEBENGINE=OFF -fi - -if [ "$USE_MULTIMEDIA" = "false" ]; then - MULTIMEDIA=OFF -else - MULTIMEDIA=ON -fi - -export EXTRA_CMAKE_FLAGS=("${EXTRA_CMAKE_FLAGS[@]}" $@) +echo $EXTRA_CMAKE_FLAGS mkdir -p build && cd build cmake .. -G Ninja \ - -DCMAKE_BUILD_TYPE="$BUILD_TYPE" \ - -DENABLE_QT_TRANSLATION=ON \ + -DCMAKE_BUILD_TYPE="${BUILD_TYPE:-Release}" \ + -DENABLE_QT_TRANSLATION=ON \ -DUSE_DISCORD_PRESENCE=ON \ -DYUZU_USE_BUNDLED_SDL2=ON \ + -DBUILD_TESTING=OFF \ -DYUZU_TESTS=OFF \ + -DDYNARMIC_TESTS=OFF \ -DYUZU_CMD=OFF \ -DYUZU_ROOM_STANDALONE=OFF \ - -DYUZU_USE_QT_MULTIMEDIA=$MULTIMEDIA \ - -DYUZU_USE_QT_WEB_ENGINE=$WEBENGINE \ - -DYUZU_ENABLE_LTO=ON \ - "${EXTRA_CMAKE_FLAGS[@]}" + -DYUZU_USE_QT_MULTIMEDIA=${USE_MULTIMEDIA:-false} \ + -DYUZU_USE_QT_WEB_ENGINE=${USE_WEBENGINE:-false} \ + -DENABLE_LTO=ON \ + -DCMAKE_EXE_LINKER_FLAGS=" /LTCG" \ + -DYUZU_USE_BUNDLED_QT=${BUNDLE_QT:-false} \ + -DUSE_CCACHE=${CCACHE:-false} \ + -DENABLE_UPDATE_CHECKER=${DEVEL:-true} \ + "${EXTRA_CMAKE_FLAGS[@]}" \ + "$@" ninja @@ -61,4 +47,5 @@ rm -f bin/*.pdb set -e $WINDEPLOYQT --release --no-compiler-runtime --no-opengl-sw --no-system-dxc-compiler --no-system-d3d-compiler --dir pkg bin/eden.exe + cp bin/* pkg diff --git a/.github/ISSUE_TEMPLATE/blank_issue_template.yml b/.forgejo/ISSUE_TEMPLATE/blank_issue_template.yml similarity index 100% rename from .github/ISSUE_TEMPLATE/blank_issue_template.yml rename to .forgejo/ISSUE_TEMPLATE/blank_issue_template.yml diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.forgejo/ISSUE_TEMPLATE/bug_report.yml similarity index 100% rename from .github/ISSUE_TEMPLATE/bug_report.yml rename to .forgejo/ISSUE_TEMPLATE/bug_report.yml diff --git a/.forgejo/ISSUE_TEMPLATE/config.yml b/.forgejo/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000000..d4f68f053d --- /dev/null +++ b/.forgejo/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,4 @@ +blank_issues_enabled: false +contact_links: + - name: Eden Discord + url: https://discord.gg/HstXbPch7X diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.forgejo/ISSUE_TEMPLATE/feature_request.yml similarity index 100% rename from .github/ISSUE_TEMPLATE/feature_request.yml rename to .forgejo/ISSUE_TEMPLATE/feature_request.yml diff --git a/.github/workflows/license-header.yml b/.forgejo/workflows/license-header.yml similarity index 100% rename from .github/workflows/license-header.yml rename to .forgejo/workflows/license-header.yml diff --git a/.forgejo/workflows/sources.yml b/.forgejo/workflows/sources.yml new file mode 100644 index 0000000000..8e98419cba --- /dev/null +++ b/.forgejo/workflows/sources.yml @@ -0,0 +1,19 @@ +name: tx-src + +on: + push: + branches: [ master ] + +jobs: + sources: + runs-on: source + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Push New Sources + run: | + export PATH=/usr/lib/qt6/bin:$PATH + ./tools/translations/qt-source.sh + tx-cli push -s diff --git a/.forgejo/workflows/strings.yml b/.forgejo/workflows/strings.yml new file mode 100644 index 0000000000..ae8a7220e1 --- /dev/null +++ b/.forgejo/workflows/strings.yml @@ -0,0 +1,22 @@ +name: Check Strings + +on: + push: + branches: [ master ] + +jobs: + check-strings: + runs-on: source + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Find Unused Strings + run: ./tools/unused-strings.sh + + - name: Find Stale Translations + run: ./tools/stale-translations.sh + + - name: Diff + run: git --no-pager diff --exit-code HEAD diff --git a/.forgejo/workflows/translations.yml b/.forgejo/workflows/translations.yml new file mode 100644 index 0000000000..4a2d52e745 --- /dev/null +++ b/.forgejo/workflows/translations.yml @@ -0,0 +1,60 @@ +name: tx-pull + +on: + # tuesday, saturday at 2pm + schedule: + - cron: '0 14 * * 2,6' + workflow_dispatch: + +jobs: + tx-update: + runs-on: source + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Get New Translations + run: tx-cli pull -t -f + + - name: Push branch + run: | + git config --local user.name "Eden CI" + git config --local user.email "ci@eden-emu.dev" + git config --local user.signingkey "D57652791BB25D2A" + git config --local push.autoSetupRemote true + + git remote set-url origin ci:eden-emu/eden.git + + TIMESTAMP=$(date +"%s") + echo "TIMESTAMP=$TIMESTAMP" >> "$GITHUB_ENV" + + git switch -c update-translations-$TIMESTAMP + git add dist src/android/app/src/main/res + + git commit -sS -m "[dist, android] Update translations from Transifex" + git push + + - name: Create PR + run: | + DATE=$(date +"%b %d") + TITLE="[dist, android] Update translations from Transifex for $DATE" + BODY="Automatic translation update for $DATE" + BASE=master + HEAD=update-translations-$TIMESTAMP + + cat << EOF > data.json + { + "base": "$BASE", + "body": "$BODY", + "head": "$HEAD", + "title": "$TITLE" + } + EOF + + curl -X 'POST' \ + 'https://git.eden-emu.dev/api/v1/repos/eden-emu/eden/pulls' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ${{ secrets.CI_FJ_TOKEN }}' \ + -H 'Content-Type: application/json' \ + -d "@data.json" --fail diff --git a/.forgejo/workflows/update-deps.yml b/.forgejo/workflows/update-deps.yml new file mode 100644 index 0000000000..154328f906 --- /dev/null +++ b/.forgejo/workflows/update-deps.yml @@ -0,0 +1,54 @@ +name: update-deps + +on: + # saturday at noon + schedule: + - cron: '0 12 * * 6' + workflow_dispatch: + +jobs: + tx-update: + runs-on: source + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Update deps + run: | + git config --local user.name "Eden CI" + git config --local user.email "ci@eden-emu.dev" + git config --local user.signingkey "D57652791BB25D2A" + git config --local push.autoSetupRemote true + + git remote set-url origin ci:eden-emu/eden.git + + DATE=$(date +"%b %d") + echo "DATE=$DATE" >> "$GITHUB_ENV" + + git switch -c update-deps-$DATE + tools/cpmutil.sh package update -ac + git push + + - name: Create PR + run: | + TITLE="[externals] Dependency update for $DATE" + BODY="$(git show -s --format='%b')" + BASE=master + HEAD=update-deps-$DATE + + cat << EOF > data.json + { + "base": "$BASE", + "body": "$BODY", + "head": "$HEAD", + "title": "$TITLE" + } + EOF + + curl -X 'POST' \ + 'https://git.eden-emu.dev/api/v1/repos/eden-emu/eden/pulls' \ + -H 'accept: application/json' \ + -H 'Authorization: Bearer ${{ secrets.CI_FJ_TOKEN }}' \ + -H 'Content-Type: application/json' \ + -d "@data.json" --fail diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index 52faafad34..0000000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,8 +0,0 @@ -blank_issues_enabled: false -contact_links: - - name: yuzu Discord - url: https://discord.com/invite/u77vRWY - about: If you are experiencing an issue with yuzu, and you need tech support, or if you have a general question, try asking in the official yuzu Discord linked here. Piracy is not allowed. - - name: Community forums - url: https://community.citra-emu.org - about: This is an alternative place for tech support, however helpers there are not as active. diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index ac67f73d00..0000000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,152 +0,0 @@ -# TODO: This document needs to be formatted, -# some stuff needs cleaned up etc -name: eden-build - -#on: -# push: -# branches: [ "master" ] - -# TODO: combine build.yml into trigger_release.yml -jobs: - source: - if: ${{ !github.head_ref }} - runs-on: source - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - - name: Pack - run: ./.ci/source.sh - - - name: Upload - uses: forgejo/upload-artifact@v4 - with: - retention-days: 2 - name: source.zip - path: artifacts/ - - windows: - runs-on: windows - strategy: - matrix: - target: ["msvc"] # TODO: Add msys2 - defaults: - run: - shell: ${{ (matrix.target == 'msys2' && 'msys2') || 'bash' }} {0} - env: - CCACHE_DIR: ${{ runner.workspace }}/.cache/.ccache - CCACHE_COMPILERCHECK: content - CCACHE_SLOPPINESS: time_macros - OS: windows - TARGET: ${{ matrix.target }} - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - fetch-depth: 0 - fetch-tags: true - - - name: Set up vcpkg cache - uses: actions/cache@v4 - with: - path: | - ${{ github.workspace }}/build/vcpkg_installed - ${{ github.workspace }}/build/externals - ${{ github.workspace }}/.vcpkg - key: ${{ runner.os }}-${{ matrix.target }}-vcpkg-${{ hashFiles('**/CMakeLists.txt', '**/vcpkg.json') }}-${{ github.run_id }} - restore-keys: | - ${{ runner.os }}-${{ matrix.target }}-vcpkg- - - - name: Set up MSVC - uses: https://github.com/ilammy/msvc-dev-cmd@v1 - if: ${{ matrix.target == 'msvc' }} - - - name: Cygwin with autoconf # NEEDED FOR LIBUSB - shell: cmd - run: ./.ci/windows/cygwin.bat - - - name: Configure & Build - shell: bash - run: | - ./.ci/windows/qt-envvars.sh - DEVEL=true WINDEPLOYQT="/c/Qt/6.9.0/msvc2022_64/bin/windeployqt6.exe" .ci/windows/build.sh -DCMAKE_PREFIX_PATH=C:/Qt/6.9.0/msvc2022_64/lib/cmake/Qt6 - - - name: Package artifacts - shell: bash - run: | - ./.ci/windows/qt-envvars.sh - ./.ci/windows/package.sh - - - name: Upload Windows artifacts - uses: forgejo/upload-artifact@v4 - with: - retention-days: 2 - name: ${{ matrix.target }}.zip - path: artifacts/* - - linux: - runs-on: linux - env: - CCACHE_DIR: /home/runner/.cache/ccache - CCACHE_COMPILERCHECK: content - CCACHE_SLOPPINESS: time_macros - OS: linux - TARGET: fresh - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - fetch-depth: 0 - fetch-tags: true - - - name: Build - run: TARGET=appimage DEVEL=true ./.ci/linux/build.sh - - - name: Package AppImage - run: DEVEL=true ./.ci/linux/package.sh &> /dev/null - - - name: Upload Linux artifacts - uses: forgejo/upload-artifact@v4 - with: - retention-days: 3 - name: linux.zip - path: ./*.AppImage - - android: - runs-on: android - - env: - OS: android - TARGET: universal - - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - fetch-depth: 0 - fetch-tags: true - - - name: Set tag name - run: | - if [[ "$GITHUB_REF_TYPE" == "tag" ]]; then - echo "GIT_TAG_NAME=$GITHUB_REF_NAME" >> $GITHUB_ENV - fi - echo $GIT_TAG_NAME - - - name: Build - run: ANDROID_HOME=/home/runner/sdk ./.ci/android/build.sh - env: - ANDROID_KEYSTORE_B64: ${{ secrets.ANDROID_KEYSTORE_B64 }} - ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }} - ANDROID_KEYSTORE_PASS: ${{ secrets.ANDROID_KEYSTORE_PASS }} - - - name: Package Android artifacts - run: ./.ci/android/package.sh - - - name: Upload Android artifacts - uses: forgejo/upload-artifact@v4 - with: - retention-days: 2 - name: android.zip - path: artifacts/* diff --git a/.github/workflows/trigger_release.yml b/.github/workflows/trigger_release.yml deleted file mode 100644 index 645b21e25a..0000000000 --- a/.github/workflows/trigger_release.yml +++ /dev/null @@ -1,203 +0,0 @@ -name: Build Application and Make Release - -#on: -# push: -# tags: [ "*" ] - -permissions: - contents: write - -jobs: - source: - runs-on: source - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - name: Pack - run: ./.ci/source.sh - - name: Upload - uses: forgejo/upload-artifact@v4 - with: - retention-days: 2 - name: source.zip - path: artifacts/ - - windows: - runs-on: windows - strategy: - matrix: - target: ["msvc"] # TODO: Add msys2 - defaults: - run: - shell: ${{ (matrix.target == 'msys2' && 'msys2') || 'bash' }} {0} - env: - CCACHE_DIR: ${{ runner.workspace }}/.cache/.ccache - CCACHE_COMPILERCHECK: content - CCACHE_SLOPPINESS: time_macros - OS: windows - TARGET: ${{ matrix.target }} - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - fetch-depth: 0 - fetch-tags: true - - - name: Set up vcpkg cache - uses: actions/cache@v4 - with: - path: | - ${{ github.workspace }}/build/vcpkg_installed - ${{ github.workspace }}/build/externals - ${{ github.workspace }}/.vcpkg - key: ${{ runner.os }}-${{ matrix.target }}-vcpkg-${{ hashFiles('**/CMakeLists.txt', '**/vcpkg.json') }}-${{ github.run_id }} - restore-keys: | - ${{ runner.os }}-${{ matrix.target }}-vcpkg- - - - name: Set up MSVC - uses: https://github.com/ilammy/msvc-dev-cmd@v1 - if: ${{ matrix.target == 'msvc' }} - - - name: Cygwin with autoconf # NEEDED FOR LIBUSB - shell: cmd - run: ./.ci/windows/cygwin.bat - - - name: Configure & Build - shell: bash - run: DEVEL=false ./.ci/windows/build.sh - - - name: Package artifacts - shell: bash - run: | - export PATH="${PATH}:/c/Qt/6.9.0/msvc2022_64/bin" - ./.ci/windows/package.sh - - - name: Upload Windows artifacts - uses: forgejo/upload-artifact@v4 - with: - retention-days: 2 - name: ${{ matrix.target }}.zip - path: artifacts/* - - linux: - runs-on: linux - env: - CCACHE_DIR: /home/runner/.cache/ccache - CCACHE_COMPILERCHECK: content - CCACHE_SLOPPINESS: time_macros - OS: linux - TARGET: fresh - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - fetch-depth: 0 - fetch-tags: true - - - name: Build - run: TARGET=appimage RELEASE=1 ./.ci/linux/build.sh v3 8 - - - name: Package AppImage - run: ./.ci/linux/package.sh v3 &> /dev/null - - - name: Upload Linux artifacts - uses: forgejo/upload-artifact@v4 - with: - retention-days: 2 - name: linux.zip - path: ./*.AppImage* - - android: - runs-on: android - - env: - CCACHE_DIR: /home/runner/.cache/ccache - CCACHE_COMPILERCHECK: content - CCACHE_SLOPPINESS: time_macros - OS: android - TARGET: universal - - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - fetch-depth: 0 - fetch-tags: true - - - name: Set tag name - run: | - if [[ "$GITHUB_REF_TYPE" == "tag" ]]; then - echo "GIT_TAG_NAME=$GITHUB_REF_NAME" >> $GITHUB_ENV - fi - echo $GIT_TAG_NAME - - - name: Build - run: ANDROID_HOME=/home/runner/sdk ./.ci/android/build.sh - env: - ANDROID_KEYSTORE_B64: ${{ secrets.ANDROID_KEYSTORE_B64 }} - ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }} - ANDROID_KEYSTORE_PASS: ${{ secrets.ANDROID_KEYSTORE_PASS }} - - - name: Package Android artifacts - run: ./.ci/android/package.sh - - - name: Upload Android artifacts - uses: forgejo/upload-artifact@v4 - with: - retention-days: 2 - name: android.zip - path: artifacts/* - - create_release: - needs: [linux, windows, android] - runs-on: linux - outputs: - upload_url: ${{ steps.create_release.outputs.upload_url }} - - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - submodules: 'recursive' - path: 'eden-source' - - - name: Download artifacts - uses: forgejo/download-artifact@v4 - with: - path: artifacts - - - name: Grab and store version - run: | - cd eden-source - tag_name=$(git describe --tags --abbrev=0) - echo "VERSION=$tag_name" >> $GITHUB_ENV - echo $tag_name - - - name: Package artifacts properly - shell: bash - run: | - set -ex - mv ${{ github.workspace }}/eden-source eden-${{ env.VERSION }} - cd artifacts - ls *.zip - - mkdir -p dist - - cp linux.zip/Eden-*.AppImage dist/Eden-Linux-${{ env.VERSION }}-amd64.AppImage - cp linux.zip/Eden-*.AppImage.zsync dist/Eden-Linux-${{ env.VERSION }}-amd64.AppImage.zsync - cp msvc.zip/eden-windows-msvc*.zip dist/Eden-Windows-MSVC-${{ env.VERSION }}-amd64.zip - cp android.zip/eden-android*.apk dist/Eden-Android-${{ env.VERSION }}.apk - cp android.zip/eden-android*.aab dist/Eden-Android-${{ env.VERSION }}.aab - cp source.zip/eden-unified-source*.tar.xz dist/Eden-Source-${{ env.VERSION }}.tar.xz - cp source.zip/eden-unified-source*.tar.xz.sha256sum dist/Eden-Source-${{ env.VERSION }}.tar.xz.sha256sum - - - name: Create release - id: create_release - uses: actions/forgejo-release@v2.6.0 - with: - direction: upload - tag: ${{ env.VERSION }} - title: Eden ${{ env.VERSION }} - release-dir: artifacts/dist/ diff --git a/.gitignore b/.gitignore index 83881117ac..67bdd8adf4 100644 --- a/.gitignore +++ b/.gitignore @@ -7,9 +7,16 @@ # Build directory /[Bb]uild*/ doc-build/ +out/ AppDir/ uruntime +# dtrace and ktrace stuffs +[dk]trace-out/ +[dk]trace.out +*.core +log.txt + # Generated source files src/common/scm_rev.cpp dist/english_plurals/generated_en.ts @@ -30,6 +37,8 @@ CMakeLists.txt.user* # *nix related # Common convention for backup or temporary files *~ +*.core +dtrace-out/ # Visual Studio CMake settings CMakeSettings.json @@ -52,3 +61,6 @@ Thumbs.db eden-windows-msvc artifacts *.AppImage* +/install* +vulkansdk*.exe +*.tar.zst diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 94ac4d33f3..0000000000 --- a/.gitmodules +++ /dev/null @@ -1,6 +0,0 @@ -# SPDX-FileCopyrightText: 2014 Citra Emulator Project -# SPDX-License-Identifier: GPL-2.0-or-later - -[submodule "libusb"] - path = externals/libusb/libusb - url = https://github.com/libusb/libusb.git diff --git a/.patch/boost/0001-clang-cl.patch b/.patch/boost/0001-clang-cl.patch new file mode 100644 index 0000000000..cdabc712cb --- /dev/null +++ b/.patch/boost/0001-clang-cl.patch @@ -0,0 +1,13 @@ +diff --git a/libs/cobalt/include/boost/cobalt/concepts.hpp b/libs/cobalt/include/boost/cobalt/concepts.hpp +index d49f2ec..a9bdb80 100644 +--- a/libs/cobalt/include/boost/cobalt/concepts.hpp ++++ b/libs/cobalt/include/boost/cobalt/concepts.hpp +@@ -62,7 +62,7 @@ struct enable_awaitables + template + concept with_get_executor = requires (T& t) + { +- {t.get_executor()} -> asio::execution::executor; ++ t.get_executor(); + }; + + diff --git a/.patch/catch2/0001-solaris-isnan-fix.patch b/.patch/catch2/0001-solaris-isnan-fix.patch new file mode 100644 index 0000000000..498d6cd93e --- /dev/null +++ b/.patch/catch2/0001-solaris-isnan-fix.patch @@ -0,0 +1,12 @@ +diff --git a/src/catch2/matchers/catch_matchers_floating_point.cpp b/src/catch2/matchers/catch_matchers_floating_point.cpp +index fc7b444..0e1a3c2 100644 +--- a/src/catch2/matchers/catch_matchers_floating_point.cpp ++++ b/src/catch2/matchers/catch_matchers_floating_point.cpp +@@ -5,6 +5,7 @@ + // https://www.boost.org/LICENSE_1_0.txt) + + // SPDX-License-Identifier: BSL-1.0 ++#include + #include + #include + #include diff --git a/.patch/cpp-jwt/0001-fix-missing-decl.patch b/.patch/cpp-jwt/0001-fix-missing-decl.patch new file mode 100644 index 0000000000..a22476f013 --- /dev/null +++ b/.patch/cpp-jwt/0001-fix-missing-decl.patch @@ -0,0 +1,25 @@ +From ce992811fe8eb5ea7ad37e5b255bfecb0c313928 Mon Sep 17 00:00:00 2001 +From: crueter +Date: Sun, 7 Sep 2025 23:43:57 -0400 +Subject: [PATCH] [algorithm] fix missing declaration error + +Projects with restrictive error options won't compile without this + +Signed-off-by: crueter +--- + include/jwt/algorithm.hpp | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/include/jwt/algorithm.hpp b/include/jwt/algorithm.hpp +index 0e3b843..35347fe 100644 +--- a/include/jwt/algorithm.hpp ++++ b/include/jwt/algorithm.hpp +@@ -63,6 +63,8 @@ using sign_func_t = sign_result_t (*) (const jwt::string_view key, + using verify_func_t = verify_result_t (*) (const jwt::string_view key, + const jwt::string_view head, + const jwt::string_view jwt_sign); ++ ++verify_result_t is_secret_a_public_key(const jwt::string_view secret); + + namespace algo { + diff --git a/.patch/cpp-jwt/0001-no-install.patch b/.patch/cpp-jwt/0001-no-install.patch deleted file mode 100644 index b5be557a53..0000000000 --- a/.patch/cpp-jwt/0001-no-install.patch +++ /dev/null @@ -1,47 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 8c1761f..52c4ca4 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -69,42 +69,3 @@ endif() - if(CPP_JWT_BUILD_EXAMPLES) - add_subdirectory(examples) - endif() -- --# ############################################################################## --# INSTALL --# ############################################################################## -- --include(GNUInstallDirs) --include(CMakePackageConfigHelpers) --set(CPP_JWT_CONFIG_INSTALL_DIR ${CMAKE_INSTALL_DATADIR}/cmake/${PROJECT_NAME}) -- --install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}Targets) --install( -- EXPORT ${PROJECT_NAME}Targets -- DESTINATION ${CPP_JWT_CONFIG_INSTALL_DIR} -- NAMESPACE ${PROJECT_NAME}:: -- COMPONENT dev) --configure_package_config_file(cmake/Config.cmake.in ${PROJECT_NAME}Config.cmake -- INSTALL_DESTINATION ${CPP_JWT_CONFIG_INSTALL_DIR} -- NO_SET_AND_CHECK_MACRO) --write_basic_package_version_file(${PROJECT_NAME}ConfigVersion.cmake -- COMPATIBILITY SameMajorVersion -- ARCH_INDEPENDENT) --install( -- FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake -- ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake -- DESTINATION ${CPP_JWT_CONFIG_INSTALL_DIR} -- COMPONENT dev) -- --if(NOT CPP_JWT_USE_VENDORED_NLOHMANN_JSON) -- set(CPP_JWT_VENDORED_NLOHMANN_JSON_INSTALL_PATTERN PATTERN "json" EXCLUDE) --endif() --install( -- DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/jwt/ -- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/jwt -- COMPONENT dev -- FILES_MATCHING -- PATTERN "*.hpp" -- PATTERN "*.ipp" -- PATTERN "test" EXCLUDE -- ${CPP_JWT_VENDORED_NLOHMANN_JSON_INSTALL_PATTERN}) diff --git a/.patch/cpp-jwt/0002-missing-decl.patch b/.patch/cpp-jwt/0002-missing-decl.patch deleted file mode 100644 index cd5175dbe0..0000000000 --- a/.patch/cpp-jwt/0002-missing-decl.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/include/jwt/algorithm.hpp b/include/jwt/algorithm.hpp -index 0e3b843..1156e6a 100644 ---- a/include/jwt/algorithm.hpp -+++ b/include/jwt/algorithm.hpp -@@ -64,6 +64,8 @@ using verify_func_t = verify_result_t (*) (const jwt::string_view key, - const jwt::string_view head, - const jwt::string_view jwt_sign); - -+verify_result_t is_secret_a_public_key(const jwt::string_view secret); -+ - namespace algo { - - //Me: TODO: All these can be done using code generaion. diff --git a/.patch/discord-rpc/0001-cmake-version.patch b/.patch/discord-rpc/0001-cmake-version.patch deleted file mode 100644 index 6a1609fadf..0000000000 --- a/.patch/discord-rpc/0001-cmake-version.patch +++ /dev/null @@ -1,10 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 5dad9e9..760a1b2 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -1,4 +1,4 @@ --cmake_minimum_required (VERSION 3.2.0) -+cmake_minimum_required (VERSION 3.10) - project (DiscordRPC) - - include(GNUInstallDirs) diff --git a/.patch/discord-rpc/0002-no-clang-format.patch b/.patch/discord-rpc/0002-no-clang-format.patch deleted file mode 100644 index 4b1e37c29f..0000000000 --- a/.patch/discord-rpc/0002-no-clang-format.patch +++ /dev/null @@ -1,40 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 760a1b2..540d643 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -12,20 +12,6 @@ file(GLOB_RECURSE ALL_SOURCE_FILES - src/*.cpp src/*.h src/*.c - ) - --# Set CLANG_FORMAT_SUFFIX if you are using custom clang-format, e.g. clang-format-5.0 --find_program(CLANG_FORMAT_CMD clang-format${CLANG_FORMAT_SUFFIX}) -- --if (CLANG_FORMAT_CMD) -- add_custom_target( -- clangformat -- COMMAND ${CLANG_FORMAT_CMD} -- -i -style=file -fallback-style=none -- ${ALL_SOURCE_FILES} -- DEPENDS -- ${ALL_SOURCE_FILES} -- ) --endif(CLANG_FORMAT_CMD) -- - # thirdparty stuff - execute_process( - COMMAND mkdir ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty -diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt -index 290d761..cd2cc92 100644 ---- a/src/CMakeLists.txt -+++ b/src/CMakeLists.txt -@@ -120,10 +120,6 @@ if (${BUILD_SHARED_LIBS}) - target_compile_definitions(discord-rpc PRIVATE -DDISCORD_BUILDING_SDK) - endif(${BUILD_SHARED_LIBS}) - --if (CLANG_FORMAT_CMD) -- add_dependencies(discord-rpc clangformat) --endif(CLANG_FORMAT_CMD) -- - # install - - install( diff --git a/.patch/discord-rpc/0003-fix-cpp17.patch b/.patch/discord-rpc/0003-fix-cpp17.patch deleted file mode 100644 index 35b725d307..0000000000 --- a/.patch/discord-rpc/0003-fix-cpp17.patch +++ /dev/null @@ -1,31 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 540d643..5d12f3d 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -17,12 +17,14 @@ execute_process( - COMMAND mkdir ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty - ERROR_QUIET - ) -+# new commit that fixes c++17 -+set(RAPIDJSON_SHA 3b2441b87f99ab65f37b141a7b548ebadb607b96) - --find_file(RAPIDJSONTEST NAMES rapidjson rapidjson-1.1.0 PATHS ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty CMAKE_FIND_ROOT_PATH_BOTH) -+find_file(RAPIDJSONTEST NAMES rapidjson rapidjson-${RAPIDJSON_SHA} PATHS ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty CMAKE_FIND_ROOT_PATH_BOTH) - if (NOT RAPIDJSONTEST) - message("no rapidjson, download") -- set(RJ_TAR_FILE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/v1.1.0.tar.gz) -- file(DOWNLOAD https://github.com/miloyip/rapidjson/archive/v1.1.0.tar.gz ${RJ_TAR_FILE}) -+ set(RJ_TAR_FILE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/${RAPIDJSON_SHA}.tar.gz) -+ file(DOWNLOAD https://github.com/miloyip/rapidjson/archive/${RAPIDJSON_SHA}.tar.gz ${RJ_TAR_FILE}) - execute_process( - COMMAND ${CMAKE_COMMAND} -E tar xzf ${RJ_TAR_FILE} - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty -@@ -30,7 +32,7 @@ if (NOT RAPIDJSONTEST) - file(REMOVE ${RJ_TAR_FILE}) - endif(NOT RAPIDJSONTEST) - --find_file(RAPIDJSON NAMES rapidjson rapidjson-1.1.0 PATHS ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty CMAKE_FIND_ROOT_PATH_BOTH) -+find_file(RAPIDJSON NAMES rapidjson rapidjson-${RAPIDJSON_SHA} PATHS ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty CMAKE_FIND_ROOT_PATH_BOTH) - - add_library(rapidjson STATIC IMPORTED ${RAPIDJSON}) - diff --git a/.patch/glslang/0001-haikuos-fix.patch b/.patch/glslang/0001-haikuos-fix.patch new file mode 100644 index 0000000000..ba68bc9729 --- /dev/null +++ b/.patch/glslang/0001-haikuos-fix.patch @@ -0,0 +1,49 @@ +diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp +index be7f442..5fd0438 100644 +--- a/StandAlone/StandAlone.cpp ++++ b/StandAlone/StandAlone.cpp +@@ -1766,9 +1766,10 @@ int singleMain() + glslang::FinalizeProcess(); + } else { + ShInitialize(); ++#ifndef __HAIKU__ + ShInitialize(); // also test reference counting of users + ShFinalize(); // also test reference counting of users +- ++#endif + bool printShaderNames = workList.size() > 1; + + if (Options & EOptionMultiThreaded) { +@@ -1793,8 +1794,9 @@ int singleMain() + PutsIfNonEmpty(WorkItems[w]->results.c_str()); + } + } +- ++#ifndef __HAIKU__ + ShFinalize(); ++#endif + } + + if (CompileFailed.load()) +@@ -1809,8 +1811,10 @@ int C_DECL main(int argc, char* argv[]) + { + ProcessArguments(WorkItems, argc, argv); + ++#ifdef __HAIKU__ ++ return singleMain(); ++#else + int ret = 0; +- + // Loop over the entire init/finalize cycle to watch memory changes + const int iterations = 1; + if (iterations > 1) +@@ -1820,8 +1824,8 @@ int C_DECL main(int argc, char* argv[]) + if (iterations > 1) + glslang::OS_DumpMemoryCounters(); + } +- + return ret; ++#endif + } + + // diff --git a/.patch/httplib/0001-mingw.patch b/.patch/httplib/0001-mingw.patch new file mode 100644 index 0000000000..da9a9e74bd --- /dev/null +++ b/.patch/httplib/0001-mingw.patch @@ -0,0 +1,62 @@ +From 436fc1978c78edd085d99b33275b24be0ac96aa0 Mon Sep 17 00:00:00 2001 +From: crueter +Date: Sun, 1 Feb 2026 16:21:10 -0500 +Subject: [PATCH] Fix build on MinGW + +MinGW doesn't define GetAddrInfoExCancel. + +Signed-off-by: crueter +--- + httplib.h | 18 ++++++++++++++++-- + 1 file changed, 16 insertions(+), 2 deletions(-) + +diff --git a/httplib.h b/httplib.h +index ec8d2a2..5f9a510 100644 +--- a/httplib.h ++++ b/httplib.h +@@ -203,14 +203,17 @@ + #error Sorry, Visual Studio versions prior to 2015 are not supported + #endif + +-#pragma comment(lib, "ws2_32.lib") +- + #ifndef _SSIZE_T_DEFINED + using ssize_t = __int64; + #define _SSIZE_T_DEFINED + #endif + #endif // _MSC_VER + ++#if defined(_MSC_VER) || defined(__MINGW32__) ++#pragma comment(lib, "ws2_32.lib") ++#endif ++ ++ + #ifndef S_ISREG + #define S_ISREG(m) (((m) & S_IFREG) == S_IFREG) + #endif // S_ISREG +@@ -4528,7 +4531,17 @@ inline int getaddrinfo_with_timeout(const char *node, const char *service, + auto wait_result = + ::WaitForSingleObject(event, static_cast(timeout_sec * 1000)); + if (wait_result == WAIT_TIMEOUT) { ++#ifdef __MINGW32__ ++ typedef INT(WSAAPI * PFN_GETADDRINFOEXCANCEL)(HANDLE * CancelHandle); ++ auto wsdll = LoadLibraryW((wchar_t *)"ws2_32.lib"); ++ PFN_GETADDRINFOEXCANCEL GetAddrInfoExCancel = ++ (PFN_GETADDRINFOEXCANCEL)GetProcAddress(wsdll, "GetAddrInfoExCancel"); ++ ++ if (cancel_handle) { GetAddrInfoExCancel(&cancel_handle); } ++#else + if (cancel_handle) { ::GetAddrInfoExCancel(&cancel_handle); } ++#endif ++ + ::CloseHandle(event); + return EAI_AGAIN; + } +@@ -13952,3 +13965,4 @@ inline SSL_CTX *Client::ssl_context() const { + } // namespace httplib + + #endif // CPPHTTPLIB_HTTPLIB_H ++ +-- +2.51.2 + diff --git a/.patch/httplib/0002-fix-zstd.patch b/.patch/httplib/0002-fix-zstd.patch new file mode 100644 index 0000000000..f54485ea53 --- /dev/null +++ b/.patch/httplib/0002-fix-zstd.patch @@ -0,0 +1,89 @@ +From 509be32bbfa6eb95014860f7c9ea6d45c8ddaa56 Mon Sep 17 00:00:00 2001 +From: crueter +Date: Sun, 8 Mar 2026 15:11:12 -0400 +Subject: [PATCH] [cmake] Simplify zstd find logic, and support pre-existing + zstd target + +Some deduplication work on the zstd required/if-available logic. Also +adds support for pre-existing `zstd::libzstd` which is useful for +projects that bundle their own zstd in a way that doesn't get caught by +`CONFIG` + +Signed-off-by: crueter +--- + CMakeLists.txt | 46 ++++++++++++++++++++++++++-------------------- + 1 file changed, 26 insertions(+), 20 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 1874e36be0..8d31198006 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -241,28 +241,34 @@ endif() + # NOTE: + # zstd < 1.5.6 does not provide the CMake imported target `zstd::libzstd`. + # Older versions must be consumed via their pkg-config file. +-if(HTTPLIB_REQUIRE_ZSTD) +- find_package(zstd 1.5.6 CONFIG) +- if(NOT zstd_FOUND) +- find_package(PkgConfig REQUIRED) +- pkg_check_modules(zstd REQUIRED IMPORTED_TARGET libzstd) +- add_library(zstd::libzstd ALIAS PkgConfig::zstd) +- endif() +- set(HTTPLIB_IS_USING_ZSTD TRUE) +-elseif(HTTPLIB_USE_ZSTD_IF_AVAILABLE) +- find_package(zstd 1.5.6 CONFIG QUIET) +- if(NOT zstd_FOUND) +- find_package(PkgConfig QUIET) +- if(PKG_CONFIG_FOUND) +- pkg_check_modules(zstd QUIET IMPORTED_TARGET libzstd) +- +- if(TARGET PkgConfig::zstd) ++if (HTTPLIB_REQUIRE_ZSTD) ++ set(HTTPLIB_ZSTD_REQUESTED ON) ++ set(HTTPLIB_ZSTD_REQUIRED REQUIRED) ++elseif (HTTPLIB_USE_ZSTD_IF_AVAILABLE) ++ set(HTTPLIB_ZSTD_REQUESTED ON) ++ set(HTTPLIB_ZSTD_REQUIRED QUIET) ++endif() ++ ++if (HTTPLIB_ZSTD_REQUESTED) ++ if (TARGET zstd::libzstd) ++ set(HTTPLIB_IS_USING_ZSTD TRUE) ++ else() ++ find_package(zstd 1.5.6 CONFIG QUIET) ++ ++ if (NOT zstd_FOUND) ++ find_package(PkgConfig ${HTTPLIB_ZSTD_REQUIRED}) ++ pkg_check_modules(zstd ${HTTPLIB_ZSTD_REQUIRED} IMPORTED_TARGET libzstd) ++ ++ if (TARGET PkgConfig::zstd) + add_library(zstd::libzstd ALIAS PkgConfig::zstd) + endif() + endif() ++ ++ # This will always be true if zstd is required. ++ # If zstd *isn't* found when zstd is set to required, ++ # CMake will error out earlier in this block. ++ set(HTTPLIB_IS_USING_ZSTD ${zstd_FOUND}) + endif() +- # Both find_package and PkgConf set a XXX_FOUND var +- set(HTTPLIB_IS_USING_ZSTD ${zstd_FOUND}) + endif() + + # Used for default, common dirs that the end-user can change (if needed) +@@ -317,13 +323,13 @@ if(HTTPLIB_COMPILE) + $ + $ + ) +- ++ + # Add C++20 module support if requested + # Include from separate file to prevent parse errors on older CMake versions + if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.28") + include(cmake/modules.cmake) + endif() +- ++ + set_target_properties(${PROJECT_NAME} + PROPERTIES + VERSION ${${PROJECT_NAME}_VERSION} diff --git a/.patch/libusb/0001-netbsd-gettime.patch b/.patch/libusb/0001-netbsd-gettime.patch new file mode 100644 index 0000000000..8cfab9ea91 --- /dev/null +++ b/.patch/libusb/0001-netbsd-gettime.patch @@ -0,0 +1,25 @@ +diff --git a/libusb/os/netbsd_usb.c b/libusb/os/netbsd_usb.c +index a9a50b2..56e681b 100644 +--- a/libusb/os/netbsd_usb.c ++++ b/libusb/os/netbsd_usb.c +@@ -580,6 +580,20 @@ _access_endpoint(struct libusb_transfer *transfer) + return hpriv->endpoints[endpt]; + } + ++void usbi_get_monotonic_time(struct timespec *tp) { ++ struct timeval tv; ++ gettimeofday(&tv, NULL); ++ tp->tv_sec = tv.tv_sec; ++ tp->tv_nsec = tv.tv_usec * 1000ull; ++} ++ ++void usbi_get_real_time(struct timespec *tp) { ++ struct timeval tv; ++ gettimeofday(&tv, NULL); ++ tp->tv_sec = tv.tv_sec; ++ tp->tv_nsec = tv.tv_usec * 1000ull; ++} ++ + int + _sync_gen_transfer(struct usbi_transfer *itransfer) + { diff --git a/.patch/mbedtls/0001-cmake-version.patch b/.patch/mbedtls/0001-cmake-version.patch deleted file mode 100644 index 2b78804884..0000000000 --- a/.patch/mbedtls/0001-cmake-version.patch +++ /dev/null @@ -1,10 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 1811c42..bac9098 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -1,4 +1,4 @@ --cmake_minimum_required(VERSION 2.6) -+cmake_minimum_required(VERSION 3.5) - if(TEST_CPP) - project("mbed TLS" C CXX) - else() diff --git a/.patch/opus/0001-disable-clang-runtime-neon.patch b/.patch/opus/0001-disable-clang-runtime-neon.patch new file mode 100644 index 0000000000..27a905c366 --- /dev/null +++ b/.patch/opus/0001-disable-clang-runtime-neon.patch @@ -0,0 +1,28 @@ +From cc15da16e533b2a801934eab2dfeaf3c3949a1dc Mon Sep 17 00:00:00 2001 +From: crueter +Date: Mon, 8 Sep 2025 12:28:55 -0400 +Subject: [PATCH] [cmake] disable NEON runtime check on clang-cl + +When enabling runtime NEON checking for clang-cl, the linker would error out with `undefined symbol: __emit`, since clang doesn't actually implement this instruction. Therefore it makes sense to disable the runtime check by default on this platform, until either this is fixed or a clang-cl compatible intrinsic check is added (I don't have enough knowledge of MSVC to do this) +--- + cmake/OpusConfig.cmake | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/cmake/OpusConfig.cmake b/cmake/OpusConfig.cmake +index e9319fbad..d0f459e88 100644 +--- a/cmake/OpusConfig.cmake ++++ b/cmake/OpusConfig.cmake +@@ -71,7 +71,12 @@ elseif(OPUS_CPU_ARM AND NOT OPUS_DISABLE_INTRINSICS) + opus_detect_neon(COMPILER_SUPPORT_NEON) + if(COMPILER_SUPPORT_NEON) + option(OPUS_USE_NEON "Option to enable NEON" ON) +- option(OPUS_MAY_HAVE_NEON "Does runtime check for neon support" ON) ++ if (MSVC AND CMAKE_CXX_COMPILER_ID STREQUAL "Clang") ++ set(NEON_RUNTIME_CHECK_DEFAULT OFF) ++ else() ++ set(NEON_RUNTIME_CHECK_DEFAULT ON) ++ endif() ++ option(OPUS_MAY_HAVE_NEON "Does runtime check for neon support" ${NEON_RUNTIME_CHECK_DEFAULT}) + option(OPUS_PRESUME_NEON "Assume target CPU has NEON support" OFF) + if(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64") + set(OPUS_PRESUME_NEON ON) diff --git a/.patch/opus/0002-no-install.patch b/.patch/opus/0002-no-install.patch new file mode 100644 index 0000000000..833a3e4178 --- /dev/null +++ b/.patch/opus/0002-no-install.patch @@ -0,0 +1,153 @@ +From bf455b67b4eaa446ffae5d25410b141b7b1b1082 Mon Sep 17 00:00:00 2001 +From: crueter +Date: Mon, 8 Sep 2025 12:08:20 -0400 +Subject: [PATCH] [cmake] `OPUS_INSTALL` option; only default install if root + project + +Signed-off-by: crueter +--- + CMakeLists.txt | 112 ++++++++++++++++++++++++++++--------------------- + 1 file changed, 64 insertions(+), 48 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index fcf034b19..08b5e16f8 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -4,6 +4,13 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") + include(OpusPackageVersion) + get_package_version(PACKAGE_VERSION PROJECT_VERSION) + ++# root project detection ++if(DEFINED PROJECT_NAME) ++ set(root_project OFF) ++else() ++ set(root_project ON) ++endif() ++ + project(Opus LANGUAGES C VERSION ${PROJECT_VERSION}) + + include(OpusFunctions) +@@ -83,12 +90,16 @@ set(OPUS_DNN_FLOAT_DEBUG_HELP_STR "Run DNN computations as float for debugging p + option(OPUS_DNN_FLOAT_DEBUG ${OPUS_DNN_FLOAT_DEBUG_HELP_STR} OFF) + add_feature_info(OPUS_DNN_FLOAT_DEBUG OPUS_DNN_FLOAT_DEBUG ${OPUS_DNN_FLOAT_DEBUG_HELP_STR}) + ++set(OPUS_INSTALL_HELP_STR "Install Opus targets") ++option(OPUS_INSTALL ${OPUS_INSTALL_HELP_STR} ${root_project}) ++add_feature_info(OPUS_INSTALL OPUS_INSTALL ${OPUS_INSTALL_HELP_STR}) ++ + set(OPUS_INSTALL_PKG_CONFIG_MODULE_HELP_STR "install pkg-config module.") +-option(OPUS_INSTALL_PKG_CONFIG_MODULE ${OPUS_INSTALL_PKG_CONFIG_MODULE_HELP_STR} ON) ++option(OPUS_INSTALL_PKG_CONFIG_MODULE ${OPUS_INSTALL_PKG_CONFIG_MODULE_HELP_STR} ${OPUS_INSTALL}) + add_feature_info(OPUS_INSTALL_PKG_CONFIG_MODULE OPUS_INSTALL_PKG_CONFIG_MODULE ${OPUS_INSTALL_PKG_CONFIG_MODULE_HELP_STR}) + + set(OPUS_INSTALL_CMAKE_CONFIG_MODULE_HELP_STR "install CMake package config module.") +-option(OPUS_INSTALL_CMAKE_CONFIG_MODULE ${OPUS_INSTALL_CMAKE_CONFIG_MODULE_HELP_STR} ON) ++option(OPUS_INSTALL_CMAKE_CONFIG_MODULE ${OPUS_INSTALL_CMAKE_CONFIG_MODULE_HELP_STR} ${OPUS_INSTALL}) + add_feature_info(OPUS_INSTALL_CMAKE_CONFIG_MODULE OPUS_INSTALL_CMAKE_CONFIG_MODULE ${OPUS_INSTALL_CMAKE_CONFIG_MODULE_HELP_STR}) + + set(OPUS_DRED_HELP_STR "enable DRED.") +@@ -613,53 +624,58 @@ if(OPUS_BUILD_FRAMEWORK) + OUTPUT_NAME Opus) + endif() + +-install(TARGETS opus +- EXPORT OpusTargets +- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} +- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} +- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} +- FRAMEWORK DESTINATION ${CMAKE_INSTALL_PREFIX} +- PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/opus) +- +-if(OPUS_INSTALL_PKG_CONFIG_MODULE) +- set(prefix ${CMAKE_INSTALL_PREFIX}) +- set(exec_prefix ${CMAKE_INSTALL_PREFIX}) +- set(libdir ${CMAKE_INSTALL_FULL_LIBDIR}) +- set(includedir ${CMAKE_INSTALL_FULL_INCLUDEDIR}) +- set(VERSION ${PACKAGE_VERSION}) +- if(HAVE_LIBM) +- set(LIBM "-lm") ++if (OPUS_INSTALL) ++ install(TARGETS opus ++ EXPORT OpusTargets ++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ++ FRAMEWORK DESTINATION ${CMAKE_INSTALL_PREFIX} ++ PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/opus) ++ ++ if(OPUS_INSTALL_PKG_CONFIG_MODULE) ++ set(prefix ${CMAKE_INSTALL_PREFIX}) ++ set(exec_prefix ${CMAKE_INSTALL_PREFIX}) ++ set(libdir ${CMAKE_INSTALL_FULL_LIBDIR}) ++ set(includedir ${CMAKE_INSTALL_FULL_INCLUDEDIR}) ++ set(VERSION ${PACKAGE_VERSION}) ++ if(HAVE_LIBM) ++ set(LIBM "-lm") ++ endif() ++ configure_file(opus.pc.in opus.pc) ++ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/opus.pc ++ DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) ++ endif() ++ ++ if(OPUS_INSTALL_CMAKE_CONFIG_MODULE) ++ set(CPACK_GENERATOR TGZ) ++ include(CPack) ++ set(CMAKE_INSTALL_PACKAGEDIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}) ++ install(EXPORT OpusTargets ++ NAMESPACE Opus:: ++ DESTINATION ${CMAKE_INSTALL_PACKAGEDIR}) ++ ++ include(CMakePackageConfigHelpers) ++ ++ set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR}) ++ configure_package_config_file( ++ ${PROJECT_SOURCE_DIR}/cmake/OpusConfig.cmake.in ++ OpusConfig.cmake ++ INSTALL_DESTINATION ++ ${CMAKE_INSTALL_PACKAGEDIR} ++ PATH_VARS ++ INCLUDE_INSTALL_DIR ++ INSTALL_PREFIX ++ ${CMAKE_INSTALL_PREFIX}) ++ ++ write_basic_package_version_file(OpusConfigVersion.cmake ++ VERSION ${PROJECT_VERSION} ++ COMPATIBILITY SameMajorVersion) ++ ++ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/OpusConfig.cmake ++ ${CMAKE_CURRENT_BINARY_DIR}/OpusConfigVersion.cmake ++ DESTINATION ${CMAKE_INSTALL_PACKAGEDIR}) + endif() +- configure_file(opus.pc.in opus.pc) +- install(FILES ${CMAKE_CURRENT_BINARY_DIR}/opus.pc +- DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) +-endif() +- +-if(OPUS_INSTALL_CMAKE_CONFIG_MODULE) +- set(CPACK_GENERATOR TGZ) +- include(CPack) +- set(CMAKE_INSTALL_PACKAGEDIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}) +- install(EXPORT OpusTargets +- NAMESPACE Opus:: +- DESTINATION ${CMAKE_INSTALL_PACKAGEDIR}) +- +- include(CMakePackageConfigHelpers) +- +- set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR}) +- configure_package_config_file(${PROJECT_SOURCE_DIR}/cmake/OpusConfig.cmake.in +- OpusConfig.cmake +- INSTALL_DESTINATION +- ${CMAKE_INSTALL_PACKAGEDIR} +- PATH_VARS +- INCLUDE_INSTALL_DIR +- INSTALL_PREFIX +- ${CMAKE_INSTALL_PREFIX}) +- write_basic_package_version_file(OpusConfigVersion.cmake +- VERSION ${PROJECT_VERSION} +- COMPATIBILITY SameMajorVersion) +- install(FILES ${CMAKE_CURRENT_BINARY_DIR}/OpusConfig.cmake +- ${CMAKE_CURRENT_BINARY_DIR}/OpusConfigVersion.cmake +- DESTINATION ${CMAKE_INSTALL_PACKAGEDIR}) + endif() + + if(OPUS_BUILD_PROGRAMS) diff --git a/.patch/spirv-tools/0001-netbsd-fix.patch b/.patch/spirv-tools/0001-netbsd-fix.patch new file mode 100644 index 0000000000..e4b71f2938 --- /dev/null +++ b/.patch/spirv-tools/0001-netbsd-fix.patch @@ -0,0 +1,14 @@ +diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt +index eb4e69e..3155805 100644 +--- a/external/CMakeLists.txt ++++ b/external/CMakeLists.txt +@@ -72,7 +72,8 @@ if (SPIRV_TOOLS_USE_MIMALLOC) + pop_variable(MI_BUILD_TESTS) + endif() + +-if (DEFINED SPIRV-Headers_SOURCE_DIR) ++# NetBSD doesn't have SPIRV-Headers readily available on system ++if (DEFINED SPIRV-Headers_SOURCE_DIR AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "NetBSD") + # This allows flexible position of the SPIRV-Headers repo. + set(SPIRV_HEADER_DIR ${SPIRV-Headers_SOURCE_DIR}) + else() diff --git a/.patch/spirv-tools/0002-allow-static-only.patch b/.patch/spirv-tools/0002-allow-static-only.patch new file mode 100644 index 0000000000..873589a5ac --- /dev/null +++ b/.patch/spirv-tools/0002-allow-static-only.patch @@ -0,0 +1,287 @@ +From 67bf3d1381b1faf59e87001d6156ba4e21cada14 Mon Sep 17 00:00:00 2001 +From: crueter +Date: Mon, 29 Dec 2025 21:22:36 -0500 +Subject: [PATCH] [cmake] refactor: shared/static handling + +This significantly redoes the way shared and static libraries are +handled. Now, it's controlled by two options: `SPIRV_TOOLS_BUILD_STATIC` +and `SPIRV_TOOLS_BUILD_SHARED`. + +The default configuration (no `BUILD_SHARED_LIBS` set, options left at +default) is to build shared ONLY if this is the master project, or +static ONLY if this is a subproject (e.g. FetchContent, CPM.cmake). Also +I should note that static-only (i.e. no shared) is now a supported +target, this is done because projects including it as a submodule e.g. +on Android or Windows may prefer this. + +Now the shared/static handling: +- static ON, shared OFF: Only generates `.a` libraries. +- static ON, shared ON: Generates `.a` libraries, but also + `libSPIRV-Tools.so` +- static OFF, shared ON: Only generates `.so` libraries. + +Notable TODOs: +- SPIRV-Tools-shared.pc seems redundant--how should we handle which one + to use in the case of distributions that distribute both types (MSYS2 + for instance)? + * *Note: pkgconfig sucks at this and usually just leaves it up to the + user, so the optimal solution may indeed be doing absolutely + nothing.* CMake is unaffected :) +- use namespaces in the CMake config files pleaaaaase + +This is going to change things a good bit for package maintainers, but +cest la vie. It's for the greater good, I promise. + +Signed-off-by: crueter +--- + CMakeLists.txt | 108 +++++++++++++++++++++++++----------------- + source/CMakeLists.txt | 62 ++++++++++++------------ + 2 files changed, 94 insertions(+), 76 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 4d843b4d2f..07201f690f 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -14,6 +14,15 @@ + + cmake_minimum_required(VERSION 3.22.1) + ++# master project detection--useful for FetchContent/submodule inclusion ++set(master_project OFF) ++set(subproject ON) ++ ++if (NOT DEFINED PROJECT_NAME) ++ set(master_project ON) ++ set(subproject OFF) ++endif() ++ + project(spirv-tools) + + # Avoid a bug in CMake 3.22.1. By default it will set -std=c++11 for +@@ -135,46 +144,49 @@ if (DEFINED SPIRV_TOOLS_EXTRA_DEFINITIONS) + add_definitions(${SPIRV_TOOLS_EXTRA_DEFINITIONS}) + endif() + +-# Library build setting definitions: +-# +-# * SPIRV_TOOLS_BUILD_STATIC - ON or OFF - Defaults to ON. +-# If enabled the following targets will be created: +-# ${SPIRV_TOOLS}-static - STATIC library. +-# Has full public symbol visibility. +-# ${SPIRV_TOOLS}-shared - SHARED library. +-# Has default-hidden symbol visibility. +-# ${SPIRV_TOOLS} - will alias to one of above, based on BUILD_SHARED_LIBS. +-# If disabled the following targets will be created: +-# ${SPIRV_TOOLS} - either STATIC or SHARED based on SPIRV_TOOLS_LIBRARY_TYPE. +-# Has full public symbol visibility. +-# ${SPIRV_TOOLS}-shared - SHARED library. +-# Has default-hidden symbol visibility. +-# +-# * SPIRV_TOOLS_LIBRARY_TYPE - SHARED or STATIC. +-# Specifies the library type used for building SPIRV-Tools libraries. +-# Defaults to SHARED when BUILD_SHARED_LIBS=1, otherwise STATIC. +-# +-# * SPIRV_TOOLS_FULL_VISIBILITY - "${SPIRV_TOOLS}-static" or "${SPIRV_TOOLS}" +-# Evaluates to the SPIRV_TOOLS target library name that has no hidden symbols. +-# This is used by internal targets for accessing symbols that are non-public. +-# Note this target provides no API stability guarantees. +-# +-# Ideally, all of these will go away - see https://github.com/KhronosGroup/SPIRV-Tools/issues/3909. +-option(ENABLE_EXCEPTIONS_ON_MSVC "Build SPIRV-TOOLS with c++ exceptions enabled in MSVC" ON) +-option(SPIRV_TOOLS_BUILD_STATIC "Build ${SPIRV_TOOLS}-static target. ${SPIRV_TOOLS} will alias to ${SPIRV_TOOLS}-static or ${SPIRV_TOOLS}-shared based on BUILD_SHARED_LIBS" ON) +-if(SPIRV_TOOLS_BUILD_STATIC) +- set(SPIRV_TOOLS_FULL_VISIBILITY ${SPIRV_TOOLS}-static) ++# If BUILD_SHARED_LIBS is undefined, set it based on whether we are ++# the master project or a subproject ++if (NOT DEFINED BUILD_SHARED_LIBS) ++ set(BUILD_SHARED_LIBS ${master_project}) ++endif() ++ ++if (BUILD_SHARED_LIBS) ++ set(static_default OFF) ++else() ++ set(static_default ON) ++endif() ++ ++option(SPIRV_TOOLS_BUILD_SHARED "Build ${SPIRV_TOOLS} as a shared library" ++ ${BUILD_SHARED_LIBS}) ++option(SPIRV_TOOLS_BUILD_STATIC "Build ${SPIRV_TOOLS} as a static library" ++ ${static_default}) ++ ++# Avoid conflict between the dll import library and ++# the static library (thanks microsoft) ++if(CMAKE_STATIC_LIBRARY_PREFIX STREQUAL "" AND ++ CMAKE_STATIC_LIBRARY_SUFFIX STREQUAL ".lib") ++ set(SPIRV_TOOLS_STATIC_LIBNAME "${SPIRV_TOOLS}-static") ++else() ++ set(SPIRV_TOOLS_STATIC_LIBNAME "${SPIRV_TOOLS}") ++endif() ++ ++if (SPIRV_TOOLS_BUILD_STATIC) ++ # If building a static library at all, always build other libraries as static, ++ # and link to the static SPIRV-Tools library. + set(SPIRV_TOOLS_LIBRARY_TYPE "STATIC") +-else(SPIRV_TOOLS_BUILD_STATIC) +- set(SPIRV_TOOLS_FULL_VISIBILITY ${SPIRV_TOOLS}) +- if (NOT DEFINED SPIRV_TOOLS_LIBRARY_TYPE) +- if(BUILD_SHARED_LIBS) +- set(SPIRV_TOOLS_LIBRARY_TYPE "SHARED") +- else() +- set(SPIRV_TOOLS_LIBRARY_TYPE "STATIC") +- endif() +- endif() +-endif(SPIRV_TOOLS_BUILD_STATIC) ++ set(SPIRV_TOOLS_FULL_VISIBILITY ${SPIRV_TOOLS}-static) ++elseif (SPIRV_TOOLS_BUILD_SHARED) ++ # If only building a shared library, link other libraries to the ++ # shared library. Also, other libraries should be shared ++ set(SPIRV_TOOLS_LIBRARY_TYPE "SHARED") ++ set(SPIRV_TOOLS_FULL_VISIBILITY ${SPIRV_TOOLS}-shared) ++else() ++ message(FATAL_ERROR "You must set one of " ++ "SPIRV_TOOLS_BUILD_STATIC or SPIRV_TOOLS_BUILD_SHARED!") ++endif() ++ ++option(ENABLE_EXCEPTIONS_ON_MSVC ++ "Build SPIRV-TOOLS with C++ exceptions enabled in MSVC" ON) + + function(spvtools_default_compile_options TARGET) + target_compile_options(${TARGET} PRIVATE ${SPIRV_WARNINGS}) +@@ -372,7 +384,7 @@ if (NOT "${SPIRV_SKIP_TESTS}") + endif() + + set(SPIRV_LIBRARIES "-lSPIRV-Tools-opt -lSPIRV-Tools -lSPIRV-Tools-link") +-set(SPIRV_SHARED_LIBRARIES "-lSPIRV-Tools-shared") ++set(SPIRV_SHARED_LIBRARIES "-lSPIRV-Tools") + + # Build pkg-config file + # Use a first-class target so it's regenerated when relevant files are updated. +@@ -388,7 +400,12 @@ add_custom_command( + -DSPIRV_LIBRARIES=${SPIRV_LIBRARIES} + -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/write_pkg_config.cmake + DEPENDS "CHANGES" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/SPIRV-Tools.pc.in" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/write_pkg_config.cmake") +-add_custom_command( ++ ++set(pc_files ${CMAKE_CURRENT_BINARY_DIR}/SPIRV-Tools.pc) ++ ++# TODO(crueter): remove? ++if (SPIRV_TOOLS_BUILD_SHARED) ++ add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/SPIRV-Tools-shared.pc + COMMAND ${CMAKE_COMMAND} + -DCHANGES_FILE=${CMAKE_CURRENT_SOURCE_DIR}/CHANGES +@@ -400,9 +417,12 @@ add_custom_command( + -DSPIRV_SHARED_LIBRARIES=${SPIRV_SHARED_LIBRARIES} + -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/write_pkg_config.cmake + DEPENDS "CHANGES" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/SPIRV-Tools-shared.pc.in" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/write_pkg_config.cmake") +-add_custom_target(spirv-tools-pkg-config +- ALL +- DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/SPIRV-Tools-shared.pc ${CMAKE_CURRENT_BINARY_DIR}/SPIRV-Tools.pc) ++ set(pc_files ${pc_files} ${CMAKE_CURRENT_BINARY_DIR}/SPIRV-Tools-shared.pc) ++endif() ++ ++add_custom_target(spirv-tools-pkg-config ++ ALL ++ DEPENDS ${pc_files}) + + # Install pkg-config file + if (ENABLE_SPIRV_TOOLS_INSTALL) +diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt +index bfa1e661bc..fd3712c70c 100644 +--- a/source/CMakeLists.txt ++++ b/source/CMakeLists.txt +@@ -337,49 +337,44 @@ function(spirv_tools_default_target_options target) + ) + set_property(TARGET ${target} PROPERTY FOLDER "SPIRV-Tools libraries") + spvtools_check_symbol_exports(${target}) +- add_dependencies(${target} spirv-tools-build-version core_tables extinst_tables) ++ add_dependencies(${target} ++ spirv-tools-build-version core_tables extinst_tables) + endfunction() + +-# Always build ${SPIRV_TOOLS}-shared. This is expected distro packages, and +-# unlike the other SPIRV_TOOLS target, defaults to hidden symbol visibility. +-add_library(${SPIRV_TOOLS}-shared SHARED ${SPIRV_SOURCES}) +-if (SPIRV_TOOLS_USE_MIMALLOC) +- target_link_libraries(${SPIRV_TOOLS}-shared PRIVATE mimalloc-static) ++if (SPIRV_TOOLS_BUILD_SHARED) ++ add_library(${SPIRV_TOOLS}-shared SHARED ${SPIRV_SOURCES}) ++ if (SPIRV_TOOLS_USE_MIMALLOC) ++ target_link_libraries(${SPIRV_TOOLS}-shared PRIVATE mimalloc-static) ++ endif() ++ ++ set_target_properties(${SPIRV_TOOLS}-shared PROPERTIES ++ OUTPUT_NAME "${SPIRV_TOOLS}") ++ spirv_tools_default_target_options(${SPIRV_TOOLS}-shared) ++ ++ target_compile_definitions(${SPIRV_TOOLS}-shared ++ PRIVATE SPIRV_TOOLS_IMPLEMENTATION ++ PUBLIC SPIRV_TOOLS_SHAREDLIB) ++ ++ list(APPEND SPIRV_TOOLS_TARGETS ${SPIRV_TOOLS}-shared) + endif() +-spirv_tools_default_target_options(${SPIRV_TOOLS}-shared) +-set_target_properties(${SPIRV_TOOLS}-shared PROPERTIES CXX_VISIBILITY_PRESET hidden) +-target_compile_definitions(${SPIRV_TOOLS}-shared +- PRIVATE SPIRV_TOOLS_IMPLEMENTATION +- PUBLIC SPIRV_TOOLS_SHAREDLIB +-) + + if(SPIRV_TOOLS_BUILD_STATIC) + add_library(${SPIRV_TOOLS}-static STATIC ${SPIRV_SOURCES}) + if (SPIRV_TOOLS_USE_MIMALLOC AND SPIRV_TOOLS_USE_MIMALLOC_IN_STATIC_BUILD) + target_link_libraries(${SPIRV_TOOLS}-shared PRIVATE mimalloc-static) + endif() ++ + spirv_tools_default_target_options(${SPIRV_TOOLS}-static) +- # The static target does not have the '-static' suffix. +- set_target_properties(${SPIRV_TOOLS}-static PROPERTIES OUTPUT_NAME "${SPIRV_TOOLS}") +- +- # Create the "${SPIRV_TOOLS}" target as an alias to either "${SPIRV_TOOLS}-static" +- # or "${SPIRV_TOOLS}-shared" depending on the value of BUILD_SHARED_LIBS. +- if(BUILD_SHARED_LIBS) +- add_library(${SPIRV_TOOLS} ALIAS ${SPIRV_TOOLS}-shared) +- else() +- add_library(${SPIRV_TOOLS} ALIAS ${SPIRV_TOOLS}-static) +- endif() ++ set_target_properties(${SPIRV_TOOLS}-static PROPERTIES ++ OUTPUT_NAME "${SPIRV_TOOLS_STATIC_LIBNAME}") + +- set(SPIRV_TOOLS_TARGETS ${SPIRV_TOOLS}-static ${SPIRV_TOOLS}-shared) +-else() +- add_library(${SPIRV_TOOLS} ${SPIRV_TOOLS_LIBRARY_TYPE} ${SPIRV_SOURCES}) +- if (SPIRV_TOOLS_USE_MIMALLOC) +- target_link_libraries(${SPIRV_TOOLS} PRIVATE mimalloc-static) +- endif() +- spirv_tools_default_target_options(${SPIRV_TOOLS}) +- set(SPIRV_TOOLS_TARGETS ${SPIRV_TOOLS} ${SPIRV_TOOLS}-shared) ++ list(APPEND SPIRV_TOOLS_TARGETS ${SPIRV_TOOLS}-static) + endif() + ++# Create the "SPIRV-Tools" target as an alias to either "SPIRV-Tools-static" ++# or "SPIRV-Tools-shared" depending on the value of SPIRV_TOOLS_BUILD_SHARED. ++add_library(${SPIRV_TOOLS} ALIAS ${SPIRV_TOOLS_FULL_VISIBILITY}) ++ + if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") + find_library(LIBRT rt) + if(LIBRT) +@@ -390,14 +385,17 @@ if("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") + endif() + + if(ENABLE_SPIRV_TOOLS_INSTALL) +- if (SPIRV_TOOLS_USE_MIMALLOC AND (NOT SPIRV_TOOLS_BUILD_STATIC OR SPIRV_TOOLS_USE_MIMALLOC_IN_STATIC_BUILD)) ++ if (SPIRV_TOOLS_USE_MIMALLOC AND ++ (NOT SPIRV_TOOLS_BUILD_STATIC OR SPIRV_TOOLS_USE_MIMALLOC_IN_STATIC_BUILD)) + list(APPEND SPIRV_TOOLS_TARGETS mimalloc-static) + endif() + install(TARGETS ${SPIRV_TOOLS_TARGETS} EXPORT ${SPIRV_TOOLS}Targets) + export(EXPORT ${SPIRV_TOOLS}Targets FILE ${SPIRV_TOOLS}Target.cmake) + + spvtools_config_package_dir(${SPIRV_TOOLS} PACKAGE_DIR) +- install(EXPORT ${SPIRV_TOOLS}Targets FILE ${SPIRV_TOOLS}Target.cmake DESTINATION ${PACKAGE_DIR}) ++ install(EXPORT ${SPIRV_TOOLS}Targets ++ FILE ${SPIRV_TOOLS}Target.cmake ++ DESTINATION ${PACKAGE_DIR}) + + # Special config file for root library compared to other libs. + file(WRITE ${CMAKE_BINARY_DIR}/${SPIRV_TOOLS}Config.cmake diff --git a/.patch/unordered-dense/0001-avoid-memset-when-clearing-an-empty-table.patch b/.patch/unordered-dense/0001-avoid-memset-when-clearing-an-empty-table.patch new file mode 100644 index 0000000000..f7d7c7ebe2 --- /dev/null +++ b/.patch/unordered-dense/0001-avoid-memset-when-clearing-an-empty-table.patch @@ -0,0 +1,26 @@ +From b3622608433c183ba868a1dc8dd9cf285eb3b916 Mon Sep 17 00:00:00 2001 +From: Dario Petrillo +Date: Thu, 27 Nov 2025 23:12:38 +0100 +Subject: [PATCH] avoid extra memset when clearing an empty table + +--- + include/ankerl/unordered_dense.h | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/include/ankerl/unordered_dense.h b/include/ankerl/unordered_dense.h +index 0835342..4938212 100644 +--- a/include/ankerl/unordered_dense.h ++++ b/include/ankerl/unordered_dense.h +@@ -1490,8 +1490,10 @@ class table : public std::conditional_t, base_table_type_map, bas + // modifiers ////////////////////////////////////////////////////////////// + + void clear() { +- m_values.clear(); +- clear_buckets(); ++ if (!empty()) { ++ m_values.clear(); ++ clear_buckets(); ++ } + } + + auto insert(value_type const& value) -> std::pair { diff --git a/.reuse/dep5 b/.reuse/dep5 index 9bcddb1afd..081c21e583 100644 --- a/.reuse/dep5 +++ b/.reuse/dep5 @@ -14,11 +14,11 @@ License: GPL-2.0-or-later Files: dist/qt_themes/default/icons/256x256/eden.png dist/yuzu.bmp - dist/yuzu.icns + dist/eden.icns dist/eden.ico - dist/eden.svg -Copyright: yuzu Emulator Project -License: GPL-2.0-or-later + dist/dev.eden_emu.eden.svg +Copyright: 2025 Eden Emulator Project +License: GPL-3.0-or-later Files: dist/qt_themes/qdarkstyle*/LICENSE.* dist/qt_themes/qdarkstyle*/style.qrc @@ -155,3 +155,39 @@ License: BSD-3-Clause Files: src/android/app/debug.keystore Copyright: 2023 yuzu Emulator Project License: GPL-3.0-or-later + +Files: dist/qt_themes/colorful/icons/48x48/user-trash.png + dist/qt_themes/colorful/icons/48x48/upload.png + dist/qt_themes/colorful/icons/48x48/download.png +Copyright: 2014 Uri Herrera + 1996-2025 KDE Software Foundation +License: LGPL-2.0-or-later + +Files: dist/qt_themes/default/icons/48x48/user-trash.png + dist/qt_themes/default/icons/48x48/upload.png + dist/qt_themes/default/icons/48x48/download.png + dist/qt_themes/default_dark/icons/48x48/user-trash.png + dist/qt_themes/default_dark/icons/48x48/upload.png + dist/qt_themes/default_dark/icons/48x48/download.png +Copyright: 2025 Fonticons, Inc. +License: CC-BY-4.0 +Comment: All of these icons have been modified by crueter + +Files: CMakeModules/CPM.cmake +Copyright: 2019-2023 Lars Melchior +License: MIT + +Files: CMakeModules/CPMUtil.cmake + CMakeModules/CPM.cmake + CMakeModules/GetSCMRev.cmake + CMakeModules/DetectArchitecture.cmake + tools/cpm/* + tools/update-cpm.sh + tools/shellcheck.sh + docs/CPMUtil.md + **cpmfile.json +Copyright: 2025 crueter +License: GPL-3.0-or-later +Comment: CPM.cmake has had additional modifications from crueter to better work with CPMUtil + https://git.crueter.xyz/CMake/CPMUtil + https://git.crueter.xyz/CMake/Modules diff --git a/.shellcheckrc b/.shellcheckrc new file mode 100644 index 0000000000..96e22629de --- /dev/null +++ b/.shellcheckrc @@ -0,0 +1 @@ +shell=sh diff --git a/.tx/config b/.tx/config new file mode 100755 index 0000000000..fdca1f30dc --- /dev/null +++ b/.tx/config @@ -0,0 +1,21 @@ +[main] +host = https://app.transifex.com + +[o:edenemu:p:eden-emulator:r:android-translations] +file_filter = src/android/app/src/main/res/values-/strings.xml +source_file = src/android/app/src/main/res/values/strings.xml +type = ANDROID +minimum_perc = 0 +resource_name = Android Translations +replace_edited_strings = false +keep_translations = false +lang_map = zh_CN: zh-rCN, zh_TW: zh-rTW, pt_BR: pt-rBR, pt_PT: pt-rPT, vi_VN: vi, ku: ckb, ja_JP: ja, ko_KR: ko, ru_RU: ru + +[o:edenemu:p:eden-emulator:r:qt-translations] +file_filter = dist/languages/.ts +source_file = dist/languages/en.ts +type = QT +minimum_perc = 0 +resource_name = Qt Translations +replace_edited_strings = false +keep_translations = false diff --git a/CMakeLists.txt b/CMakeLists.txt index dacbc73685..42717c496d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,198 +1,248 @@ -# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project # SPDX-License-Identifier: GPL-3.0-or-later cmake_minimum_required(VERSION 3.22) project(yuzu) -if (${CMAKE_SYSTEM_NAME} STREQUAL "SunOS") - set(PLATFORM_SUN ON) -elseif (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD") - set(PLATFORM_FREEBSD ON) -elseif (${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD") - set(PLATFORM_OPENBSD ON) -elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") - set(PLATFORM_LINUX ON) -endif() - list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules") list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/externals/cmake-modules") -if (PLATFORM_SUN) - # Terrific Solaris pkg shenanigans - list(APPEND CMAKE_PREFIX_PATH "/usr/lib/qt/6.6/lib/amd64/cmake") - list(APPEND CMAKE_MODULE_PATH "/usr/lib/qt/6.6/lib/amd64/cmake") - # For some mighty reason, doing a normal release build sometimes may not trigger - # the proper -O3 switch to materialize - if (CMAKE_BUILD_TYPE MATCHES "Release") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3") + +set(CPM_SOURCE_CACHE ${CMAKE_SOURCE_DIR}/.cache/cpm) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + +include(DetectPlatform) +include(DetectArchitecture) +include(DefaultConfig) +include(UseLTO) +include(FasterLinker) +include(UseCcache) +include(CMakeDependentOption) +include(CTest) +include(CPMUtil) + +if (NOT DEFINED ARCHITECTURE) + message(FATAL_ERROR "Architecture didn't make it out of scope, did you delete DetectArchitecture.cmake?") +endif() + +# Needed for FFmpeg w/ VAAPI and DRM +if (PLATFORM_OPENBSD) + # OpenBSD 7.8 broke libcxx when upgrading, so we must define the PSTL backend manually + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I${CMAKE_SYSROOT}/usr/X11R6/include -D_LIBCPP_PSTL_BACKEND_SERIAL=1") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I${CMAKE_SYSROOT}/usr/X11R6/include -D_LIBCPP_PSTL_BACKEND_SERIAL=1") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${CMAKE_SYSROOT}/usr/X11R6/lib") +elseif (PLATFORM_NETBSD) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I${CMAKE_SYSROOT}/usr/X11R7/include -I${CMAKE_SYSROOT}/usr/pkg/include/c++/v1") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I${CMAKE_SYSROOT}/usr/X11R7/include -I${CMAKE_SYSROOT}/usr/pkg/include/c++/v1") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${CMAKE_SYSROOT}/usr/X11R7/lib") +endif() + +# NetBSD: Fun for the whole family! +if (PLATFORM_NETBSD) + set(ENV{PKG_CONFIG_PATH} "${PKG_CONFIG_PATH}:${CMAKE_SYSROOT}/usr/pkg/lib/ffmpeg7/pkgconfig") +endif() + +cmake_dependent_option(YUZU_STATIC_ROOM "Build a static room executable only (CI only)" OFF "PLATFORM_LINUX" OFF) +if (YUZU_STATIC_ROOM) + set(YUZU_ROOM ON) + set(YUZU_ROOM_STANDALONE ON) + + # disable e v e r y t h i n g + set(ENABLE_QT OFF) + set(YUZU_CMD OFF) + set(ENABLE_CUBEB OFF) + set(ENABLE_UPDATE_CHECKER OFF) + set(USE_DISCORD_PRESENCE OFF) + set(BUILD_TESTING OFF) + set(ENABLE_WEB_SERVICE OFF) + set(ENABLE_LIBUSB OFF) + + # allow static libs for boost though + set(Boost_USE_STATIC_LIBS ON) + set(CMAKE_FIND_LIBRARY_SUFFIXES ".a") + set(OPENSSL_USE_STATIC_LIBS ON) + + set(zstd_FORCE_BUNDLED ON) + set(fmt_FORCE_BUNDLED ON) +endif() + +# qt stuff +option(ENABLE_QT "Enable the Qt frontend" ON) +option(ENABLE_QT_TRANSLATION "Enable translations for the Qt frontend" OFF) +option(ENABLE_UPDATE_CHECKER "Enable update checker (for Qt and Android)" OFF) +cmake_dependent_option(YUZU_USE_QT_MULTIMEDIA "Use QtMultimedia for Camera" OFF "NOT YUZU_USE_BUNDLED_QT" OFF) +cmake_dependent_option(YUZU_USE_QT_WEB_ENGINE "Use QtWebEngine for web applet implementation" OFF "NOT YUZU_USE_BUNDLED_QT" OFF) +set(YUZU_QT_MIRROR "" CACHE STRING "What mirror to use for downloading the bundled Qt libraries") +cmake_dependent_option(YUZU_USE_BUNDLED_QT "Download bundled Qt binaries" "${MSVC}" "ENABLE_QT" OFF) + +# non-linux bundled qt are static +if (YUZU_USE_BUNDLED_QT AND (APPLE OR NOT UNIX)) + set(YUZU_STATIC_BUILD ON) +endif() + +# TODO: does mingw need any of this anymore +# static stuff +option(YUZU_STATIC_BUILD "Use static libraries and executables if available" OFF) + +# TODO: StaticBuild.cmake +if (YUZU_STATIC_BUILD) + # lol + set(Boost_USE_STATIC_LIBS ON) + set(BUILD_SHARED_LIBS OFF) + + ## find .a libs first (static, usually) + set(CMAKE_FIND_LIBRARY_SUFFIXES ".a") + + ## some libraries use CMAKE_IMPORT_LIBRARY_SUFFIX e.g. Harfbuzz ## + set(CMAKE_IMPORT_LIBRARY_SUFFIX ".a") + + if (MINGW) + # simple hook to reject dynamic libs + function(find_library var) + # also skip previously-found libraries cuz... yaknow + # UNLESS they are dll.a :{ + if (${var} AND NOT ${var} MATCHES "dll\\.a$") + return() + endif() + + _find_library(${var} ${ARGN}) + if (${var}) + get_filename_component(lib_name "${${var}}" NAME) + if (lib_name MATCHES "dll\\.a$") + unset(${var} CACHE) + set(${var} "${var}-NOTFOUND" CACHE INTERNAL "" FORCE) + endif() + endif() + endfunction() + + # msys2 quazip does not build a static lib + set(QuaZip-Qt6_FORCE_BUNDLED ON) + + set(YUZU_USE_BUNDLED_FFMPEG ON) + set(YUZU_USE_BUNDLED_SDL2 ON) + set(YUZU_USE_BUNDLED_OPENSSL ON) + + set(HTTPLIB_USE_BROTLI_IF_AVAILABLE OFF) + elseif(APPLE) + set(YUZU_USE_BUNDLED_FFMPEG ON) + set(YUZU_USE_BUNDLED_SDL2 ON) + set(YUZU_USE_BUNDLED_OPENSSL ON) + + # these libs do not properly provide static libs/let you do it with cmake + set(fmt_FORCE_BUNDLED ON) + set(SPIRV-Tools_FORCE_BUNDLED ON) + set(SPIRV-Headers_FORCE_BUNDLED ON) + set(zstd_FORCE_BUNDLED ON) endif() endif() -set(CPM_SOURCE_CACHE ${CMAKE_SOURCE_DIR}/.cache/cpm) +if (MSVC AND ARCHITECTURE_x86) + message(FATAL_ERROR "Attempting to build with the x86 environment is not supported. \ + This can typically happen if you used the Developer Command Prompt from the start menu; \ + instead, run vcvars64.bat directly, located at C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build/vcvars64.bat") +endif() -include(DownloadExternals) -include(CMakeDependentOption) -include(CTest) +if (CXX_CLANG_CL) + # clang-cl prints literally 10000+ warnings without this + add_compile_options( + $<$:-Wno-unused-command-line-argument> + $<$:-Wno-unsafe-buffer-usage> + $<$:-Wno-unused-value> + $<$:-Wno-extra-semi-stmt> + $<$:-Wno-sign-conversion> + $<$:-Wno-reserved-identifier> + $<$:-Wno-deprecated-declarations> + $<$:-Wno-cast-function-type-mismatch> + $<$:/EHsc>) + # REQUIRED CPU features IN Windows-amd64 + if (ARCHITECTURE_x86_64) + add_compile_options( + $<$:-msse4.1> + $<$:-mcx16> + ) + endif() +endif() # Disable Warnings as Errors for MSVC -if (MSVC) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3 /WX-") +if (MSVC AND NOT CXX_CLANG) + # This was dripping into spirv, being overriden, and causing cl flag override warning + # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3 /WX-") + set(CMAKE_CXX_FLAGS_INIT "${CMAKE_CXX_FLAGS_INIT} /W3 /WX-") endif() -if (PLATFORM_FREEBSD) - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L/usr/local/lib") +# TODO(crueter): Cleanup, each dep that has a bundled option should allow to choose between bundled, external, system +cmake_dependent_option(YUZU_USE_EXTERNAL_SDL2 "Build SDL2 from external source" OFF "NOT MSVC;NOT ANDROID" OFF) +cmake_dependent_option(YUZU_USE_BUNDLED_SDL2 "Download bundled SDL2 build" "${MSVC}" "NOT ANDROID" OFF) + +option(ENABLE_CUBEB "Enables the cubeb audio backend" ON) + +set(EXT_DEFAULT OFF) +if (MSVC OR ANDROID) + set(EXT_DEFAULT ON) endif() -# Set bundled sdl2/qt as dependent options. -# On Linux system SDL2 is likely to be lacking HIDAPI support which have drawbacks but is needed for SDL motion -CMAKE_DEPENDENT_OPTION(ENABLE_SDL2 "Enable the SDL2 frontend" ON "NOT ANDROID" OFF) +# ffmpeg +option(YUZU_USE_BUNDLED_FFMPEG "Download bundled FFmpeg" ${EXT_DEFAULT}) +cmake_dependent_option(YUZU_USE_EXTERNAL_FFMPEG "Build FFmpeg from external source" "${PLATFORM_SUN}" "NOT WIN32 AND NOT ANDROID" OFF) -set(EXT_DEFAULT ON) - -if (PLATFORM_FREEBSD) - set(EXT_DEFAULT OFF) +# sirit +set(BUNDLED_SIRIT_DEFAULT OFF) +if (MSVC AND NOT (CMAKE_BUILD_TYPE MATCHES "Deb") OR ANDROID) + set(BUNDLED_SIRIT_DEFAULT ON) endif() -CMAKE_DEPENDENT_OPTION(YUZU_USE_EXTERNAL_SDL2 "Compile external SDL2" ${EXT_DEFAULT} "ENABLE_SDL2;NOT MSVC" OFF) +option(YUZU_USE_BUNDLED_SIRIT "Download bundled sirit" ${BUNDLED_SIRIT_DEFAULT}) -cmake_dependent_option(ENABLE_LIBUSB "Enable the use of LibUSB" ON "NOT ANDROID" OFF) +# FreeBSD 15+ has libusb, versions below should disable it +cmake_dependent_option(ENABLE_LIBUSB "Enable the use of LibUSB" ON "WIN32 OR PLATFORM_LINUX OR PLATFORM_FREEBSD OR APPLE" OFF) -option(ENABLE_OPENGL "Enable OpenGL" ON) +cmake_dependent_option(ENABLE_OPENGL "Enable OpenGL" ON "NOT (WIN32 AND ARCHITECTURE_arm64) AND NOT APPLE" OFF) mark_as_advanced(FORCE ENABLE_OPENGL) -option(ENABLE_QT "Enable the Qt frontend" ON) -option(ENABLE_QT_TRANSLATION "Enable translations for the Qt frontend" OFF) -option(ENABLE_QT_UPDATE_CHECKER "Enable update checker for the Qt frontend" OFF) - -CMAKE_DEPENDENT_OPTION(YUZU_USE_BUNDLED_QT "Download bundled Qt binaries" "${MSVC}" "ENABLE_QT" OFF) - -option(YUZU_USE_CPM "Use CPM to fetch Eden dependencies if needed" ON) - option(ENABLE_WEB_SERVICE "Enable web services (telemetry, etc.)" ON) option(ENABLE_WIFI_SCAN "Enable WiFi scanning" OFF) -option(YUZU_USE_BUNDLED_FFMPEG "Download/Build bundled FFmpeg" ${EXT_DEFAULT}) -option(YUZU_USE_EXTERNAL_VULKAN_HEADERS "Use Vulkan-Headers from externals" ${EXT_DEFAULT}) -option(YUZU_USE_EXTERNAL_VULKAN_UTILITY_LIBRARIES "Use Vulkan-Utility-Libraries from externals" ${EXT_DEFAULT}) -option(YUZU_USE_EXTERNAL_VULKAN_SPIRV_TOOLS "Use SPIRV-Tools from externals" ${EXT_DEFAULT}) - -option(YUZU_USE_QT_MULTIMEDIA "Use QtMultimedia for Camera" OFF) - -option(YUZU_USE_QT_WEB_ENGINE "Use QtWebEngine for web applet implementation" OFF) - -set(YUZU_QT_MIRROR "" CACHE STRING "What mirror to use for downloading the bundled Qt libraries") - -option(ENABLE_CUBEB "Enables the cubeb audio backend" ON) - -CMAKE_DEPENDENT_OPTION(USE_DISCORD_PRESENCE "Enables Discord Rich Presence" OFF "ENABLE_QT" OFF) - -option(ENABLE_MICROPROFILE "Enables microprofile capabilities" OFF) +cmake_dependent_option(USE_DISCORD_PRESENCE "Enables Discord Rich Presence" OFF "ENABLE_QT" OFF) option(YUZU_TESTS "Compile tests" "${BUILD_TESTING}") -option(YUZU_USE_PRECOMPILED_HEADERS "Use precompiled headers" ${EXT_DEFAULT}) - option(YUZU_DOWNLOAD_ANDROID_VVL "Download validation layer binary for android" ON) -option(FORCE_DOWNLOAD_WIN_BUNDLES "Forcefully download bundled Windows dependencies (useful for CI)" OFF) +option(YUZU_LEGACY "Apply patches that improve compatibility with older GPUs (e.g. Snapdragon 865) at the cost of performance" OFF) -if (YUZU_USE_CPM AND ENABLE_SDL2) - option(YUZU_USE_BUNDLED_SDL2 "Download bundled SDL2 build" "${MSVC}") - CMAKE_DEPENDENT_OPTION(FORCE_DOWNLOAD_SDL2 "Forcefully download all bundled SDL2 builds (useful for CI)" OFF "YUZU_USE_BUNDLED_SDL2" OFF) -endif() +option(NIGHTLY_BUILD "Use Nightly qualifiers in the update checker and build metadata" OFF) -CMAKE_DEPENDENT_OPTION(YUZU_ROOM "Enable dedicated room functionality" ON "NOT ANDROID" OFF) +cmake_dependent_option(YUZU_ROOM "Enable dedicated room functionality" ON "NOT ANDROID" OFF) +cmake_dependent_option(YUZU_ROOM_STANDALONE "Enable standalone room executable" ON "YUZU_ROOM" OFF) -CMAKE_DEPENDENT_OPTION(YUZU_ROOM_STANDALONE "Enable standalone room executable" ON "YUZU_ROOM" OFF) +cmake_dependent_option(YUZU_CMD "Compile the eden-cli executable" ON "NOT ANDROID" OFF) -CMAKE_DEPENDENT_OPTION(YUZU_CMD "Compile the eden-cli executable" ON "NOT ANDROID" OFF) - -CMAKE_DEPENDENT_OPTION(YUZU_CRASH_DUMPS "Compile crash dump (Minidump) support" OFF "WIN32 OR LINUX" OFF) - -if (PLATFORM_FREEBSD) - option(YUZU_CHECK_SUBMODULES "Check if submodules are present" OFF) -else() - option(YUZU_CHECK_SUBMODULES "Check if submodules are present" ON) -endif() - -option(YUZU_ENABLE_LTO "Enable link-time optimization" OFF) +cmake_dependent_option(YUZU_CRASH_DUMPS "Compile crash dump (Minidump) support" OFF "WIN32 OR PLATFORM_LINUX" OFF) option(YUZU_DOWNLOAD_TIME_ZONE_DATA "Always download time zone binaries" ON) +set(YUZU_TZDB_PATH "" CACHE STRING "Path to a pre-downloaded timezone database") -option(YUZU_ENABLE_PORTABLE "Allow yuzu to enable portable mode if a user folder is found in the CWD" ON) +cmake_dependent_option(YUZU_USE_BUNDLED_MOLTENVK "Download bundled MoltenVK lib" ON "APPLE" OFF) -CMAKE_DEPENDENT_OPTION(YUZU_USE_FASTER_LD "Check if a faster linker is available" ON "NOT WIN32" OFF) +option(YUZU_DISABLE_LLVM "Disable LLVM (useful for CI)" OFF) -CMAKE_DEPENDENT_OPTION(USE_SYSTEM_MOLTENVK "Use the system MoltenVK lib (instead of the bundled one)" OFF "APPLE" OFF) - -set(DEFAULT_ENABLE_OPENSSL ON) -if (ANDROID OR WIN32 OR APPLE OR PLATFORM_SUN) - # - Windows defaults to the Schannel backend. - # - macOS defaults to the SecureTransport backend. - # - Android currently has no SSL backend as the NDK doesn't include any SSL - # library; a proper 'native' backend would have to go through Java. - # But you can force builds for those platforms to use OpenSSL if you have - # your own copy of it. - set(DEFAULT_ENABLE_OPENSSL OFF) +set(DEFAULT_YUZU_USE_BUNDLED_OPENSSL OFF) +if (EXT_DEFAULT OR PLATFORM_SUN OR PLATFORM_OPENBSD) + set(DEFAULT_YUZU_USE_BUNDLED_OPENSSL ON) endif() -if (ENABLE_WEB_SERVICE) - set(DEFAULT_ENABLE_OPENSSL ON) -endif() - -option(ENABLE_OPENSSL "Enable OpenSSL backend for ISslConnection" ${DEFAULT_ENABLE_OPENSSL}) - -if (YUZU_USE_CPM AND ENABLE_OPENSSL) - CMAKE_DEPENDENT_OPTION(YUZU_USE_BUNDLED_OPENSSL "Download bundled OpenSSL build" "${MSVC}" "NOT ANDROID" ON) - CMAKE_DEPENDENT_OPTION(FORCE_DOWNLOAD_OPENSSL "Forcefully download all bundled OpenSSL builds (useful for CI)" OFF "YUZU_USE_BUNDLED_OPENSSL" OFF) -endif() +option(YUZU_USE_BUNDLED_OPENSSL "Download bundled OpenSSL build" ${DEFAULT_YUZU_USE_BUNDLED_OPENSSL}) if (ANDROID AND YUZU_DOWNLOAD_ANDROID_VVL) - set(vvl_version "sdk-1.3.261.1") - set(vvl_zip_file "${CMAKE_BINARY_DIR}/externals/vvl-android.zip") - if (NOT EXISTS "${vvl_zip_file}") - # Download and extract validation layer release to externals directory - set(vvl_base_url "https://github.com/KhronosGroup/Vulkan-ValidationLayers/releases/download") - file(DOWNLOAD "${vvl_base_url}/${vvl_version}/android-binaries-${vvl_version}-android.zip" - "${vvl_zip_file}" SHOW_PROGRESS) - execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf "${vvl_zip_file}" - WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/externals") - endif() + AddJsonPackage(vulkan-validation-layers) - # Copy the arm64 binary to src/android/app/main/jniLibs - set(vvl_lib_path "${CMAKE_CURRENT_SOURCE_DIR}/src/android/app/src/main/jniLibs/arm64-v8a/") - file(COPY "${CMAKE_BINARY_DIR}/externals/android-binaries-${vvl_version}/arm64-v8a/libVkLayer_khronos_validation.so" + set(abi ${CMAKE_ANDROID_ARCH_ABI}) + + set(vvl_lib_path "${CMAKE_CURRENT_SOURCE_DIR}/src/android/app/src/main/jniLibs/${abi}/") + file(COPY "${VVL_SOURCE_DIR}/${abi}/libVkLayer_khronos_validation.so" DESTINATION "${vvl_lib_path}") endif() -if (ANDROID) - set(CMAKE_SKIP_INSTALL_RULES ON) - set(CMAKE_POLICY_VERSION_MINIMUM 3.5) # Workaround for Oboe -endif() - -if (YUZU_USE_PRECOMPILED_HEADERS) - if (MSVC AND CCACHE) - # buildcache does not properly cache PCH files, leading to compilation errors. - # See https://github.com/mbitsnbites/buildcache/discussions/230 - message(WARNING "buildcache does not properly support Precompiled Headers. Disabling PCH") - set(DYNARMIC_USE_PRECOMPILED_HEADERS OFF CACHE BOOL "" FORCE) - set(YUZU_USE_PRECOMPILED_HEADERS OFF CACHE BOOL "" FORCE) - endif() -endif() -if (YUZU_USE_PRECOMPILED_HEADERS) - message(STATUS "Using Precompiled Headers.") - set(CMAKE_PCH_INSTANTIATE_TEMPLATES ON) -endif() - - -# Default to a Release build -get_property(IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) -if (NOT IS_MULTI_CONFIG AND NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." FORCE) - message(STATUS "Defaulting to a Release build") -endif() - if(EXISTS ${PROJECT_SOURCE_DIR}/hooks/pre-commit AND NOT EXISTS ${PROJECT_SOURCE_DIR}/.git/hooks/pre-commit) if (EXISTS ${PROJECT_SOURCE_DIR}/.git/) message(STATUS "Copying pre-commit hook") @@ -200,157 +250,97 @@ if(EXISTS ${PROJECT_SOURCE_DIR}/hooks/pre-commit AND NOT EXISTS ${PROJECT_SOURCE endif() endif() -# Sanity check : Check that all submodules are present -# ======================================================================= +set(compat_base dist/compatibility_list/compatibility_list) +set(compat_qrc ${compat_base}.qrc) +set(compat_json ${compat_base}.json) -function(check_submodules_present) - file(READ "${PROJECT_SOURCE_DIR}/.gitmodules" gitmodules) - string(REGEX MATCHALL "path *= *[^ \t\r\n]*" gitmodules ${gitmodules}) - foreach(module ${gitmodules}) - string(REGEX REPLACE "path *= *" "" module ${module}) - - file(GLOB RESULT "${PROJECT_SOURCE_DIR}/${module}/*") - list(LENGTH RESULT RES_LEN) - if(RES_LEN EQUAL 0) - message(FATAL_ERROR "Git submodule ${module} not found. " - "Please run: \ngit submodule update --init --recursive") - endif() - if (EXISTS "${PROJECT_SOURCE_DIR}/${module}/.git") - set(SUBMODULE_DIR "${PROJECT_SOURCE_DIR}/${module}") - - execute_process( - COMMAND git rev-parse --short=10 HEAD - WORKING_DIRECTORY ${SUBMODULE_DIR} - OUTPUT_VARIABLE SUBMODULE_SHA - ) - - # would probably be better to do string parsing, but whatever - execute_process( - COMMAND git remote get-url origin - WORKING_DIRECTORY ${SUBMODULE_DIR} - OUTPUT_VARIABLE SUBMODULE_URL - ) - - string(REGEX REPLACE "\n|\r" "" SUBMODULE_SHA ${SUBMODULE_SHA}) - string(REGEX REPLACE "\n|\r|\\.git" "" SUBMODULE_URL ${SUBMODULE_URL}) - - get_filename_component(SUBMODULE_NAME ${SUBMODULE_DIR} NAME) - - set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_NAMES ${SUBMODULE_NAME}) - set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS ${SUBMODULE_SHA}) - set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_URLS ${SUBMODULE_URL}) - endif() - endforeach() -endfunction() - -if(EXISTS ${PROJECT_SOURCE_DIR}/.gitmodules AND YUZU_CHECK_SUBMODULES) - check_submodules_present() -endif() -configure_file(${PROJECT_SOURCE_DIR}/dist/compatibility_list/compatibility_list.qrc - ${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.qrc +configure_file(${PROJECT_SOURCE_DIR}/${compat_qrc} + ${PROJECT_BINARY_DIR}/${compat_qrc} COPYONLY) -if (EXISTS ${PROJECT_SOURCE_DIR}/dist/compatibility_list/compatibility_list.json) - configure_file("${PROJECT_SOURCE_DIR}/dist/compatibility_list/compatibility_list.json" - "${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.json" + +if (EXISTS ${PROJECT_SOURCE_DIR}/${compat_json}) + configure_file("${PROJECT_SOURCE_DIR}/${compat_json}" + "${PROJECT_BINARY_DIR}/${compat_json}" COPYONLY) endif() -if (ENABLE_COMPATIBILITY_LIST_DOWNLOAD AND NOT EXISTS ${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.json) - message(STATUS "Downloading compatibility list for yuzu...") - file(DOWNLOAD - https://api.yuzu-emu.org/gamedb/ - "${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.json" SHOW_PROGRESS) -endif() -if (NOT EXISTS ${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.json) - file(WRITE ${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.json "") + +# TODO: Compat list download +if (NOT EXISTS ${PROJECT_BINARY_DIR}/${compat_json}) + file(WRITE ${PROJECT_BINARY_DIR}/${compat_json} "") endif() -# Detect current compilation architecture and create standard definitions -# ======================================================================= - -include(CheckSymbolExists) -function(detect_architecture symbol arch) - if (NOT DEFINED ARCHITECTURE) - set(CMAKE_REQUIRED_QUIET 1) - check_symbol_exists("${symbol}" "" ARCHITECTURE_${arch}) - unset(CMAKE_REQUIRED_QUIET) - - # The output variable needs to be unique across invocations otherwise - # CMake's crazy scope rules will keep it defined - if (ARCHITECTURE_${arch}) - set(ARCHITECTURE "${arch}" PARENT_SCOPE) - set(ARCHITECTURE_${arch} 1 PARENT_SCOPE) - add_definitions(-DARCHITECTURE_${arch}=1) - endif() - endif() -endfunction() - -if (NOT ENABLE_GENERIC) - if (MSVC) - detect_architecture("_M_AMD64" x86_64) - detect_architecture("_M_IX86" x86) - detect_architecture("_M_ARM" arm) - detect_architecture("_M_ARM64" arm64) - else() - detect_architecture("__x86_64__" x86_64) - detect_architecture("__i386__" x86) - detect_architecture("__arm__" arm) - detect_architecture("__aarch64__" arm64) - endif() -endif() - -if (NOT DEFINED ARCHITECTURE) - set(ARCHITECTURE "GENERIC") - set(ARCHITECTURE_GENERIC 1) - add_definitions(-DARCHITECTURE_GENERIC=1) -endif() -message(STATUS "Target architecture: ${ARCHITECTURE}") - -if (UNIX) - add_definitions(-DYUZU_UNIX=1) +if (YUZU_LEGACY) + message(WARNING "Making legacy build. Performance may suffer.") + add_compile_definitions(YUZU_LEGACY) endif() if (ARCHITECTURE_arm64 AND (ANDROID OR PLATFORM_LINUX)) set(HAS_NCE 1) - add_definitions(-DHAS_NCE=1) + add_compile_definitions(HAS_NCE=1) endif() if (YUZU_ROOM) - add_definitions(-DYUZU_ROOM) + add_compile_definitions(YUZU_ROOM) +endif() + +if ((ANDROID OR APPLE OR UNIX) AND (NOT PLATFORM_LINUX OR ANDROID) AND NOT WIN32) + if(CXX_APPLE OR CXX_CLANG) + # libc++ has stop_token and jthread as experimental + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fexperimental-library") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fexperimental-library") + else() + # Uses glibc, mostly? + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_LIBCPP_ENABLE_EXPERIMENTAL=1") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_LIBCPP_ENABLE_EXPERIMENTAL=1") + endif() endif() # Build/optimization presets -if (PLATFORM_LINUX) +if (CXX_GCC OR CXX_CLANG) if (ARCHITECTURE_x86_64) + # See https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html + # Generic supports Pentium Pro instruction set and above + # TODO: if a value is unknown, pass that as march and mtune set(YUZU_BUILD_PRESET "custom" CACHE STRING "Build preset to use. One of: custom, generic, v3, zen2, zen4, native") + if (${YUZU_BUILD_PRESET} STREQUAL "generic") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=x86-64 -mtune=generic") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=x86-64 -mtune=generic") + set(march x86-64) + set(mtune generic) elseif (${YUZU_BUILD_PRESET} STREQUAL "v3") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=x86-64-v3 -mtune=generic") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=x86-64-v3 -mtune=generic") + set(march x86-64-v3) + set(mtune generic) elseif (${YUZU_BUILD_PRESET} STREQUAL "zen2") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=znver2 -mtune=znver2") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=znver2 -mtune=znver2") + set(march znver2) + set(mtune znver2) elseif (${YUZU_BUILD_PRESET} STREQUAL "zen4") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=znver4 -mtune=znver4") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=znver4 -mtune=znver4") - elseif (${YUZU_BUILD_PRESET} STREQUAL "native") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native -mtune=native") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=native -mtune=native") + set(march znver4) + set(mtune znver4) endif() elseif(ARCHITECTURE_arm64) - set(YUZU_BUILD_PRESET "custom" CACHE STRING "Build preset to use. One of: custom, generic, armv9") + # See https://gcc.gnu.org/onlinedocs/gcc/AArch64-Options.html + set(YUZU_BUILD_PRESET "custom" CACHE STRING "Build preset to use. One of: custom, generic, armv9, native") + set(mtune generic) + if (${YUZU_BUILD_PRESET} STREQUAL "generic") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv8-a -mtune=generic") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv8-a -mtune=generic") + set(march armv8-a) elseif (${YUZU_BUILD_PRESET} STREQUAL "armv9") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv9-a -mtune=generic") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv9-a -mtune=generic") + set(march armv9-a) endif() endif() + + if ("${YUZU_BUILD_PRESET}" STREQUAL "native") + set(march native) + set(mtune native) + endif() + + if (DEFINED march AND DEFINED mtune) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=${march} -mtune=${mtune}") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=${march} -mtune=${mtune}") + endif() endif() # Other presets, e.g. steamdeck +# TODO(crueter): Just have every Linux/Windows use old sdl2 set(YUZU_SYSTEM_PROFILE "generic" CACHE STRING "CMake and Externals profile to use. One of: generic, steamdeck") # Configure C++ standard @@ -365,358 +355,105 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin) # System imported libraries # ======================================================================= -include(CPMUtil) +# Prefer the -pthread flag on Linux. +set(THREADS_PREFER_PTHREAD_FLAG ON) +find_package(Threads REQUIRED) -if (YUZU_USE_CPM) - message(STATUS "Fetching needed dependencies with CPM") +find_package(RenderDoc MODULE) +# openssl funniness +if (YUZU_USE_BUNDLED_OPENSSL) set(BUILD_SHARED_LIBS OFF) - set(BUILD_TESTING OFF) + AddJsonPackage(openssl) + if (OpenSSL_ADDED) + add_compile_definitions(YUZU_BUNDLED_OPENSSL) + endif() +endif() - # TODO(crueter): renderdoc? +find_package(OpenSSL 3 REQUIRED) - # openssl funniness - if (ENABLE_OPENSSL) - if (YUZU_USE_BUNDLED_OPENSSL) - AddCIPackage( - PACKAGE OpenSSL - NAME openssl - REPO crueter-ci/OpenSSL - VERSION 3.5.2 - MIN_VERSION 1.1.1 - FORCE_DOWNLOAD ${FORCE_DOWNLOAD_OPENSSL} - ) - endif() +message(STATUS "Fetching needed dependencies with CPM") - find_package(OpenSSL 1.1.1 REQUIRED) +set(BUILD_SHARED_LIBS OFF) +set(BUILD_TESTING OFF) +set(ENABLE_TESTING OFF) + +# boost +set(BOOST_INCLUDE_LIBRARIES algorithm icl pool container heap asio headers process filesystem crc variant) + +AddJsonPackage(boost) + +# really annoying thing where boost::headers doesn't work with cpm +# TODO(crueter) investigate +set(BOOST_NO_HEADERS ${Boost_ADDED}) + +if (Boost_ADDED) + if (MSVC OR ANDROID) + add_compile_definitions(YUZU_BOOST_v1) endif() - # boost - set(BOOST_INCLUDE_LIBRARIES algorithm icl pool container heap asio headers process filesystem crc variant) - AddPackage( - NAME Boost - REPO boostorg/boost - TAG boost-1.88.0 - ARTIFACT boost-1.88.0-cmake.7z - - HASH e5b049e5b61964480ca816395f63f95621e66cb9bcf616a8b10e441e0e69f129e22443acb11e77bc1e8170f8e4171b9b7719891efc43699782bfcd4b3a365f01 - - GIT_VERSION 1.88.0 - VERSION 1.57 - EXCLUDE_FROM_ALL ON - ) - - # really annoying thing where boost::headers doesn't work with cpm - # TODO(crueter) investigate - set(BOOST_NO_HEADERS ${Boost_ADDED}) - - if (Boost_ADDED) - if (MSVC OR ANDROID) - add_compile_definitions(YUZU_BOOST_v1) - else() - message(WARNING "Using bundled Boost on a non-MSVC or Android system is not recommended. You are strongly encouraged to install Boost through your system's package manager.") + if (NOT MSVC OR CXX_CLANG) + # boost sucks + if (PLATFORM_SUN) + add_compile_options($<$:-pthreads>) endif() - if (NOT MSVC) - # boost sucks - target_compile_options(boost_heap INTERFACE -Wno-shadow) - target_compile_options(boost_icl INTERFACE -Wno-shadow) - target_compile_options(boost_asio INTERFACE -Wno-conversion -Wno-implicit-fallthrough) - endif() + target_compile_options(boost_heap INTERFACE $<$:-Wno-shadow>) + target_compile_options(boost_icl INTERFACE $<$:-Wno-shadow>) + target_compile_options(boost_asio INTERFACE + $<$:-Wno-conversion> + $<$:-Wno-implicit-fallthrough> + ) endif() +endif() - # fmt - AddPackage( - NAME fmt - REPO fmtlib/fmt - SHA 40626af88b - HASH d59f06c24339f223de4ec2afeba1c67b5835a0f350a1ffa86242a72fc3e616a6b8b21798355428d4200c75287308b66634619ffa0b52ba5bd74cc01772ea1a8a - VERSION 8 - OPTIONS - "FMT_INSTALL OFF" - EXCLUDE_FROM_ALL ON - ) +# fmt +AddJsonPackage(fmt) - # lz4 - AddPackage( - NAME lz4 - REPO lz4/lz4 - SHA ebb370ca83 - HASH 43600e87b35256005c0f2498fa56a77de6783937ba4cfce38c099f27c03188d097863e8a50c5779ca0a7c63c29c4f7ed0ae526ec798c1fd2e3736861b62e0a37 - SOURCE_SUBDIR build/cmake - EXCLUDE_FROM_ALL ON - ) +# lz4 +AddJsonPackage(lz4) - if (lz4_ADDED) - add_library(lz4::lz4 ALIAS lz4_static) - endif() +if (lz4_ADDED) + add_library(lz4::lz4 ALIAS lz4_static) +endif() +# zstd +AddJsonPackage(zstd) + +if (zstd_ADDED) + add_library(zstd::zstd ALIAS libzstd_static) + add_library(zstd::libzstd ALIAS libzstd_static) +endif() + +if (NOT YUZU_STATIC_ROOM) # nlohmann - AddPackage( - NAME nlohmann_json - REPO nlohmann/json - SHA 55f93686c0 - HASH b739749b066800e21154506ea150d2c5cbce8a45344177f46f884547a1399d26753166fd0df8135269ce28cf223552b1b65cd625b88c844d54753f2434900486 - VERSION 3.8 - EXCLUDE_FROM_ALL ON - ) + AddJsonPackage(nlohmann) # zlib - AddPackage( - NAME ZLIB - REPO madler/zlib - SHA 51b7f2abda - HASH 16eaf1f3752489d12fd9ce30f7b5f7cbd5cb8ff53d617005a9847ae72d937f65e01e68be747f62d7ac19fd0c9aeba9956e60f16d6b465c5fdc2f3d08b4db2e6c - VERSION 1.2 - OPTIONS - "ZLIB_BUILD_SHARED OFF" - "ZLIB_INSTALL OFF" - EXCLUDE_FROM_ALL ON - ) + AddJsonPackage(zlib) if (ZLIB_ADDED) add_library(ZLIB::ZLIB ALIAS zlibstatic) endif() - # zstd - AddPackage( - NAME zstd - REPO facebook/zstd - SHA f8745da6ff - HASH 3037007f990040fe32573b46f9bef8762fd5dbeeb07ffffcbfeba51ec98167edae39bb9c87f9299efcd61c4e467c5e84f7c19f0df7799bc1fc04864a278792ee - VERSION 1.5 - SOURCE_SUBDIR build/cmake - OPTIONS - "ZSTD_BUILD_SHARED OFF" - EXCLUDE_FROM_ALL ON - ) - - # Catch2 - if (YUZU_TESTS OR DYNARMIC_TESTS) - AddPackage( - NAME Catch2 - REPO catchorg/Catch2 - SHA 644821ce28 - HASH f8795f98acf2c02c0db8e734cc866d5caebab4b4a306e93598b97cb3c0c728dafe8283dce27ffe8d42460e5ae7302f3f32e7e274a7f991b73511ac88eef21b1f - VERSION 3.0.1 - EXCLUDE_FROM_ALL ON - ) - endif() - - # ENet - AddPackage( - NAME enet - REPO lsalzman/enet - SHA 2662c0de09 - VERSION 1.3 - HASH 3de1beb4fa3d6b1e03eda8dd1e7580694f854af3ed3975dcdabfdcdf76b97f322b9734d35ea7f185855bb490d957842b938b26da4dd2dfded509390f8d2794dd - FIND_PACKAGE_ARGUMENTS "MODULE" - EXCLUDE_FROM_ALL ON - ) - - if (enet_ADDED) - target_include_directories(enet INTERFACE ${enet_SOURCE_DIR}/include) - endif() - # Opus - AddPackage( - NAME Opus - VERSION 1.3 - REPO "xiph/opus" - SHA 5ded705cf4 - HASH 0dc89e58ddda1f3bc6a7037963994770c5806c10e66f5cc55c59286fc76d0544fe4eca7626772b888fd719f434bc8a92f792bdb350c807968b2ac14cfc04b203 - FIND_PACKAGE_ARGUMENTS "MODULE" - OPTIONS - "OPUS_BUILD_TESTING OFF" - "OPUS_BUILD_PROGRAMS OFF" - "OPUS_INSTALL_PKG_CONFIG_MODULE OFF" - "OPUS_INSTALL_CMAKE_CONFIG_MODULE OFF" - EXCLUDE_FROM_ALL ON - ) + AddJsonPackage(opus) - if(ENABLE_CUBEB) - AddPackage( - NAME cubeb - REPO "mozilla/cubeb" - SHA fa02160712 - HASH 82d808356752e4064de48c8fecbe7856715ade1e76b53937116bf07129fc1cc5b3de5e4b408de3cd000187ba8dc32ca4109661cb7e0355a52e54bd81b9be1c61 - FIND_PACKAGE_ARGUMENTS "CONFIG" # not sure this works outside of gentoo - OPTIONS - "USE_SANITIZERS OFF" - "BUILD_TESTS OFF" - "BUILD_TOOLS OFF" - "BUNDLE_SPEEX ON" - EXCLUDE_FROM_ALL ON - ) - - if (cubeb_ADDED) - if (NOT MSVC) - if (TARGET speex) - target_compile_options(speex PRIVATE -Wno-sign-compare) - endif() - - set_target_properties(cubeb PROPERTIES COMPILE_OPTIONS "") - target_compile_options(cubeb INTERFACE - -Wno-implicit-const-int-float-conversion - -Wno-shadow - -Wno-missing-declarations - -Wno-return-type - -Wno-uninitialized - ) - else() - target_compile_options(cubeb PRIVATE - /wd4456 - /wd4458 - ) - endif() + if (Opus_ADDED) + if (MSVC AND CXX_CLANG) + target_compile_options(opus PRIVATE + $<$:-Wno-implicit-function-declaration> + ) endif() endif() -else() - # Enforce the search mode of non-required packages for better and shorter failure messages - find_package(fmt 8 REQUIRED) - find_package(LLVM MODULE COMPONENTS Demangle) - find_package(nlohmann_json 3.8 REQUIRED) - find_package(lz4 REQUIRED) - find_package(RenderDoc MODULE) - find_package(stb MODULE) - find_package(enet 1.3 MODULE) - find_package(Opus 1.3 MODULE) - find_package(ZLIB 1.2 REQUIRED) - find_package(zstd 1.5 REQUIRED) - if (ENABLE_CUBEB) - find_package(cubeb CONFIG) - endif() - - if (YUZU_TESTS) - find_package(Catch2 3.0.1 REQUIRED) - endif() - - if (CMAKE_SYSTEM_NAME STREQUAL "Linux" OR ANDROID) - find_package(gamemode 1.7 MODULE) - endif() - - if (ENABLE_OPENSSL) - find_package(OpenSSL 1.1.1 REQUIRED) + if (NOT TARGET Opus::opus) + add_library(Opus::opus ALIAS opus) endif() endif() if(NOT TARGET Boost::headers) - AddPackage( - NAME boost_headers - REPO "boostorg/headers" - SHA 0456900fad - HASH 50cd75dcdfc5f082225cdace058f47b4fb114a47585f7aee1d22236a910a80b667186254c214fa2fcebac67ae6d37ba4b6e695e1faea8affd6fd42a03cf996e3 - BUNDLED_PACKAGE ON - EXCLUDE_FROM_ALL ON - ) -endif() - -if (ENABLE_LIBUSB) - if (PLATFORM_FREEBSD) - find_package(libusb MODULE) - else() - find_package(libusb 1.0.24 MODULE) - endif() -endif() - -# DiscordRPC -if (USE_DISCORD_PRESENCE) - AddPackage( - NAME discord-rpc - REPO "discord/discord-rpc" - SHA 963aa9f3e5 - HASH 386e1344e9a666d730f2d335ee3aef1fd05b1039febefd51aa751b705009cc764411397f3ca08dffd46205c72f75b235c870c737b2091a4ed0c3b061f5919bde - OPTIONS - "BUILD_EXAMPLES OFF" - PATCHES - ${CMAKE_SOURCE_DIR}/.patch/discord-rpc/0001-cmake-version.patch - ${CMAKE_SOURCE_DIR}/.patch/discord-rpc/0002-no-clang-format.patch - ${CMAKE_SOURCE_DIR}/.patch/discord-rpc/0003-fix-cpp17.patch - EXCLUDE_FROM_ALL ON - ) - - target_include_directories(discord-rpc INTERFACE ${discord-rpc_SOURCE_DIR}/include) - add_library(DiscordRPC::discord-rpc ALIAS discord-rpc) -endif() - -# SimpleIni -AddPackage( - NAME SimpleIni - REPO brofield/simpleini - SHA 09c21bda1d - HASH 99779ca9b6e040d36558cadf484f9ffdab5b47bcc8fc72e4d33639d1d60c0ceb4410d335ba445d72a4324e455167fd6769d99b459943aa135bec085dff2d4b7c - FIND_PACKAGE_ARGUMENTS "MODULE" - EXCLUDE_FROM_ALL ON -) - -# TODO(crueter): Work around this -if (NOT YUZU_USE_EXTERNAL_VULKAN_SPIRV_TOOLS) - find_package(PkgConfig REQUIRED) - pkg_check_modules(SPIRV-Tools REQUIRED SPIRV-Tools) -endif() - -# find SDL2 exports a bunch of variables that are needed, so its easier to do this outside of the YUZU_find_package -if (ENABLE_SDL2) - # this was hard to get right, but ultimately I decided to make it so that FORCE_DOWNLOAD_SDL2 also downloads the - # external one. Really silly behavior imo but in the interest of getting something out there I'm leaving it for now - if (YUZU_USE_EXTERNAL_SDL2 OR FORCE_DOWNLOAD_SDL2) - message(STATUS "Using SDL2 from externals.") - if (NOT WIN32) - # Yuzu itself needs: Atomic Audio Events Joystick Haptic Sensor Threads Timers - # Since 2.0.18 Atomic+Threads required for HIDAPI/libusb (see https://github.com/libsdl-org/SDL/issues/5095) - # Yuzu-cmd also needs: Video (depends on Loadso/Dlopen) - # CPUinfo also required for SDL Audio, at least until 2.28.0 (see https://github.com/libsdl-org/SDL/issues/7809) - set(SDL_UNUSED_SUBSYSTEMS - File Filesystem - Locale Power Render) - foreach(_SUB ${SDL_UNUSED_SUBSYSTEMS}) - string(TOUPPER ${_SUB} _OPT) - set(SDL_${_OPT} OFF) - endforeach() - - set(HIDAPI ON) - endif() - - if (APPLE) - set(SDL_FILE ON) - endif() - - if ("${YUZU_SYSTEM_PROFILE}" STREQUAL "steamdeck") - set(SDL_HASH cc016b0046) - set(SDL_PIPEWIRE OFF) # build errors out with this on - set(SDL_SHA512SUM 34d5ef58da6a4f9efa6689c82f67badcbd741f5a4f562a9c2c30828fa839830fb07681c5dc6a7851520e261c8405a416ac0a2c2513b51984fb3b4fa4dcb3e20b) - else() - set(SDL_HASH 54772f345a) - set(SDL_SHA512SUM 2a68a0e01c390043aa9d9df63d8a20a52076c88bb460ac4e0f33194ca7d9bc8fadbbcc04e7506872ac4b6354a73fbc267c036f82200da59465789b87c7d9e3a4) - endif() - - AddPackage( - NAME SDL2 - REPO "libsdl-org/SDL" - SHA ${SDL_HASH} - HASH ${SDL_SHA512SUM} - KEY ${YUZU_SYSTEM_PROFILE} - BUNDLED_PACKAGE ON - EXCLUDE_FROM_ALL ON - ) - endif() - - if (YUZU_USE_BUNDLED_SDL2) - message(STATUS "Using bundled SDL2") - AddCIPackage( - PACKAGE SDL2 - NAME SDL2 - REPO crueter-ci/SDL2 - VERSION 2.32.8 - MIN_VERSION 2.26.4 - CMAKE_FILENAME sdl2 - FORCE_DOWNLOAD ${FORCE_DOWNLOAD_SDL2} - TARGET "SDL2::SDL2" - ) - endif() - - find_package(SDL2 2.26.4 REQUIRED) + AddJsonPackage(boost_headers) endif() # List of all FFmpeg components required @@ -744,28 +481,93 @@ function(create_target_directory_groups target_name) endforeach() endfunction() +# Platform-specific library requirements +# Put these BEFORE EXTERNALS or Boost WILL die +# ============================================= + +if (APPLE) + foreach(fw Carbon Metal Cocoa IOKit CoreVideo CoreMedia) + find_library(${fw}_LIBRARY ${fw} REQUIRED) + list(APPEND PLATFORM_LIBRARIES ${${fw}_LIBRARY}) + endforeach() +elseif (WIN32) + # Target Windows 10 + add_compile_definitions(_WIN32_WINNT=0x0A00 WINVER=0x0A00) + set(PLATFORM_LIBRARIES ${PLATFORM_LIBRARIES} winmm iphlpapi ws2_32 wlanapi) + if (MINGW) + # PSAPI is the Process Status API + set(PLATFORM_LIBRARIES ${PLATFORM_LIBRARIES} psapi imm32 version crypt32 rpcrt4 gdi32 wldap32 mswsock) + endif() +elseif (PLATFORM_HAIKU) + # Haiku is so special :) + set(PLATFORM_LIBRARIES bsd /boot/system/lib/libnetwork.so) +elseif (CMAKE_SYSTEM_NAME MATCHES "^(Linux|kFreeBSD|GNU|SunOS)$") + set(PLATFORM_LIBRARIES rt) +endif() + +message(STATUS "Platform Libraries: ${PLATFORM_LIBRARIES}") + add_subdirectory(externals) # pass targets from externals -find_package(VulkanHeaders) -find_package(VulkanUtilityLibraries) -find_package(VulkanMemoryAllocator) +# TODO(crueter): CPMUtil Propagate func? +find_package(enet) +find_package(unordered_dense REQUIRED) -if (ENABLE_WEB_SERVICE) - find_package(httplib) +if (ARCHITECTURE_x86 OR ARCHITECTURE_x86_64) + find_package(xbyak) endif() -if (ENABLE_WEB_SERVICE OR ENABLE_QT_UPDATE_CHECKER) - find_package(cpp-jwt) -endif() - -if (ENABLE_SDL2) - find_package(SDL2) +if (NOT YUZU_STATIC_ROOM) + find_package(libusb) + find_package(VulkanMemoryAllocator) + find_package(VulkanUtilityLibraries) + find_package(SimpleIni) + find_package(SPIRV-Tools) + find_package(sirit) + find_package(gamemode) + find_package(frozen) + + if (ARCHITECTURE_riscv64) + find_package(biscuit) + endif() + + if (ENABLE_WEB_SERVICE OR ENABLE_UPDATE_CHECKER) + find_package(cpp-jwt) + endif() + + if (ARCHITECTURE_arm64 OR DYNARMIC_TESTS) + find_package(oaknut) + endif() + + if (NOT ANDROID) + find_package(SDL2) + endif() + + if (USE_DISCORD_PRESENCE) + find_package(DiscordRPC) + endif() + + if (ENABLE_CUBEB) + find_package(cubeb) + endif() + + if (YUZU_TESTS OR DYNARMIC_TESTS) + find_package(Catch2) + endif() endif() +# Qt stuff if (ENABLE_QT) if (YUZU_USE_BUNDLED_QT) - download_qt(6.8.3) + # Qt 6.8+ is broken on macOS (??) + if (APPLE) + AddQt(6.7.3) + else() + AddQt(6.9.3) + endif() + + set(YUZU_STATIC_BUILD ON) else() message(STATUS "Using system Qt") if (NOT Qt6_DIR) @@ -774,13 +576,15 @@ if (ENABLE_QT) list(APPEND CMAKE_PREFIX_PATH "${Qt6_DIR}") endif() - find_package(Qt6 REQUIRED COMPONENTS Widgets Concurrent) + find_package(Qt6 CONFIG REQUIRED COMPONENTS Widgets Charts Concurrent) if (YUZU_USE_QT_MULTIMEDIA) find_package(Qt6 REQUIRED COMPONENTS Multimedia) endif() - if (CMAKE_SYSTEM_NAME STREQUAL "Linux") + if (PLATFORM_LINUX OR PLATFORM_FREEBSD) + # yes Qt, we get it + set(QT_NO_PRIVATE_MODULE_WARNING ON) find_package(Qt6 REQUIRED COMPONENTS DBus OPTIONAL_COMPONENTS GuiPrivate) elseif (UNIX AND NOT APPLE) find_package(Qt6 REQUIRED COMPONENTS DBus Gui) @@ -807,37 +611,37 @@ if (ENABLE_QT) message(STATUS "Using target Qt at ${QT_TARGET_PATH}") message(STATUS "Using host Qt at ${QT_HOST_PATH}") -endif() -function(set_yuzu_qt_components) + ## Components ## + # Best practice is to ask for all components at once, so they are from the same version - set(YUZU_QT_COMPONENTS2 Core Widgets Concurrent) + set(YUZU_QT_COMPONENTS Core Widgets Charts Concurrent) if (PLATFORM_LINUX) - list(APPEND YUZU_QT_COMPONENTS2 DBus) + list(APPEND YUZU_QT_COMPONENTS DBus) endif() if (YUZU_USE_QT_MULTIMEDIA) - list(APPEND YUZU_QT_COMPONENTS2 Multimedia) + list(APPEND YUZU_QT_COMPONENTS Multimedia) endif() if (YUZU_USE_QT_WEB_ENGINE) - list(APPEND YUZU_QT_COMPONENTS2 WebEngineCore WebEngineWidgets) + list(APPEND YUZU_QT_COMPONENTS WebEngineCore WebEngineWidgets) endif() if (ENABLE_QT_TRANSLATION) - list(APPEND YUZU_QT_COMPONENTS2 LinguistTools) + list(APPEND YUZU_QT_COMPONENTS LinguistTools) endif() - if (USE_DISCORD_PRESENCE) - list(APPEND YUZU_QT_COMPONENTS2 Network) - endif() - set(YUZU_QT_COMPONENTS ${YUZU_QT_COMPONENTS2} PARENT_SCOPE) -endfunction(set_yuzu_qt_components) -if (UNIX AND NOT APPLE AND NOT ANDROID) - find_package(PkgConfig REQUIRED) - pkg_check_modules(LIBVA libva) + find_package(Qt6 REQUIRED COMPONENTS ${YUZU_QT_COMPONENTS}) + set(QT_MAJOR_VERSION 6) + # Qt6 sets cxx_std_17 and we need to undo that + set_target_properties(Qt6::Platform PROPERTIES INTERFACE_COMPILE_FEATURES "") + + ## Qt Externals ## + + # QuaZip + AddJsonPackage(quazip) endif() -if (NOT YUZU_USE_BUNDLED_FFMPEG) +if (NOT YUZU_STATIC_ROOM AND NOT (YUZU_USE_BUNDLED_FFMPEG OR YUZU_USE_EXTERNAL_FFMPEG)) # Use system installed FFmpeg - #find_package(FFmpeg 4.3 REQUIRED QUIET COMPONENTS ${FFmpeg_COMPONENTS}) find_package(FFmpeg REQUIRED QUIET COMPONENTS ${FFmpeg_COMPONENTS}) # TODO(crueter): Version @@ -846,97 +650,17 @@ if (NOT YUZU_USE_BUNDLED_FFMPEG) set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_URLS "https://github.com/FFmpeg/FFmpeg") endif() -if(ENABLE_QT) - set_yuzu_qt_components() - find_package(Qt6 REQUIRED COMPONENTS ${YUZU_QT_COMPONENTS}) - set(QT_MAJOR_VERSION 6) - # Qt6 sets cxx_std_17 and we need to undo that - set_target_properties(Qt6::Platform PROPERTIES INTERFACE_COMPILE_FEATURES "") -endif() - if (WIN32 AND YUZU_CRASH_DUMPS) - set(BREAKPAD_VER "breakpad-c89f9dd") - download_bundled_external("breakpad/" ${BREAKPAD_VER} "breakpad-win" BREAKPAD_PREFIX "c89f9dd") + message(STATUS "YUZU_CRASH_DUMPS is unimplemented on Windows. Check back later.") + # set(BREAKPAD_VER "breakpad-c89f9dd") + # download_bundled_external("breakpad/" ${BREAKPAD_VER} "breakpad-win" BREAKPAD_PREFIX "c89f9dd") - set(BREAKPAD_CLIENT_INCLUDE_DIR "${BREAKPAD_PREFIX}/include") - set(BREAKPAD_CLIENT_LIBRARY "${BREAKPAD_PREFIX}/lib/libbreakpad_client.lib") + # set(BREAKPAD_CLIENT_INCLUDE_DIR "${BREAKPAD_PREFIX}/include") + # set(BREAKPAD_CLIENT_LIBRARY "${BREAKPAD_PREFIX}/lib/libbreakpad_client.lib") - add_library(libbreakpad_client INTERFACE IMPORTED) - target_link_libraries(libbreakpad_client INTERFACE "${BREAKPAD_CLIENT_LIBRARY}") - target_include_directories(libbreakpad_client INTERFACE "${BREAKPAD_CLIENT_INCLUDE_DIR}") -endif() - -# Prefer the -pthread flag on Linux. -set(THREADS_PREFER_PTHREAD_FLAG ON) -find_package(Threads REQUIRED) - -# Platform-specific library requirements -# ====================================== - -if (APPLE) - # Umbrella framework for everything GUI-related - find_library(COCOA_LIBRARY Cocoa) - set(PLATFORM_LIBRARIES ${COCOA_LIBRARY} ${IOKIT_LIBRARY} ${COREVIDEO_LIBRARY}) - find_library(ICONV_LIBRARY iconv REQUIRED) - list(APPEND PLATFORM_LIBRARIES ${ICONV_LIBRARY}) -elseif (WIN32) - # Target Windows 10 - add_definitions(-D_WIN32_WINNT=0x0A00 -DWINVER=0x0A00) - set(PLATFORM_LIBRARIES winmm ws2_32 iphlpapi) - if (MINGW) - # PSAPI is the Process Status API - set(PLATFORM_LIBRARIES ${PLATFORM_LIBRARIES} psapi imm32 version) - endif() -elseif (CMAKE_SYSTEM_NAME MATCHES "^(Linux|kFreeBSD|GNU|SunOS)$") - set(PLATFORM_LIBRARIES rt) -endif() - -# Setup a custom clang-format target (if clang-format can be found) that will run -# against all the src files. This should be used before making a pull request. -# ======================================================================= - -set(CLANG_FORMAT_POSTFIX "-15") -find_program(CLANG_FORMAT - NAMES clang-format${CLANG_FORMAT_POSTFIX} - clang-format - PATHS ${PROJECT_BINARY_DIR}/externals) -# if find_program doesn't find it, try to download from externals -if (NOT CLANG_FORMAT) - if (WIN32 AND NOT CMAKE_CROSSCOMPILING) - message(STATUS "Clang format not found! Downloading...") - set(CLANG_FORMAT "${PROJECT_BINARY_DIR}/externals/clang-format${CLANG_FORMAT_POSTFIX}.exe") - file(DOWNLOAD - https://github.com/eden-emulator/ext-windows-bin/raw/master/clang-format${CLANG_FORMAT_POSTFIX}.exe - "${CLANG_FORMAT}" SHOW_PROGRESS - STATUS DOWNLOAD_SUCCESS) - if (NOT DOWNLOAD_SUCCESS EQUAL 0) - message(WARNING "Could not download clang format! Disabling the clang format target") - file(REMOVE ${CLANG_FORMAT}) - unset(CLANG_FORMAT) - endif() - else() - message(WARNING "Clang format not found! Disabling the clang format target") - endif() -endif() - -if (CLANG_FORMAT) - set(SRCS ${PROJECT_SOURCE_DIR}/src) - set(CCOMMENT "Running clang format against all the .h and .cpp files in src/") - if (WIN32) - add_custom_target(clang-format - COMMAND powershell.exe -Command "Get-ChildItem '${SRCS}/*' -Include *.cpp,*.h -Recurse | Foreach {&'${CLANG_FORMAT}' -i $_.fullname}" - COMMENT ${CCOMMENT}) - elseif(MINGW) - add_custom_target(clang-format - COMMAND find `cygpath -u ${SRCS}` -iname *.h -o -iname *.cpp | xargs `cygpath -u ${CLANG_FORMAT}` -i - COMMENT ${CCOMMENT}) - else() - add_custom_target(clang-format - COMMAND find ${SRCS} -iname *.h -o -iname *.cpp | xargs ${CLANG_FORMAT} -i - COMMENT ${CCOMMENT}) - endif() - unset(SRCS) - unset(CCOMMENT) + # add_library(libbreakpad_client INTERFACE IMPORTED) + # target_link_libraries(libbreakpad_client INTERFACE "${BREAKPAD_CLIENT_LIBRARY}") + # target_include_directories(libbreakpad_client INTERFACE "${BREAKPAD_CLIENT_INCLUDE_DIR}") endif() # Include source code @@ -951,19 +675,24 @@ if (MSVC AND CMAKE_GENERATOR STREQUAL "Ninja") ) endif() -if (YUZU_USE_FASTER_LD AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - # We will assume that if the compiler is GCC, it will attempt to use ld.bfd by default. - # Try to pick a faster linker. - find_program(LLD lld) - find_program(MOLD mold) - - if (MOLD AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "12.1") - message(NOTICE "Selecting mold as linker") - add_link_options("-fuse-ld=mold") - elseif (LLD) - message(NOTICE "Selecting lld as linker") - add_link_options("-fuse-ld=lld") +# Adjustments for clang-cl +if (MSVC AND CXX_CLANG) + if (ARCHITECTURE_x86_64) + set(FILE_ARCH x86_64) + elseif (ARCHITECTURE_arm64) + set(FILE_ARCH aarch64) + else() + message(FATAL_ERROR "clang-cl: Unsupported architecture ${ARCHITECTURE}") endif() + + AddJsonPackage(llvm-mingw) + set(LIB_PATH "${llvm-mingw_SOURCE_DIR}/libclang_rt.builtins-${FILE_ARCH}.a") + + add_library(llvm-mingw-runtime STATIC IMPORTED) + set_target_properties(llvm-mingw-runtime PROPERTIES + IMPORTED_LOCATION "${LIB_PATH}") + + link_libraries(llvm-mingw-runtime) endif() # Set runtime library to MD/MDd for all configurations @@ -1003,14 +732,14 @@ endif() # https://specifications.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html # https://www.freedesktop.org/software/appstream/docs/ if(ENABLE_QT AND UNIX AND NOT APPLE) - install(FILES "dist/org.eden_emu.eden.desktop" + install(FILES "dist/dev.eden_emu.eden.desktop" DESTINATION "share/applications") - install(FILES "dist/org.eden_emu.eden.svg" + install(FILES "dist/dev.eden_emu.eden.svg" DESTINATION "share/icons/hicolor/scalable/apps") # TODO: these files need to be updated. - install(FILES "dist/org.eden_emu.eden.xml" + install(FILES "dist/dev.eden_emu.eden.xml" DESTINATION "share/mime/packages") - install(FILES "dist/org.eden_emu.eden.metainfo.xml" + install(FILES "dist/dev.eden_emu.eden.metainfo.xml" DESTINATION "share/metainfo") endif() diff --git a/CMakeModules/CPM.cmake b/CMakeModules/CPM.cmake index 3636ee5da0..5544d8eefe 100644 --- a/CMakeModules/CPM.cmake +++ b/CMakeModules/CPM.cmake @@ -743,9 +743,11 @@ function(CPMAddPackage) if(NOT DEFINED CPM_ARGS_NAME) set(CPM_ARGS_NAME ${nameFromUrl}) endif() - if(NOT DEFINED CPM_ARGS_VERSION) - set(CPM_ARGS_VERSION ${verFromUrl}) - endif() + + # this is dumb and should not be done + # if(NOT DEFINED CPM_ARGS_VERSION) + # set(CPM_ARGS_VERSION ${verFromUrl}) + # endif() list(APPEND CPM_ARGS_UNPARSED_ARGUMENTS URL "${CPM_ARGS_URL}") endif() diff --git a/CMakeModules/CPMUtil.cmake b/CMakeModules/CPMUtil.cmake index 519e7e32a8..b992f24083 100644 --- a/CMakeModules/CPMUtil.cmake +++ b/CMakeModules/CPMUtil.cmake @@ -1,32 +1,329 @@ -# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project -# SPDX-License-Identifier: GPL-3.0-or-later +# SPDX-FileCopyrightText: Copyright 2026 crueter +# SPDX-License-Identifier: LGPL-3.0-or-later -# Created-By: crueter -# Docs will come at a later date, mostly this is to just reduce boilerplate -# and some cmake magic to allow for runtime viewing of dependency versions +set(CPM_SOURCE_CACHE "${PROJECT_SOURCE_DIR}/.cache/cpm" CACHE STRING "" FORCE) -include(CMakeDependentOption) -if (MSVC OR ANDROID) - set(SYSTEM_DEFAULT OFF) +if(MSVC OR ANDROID) + set(BUNDLED_DEFAULT ON) else() - set(SYSTEM_DEFAULT ON) + set(BUNDLED_DEFAULT OFF) endif() -CMAKE_DEPENDENT_OPTION(CPMUTIL_DEFAULT_SYSTEM - "Allow usage of system packages for CPM dependencies" ${SYSTEM_DEFAULT} - "NOT ANDROID" OFF) +option(CPMUTIL_FORCE_BUNDLED + "Force bundled packages for all CPM depdendencies" ${BUNDLED_DEFAULT}) + +option(CPMUTIL_FORCE_SYSTEM + "Force system packages for all CPM dependencies (NOT RECOMMENDED)" OFF) cmake_minimum_required(VERSION 3.22) include(CPM) +# cpmfile parsing +set(CPMUTIL_JSON_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cpmfile.json") + +if(EXISTS ${CPMUTIL_JSON_FILE}) + file(READ ${CPMUTIL_JSON_FILE} CPMFILE_CONTENT) + if (NOT TARGET cpmfiles) + add_custom_target(cpmfiles) + endif() + + target_sources(cpmfiles PRIVATE ${CPMUTIL_JSON_FILE}) + set_property(DIRECTORY APPEND PROPERTY + CMAKE_CONFIGURE_DEPENDS + "${CPMUTIL_JSON_FILE}") +else() + message(DEBUG "[CPMUtil] cpmfile ${CPMUTIL_JSON_FILE}" + "does not exist, AddJsonPackage will be a no-op") +endif() + +# Utility stuff function(cpm_utils_message level name message) message(${level} "[CPMUtil] ${name}: ${message}") endfunction() +# propagate a variable to parent scope +macro(Propagate var) + set(${var} ${${var}} PARENT_SCOPE) +endmacro() + +function(array_to_list array length out) + math(EXPR range "${length} - 1") + + foreach(IDX RANGE ${range}) + string(JSON _element GET "${array}" "${IDX}") + + list(APPEND NEW_LIST ${_element}) + endforeach() + + set("${out}" "${NEW_LIST}" PARENT_SCOPE) +endfunction() + +function(get_json_element object out member default) + string(JSON out_type ERROR_VARIABLE err TYPE "${object}" ${member}) + + if(err) + set("${out}" "${default}" PARENT_SCOPE) + return() + endif() + + string(JSON outvar GET "${object}" ${member}) + + if(out_type STREQUAL "ARRAY") + string(JSON _len LENGTH "${object}" ${member}) + # array_to_list("${outvar}" ${_len} outvar) + set("${out}_LENGTH" "${_len}" PARENT_SCOPE) + endif() + + set("${out}" "${outvar}" PARENT_SCOPE) +endfunction() + +# Determine whether or not a package has a viable system candidate. +function(SystemPackageViable JSON_NAME) + string(JSON object GET "${CPMFILE_CONTENT}" "${JSON_NAME}") + + parse_object(${object}) + + string(REPLACE " " ";" find_args "${find_args}") + if (${package}_FORCE_BUNDLED) + set(${package}_FOUND OFF) + else() + find_package(${package} ${version} ${find_args} QUIET NO_POLICY_SCOPE) + endif() + + set(${pkg}_VIABLE ${${package}_FOUND} PARENT_SCOPE) + set(${pkg}_PACKAGE ${package} PARENT_SCOPE) +endfunction() + +# Add several packages such that if one is bundled, +# all the rest must also be bundled. +function(AddDependentPackages) + set(_some_system OFF) + set(_some_bundled OFF) + + foreach(pkg ${ARGN}) + SystemPackageViable(${pkg}) + + if (${pkg}_VIABLE) + set(_some_system ON) + list(APPEND _system_pkgs ${${pkg}_PACKAGE}) + else() + set(_some_bundled ON) + list(APPEND _bundled_pkgs ${${pkg}_PACKAGE}) + endif() + endforeach() + + if (_some_system AND _some_bundled) + foreach(pkg ${ARGN}) + list(APPEND package_names ${${pkg}_PACKAGE}) + endforeach() + + string(REPLACE ";" ", " package_names "${package_names}") + string(REPLACE ";" ", " bundled_names "${_bundled_pkgs}") + foreach(sys ${_system_pkgs}) + list(APPEND system_names ${sys}_FORCE_BUNDLED) + endforeach() + + string(REPLACE ";" ", " system_names "${system_names}") + + message(FATAL_ERROR "Partial dependency installation detected " + "for the following packages:\n${package_names}\n" + "You can solve this in one of two ways:\n" + "1. Install the following packages to your system if available:" + "\n\t${bundled_names}\n" + "2. Set the following variables to ON:" + "\n\t${system_names}\n" + "This may also be caused by a version mismatch, " + "such as one package being newer than the other.") + endif() + + foreach(pkg ${ARGN}) + AddJsonPackage(${pkg}) + endforeach() +endfunction() + +# json util +macro(parse_object object) + get_json_element("${object}" package package ${JSON_NAME}) + get_json_element("${object}" repo repo "") + get_json_element("${object}" ci ci OFF) + get_json_element("${object}" version version "") + + if(ci) + get_json_element("${object}" name name "${JSON_NAME}") + get_json_element("${object}" extension extension "tar.zst") + get_json_element("${object}" min_version min_version "") + get_json_element("${object}" raw_disabled disabled_platforms "") + + if(raw_disabled) + array_to_list("${raw_disabled}" + ${raw_disabled_LENGTH} disabled_platforms) + else() + set(disabled_platforms "") + endif() + else() + get_json_element("${object}" hash hash "") + get_json_element("${object}" hash_suffix hash_suffix "") + get_json_element("${object}" sha sha "") + get_json_element("${object}" url url "") + get_json_element("${object}" key key "") + get_json_element("${object}" tag tag "") + get_json_element("${object}" artifact artifact "") + get_json_element("${object}" git_version git_version "") + get_json_element("${object}" git_host git_host "") + get_json_element("${object}" source_subdir source_subdir "") + get_json_element("${object}" bundled bundled "unset") + get_json_element("${object}" find_args find_args "") + get_json_element("${object}" raw_patches patches "") + + # okay here comes the fun part: REPLACEMENTS! + # first: tag gets %VERSION% replaced if applicable, + # with either git_version (preferred) or version + # second: artifact gets %VERSION% and %TAG% replaced + # accordingly (same rules for VERSION) + + if(git_version) + set(version_replace ${git_version}) + else() + set(version_replace ${version}) + endif() + + # TODO(crueter): fmt module for cmake + if(tag) + string(REPLACE "%VERSION%" "${version_replace}" tag ${tag}) + endif() + + if(artifact) + string(REPLACE "%VERSION%" "${version_replace}" + artifact ${artifact}) + string(REPLACE "%TAG%" "${tag}" artifact ${artifact}) + endif() + + # format patchdir + if(raw_patches) + math(EXPR range "${raw_patches_LENGTH} - 1") + + foreach(IDX RANGE ${range}) + string(JSON _patch GET "${raw_patches}" "${IDX}") + + set(full_patch + "${PROJECT_SOURCE_DIR}/.patch/${JSON_NAME}/${_patch}") + if(NOT EXISTS ${full_patch}) + cpm_utils_message(FATAL_ERROR ${JSON_NAME} + "specifies patch ${full_patch} which does not exist") + endif() + + list(APPEND patches "${full_patch}") + endforeach() + endif() + # end format patchdir + + # options + get_json_element("${object}" raw_options options "") + + if(raw_options) + array_to_list("${raw_options}" ${raw_options_LENGTH} options) + endif() + + set(options ${options} ${JSON_OPTIONS}) + # end options + + # system/bundled + if(bundled STREQUAL "unset" AND DEFINED JSON_BUNDLED_PACKAGE) + set(bundled ${JSON_BUNDLED_PACKAGE}) + endif() + endif() +endmacro() + +# The preferred usage +function(AddJsonPackage) + set(oneValueArgs + NAME + + # these are overrides that can be generated at runtime, + # so can be defined separately from the json + DOWNLOAD_ONLY + BUNDLED_PACKAGE + FORCE_BUNDLED_PACKAGE) + + set(multiValueArgs OPTIONS) + + cmake_parse_arguments(JSON "" "${oneValueArgs}" "${multiValueArgs}" + "${ARGN}") + + list(LENGTH ARGN argnLength) + + # single name argument + if(argnLength EQUAL 1) + set(JSON_NAME "${ARGV0}") + endif() + + if(NOT DEFINED CPMFILE_CONTENT) + cpm_utils_message(WARNING ${name} + "No cpmfile, AddJsonPackage is a no-op") + return() + endif() + + if(NOT DEFINED JSON_NAME) + cpm_utils_message(FATAL_ERROR "json package" "No name specified") + endif() + + string(JSON object ERROR_VARIABLE + err GET "${CPMFILE_CONTENT}" "${JSON_NAME}") + + if(err) + cpm_utils_message(FATAL_ERROR ${JSON_NAME} "Not found in cpmfile") + endif() + + parse_object(${object}) + + if(ci) + AddCIPackage( + VERSION ${version} + NAME ${name} + REPO ${repo} + PACKAGE ${package} + EXTENSION ${extension} + MIN_VERSION ${min_version} + DISABLED_PLATFORMS ${disabled_platforms}) + + else() + if (NOT DEFINED JSON_FORCE_BUNDLED_PACKAGE) + set(JSON_FORCE_BUNDLED_PACKAGE OFF) + endif() + + AddPackage( + NAME "${package}" + VERSION "${version}" + URL "${url}" + HASH "${hash}" + HASH_SUFFIX "${hash_suffix}" + SHA "${sha}" + REPO "${repo}" + KEY "${key}" + PATCHES "${patches}" + OPTIONS "${options}" + FIND_PACKAGE_ARGUMENTS "${find_args}" + BUNDLED_PACKAGE "${bundled}" + FORCE_BUNDLED_PACKAGE "${JSON_FORCE_BUNDLED_PACKAGE}" + SOURCE_SUBDIR "${source_subdir}" + + GIT_VERSION ${git_version} + GIT_HOST ${git_host} + + ARTIFACT ${artifact} + TAG ${tag}) + endif() + + # pass stuff to parent scope + Propagate(${package}_ADDED) + Propagate(${package}_SOURCE_DIR) + Propagate(${package}_BINARY_DIR) +endfunction() + function(AddPackage) cpm_set_policies() - # TODO(crueter): docs, git clone + # TODO(crueter): git clone? #[[ URL configurations, descending order of precedence: @@ -48,6 +345,7 @@ function(AddPackage) NAME VERSION GIT_VERSION + GIT_HOST REPO TAG @@ -64,144 +362,198 @@ function(AddPackage) GIT_URL KEY - DOWNLOAD_ONLY - FIND_PACKAGE_ARGUMENTS - SYSTEM_PACKAGE BUNDLED_PACKAGE - ) + FORCE_BUNDLED_PACKAGE + FIND_PACKAGE_ARGUMENTS) set(multiValueArgs OPTIONS PATCHES) cmake_parse_arguments(PKG_ARGS "" "${oneValueArgs}" "${multiValueArgs}" - "${ARGN}") + "${ARGN}") - if (NOT DEFINED PKG_ARGS_NAME) + if(NOT DEFINED PKG_ARGS_NAME) cpm_utils_message(FATAL_ERROR "package" "No package name defined") endif() - if (DEFINED PKG_ARGS_URL) + set(${PKG_ARGS_NAME}_CUSTOM_DIR "" CACHE STRING + "Path to a separately-downloaded copy of ${PKG_ARGS_NAME}") + option(${PKG_ARGS_NAME}_FORCE_SYSTEM + "Force the system package for ${PKG_ARGS_NAME}") + option(${PKG_ARGS_NAME}_FORCE_BUNDLED + "Force the bundled package for ${PKG_ARGS_NAME}") + + if (DEFINED ${PKG_ARGS_NAME}_CUSTOM_DIR AND + NOT ${PKG_ARGS_NAME}_CUSTOM_DIR STREQUAL "") + set(CPM_${PKG_ARGS_NAME}_SOURCE ${${PKG_ARGS_NAME}_CUSTOM_DIR}) + endif() + + if(NOT DEFINED PKG_ARGS_GIT_HOST) + set(git_host github.com) + else() + set(git_host ${PKG_ARGS_GIT_HOST}) + endif() + + if(DEFINED PKG_ARGS_URL) set(pkg_url ${PKG_ARGS_URL}) - if (DEFINED PKG_ARGS_REPO) - set(pkg_git_url https://github.com/${PKG_ARGS_REPO}) + if(DEFINED PKG_ARGS_REPO) + set(pkg_git_url https://${git_host}/${PKG_ARGS_REPO}) else() - if (DEFINED PKG_ARGS_GIT_URL) + if(DEFINED PKG_ARGS_GIT_URL) set(pkg_git_url ${PKG_ARGS_GIT_URL}) else() set(pkg_git_url ${pkg_url}) endif() endif() - elseif (DEFINED PKG_ARGS_REPO) - set(pkg_git_url https://github.com/${PKG_ARGS_REPO}) + elseif(DEFINED PKG_ARGS_REPO) + set(pkg_git_url https://${git_host}/${PKG_ARGS_REPO}) - if (DEFINED PKG_ARGS_TAG) + if(DEFINED PKG_ARGS_TAG) set(pkg_key ${PKG_ARGS_TAG}) if(DEFINED PKG_ARGS_ARTIFACT) set(pkg_url - ${pkg_git_url}/releases/download/${PKG_ARGS_TAG}/${PKG_ARGS_ARTIFACT}) + "${pkg_git_url}/releases/download/${PKG_ARGS_TAG}/${PKG_ARGS_ARTIFACT}") else() set(pkg_url ${pkg_git_url}/archive/refs/tags/${PKG_ARGS_TAG}.tar.gz) endif() - elseif (DEFINED PKG_ARGS_SHA) - set(pkg_url "${pkg_git_url}/archive/${PKG_ARGS_SHA}.zip") + elseif(DEFINED PKG_ARGS_SHA) + set(pkg_url "${pkg_git_url}/archive/${PKG_ARGS_SHA}.tar.gz") else() - if (DEFINED PKG_ARGS_BRANCH) + if(DEFINED PKG_ARGS_BRANCH) set(PKG_BRANCH ${PKG_ARGS_BRANCH}) else() cpm_utils_message(WARNING ${PKG_ARGS_NAME} - "REPO defined but no TAG, SHA, BRANCH, or URL specified, defaulting to master") + "REPO defined but no TAG, SHA, BRANCH, or URL" + "specified, defaulting to master") set(PKG_BRANCH master) endif() - set(pkg_url ${pkg_git_url}/archive/refs/heads/${PKG_BRANCH}.zip) + set(pkg_url ${pkg_git_url}/archive/refs/heads/${PKG_BRANCH}.tar.gz) endif() else() - cpm_utils_message(FATAL_ERROR ${PKG_ARGS_NAME} "No URL or repository defined") + cpm_utils_message(FATAL_ERROR ${PKG_ARGS_NAME} + "No URL or repository defined") endif() - cpm_utils_message(STATUS ${PKG_ARGS_NAME} "Download URL is ${pkg_url}") + cpm_utils_message(DEBUG ${PKG_ARGS_NAME} "Download URL is ${pkg_url}") - if (DEFINED PKG_ARGS_GIT_VERSION) - set(git_version ${PKG_ARGS_VERSION}) - elseif(DEFINED PKG_ARGS_VERSION) - set(git_version ${PKG_ARGS_GIT_VERSION}) - endif() - - if (NOT DEFINED PKG_ARGS_KEY) - if (DEFINED PKG_ARGS_SHA) + if(NOT DEFINED PKG_ARGS_KEY) + if(DEFINED PKG_ARGS_SHA) string(SUBSTRING ${PKG_ARGS_SHA} 0 4 pkg_key) cpm_utils_message(DEBUG ${PKG_ARGS_NAME} - "No custom key defined, using ${pkg_key} from sha") - elseif (DEFINED git_version) - set(pkg_key ${git_version}) + "No custom key defined, using ${pkg_key} from sha") + elseif(DEFINED PKG_ARGS_GIT_VERSION) + set(pkg_key ${PKG_ARGS_GIT_VERSION}) cpm_utils_message(DEBUG ${PKG_ARGS_NAME} - "No custom key defined, using ${pkg_key}") - elseif (DEFINED PKG_ARGS_TAG) + "No custom key defined, using ${pkg_key}") + elseif(DEFINED PKG_ARGS_TAG) set(pkg_key ${PKG_ARGS_TAG}) cpm_utils_message(DEBUG ${PKG_ARGS_NAME} - "No custom key defined, using ${pkg_key}") + "No custom key defined, using ${pkg_key}") + elseif(DEFINED PKG_ARGS_VERSION) + set(pkg_key ${PKG_ARGS_VERSION}) + cpm_utils_message(DEBUG ${PKG_ARGS_NAME} + "No custom key defined, using ${pkg_key}") else() cpm_utils_message(WARNING ${PKG_ARGS_NAME} - "Could not determine cache key, using CPM defaults") + "Could not determine cache key, using CPM defaults") endif() else() set(pkg_key ${PKG_ARGS_KEY}) endif() - if (DEFINED PKG_ARGS_HASH_ALGO) + if(DEFINED PKG_ARGS_HASH_ALGO) set(hash_algo ${PKG_ARGS_HASH_ALGO}) else() set(hash_algo SHA512) endif() - if (DEFINED PKG_ARGS_HASH) + if(DEFINED PKG_ARGS_HASH) set(pkg_hash "${hash_algo}=${PKG_ARGS_HASH}") - elseif (DEFINED PKG_ARGS_HASH_SUFFIX) + elseif(DEFINED PKG_ARGS_HASH_SUFFIX) # funny sanity check string(TOLOWER ${hash_algo} hash_algo_lower) string(TOLOWER ${PKG_ARGS_HASH_SUFFIX} suffix_lower) - if (NOT ${suffix_lower} MATCHES ${hash_algo_lower}) + if(NOT ${suffix_lower} MATCHES ${hash_algo_lower}) cpm_utils_message(WARNING - "Hash algorithm and hash suffix do not match, errors may occur") + "Hash algorithm and hash suffix do not match, errors may occur") endif() set(hash_url ${pkg_url}.${PKG_ARGS_HASH_SUFFIX}) - elseif (DEFINED PKG_ARGS_HASH_URL) + elseif(DEFINED PKG_ARGS_HASH_URL) set(hash_url ${PKG_ARGS_HASH_URL}) else() cpm_utils_message(WARNING ${PKG_ARGS_NAME} - "No hash or hash URL found") + "No hash or hash URL found") endif() - if (DEFINED hash_url) + if(DEFINED hash_url) set(outfile ${CMAKE_CURRENT_BINARY_DIR}/${PKG_ARGS_NAME}.hash) - file(DOWNLOAD ${hash_url} ${outfile}) - file(READ ${outfile} pkg_hash_tmp) - file(REMOVE ${outfile}) + # TODO(crueter): This is kind of a bad solution + # because "technically" the hash is invalidated each week + # but it works for now kjsdnfkjdnfjksdn + string(TOLOWER ${PKG_ARGS_NAME} lowername) + if(NOT EXISTS ${outfile} AND NOT EXISTS + ${CPM_SOURCE_CACHE}/${lowername}/${pkg_key}) + file(DOWNLOAD ${hash_url} ${outfile}) + endif() - set(pkg_hash "${hash_algo}=${pkg_hash_tmp}") + if(EXISTS ${outfile}) + file(READ ${outfile} pkg_hash_tmp) + endif() + + if(DEFINED ${pkg_hash_tmp}) + set(pkg_hash "${hash_algo}=${pkg_hash_tmp}") + endif() endif() - if (NOT CPMUTIL_DEFAULT_SYSTEM) - set(CPM_USE_LOCAL_PACKAGES OFF) - elseif (DEFINED PKG_ARGS_SYSTEM_PACKAGE) - set(CPM_USE_LOCAL_PACKAGES ${PKG_ARGS_SYSTEM_PACKAGE}) - elseif (DEFINED PKG_ARGS_BUNDLED_PACKAGE) - if (PKG_ARGS_BUNDLED_PACKAGE) - set(CPM_USE_LOCAL_PACKAGES OFF) + macro(set_precedence local force) + set(CPM_USE_LOCAL_PACKAGES ${local}) + set(CPM_LOCAL_PACKAGES_ONLY ${force}) + endmacro() + + #[[ + Precedence: + - package_FORCE_SYSTEM + - package_FORCE_BUNDLED + - CPMUTIL_FORCE_SYSTEM + - CPMUTIL_FORCE_BUNDLED + - BUNDLED_PACKAGE + - default to allow local + ]] + if(PKG_ARGS_FORCE_BUNDLED_PACKAGE) + set_precedence(OFF OFF) + elseif(${PKG_ARGS_NAME}_FORCE_SYSTEM) + set_precedence(ON ON) + elseif(${PKG_ARGS_NAME}_FORCE_BUNDLED) + set_precedence(OFF OFF) + elseif(CPMUTIL_FORCE_SYSTEM) + set_precedence(ON ON) + elseif(CPMUTIL_FORCE_BUNDLED) + set_precedence(OFF OFF) + elseif(DEFINED PKG_ARGS_BUNDLED_PACKAGE AND + NOT PKG_ARGS_BUNDLED_PACKAGE STREQUAL "unset") + if(PKG_ARGS_BUNDLED_PACKAGE) + set(local OFF) else() - set(CPM_USE_LOCAL_PACKAGES ON) + set(local ON) endif() + + set_precedence(${local} OFF) else() - set(CPM_USE_LOCAL_PACKAGES ON) + set_precedence(ON OFF) + endif() + + if(DEFINED PKG_ARGS_VERSION) + list(APPEND EXTRA_ARGS + VERSION ${PKG_ARGS_VERSION}) endif() CPMAddPackage( NAME ${PKG_ARGS_NAME} - VERSION ${PKG_ARGS_VERSION} URL ${pkg_url} URL_HASH ${pkg_hash} CUSTOM_CACHE_KEY ${pkg_key} @@ -210,36 +562,41 @@ function(AddPackage) OPTIONS ${PKG_ARGS_OPTIONS} PATCHES ${PKG_ARGS_PATCHES} + EXCLUDE_FROM_ALL ON - ${PKG_ARGS_UNPARSED_ARGUMENTS} - ) + ${EXTRA_ARGS} + + ${PKG_ARGS_UNPARSED_ARGUMENTS}) set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_NAMES ${PKG_ARGS_NAME}) set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_URLS ${pkg_git_url}) - if (${PKG_ARGS_NAME}_ADDED) - if (DEFINED PKG_ARGS_SHA) + if(${PKG_ARGS_NAME}_ADDED) + if(DEFINED PKG_ARGS_SHA) set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS - ${PKG_ARGS_SHA}) - elseif(DEFINED git_version) + ${PKG_ARGS_SHA}) + elseif(DEFINED PKG_ARGS_GIT_VERSION) set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS - ${git_version}) - elseif (DEFINED PKG_ARGS_TAG) + ${PKG_ARGS_GIT_VERSION}) + elseif(DEFINED PKG_ARGS_TAG) set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS - ${PKG_ARGS_TAG}) + ${PKG_ARGS_TAG}) + elseif(DEFINED PKG_ARGS_VERSION) + set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS + ${PKG_ARGS_VERSION}) else() cpm_utils_message(WARNING ${PKG_ARGS_NAME} - "Package has no specified sha, tag, or version") + "Package has no specified sha, tag, or version") set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS "unknown") endif() else() - if (DEFINED CPM_PACKAGE_${PKG_ARGS_NAME}_VERSION AND NOT + if(DEFINED CPM_PACKAGE_${PKG_ARGS_NAME}_VERSION AND NOT "${CPM_PACKAGE_${PKG_ARGS_NAME}_VERSION}" STREQUAL "") set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS - "${CPM_PACKAGE_${PKG_ARGS_NAME}_VERSION} (system)") + "${CPM_PACKAGE_${PKG_ARGS_NAME}_VERSION} (system)") else() set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS - "unknown (system)") + "unknown (system)") endif() endif() @@ -253,28 +610,8 @@ function(AddPackage) endfunction() -function(add_ci_package key) - set(ARTIFACT ${ARTIFACT_NAME}-${key}-${ARTIFACT_VERSION}.${ARTIFACT_EXT}) - - AddPackage( - NAME ${ARTIFACT_PACKAGE}-${key} - REPO ${ARTIFACT_REPO} - TAG v${ARTIFACT_VERSION} - VERSION ${ARTIFACT_VERSION} - ARTIFACT ${ARTIFACT} - - KEY ${key} - HASH_SUFFIX sha512sum - BUNDLED_PACKAGE ON - DOWNLOAD_ONLY ON - ) - - if (NOT ARTIFACT_FORCE_DOWNLOAD OR ARTIFACT_OVERRIDE) - set(ARTIFACT_DIR ${${ARTIFACT_PACKAGE}-${key}_SOURCE_DIR} PARENT_SCOPE) - endif() -endfunction() - -# TODO(crueter): doc +# TODO(crueter): we could do an AddMultiArchPackage, multiplatformpackage? +# name is the artifact name, package is for find_package override function(AddCIPackage) set(oneValueArgs VERSION @@ -282,14 +619,17 @@ function(AddCIPackage) REPO PACKAGE EXTENSION - FORCE_DOWNLOAD - MIN_VERSION - DISABLED_PLATFORMS - CMAKE_FILENAME - TARGET - ) + MIN_VERSION) - cmake_parse_arguments(PKG_ARGS "" "${oneValueArgs}" "" ${ARGN}) + set(multiValueArgs DISABLED_PLATFORMS) + + set(optionArgs MODULE) + + cmake_parse_arguments(PKG_ARGS + "${optionArgs}" + "${oneValueArgs}" + "${multiValueArgs}" + ${ARGN}) if(NOT DEFINED PKG_ARGS_VERSION) message(FATAL_ERROR "[CPMUtil] VERSION is required") @@ -304,7 +644,7 @@ function(AddCIPackage) message(FATAL_ERROR "[CPMUtil] PACKAGE is required") endif() - if (NOT DEFINED PKG_ARGS_CMAKE_FILENAME) + if(NOT DEFINED PKG_ARGS_CMAKE_FILENAME) set(ARTIFACT_CMAKE ${PKG_ARGS_NAME}) else() set(ARTIFACT_CMAKE ${PKG_ARGS_CMAKE_FILENAME}) @@ -316,17 +656,11 @@ function(AddCIPackage) set(ARTIFACT_EXT ${PKG_ARGS_EXTENSION}) endif() - if(NOT DEFINED PKG_ARGS_FORCE_DOWNLOAD) - set(ARTIFACT_FORCE_DOWNLOAD OFF) - else() - set(ARTIFACT_FORCE_DOWNLOAD ${PKG_ARGS_FORCE_DOWNLOAD}) - endif() - - if (DEFINED PKG_ARGS_MIN_VERSION) + if(DEFINED PKG_ARGS_MIN_VERSION) set(ARTIFACT_MIN_VERSION ${PKG_ARGS_MIN_VERSION}) endif() - if (DEFINED PKG_ARGS_DISABLED_PLATFORMS) + if(DEFINED PKG_ARGS_DISABLED_PLATFORMS) set(DISABLED_PLATFORMS ${PKG_ARGS_DISABLED_PLATFORMS}) endif() @@ -336,87 +670,75 @@ function(AddCIPackage) set(ARTIFACT_REPO ${PKG_ARGS_REPO}) set(ARTIFACT_PACKAGE ${PKG_ARGS_PACKAGE}) - if ((MSVC AND ARCHITECTURE_x86_64) OR ARTIFACT_FORCE_DOWNLOAD AND NOT "windows-amd64" IN_LIST DISABLED_PLATFORMS) - # kinda hacky - if(MSVC AND ARCHITECTURE_x86_64) - set(ARTIFACT_OVERRIDE ON) - endif() - - add_ci_package(windows-amd64) - set(ARTIFACT_OVERRIDE OFF) + if(MSVC AND ARCHITECTURE_x86_64) + set(pkgname windows-amd64) + elseif(MSVC AND ARCHITECTURE_arm64) + set(pkgname windows-arm64) + elseif(MINGW AND ARCHITECTURE_x86_64) + set(pkgname mingw-amd64) + elseif(MINGW AND ARCHITECTURE_arm64) + set(pkgname mingw-arm64) + elseif(ANDROID AND ARCHITECTURE_x86_64) + set(pkgname android-x86_64) + elseif(ANDROID AND ARCHITECTURE_arm64) + set(pkgname android-aarch64) + elseif(PLATFORM_SUN) + set(pkgname solaris-amd64) + elseif(PLATFORM_FREEBSD) + set(pkgname freebsd-amd64) + elseif(PLATFORM_LINUX AND ARCHITECTURE_x86_64) + set(pkgname linux-amd64) + elseif(PLATFORM_LINUX AND ARCHITECTURE_arm64) + set(pkgname linux-aarch64) + elseif(APPLE) + set(pkgname macos-universal) endif() - if ((MSVC AND ARCHITECTURE_arm64) OR ARTIFACT_FORCE_DOWNLOAD AND NOT "windows-arm64" IN_LIST DISABLED_PLATFORMS) - if(MSVC AND ARCHITECTURE_arm64) - set(ARTIFACT_OVERRIDE ON) - endif() + if (DEFINED pkgname AND NOT "${pkgname}" IN_LIST DISABLED_PLATFORMS) + set(ARTIFACT + "${ARTIFACT_NAME}-${pkgname}-${ARTIFACT_VERSION}.${ARTIFACT_EXT}") - add_ci_package(windows-arm64) - set(ARTIFACT_OVERRIDE OFF) - endif() + AddPackage( + NAME ${ARTIFACT_PACKAGE} + REPO ${ARTIFACT_REPO} + TAG "v${ARTIFACT_VERSION}" + GIT_VERSION ${ARTIFACT_VERSION} + ARTIFACT ${ARTIFACT} - if (ANDROID OR ARTIFACT_FORCE_DOWNLOAD AND NOT "android" IN_LIST DISABLED_PLATFORMS) - if(ANDROID) - set(ARTIFACT_OVERRIDE ON) - endif() + KEY "${pkgname}-${ARTIFACT_VERSION}" + HASH_SUFFIX sha512sum + FORCE_BUNDLED_PACKAGE ON + DOWNLOAD_ONLY ${PKG_ARGS_MODULE}) - add_ci_package(android) - set(ARTIFACT_OVERRIDE OFF) - endif() + set(${ARTIFACT_PACKAGE}_ADDED TRUE PARENT_SCOPE) + set(${ARTIFACT_PACKAGE}_SOURCE_DIR + "${${ARTIFACT_PACKAGE}_SOURCE_DIR}" PARENT_SCOPE) - if(PLATFORM_SUN OR ARTIFACT_FORCE_DOWNLOAD AND NOT "solaris" IN_LIST DISABLED_PLATFORMS) - if(PLATFORM_SUN) - set(ARTIFACT_OVERRIDE ON) - endif() - - add_ci_package(solaris) - set(ARTIFACT_OVERRIDE OFF) - endif() - - if(PLATFORM_FREEBSD OR ARTIFACT_FORCE_DOWNLOAD AND NOT "freebsd" IN_LIST DISABLED_PLATFORMS) - if(PLATFORM_FREEBSD) - set(ARTIFACT_OVERRIDE ON) - endif() - - add_ci_package(freebsd) - set(ARTIFACT_OVERRIDE OFF) - endif() - - if((PLATFORM_LINUX AND ARCHITECTURE_x86_64) OR ARTIFACT_FORCE_DOWNLOAD AND NOT "linux" IN_LIST DISABLED_PLATFORMS) - if(PLATFORM_LINUX AND ARCHITECTURE_x86_64) - set(ARTIFACT_OVERRIDE ON) - endif() - - add_ci_package(linux) - set(ARTIFACT_OVERRIDE OFF) - endif() - - if((PLATFORM_LINUX AND ARCHITECTURE_arm64) OR ARTIFACT_FORCE_DOWNLOAD AND NOT "linux-aarch64" IN_LIST DISABLED_PLATFORMS) - if(PLATFORM_LINUX AND ARCHITECTURE_arm64) - set(ARTIFACT_OVERRIDE ON) - endif() - - add_ci_package(linux-aarch64) - set(ARTIFACT_OVERRIDE OFF) - endif() - - if (DEFINED ARTIFACT_DIR) - if (NOT DEFINED PKG_ARGS_TARGET OR NOT TARGET "${PKG_ARGS_TARGET}") - include(${ARTIFACT_DIR}/${ARTIFACT_CMAKE}.cmake) - - # Overrides find package - CPMAddPackage( - NAME ${ARTIFACT_PACKAGE} - SOURCE_DIR ${ARTIFACT_DIR} - ) - - set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_NAMES ${ARTIFACT_NAME}) - set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_URLS "https://github.com/${ARTIFACT_REPO}") # TODO(crueter) other hosts? - set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS ${ARTIFACT_VERSION}) - - set(${ARTIFACT_PACKAGE}_ADDED TRUE PARENT_SCOPE) + if (PKG_ARGS_MODULE) + list(APPEND CMAKE_PREFIX_PATH "${${ARTIFACT_PACKAGE}_SOURCE_DIR}") + set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} PARENT_SCOPE) endif() else() find_package(${ARTIFACT_PACKAGE} ${ARTIFACT_MIN_VERSION} REQUIRED) endif() endfunction() + +# Utility function for Qt +function(AddQt version) + if (NOT DEFINED version) + message(FATAL_ERROR "[CPMUtil] AddQt: version is required") + endif() + + AddCIPackage( + NAME Qt + PACKAGE Qt6 + VERSION ${version} + MIN_VERSION 6 + REPO crueter-ci/Qt + DISABLED_PLATFORMS + android-x86_64 android-aarch64 + freebsd-amd64 solaris-amd64 openbsd-amd64 + MODULE) + + set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} PARENT_SCOPE) +endfunction() diff --git a/CMakeModules/CopyYuzuFFmpegDeps.cmake b/CMakeModules/CopyYuzuFFmpegDeps.cmake deleted file mode 100644 index e50696cc02..0000000000 --- a/CMakeModules/CopyYuzuFFmpegDeps.cmake +++ /dev/null @@ -1,10 +0,0 @@ -# SPDX-FileCopyrightText: 2020 yuzu Emulator Project -# SPDX-License-Identifier: GPL-2.0-or-later - -function(copy_yuzu_FFmpeg_deps target_dir) - include(WindowsCopyFiles) - set(DLL_DEST "$/") - file(READ "${FFmpeg_PATH}/requirements.txt" FFmpeg_REQUIRED_DLLS) - string(STRIP "${FFmpeg_REQUIRED_DLLS}" FFmpeg_REQUIRED_DLLS) - windows_copy_files(${target_dir} ${FFmpeg_LIBRARY_DIR} ${DLL_DEST} ${FFmpeg_REQUIRED_DLLS}) -endfunction(copy_yuzu_FFmpeg_deps) diff --git a/CMakeModules/CopyYuzuQt6Deps.cmake b/CMakeModules/CopyYuzuQt6Deps.cmake deleted file mode 100644 index 5ea8f74233..0000000000 --- a/CMakeModules/CopyYuzuQt6Deps.cmake +++ /dev/null @@ -1,66 +0,0 @@ -# SPDX-FileCopyrightText: 2024 kleidis - -function(copy_yuzu_Qt6_deps target_dir) - include(WindowsCopyFiles) - if (MSVC) - set(DLL_DEST "$/") - set(Qt6_DLL_DIR "${Qt6_DIR}/../../../bin") - else() - set(DLL_DEST "${CMAKE_BINARY_DIR}/bin/") - set(Qt6_DLL_DIR "${Qt6_DIR}/../../../lib/") - endif() - set(Qt6_PLATFORMS_DIR "${Qt6_DIR}/../../../plugins/platforms/") - set(Qt6_STYLES_DIR "${Qt6_DIR}/../../../plugins/styles/") - set(Qt6_IMAGEFORMATS_DIR "${Qt6_DIR}/../../../plugins/imageformats/") - set(Qt6_RESOURCES_DIR "${Qt6_DIR}/../../../resources/") - set(PLATFORMS ${DLL_DEST}plugins/platforms/) - set(STYLES ${DLL_DEST}plugins/styles/) - set(IMAGEFORMATS ${DLL_DEST}plugins/imageformats/) - set(RESOURCES ${DLL_DEST}resources/) - if (MSVC) - windows_copy_files(${target_dir} ${Qt6_DLL_DIR} ${DLL_DEST} - Qt6Core$<$:d>.* - Qt6Gui$<$:d>.* - Qt6Widgets$<$:d>.* - Qt6Network$<$:d>.* - ) - if (YUZU_USE_QT_MULTIMEDIA) - windows_copy_files(${target_dir} ${Qt6_DLL_DIR} ${DLL_DEST} - Qt6Multimedia$<$:d>.* - ) - endif() - if (YUZU_USE_QT_WEB_ENGINE) - windows_copy_files(${target_dir} ${Qt6_DLL_DIR} ${DLL_DEST} - Qt6OpenGL$<$:d>.* - Qt6Positioning$<$:d>.* - Qt6PrintSupport$<$:d>.* - Qt6Qml$<$:d>.* - Qt6QmlMeta$<$:d>.* - Qt6QmlModels$<$:d>.* - Qt6QmlWorkerScript$<$:d>.* - Qt6Quick$<$:d>.* - Qt6QuickWidgets$<$:d>.* - Qt6WebChannel$<$:d>.* - Qt6WebEngineCore$<$:d>.* - Qt6WebEngineWidgets$<$:d>.* - QtWebEngineProcess$<$:d>.* - ) - windows_copy_files(${target_dir} ${Qt6_RESOURCES_DIR} ${RESOURCES} - icudtl.dat - qtwebengine_devtools_resources.pak - qtwebengine_resources.pak - qtwebengine_resources_100p.pak - qtwebengine_resources_200p.pak - v8_context_snapshot.bin - ) - endif() - windows_copy_files(yuzu ${Qt6_PLATFORMS_DIR} ${PLATFORMS} qwindows$<$:d>.*) - windows_copy_files(yuzu ${Qt6_STYLES_DIR} ${STYLES} qmodernwindowsstyle$<$:d>.*) - windows_copy_files(yuzu ${Qt6_IMAGEFORMATS_DIR} ${IMAGEFORMATS} - qjpeg$<$:d>.* - qgif$<$:d>.* - ) - else() - # Update for non-MSVC platforms if needed - endif() -endfunction(copy_yuzu_Qt6_deps) diff --git a/CMakeModules/CopyYuzuSDLDeps.cmake b/CMakeModules/CopyYuzuSDLDeps.cmake deleted file mode 100644 index 464eed5e9c..0000000000 --- a/CMakeModules/CopyYuzuSDLDeps.cmake +++ /dev/null @@ -1,8 +0,0 @@ -# SPDX-FileCopyrightText: 2016 Citra Emulator Project -# SPDX-License-Identifier: GPL-2.0-or-later - -function(copy_yuzu_SDL_deps target_dir) - include(WindowsCopyFiles) - set(DLL_DEST "$/") - windows_copy_files(${target_dir} ${SDL2_DLL_DIR} ${DLL_DEST} SDL2.dll) -endfunction(copy_yuzu_SDL_deps) diff --git a/CMakeModules/DownloadExternals.cmake b/CMakeModules/DownloadExternals.cmake deleted file mode 100644 index 642d7d0df1..0000000000 --- a/CMakeModules/DownloadExternals.cmake +++ /dev/null @@ -1,253 +0,0 @@ -# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project -# SPDX-License-Identifier: GPL-3.0-or-later - -# This function downloads a binary library package from our external repo. -# Params: -# remote_path: path to the file to download, relative to the remote repository root -# prefix_var: name of a variable which will be set with the path to the extracted contents -set(CURRENT_MODULE_DIR ${CMAKE_CURRENT_LIST_DIR}) -function(download_bundled_external remote_path lib_name cpm_key prefix_var version) - set(package_base_url "https://github.com/eden-emulator/") - set(package_repo "no_platform") - set(package_extension "no_platform") - - if (WIN32 OR FORCE_WIN_ARCHIVES) - set(CACHE_KEY "windows") - set(package_repo "ext-windows-bin/raw/master/") - set(package_extension ".7z") - elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") - set(CACHE_KEY "linux") - set(package_repo "ext-linux-bin/raw/master/") - set(package_extension ".tar.xz") - elseif (ANDROID) - set(CACHE_KEY "android") - set(package_repo "ext-android-bin/raw/master/") - set(package_extension ".tar.xz") - else() - message(FATAL_ERROR "No package available for this platform") - endif() - set(package_url "${package_base_url}${package_repo}") - set(full_url ${package_url}${remote_path}${lib_name}${package_extension}) - - AddPackage( - NAME ${cpm_key} - VERSION ${version} - URL ${full_url} - DOWNLOAD_ONLY YES - KEY ${CACHE_KEY} - BUNDLED_PACKAGE ON - # TODO(crueter): hash - ) - - set(${prefix_var} "${${cpm_key}_SOURCE_DIR}" PARENT_SCOPE) - message(STATUS "Using bundled binaries at ${${cpm_key}_SOURCE_DIR}") -endfunction() - -function(download_win_archives) - set(FORCE_WIN_ARCHIVES ON) - set(FFmpeg_EXT_NAME "ffmpeg-7.1.1") - - download_bundled_external("ffmpeg/" ${FFmpeg_EXT_NAME} "ffmpeg-bundled" "" 7.1.1) - - set(FORCE_WIN_ARCHIVES OFF) -endfunction() - -function(download_moltenvk_external platform version) - set(MOLTENVK_DIR "${CMAKE_BINARY_DIR}/externals/MoltenVK") - set(MOLTENVK_TAR "${CMAKE_BINARY_DIR}/externals/MoltenVK.tar") - if (NOT EXISTS ${MOLTENVK_DIR}) - if (NOT EXISTS ${MOLTENVK_TAR}) - file(DOWNLOAD https://github.com/KhronosGroup/MoltenVK/releases/download/${version}/MoltenVK-${platform}.tar - ${MOLTENVK_TAR} SHOW_PROGRESS) - endif() - - execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf "${MOLTENVK_TAR}" - WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/externals") - endif() - - # Add the MoltenVK library path to the prefix so find_library can locate it. - list(APPEND CMAKE_PREFIX_PATH "${MOLTENVK_DIR}/MoltenVK/dylib/${platform}") - set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} PARENT_SCOPE) -endfunction() - -# Determine installation parameters for OS, architecture, and compiler -function(determine_qt_parameters target host_out type_out arch_out arch_path_out host_type_out host_arch_out host_arch_path_out) - if (WIN32) - set(host "windows") - set(type "desktop") - - if (NOT tool) - if (MINGW) - set(arch "win64_mingw") - set(arch_path "mingw_64") - elseif (MSVC) - if ("arm64" IN_LIST ARCHITECTURE) - set(arch_path "msvc2022_arm64") - elseif ("x86_64" IN_LIST ARCHITECTURE) - set(arch_path "msvc2022_64") - else() - message(FATAL_ERROR "Unsupported bundled Qt architecture. Disable YUZU_USE_BUNDLED_QT and provide your own.") - endif() - set(arch "win64_${arch_path}") - - if (CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "AMD64") - set(host_arch_path "msvc2022_64") - elseif (CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "ARM64") - set(host_arch_path "msvc2022_arm64") - endif() - set(host_arch "win64_${host_arch_path}") - else() - message(FATAL_ERROR "Unsupported bundled Qt toolchain. Disable YUZU_USE_BUNDLED_QT and provide your own.") - endif() - endif() - elseif (APPLE) - set(host "mac") - set(type "desktop") - set(arch "clang_64") - set(arch_path "macos") - else() - set(host "linux") - set(type "desktop") - set(arch "linux_gcc_64") - set(arch_path "linux") - endif() - - set(${host_out} "${host}" PARENT_SCOPE) - set(${type_out} "${type}" PARENT_SCOPE) - set(${arch_out} "${arch}" PARENT_SCOPE) - set(${arch_path_out} "${arch_path}" PARENT_SCOPE) - if (DEFINED host_type) - set(${host_type_out} "${host_type}" PARENT_SCOPE) - else() - set(${host_type_out} "${type}" PARENT_SCOPE) - endif() - if (DEFINED host_arch) - set(${host_arch_out} "${host_arch}" PARENT_SCOPE) - else() - set(${host_arch_out} "${arch}" PARENT_SCOPE) - endif() - if (DEFINED host_arch_path) - set(${host_arch_path_out} "${host_arch_path}" PARENT_SCOPE) - else() - set(${host_arch_path_out} "${arch_path}" PARENT_SCOPE) - endif() -endfunction() - -# Download Qt binaries for a specific configuration. -function(download_qt_configuration prefix_out target host type arch arch_path base_path) - if (target MATCHES "tools_.*") - set(tool ON) - else() - set(tool OFF) - endif() - - set(install_args -c "${CURRENT_MODULE_DIR}/aqt_config.ini") - if (tool) - set(prefix "${base_path}/Tools") - set(install_args ${install_args} install-tool --outputdir ${base_path} ${host} desktop ${target}) - else() - set(prefix "${base_path}/${target}/${arch_path}") - set(install_args ${install_args} install-qt --outputdir ${base_path} ${host} ${type} ${target} ${arch} -m qt_base) - - if (YUZU_USE_QT_MULTIMEDIA) - set(install_args ${install_args} qtmultimedia) - endif() - - if (YUZU_USE_QT_WEB_ENGINE) - set(install_args ${install_args} qtpositioning qtwebchannel qtwebengine) - endif() - - if (NOT ${YUZU_QT_MIRROR} STREQUAL "") - message(STATUS "Using Qt mirror ${YUZU_QT_MIRROR}") - set(install_args ${install_args} -b ${YUZU_QT_MIRROR}) - endif() - endif() - - message(STATUS "Install Args ${install_args}") - if (NOT EXISTS "${prefix}") - message(STATUS "Downloading Qt binaries for ${target}:${host}:${type}:${arch}:${arch_path}") - set(AQT_PREBUILD_BASE_URL "https://github.com/miurahr/aqtinstall/releases/download/v3.3.0") - if (WIN32) - set(aqt_path "${base_path}/aqt.exe") - if (NOT EXISTS "${aqt_path}") - file(DOWNLOAD - ${AQT_PREBUILD_BASE_URL}/aqt.exe - ${aqt_path} SHOW_PROGRESS) - endif() - execute_process(COMMAND ${aqt_path} ${install_args} - WORKING_DIRECTORY ${base_path}) - elseif (APPLE) - set(aqt_path "${base_path}/aqt-macos") - if (NOT EXISTS "${aqt_path}") - file(DOWNLOAD - ${AQT_PREBUILD_BASE_URL}/aqt-macos - ${aqt_path} SHOW_PROGRESS) - endif() - execute_process(COMMAND chmod +x ${aqt_path}) - execute_process(COMMAND ${aqt_path} ${install_args} - WORKING_DIRECTORY ${base_path}) - else() - set(aqt_install_path "${base_path}/aqt") - file(MAKE_DIRECTORY "${aqt_install_path}") - - execute_process(COMMAND python3 -m pip install --target=${aqt_install_path} aqtinstall - WORKING_DIRECTORY ${base_path}) - execute_process(COMMAND ${CMAKE_COMMAND} -E env PYTHONPATH=${aqt_install_path} python3 -m aqt ${install_args} - WORKING_DIRECTORY ${base_path}) - endif() - - message(STATUS "Downloaded Qt binaries for ${target}:${host}:${type}:${arch}:${arch_path} to ${prefix}") - endif() - - set(${prefix_out} "${prefix}" PARENT_SCOPE) -endfunction() - -# This function downloads Qt using aqt. -# The path of the downloaded content will be added to the CMAKE_PREFIX_PATH. -# QT_TARGET_PATH is set to the Qt for the compile target platform. -# QT_HOST_PATH is set to a host-compatible Qt, for running tools. -# Params: -# target: Qt dependency to install. Specify a version number to download Qt, or "tools_(name)" for a specific build tool. -function(download_qt target) - determine_qt_parameters("${target}" host type arch arch_path host_type host_arch host_arch_path) - - get_external_prefix(qt base_path) - file(MAKE_DIRECTORY "${base_path}") - - download_qt_configuration(prefix "${target}" "${host}" "${type}" "${arch}" "${arch_path}" "${base_path}") - if (DEFINED host_arch_path AND NOT "${host_arch_path}" STREQUAL "${arch_path}") - download_qt_configuration(host_prefix "${target}" "${host}" "${host_type}" "${host_arch}" "${host_arch_path}" "${base_path}") - else() - set(host_prefix "${prefix}") - endif() - - set(QT_TARGET_PATH "${prefix}" CACHE STRING "") - set(QT_HOST_PATH "${host_prefix}" CACHE STRING "") - - list(APPEND CMAKE_PREFIX_PATH "${prefix}") - set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} PARENT_SCOPE) -endfunction() - -function(download_moltenvk) -set(MOLTENVK_PLATFORM "macOS") - -set(MOLTENVK_DIR "${CMAKE_BINARY_DIR}/externals/MoltenVK") -set(MOLTENVK_TAR "${CMAKE_BINARY_DIR}/externals/MoltenVK.tar") -if (NOT EXISTS ${MOLTENVK_DIR}) -if (NOT EXISTS ${MOLTENVK_TAR}) - file(DOWNLOAD https://github.com/KhronosGroup/MoltenVK/releases/download/v1.2.10-rc2/MoltenVK-all.tar - ${MOLTENVK_TAR} SHOW_PROGRESS) -endif() - -execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf "${MOLTENVK_TAR}" - WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/externals") -endif() - -# Add the MoltenVK library path to the prefix so find_library can locate it. -list(APPEND CMAKE_PREFIX_PATH "${MOLTENVK_DIR}/MoltenVK/dylib/${MOLTENVK_PLATFORM}") -set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} PARENT_SCOPE) -endfunction() - -function(get_external_prefix lib_name prefix_var) - set(${prefix_var} "${CMAKE_BINARY_DIR}/externals/${lib_name}" PARENT_SCOPE) -endfunction() diff --git a/CMakeModules/FindDiscordRPC.cmake b/CMakeModules/FindDiscordRPC.cmake index 44ca9904f4..5ae9f4f999 100644 --- a/CMakeModules/FindDiscordRPC.cmake +++ b/CMakeModules/FindDiscordRPC.cmake @@ -1,27 +1,33 @@ +# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + # SPDX-FileCopyrightText: 2022 Alexandre Bouvier # # SPDX-License-Identifier: GPL-3.0-or-later -find_path(DiscordRPC_INCLUDE_DIR discord_rpc.h) +find_package(DiscordRPC CONFIG QUIET) -find_library(DiscordRPC_LIBRARY discord-rpc) +if (NOT DiscordRPC_FOUND) + find_path(DiscordRPC_INCLUDE_DIR discord_rpc.h) + find_library(DiscordRPC_LIBRARY discord-rpc) -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(DiscordRPC - REQUIRED_VARS - DiscordRPC_LIBRARY + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(DiscordRPC + REQUIRED_VARS + DiscordRPC_LIBRARY + DiscordRPC_INCLUDE_DIR + ) + + if (DiscordRPC_FOUND AND NOT TARGET DiscordRPC::discord-rpc) + add_library(DiscordRPC::discord-rpc UNKNOWN IMPORTED) + set_target_properties(DiscordRPC::discord-rpc PROPERTIES + IMPORTED_LOCATION "${DiscordRPC_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${DiscordRPC_INCLUDE_DIR}" + ) + endif() + + mark_as_advanced( DiscordRPC_INCLUDE_DIR -) - -if (DiscordRPC_FOUND AND NOT TARGET DiscordRPC::discord-rpc) - add_library(DiscordRPC::discord-rpc UNKNOWN IMPORTED) - set_target_properties(DiscordRPC::discord-rpc PROPERTIES - IMPORTED_LOCATION "${DiscordRPC_LIBRARY}" - INTERFACE_INCLUDE_DIRECTORIES "${DiscordRPC_INCLUDE_DIR}" + DiscordRPC_LIBRARY ) endif() - -mark_as_advanced( - DiscordRPC_INCLUDE_DIR - DiscordRPC_LIBRARY -) diff --git a/CMakeModules/FindFFmpeg.cmake b/CMakeModules/FindFFmpeg.cmake index 5cb1f3c8a4..edd0e0a882 100644 --- a/CMakeModules/FindFFmpeg.cmake +++ b/CMakeModules/FindFFmpeg.cmake @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + # SPDX-FileCopyrightText: 2019 Citra Emulator Project # SPDX-License-Identifier: GPL-2.0-or-later @@ -75,16 +78,16 @@ function(find_ffmpeg LIBNAME) ) else() list(APPEND INCLUDE_PATHS - /usr/local/include/ffmpeg - /usr/local/include/lib${LIBNAME} - /usr/include/ffmpeg - /usr/include/lib${LIBNAME} - /usr/include/ffmpeg/lib${LIBNAME} + ${CMAKE_SYSROOT}/usr/local/include/ffmpeg + ${CMAKE_SYSROOT}/usr/local/include/lib${LIBNAME} + ${CMAKE_SYSROOT}/usr/include/ffmpeg + ${CMAKE_SYSROOT}/usr/include/lib${LIBNAME} + ${CMAKE_SYSROOT}/usr/include/ffmpeg/lib${LIBNAME} ) list(APPEND LIB_PATHS - /usr/local/lib - /usr/lib + ${CMAKE_SYSROOT}/usr/local/lib + ${CMAKE_SYSROOT}/usr/lib ) endif() diff --git a/CMakeModules/FindOpus.cmake b/CMakeModules/FindOpus.cmake index 25a44fd870..5557cd1baf 100644 --- a/CMakeModules/FindOpus.cmake +++ b/CMakeModules/FindOpus.cmake @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + # SPDX-FileCopyrightText: 2022 yuzu Emulator Project # SPDX-License-Identifier: GPL-2.0-or-later @@ -10,6 +13,10 @@ find_package_handle_standard_args(Opus VERSION_VAR OPUS_VERSION ) +if (PLATFORM_MSYS) + FixMsysPath(PkgConfig::OPUS) +endif() + if (Opus_FOUND AND NOT TARGET Opus::opus) add_library(Opus::opus ALIAS PkgConfig::OPUS) endif() diff --git a/CMakeModules/FindSPIRV-Tools.cmake b/CMakeModules/FindSPIRV-Tools.cmake new file mode 100644 index 0000000000..e0f9a88d54 --- /dev/null +++ b/CMakeModules/FindSPIRV-Tools.cmake @@ -0,0 +1,26 @@ +# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + +# SPDX-FileCopyrightText: 2022 yuzu Emulator Project +# SPDX-License-Identifier: GPL-2.0-or-later + +include(FindPackageHandleStandardArgs) + +find_package(PkgConfig QUIET) +pkg_search_module(SPIRV-Tools QUIET IMPORTED_TARGET SPIRV-Tools) +find_package_handle_standard_args(SPIRV-Tools + REQUIRED_VARS SPIRV-Tools_LINK_LIBRARIES + VERSION_VAR SPIRV-Tools_VERSION +) + +if (PLATFORM_MSYS) + FixMsysPath(PkgConfig::SPIRV-Tools) +endif() + +if (SPIRV-Tools_FOUND AND NOT TARGET SPIRV-Tools::SPIRV-Tools) + if (TARGET SPIRV-Tools) + add_library(SPIRV-Tools::SPIRV-Tools ALIAS SPIRV-Tools) + else() + add_library(SPIRV-Tools::SPIRV-Tools ALIAS PkgConfig::SPIRV-Tools) + endif() +endif() diff --git a/CMakeModules/Findenet.cmake b/CMakeModules/Findenet.cmake index 859a6f3866..d80e737ebb 100644 --- a/CMakeModules/Findenet.cmake +++ b/CMakeModules/Findenet.cmake @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + # SPDX-FileCopyrightText: 2022 Alexandre Bouvier # # SPDX-License-Identifier: GPL-3.0-or-later @@ -11,6 +14,10 @@ find_package_handle_standard_args(enet VERSION_VAR ENET_VERSION ) +if (PLATFORM_MSYS) + FixMsysPath(PkgConfig::ENET) +endif() + if (enet_FOUND AND NOT TARGET enet::enet) add_library(enet::enet ALIAS PkgConfig::ENET) endif() diff --git a/CMakeModules/Findlibusb.cmake b/CMakeModules/Findlibusb.cmake index 0eadce9578..87b174c5b4 100644 --- a/CMakeModules/Findlibusb.cmake +++ b/CMakeModules/Findlibusb.cmake @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + # SPDX-FileCopyrightText: 2022 Alexandre Bouvier # # SPDX-License-Identifier: GPL-3.0-or-later @@ -11,6 +14,10 @@ find_package_handle_standard_args(libusb VERSION_VAR LIBUSB_VERSION ) +if (PLATFORM_MSYS) + FixMsysPath(PkgConfig::LIBUSB) +endif() + if (libusb_FOUND AND NOT TARGET libusb::usb) add_library(libusb::usb ALIAS PkgConfig::LIBUSB) endif() diff --git a/CMakeModules/Findlz4.cmake b/CMakeModules/Findlz4.cmake index 7a9a02d4e8..af230166eb 100644 --- a/CMakeModules/Findlz4.cmake +++ b/CMakeModules/Findlz4.cmake @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + # SPDX-FileCopyrightText: 2022 yuzu Emulator Project # SPDX-License-Identifier: GPL-2.0-or-later @@ -9,6 +12,11 @@ if (lz4_CONSIDERED_CONFIGS) else() find_package(PkgConfig QUIET) pkg_search_module(LZ4 QUIET IMPORTED_TARGET liblz4) + + if (PLATFORM_MSYS) + FixMsysPath(PkgConfig::LZ4) + endif() + find_package_handle_standard_args(lz4 REQUIRED_VARS LZ4_LINK_LIBRARIES VERSION_VAR LZ4_VERSION diff --git a/CMakeModules/Findzstd.cmake b/CMakeModules/Findzstd.cmake index ae3ea08653..8e44b7a892 100644 --- a/CMakeModules/Findzstd.cmake +++ b/CMakeModules/Findzstd.cmake @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + # SPDX-FileCopyrightText: 2022 yuzu Emulator Project # SPDX-License-Identifier: GPL-2.0-or-later @@ -11,12 +14,11 @@ else() pkg_search_module(ZSTD QUIET IMPORTED_TARGET libzstd) find_package_handle_standard_args(zstd REQUIRED_VARS ZSTD_LINK_LIBRARIES - VERSION_VAR ZSTD_VERSION - ) + VERSION_VAR ZSTD_VERSION) endif() if (zstd_FOUND AND NOT TARGET zstd::zstd) - if (TARGET zstd::libzstd_shared) + if (TARGET zstd::libzstd_shared AND NOT YUZU_STATIC_BUILD) add_library(zstd::zstd ALIAS zstd::libzstd_shared) elseif (TARGET zstd::libzstd_static) add_library(zstd::zstd ALIAS zstd::libzstd_static) @@ -24,3 +26,16 @@ if (zstd_FOUND AND NOT TARGET zstd::zstd) add_library(zstd::zstd ALIAS PkgConfig::ZSTD) endif() endif() + +get_target_property(ZSTD_TARGET zstd::zstd ALIASED_TARGET) + +if (NOT TARGET zstd::libzstd) + if (ZSTD_TARGET) + add_library(zstd::libzstd ALIAS ${ZSTD_TARGET}) + else() + add_library(zstd::libzstd ALIAS zstd::zstd) + endif() +elseif(YUZU_STATIC_BUILD AND TARGET zstd::libzstd_static) + # zstd::libzstd links to shared zstd by default + set_target_properties(zstd::libzstd PROPERTIES INTERFACE_LINK_LIBRARIES zstd::libzstd_static) +endif() diff --git a/CMakeModules/FixMsysPaths.cmake b/CMakeModules/FixMsysPaths.cmake new file mode 100644 index 0000000000..81520ca3f7 --- /dev/null +++ b/CMakeModules/FixMsysPaths.cmake @@ -0,0 +1,21 @@ +# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + +function(FixMsysPath target) + get_target_property(include_dir ${target} INTERFACE_INCLUDE_DIRECTORIES) + + if (NOT (include_dir MATCHES "^/")) + return() + endif() + + set(root_default $ENV{MSYS2_LOCATION}) + if (root_default STREQUAL "") + set(root_default "C:/msys64") + endif() + + set(MSYS_ROOT_PATH ${root_default} CACHE STRING "Location of the MSYS2 root") + + set(include_dir "C:/msys64${include_dir}") + set_target_properties(${target} PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES ${include_dir}) +endfunction() diff --git a/CMakeModules/GenerateSCMRev.cmake b/CMakeModules/GenerateSCMRev.cmake index 3b8e996751..947a4963ee 100644 --- a/CMakeModules/GenerateSCMRev.cmake +++ b/CMakeModules/GenerateSCMRev.cmake @@ -1,38 +1,57 @@ +# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + # SPDX-FileCopyrightText: 2019 yuzu Emulator Project # SPDX-License-Identifier: GPL-2.0-or-later -# Gets a UTC timestamp and sets the provided variable to it +# generate git/build information +include(GetSCMRev) + function(get_timestamp _var) string(TIMESTAMP timestamp UTC) set(${_var} "${timestamp}" PARENT_SCOPE) endfunction() -# generate git/build information -include(GetGitRevisionDescription) -if(NOT GIT_REF_SPEC) - get_git_head_revision(GIT_REF_SPEC GIT_REV) -endif() -if(NOT GIT_DESC) - git_describe(GIT_DESC --always --long --dirty) -endif() -if (NOT GIT_BRANCH) - git_branch_name(GIT_BRANCH) -endif() get_timestamp(BUILD_DATE) -git_get_exact_tag(GIT_TAG --tags) -if (GIT_TAG MATCHES "NOTFOUND") - set(BUILD_VERSION "${GIT_DESC}") - set(IS_DEV_BUILD true) +if (DEFINED GIT_RELEASE) + set(BUILD_VERSION "${GIT_TAG}") + set(GIT_REFSPEC "${GIT_RELEASE}") + set(IS_DEV_BUILD false) else() - set(BUILD_VERSION ${GIT_TAG}) - set(IS_DEV_BUILD false) + string(SUBSTRING ${GIT_COMMIT} 0 10 BUILD_VERSION) + set(BUILD_VERSION "${BUILD_VERSION}-${GIT_REFSPEC}") + set(IS_DEV_BUILD true) endif() +if (NIGHTLY_BUILD) + set(IS_NIGHTLY_BUILD true) +else() + set(IS_NIGHTLY_BUILD false) +endif() + +set(GIT_DESC ${BUILD_VERSION}) + # Generate cpp with Git revision from template # Also if this is a CI build, add the build name (ie: Nightly, Canary) to the scm_rev file as well -set(REPO_NAME "Eden") -set(BUILD_ID ${GIT_BRANCH}) + +# Auto-updater metadata! Must somewhat mirror GitHub API endpoint +if (NIGHTLY_BUILD) + set(BUILD_AUTO_UPDATE_WEBSITE "https://git.eden-emu.dev") + set(BUILD_AUTO_UPDATE_API "git.eden-emu.dev") + set(BUILD_AUTO_UPDATE_API_PATH "/api/v1/repos/") + set(BUILD_AUTO_UPDATE_REPO "eden-ci/nightly") + set(REPO_NAME "Eden Nightly") +else() + set(BUILD_AUTO_UPDATE_WEBSITE "https://git.eden-emu.dev") + set(BUILD_AUTO_UPDATE_API "git.eden-emu.dev") + set(BUILD_AUTO_UPDATE_API_PATH "/api/v1/repos/") + set(BUILD_AUTO_UPDATE_REPO "eden-emu/eden") + set(REPO_NAME "Eden") +endif() + +set(BUILD_ID ${GIT_REFSPEC}) set(BUILD_FULLNAME "${REPO_NAME} ${BUILD_VERSION} ") +set(CXX_COMPILER "${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}") configure_file(scm_rev.cpp.in scm_rev.cpp @ONLY) diff --git a/CMakeModules/MSVCCache.cmake b/CMakeModules/MSVCCache.cmake deleted file mode 100644 index ba0d22d9ee..0000000000 --- a/CMakeModules/MSVCCache.cmake +++ /dev/null @@ -1,15 +0,0 @@ -# SPDX-FileCopyrightText: 2022 yuzu Emulator Project -# SPDX-License-Identifier: GPL-3.0-or-later - -# buildcache wrapper -OPTION(USE_CCACHE "Use buildcache for compilation" OFF) -IF(USE_CCACHE) - FIND_PROGRAM(CCACHE buildcache) - IF (CCACHE) - MESSAGE(STATUS "Using buildcache found in PATH") - SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${CCACHE}) - SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_LINK ${CCACHE}) - ELSE(CCACHE) - MESSAGE(WARNING "USE_CCACHE enabled, but no buildcache executable found") - ENDIF(CCACHE) -ENDIF(USE_CCACHE) diff --git a/CMakeModules/MinGWClangCross.cmake b/CMakeModules/MinGWClangCross.cmake deleted file mode 100644 index 286a59a7ad..0000000000 --- a/CMakeModules/MinGWClangCross.cmake +++ /dev/null @@ -1,58 +0,0 @@ -# SPDX-FileCopyrightText: 2022 yuzu Emulator Project -# SPDX-License-Identifier: GPL-3.0-or-later - -set(MINGW_PREFIX /usr/x86_64-w64-mingw32/) -set(CMAKE_SYSTEM_NAME Windows) -set(CMAKE_SYSTEM_PROCESSOR x86_64) - -set(CMAKE_FIND_ROOT_PATH ${MINGW_PREFIX}) -set(SDL2_PATH ${MINGW_PREFIX}) -set(MINGW_TOOL_PREFIX ${CMAKE_SYSTEM_PROCESSOR}-w64-mingw32-) - -# Specify the cross compiler -set(CMAKE_C_COMPILER ${MINGW_TOOL_PREFIX}clang) -set(CMAKE_CXX_COMPILER ${MINGW_TOOL_PREFIX}clang++) -set(CMAKE_RC_COMPILER ${MINGW_TOOL_PREFIX}windres) -set(CMAKE_C_COMPILER_AR ${MINGW_TOOL_PREFIX}ar) -set(CMAKE_CXX_COMPILER_AR ${MINGW_TOOL_PREFIX}ar) -set(CMAKE_C_COMPILER_RANLIB ${MINGW_TOOL_PREFIX}ranlib) -set(CMAKE_CXX_COMPILER_RANLIB ${MINGW_TOOL_PREFIX}ranlib) - -# Mingw tools -set(STRIP ${MINGW_TOOL_PREFIX}strip) -set(WINDRES ${MINGW_TOOL_PREFIX}windres) -set(ENV{PKG_CONFIG} ${MINGW_TOOL_PREFIX}pkg-config) - -# ccache wrapper -option(USE_CCACHE "Use ccache for compilation" OFF) -if(USE_CCACHE) - find_program(CCACHE ccache) - if(CCACHE) - message(STATUS "Using ccache found in PATH") - set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${CCACHE}) - set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ${CCACHE}) - else(CCACHE) - message(WARNING "USE_CCACHE enabled, but no ccache found") - endif(CCACHE) -endif(USE_CCACHE) - -# Search for programs in the build host directories -set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) - - -# Echo modified cmake vars to screen for debugging purposes -if(NOT DEFINED ENV{MINGW_DEBUG_INFO}) - message("") - message("Custom cmake vars: (blank = system default)") - message("-----------------------------------------") - message("* CMAKE_C_COMPILER : ${CMAKE_C_COMPILER}") - message("* CMAKE_CXX_COMPILER : ${CMAKE_CXX_COMPILER}") - message("* CMAKE_RC_COMPILER : ${CMAKE_RC_COMPILER}") - message("* WINDRES : ${WINDRES}") - message("* ENV{PKG_CONFIG} : $ENV{PKG_CONFIG}") - message("* STRIP : ${STRIP}") - message("* USE_CCACHE : ${USE_CCACHE}") - message("") - # So that the debug info only appears once - set(ENV{MINGW_DEBUG_INFO} SHOWN) -endif() diff --git a/CMakeModules/MinGWCross.cmake b/CMakeModules/MinGWCross.cmake deleted file mode 100644 index 61464f7dae..0000000000 --- a/CMakeModules/MinGWCross.cmake +++ /dev/null @@ -1,57 +0,0 @@ -# SPDX-FileCopyrightText: 2018 tech4me -# SPDX-License-Identifier: GPL-2.0-or-later - -set(MINGW_PREFIX /usr/x86_64-w64-mingw32/) -set(CMAKE_SYSTEM_NAME Windows) -set(CMAKE_SYSTEM_PROCESSOR x86_64) -# Actually a hack, w/o this will cause some strange errors -set(CMAKE_HOST_WIN32 TRUE) - - -set(CMAKE_FIND_ROOT_PATH ${MINGW_PREFIX}) -set(SDL2_PATH ${MINGW_PREFIX}) -set(MINGW_TOOL_PREFIX ${CMAKE_SYSTEM_PROCESSOR}-w64-mingw32-) - -# Specify the cross compiler -set(CMAKE_C_COMPILER ${MINGW_TOOL_PREFIX}gcc) -set(CMAKE_CXX_COMPILER ${MINGW_TOOL_PREFIX}g++) -set(CMAKE_RC_COMPILER ${MINGW_TOOL_PREFIX}windres) - -# Mingw tools -set(STRIP ${MINGW_TOOL_PREFIX}strip) -set(WINDRES ${MINGW_TOOL_PREFIX}windres) -set(ENV{PKG_CONFIG} ${MINGW_TOOL_PREFIX}pkg-config) - -# ccache wrapper -option(USE_CCACHE "Use ccache for compilation" OFF) -if(USE_CCACHE) - find_program(CCACHE ccache) - if(CCACHE) - message(STATUS "Using ccache found in PATH") - set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${CCACHE}) - set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ${CCACHE}) - else(CCACHE) - message(WARNING "USE_CCACHE enabled, but no ccache found") - endif(CCACHE) -endif(USE_CCACHE) - -# Search for programs in the build host directories -set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) - - -# Echo modified cmake vars to screen for debugging purposes -if(NOT DEFINED ENV{MINGW_DEBUG_INFO}) - message("") - message("Custom cmake vars: (blank = system default)") - message("-----------------------------------------") - message("* CMAKE_C_COMPILER : ${CMAKE_C_COMPILER}") - message("* CMAKE_CXX_COMPILER : ${CMAKE_CXX_COMPILER}") - message("* CMAKE_RC_COMPILER : ${CMAKE_RC_COMPILER}") - message("* WINDRES : ${WINDRES}") - message("* ENV{PKG_CONFIG} : $ENV{PKG_CONFIG}") - message("* STRIP : ${STRIP}") - message("* USE_CCACHE : ${USE_CCACHE}") - message("") - # So that the debug info only appears once - set(ENV{MINGW_DEBUG_INFO} SHOWN) -endif() diff --git a/CMakeModules/WindowsCopyFiles.cmake b/CMakeModules/WindowsCopyFiles.cmake index 08b598365d..a4afeb77bf 100644 --- a/CMakeModules/WindowsCopyFiles.cmake +++ b/CMakeModules/WindowsCopyFiles.cmake @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + # SPDX-FileCopyrightText: 2018 yuzu Emulator Project # SPDX-License-Identifier: GPL-2.0-or-later @@ -12,16 +15,25 @@ set(__windows_copy_files YES) # Any number of files to copy from SOURCE_DIR to DEST_DIR can be specified after DEST_DIR. # This copying happens post-build. -function(windows_copy_files TARGET SOURCE_DIR DEST_DIR) - # windows commandline expects the / to be \ so switch them - string(REPLACE "/" "\\\\" SOURCE_DIR ${SOURCE_DIR}) - string(REPLACE "/" "\\\\" DEST_DIR ${DEST_DIR}) +if (CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows") + function(windows_copy_files TARGET SOURCE_DIR DEST_DIR) + # windows commandline expects the / to be \ so switch them + string(REPLACE "/" "\\\\" SOURCE_DIR ${SOURCE_DIR}) + string(REPLACE "/" "\\\\" DEST_DIR ${DEST_DIR}) - # /NJH /NJS /NDL /NFL /NC /NS /NP - Silence any output - # cmake adds an extra check for command success which doesn't work too well with robocopy - # so trick it into thinking the command was successful with the || cmd /c "exit /b 0" - add_custom_command(TARGET ${TARGET} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E make_directory ${DEST_DIR} - COMMAND robocopy ${SOURCE_DIR} ${DEST_DIR} ${ARGN} /NJH /NJS /NDL /NFL /NC /NS /NP || cmd /c "exit /b 0" - ) -endfunction() + # /NJH /NJS /NDL /NFL /NC /NS /NP - Silence any output + # cmake adds an extra check for command success which doesn't work too well with robocopy + # so trick it into thinking the command was successful with the || cmd /c "exit /b 0" + add_custom_command(TARGET ${TARGET} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E make_directory ${DEST_DIR} + COMMAND robocopy ${SOURCE_DIR} ${DEST_DIR} ${ARGN} /NJH /NJS /NDL /NFL /NC /NS /NP || cmd /c "exit /b 0" + ) + endfunction() +else() + function(windows_copy_files TARGET SOURCE_DIR DEST_DIR) + add_custom_command(TARGET ${TARGET} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E make_directory ${DEST_DIR} + COMMAND cp -ra ${SOURCE_DIR}/. ${DEST_DIR} + ) + endfunction() +endif() diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1860f8cffc..f6851a2c65 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,5 @@ - +# Contributing -**The Contributor's Guide has moved to [the yuzu wiki](https://github.com/yuzu-emu/yuzu/wiki/Contributing).** +You want to contribute? Please consult [the development guide](./docs/Development.md). + +Don't forget to [get a git account](./docs/SIGNUP.md) - not a requirement per se but it's highly recommended. diff --git a/README.md b/README.md index 70f2c81296..44a2b4c28b 100644 --- a/README.md +++ b/README.md @@ -9,25 +9,25 @@


- Eden + Eden
Eden

-

Eden is an open-source Nintendo Switch emulator, forked from the Yuzu emulator — started by former Citron developer Camille LaVey and the Eden team. -It is written in C++ with portability in mind, and we actively maintain builds for Windows, Linux and Android. +

Eden is a free and opensource (FOSS) Switch 1 emulator, derived from Yuzu and Sudachi - started by developer Camille LaVey. +It's written in C++ with portability in mind, with builds for Windows, Linux, macOS, Android, FreeBSD and more.

- + Discord - - Revolt + + Stoat

@@ -48,25 +48,34 @@ A list of supported games will be available in future. Please be patient. Check out our [website](https://eden-emu.dev) for the latest news on exciting features, monthly progress reports, and more! +[![Packaging status](https://repology.org/badge/vertical-allrepos/eden-emulator.svg)](https://repology.org/project/eden-emulator/versions) + ## Development -Most of the development happens on our Git server. It is also where [our central repository](https://git.eden-emu.dev/eden-emu/eden) is hosted. For development discussions, please join us on [Discord](https://discord.gg/kXAmGCXBGD) or [Revolt](https://rvlt.gg/qKgFEAbH). -You can also follow us on [X (Twitter)](https://x.com/edenemuofficial) for updates and announcements. +Most of the development happens on our Git server. It is also where [our central repository](https://git.eden-emu.dev/eden-emu/eden) is hosted. For development discussions, please join us on [Discord](https://discord.gg/HstXbPch7X) or [Stoat](https://stt.gg/qKgFEAbH). +You can also follow us on [X (Twitter)](https://nitter.poast.org/edenemuofficial) for updates and announcements. -If you would like to contribute, we are open to new developers and pull requests. Please ensure that your work is of a high standard and properly documented. You can also contact any of the developers on Discord or Revolt to learn more about the current state of the emulator. +If you would like to contribute, we are open to new developers and pull requests. Please ensure that your work is of a high standard and properly documented. You can also contact any of the developers on Discord or Stoat to learn more about the current state of the emulator. + +See the [sign-up instructions](docs/SIGNUP.md) for information on registration. + +Alternatively, if you wish to add translations, go to the [Eden project on Transifex](https://app.transifex.com/edenemu/eden-emulator) and review [the translations README](./dist/languages). + +## Documentation + +We have a user manual! See our [User Handbook](./docs/user/README.md). ## Building -* **Windows**: [Windows Building Guide](./docs/build/Windows.md) -* **Linux**: [Linux Building Guide](./docs/build/Linux.md) -* **Android**: [Android Building Guide](./docs/build/Android.md) -* **Solaris**: [Solaris Building Guide](./docs/build/Solaris.md) -* **FreeBSD**: [FreeBSD Building Guide](./docs/build/FreeBSD.md) -* **macOS**: [macOS Building Guide](./docs/build/macOS.md) +See the [General Build Guide](docs/Build.md) + +For information on provided development tooling, see the [Tools directory](./tools) ## Download -You can download the latest releases from [here](https://github.com/eden-emulator/Releases/releases). +You can download the latest releases from [here](https://git.eden-emu.dev/eden-emu/eden/releases). + +Save us some bandwidth! We have [mirrors available](./docs/user/ThirdParty.md#mirrors) as well. ## Support @@ -79,7 +88,7 @@ Any donations received will go towards things such as: * Additional hardware (e.g. GPUs as needed to improve rendering support, other peripherals to add support for, etc.) * CI Infrastructure -If you would prefer to support us in a different way, please join our [Discord](https://discord.gg/edenemu) and talk to Camille or any of our other developers. +If you would prefer to support us in a different way, please join our [Discord](https://discord.gg/HstXbPch7X) and talk to Camille or any of our other developers. ## License diff --git a/cpmfile.json b/cpmfile.json new file mode 100644 index 0000000000..1bb29afae4 --- /dev/null +++ b/cpmfile.json @@ -0,0 +1,118 @@ +{ + "openssl": { + "ci": true, + "package": "OpenSSL", + "name": "openssl", + "repo": "crueter-ci/OpenSSL", + "version": "3.6.0-1cb0d36b39", + "min_version": "3" + }, + "boost": { + "package": "Boost", + "repo": "boostorg/boost", + "tag": "boost-%VERSION%", + "artifact": "%TAG%-cmake.tar.xz", + "hash": "6ae6e94664fe7f2fb01976b59b276ac5df8085c7503fa829d810fbfe495960cfec44fa2c36e2cb23480bc19c956ed199d4952b02639a00a6c07625d4e7130c2d", + "git_version": "1.90.0", + "version": "1.57", + "find_args": "CONFIG OPTIONAL_COMPONENTS headers context system fiber filesystem", + "patches": [ + "0001-clang-cl.patch" + ] + }, + "fmt": { + "repo": "fmtlib/fmt", + "tag": "%VERSION%", + "hash": "f0da82c545b01692e9fd30fdfb613dbb8dd9716983dcd0ff19ac2a8d36f74beb5540ef38072fdecc1e34191b3682a8542ecbf3a61ef287dbba0a2679d4e023f2", + "version": "8", + "git_version": "12.1.0" + }, + "lz4": { + "name": "lz4", + "repo": "lz4/lz4", + "sha": "ebb370ca83", + "hash": "35c21a5d9cfb5bbf314a5321d02b36819491d2ee3cf8007030ca09d13ca4dae672247b7aeab553e973093604fc48221cb03dc92197c6efe8fc3746891363fdab", + "source_subdir": "build/cmake" + }, + "nlohmann": { + "package": "nlohmann_json", + "repo": "nlohmann/json", + "tag": "v%VERSION%", + "hash": "6cc1e86261f8fac21cc17a33da3b6b3c3cd5c116755651642af3c9e99bb3538fd42c1bd50397a77c8fb6821bc62d90e6b91bcdde77a78f58f2416c62fc53b97d", + "version": "3.8", + "git_version": "3.12.0" + }, + "zlib": { + "package": "ZLIB", + "repo": "madler/zlib", + "tag": "v%VERSION%", + "hash": "16fea4df307a68cf0035858abe2fd550250618a97590e202037acd18a666f57afc10f8836cbbd472d54a0e76539d0e558cb26f059d53de52ff90634bbf4f47d4", + "version": "1.2", + "git_version": "1.3.2", + "options": [ + "ZLIB_BUILD_SHARED OFF", + "ZLIB_INSTALL OFF" + ] + }, + "zstd": { + "repo": "facebook/zstd", + "sha": "b8d6101fba", + "hash": "cc5ad4b119a9c2ea57f0b71eeff01113bb506e0d17000159c5409cb8236d22e38c52d5e9e97e7947a4bf1b2dfc44b6c503ab2d9aedbd59458435c6a2849cb029", + "version": "1.5", + "source_subdir": "build/cmake", + "find_args": "MODULE", + "options": [ + "ZSTD_BUILD_SHARED OFF" + ] + }, + "opus": { + "package": "Opus", + "repo": "xiph/opus", + "sha": "a3f0ec02b3", + "hash": "9506147b0de35befda8633ff272981cc2575c860874791bd455b752f797fd7dbd1079f0ba42ccdd7bb1fe6773fa5e84b3d75667c2883dd1fb2d0e4a5fa4f8387", + "version": "1.3", + "find_args": "MODULE", + "options": [ + "OPUS_PRESUME_NEON ON" + ], + "patches": [ + "0001-disable-clang-runtime-neon.patch", + "0002-no-install.patch" + ] + }, + "boost_headers": { + "repo": "boostorg/headers", + "sha": "95930ca8f5", + "hash": "8a07d7a6f0065587d3005a83481a794704ae22e773b9f336fbd89ed230aaa7b4c86c03edcbae30bba8b3e20839c3131eaa2dceac037ef811533ef4eadc53b15b", + "bundled": true + }, + "llvm-mingw": { + "repo": "eden-emu/llvm-mingw", + "git_host": "git.eden-emu.dev", + "tag": "%VERSION%", + "version": "20250828", + "artifact": "clang-rt-builtins.tar.zst", + "hash": "d902392caf94e84f223766e2cc51ca5fab6cae36ab8dc6ef9ef6a683ab1c483bfcfe291ef0bd38ab16a4ecc4078344fa8af72da2f225ab4c378dee23f6186181" + }, + "vulkan-validation-layers": { + "package": "VVL", + "repo": "KhronosGroup/Vulkan-ValidationLayers", + "tag": "vulkan-sdk-%VERSION%", + "git_version": "1.4.341.0", + "artifact": "android-binaries-%VERSION%.zip", + "hash": "8812ae84cbe49e6a3418ade9c458d3be6d74a3dffd319d4502007b564d580998056e8190414368ec11b27bc83993c7a0dad713c31bcc3d9553b51243efee3753" + }, + "quazip": { + "package": "QuaZip-Qt6", + "repo": "stachenov/quazip", + "sha": "2e95c9001b", + "hash": "609c240c7f029ac26a37d8fbab51bc16284e05e128b78b9b9c0e95d083538c36047a67d682759ac990e4adb0eeb90f04f1ea7fe2253bbda7e7e3bcce32e53dd8", + "version": "1.3", + "git_version": "1.5", + "options": [ + "QUAZIP_QT_MAJOR_VERSION 6", + "QUAZIP_INSTALL OFF", + "QUAZIP_ENABLE_QTEXTCODEC OFF" + ] + } +} diff --git a/dist/Assets.car b/dist/Assets.car new file mode 100644 index 0000000000..9ae9bca8a4 Binary files /dev/null and b/dist/Assets.car differ diff --git a/dist/compatibility_list/compatibility_list.json b/dist/compatibility_list/compatibility_list.json new file mode 100644 index 0000000000..b8d74e8945 --- /dev/null +++ b/dist/compatibility_list/compatibility_list.json @@ -0,0 +1,354 @@ +[ + { + "compatibility": 0, + "directory": "the-legend-of-zelda-breath-of-the-wild", + "releases": [ + {"id": "01007EF00011E000"} + ], + "title": "The Legend of Zelda: Breath of the Wild" + }, + { + "compatibility": 1, + "directory": "super-mario-odyssey", + "releases": [ + {"id": "0100000000010000"} + ], + "title": "Super Mario Odyssey" + }, + { + "compatibility": 0, + "directory": "animal-crossing-new-horizons", + "releases": [ + {"id": "01006F8002326000"} + ], + "title": "Animal Crossing: New Horizons" + }, + { + "compatibility": 1, + "directory": "pokemon-legends-z-a", + "releases": [ + {"id": "0100F43008C44000"} + ], + "title": "Pokémon Legends: Z-A" + }, + { + "compatibility": 1, + "directory": "the-legend-of-zelda-tears-of-the-kingdom", + "releases": [ + {"id": "0100F2C0115B6000"} + ], + "title": "The Legend of Zelda: Tears of the Kingdom" + }, + { + "compatibility": 0, + "directory": "super-mario-galaxy", + "releases": [ + {"id": "010099C022B96000"} + ], + "title": "Super Mario Galaxy" + }, + { + "compatibility": 3, + "directory": "star-wars-republic-commando", + "releases": [ + {"id": "0100FA10115F8000"} + ], + "title": "Star Wars: Republic Commando" + }, + { + "compatibility": 0, + "directory": "doki-doki-literature-club-plus", + "releases": [ + {"id": "010086901543E000"} + ], + "title": "Doki Doki Literature Club Plus" + }, + { + "compatibility": 1, + "directory": "pokemon-scarlet", + "releases": [ + {"id": "0100A3D008C5C000"} + ], + "title": "Pokémon Scarlet" + }, + { + "compatibility": 1, + "directory": "pokemon-violet", + "releases": [ + {"id": "01008F6008C5E000"} + ], + "title": "Pokémon Violet" + }, + { + "compatibility": 2, + "directory": "pokemon-legends-arceus", + "releases": [ + {"id": "01001E300D162000"} + ], + "title": "Pokémon Legends: Arceus" + }, + { + "compatibility": 0, + "directory": "splatoon-2", + "releases": [ + {"id": "01003BC0000A0000"} + ], + "title": "Splatoon 2" + }, + { + "compatibility": 1, + "directory": "super-smash-bros-ultimate", + "releases": [ + {"id": "01006A800016E000"} + ], + "title": "Super Smash Bros. Ultimate" + }, + { + "compatibility": 0, + "directory": "mario-kart-8-deluxe", + "releases": [ + {"id": "0100152000022000"} + ], + "title": "Mario Kart 8 Deluxe" + }, + { + "compatibility": 0, + "directory": "splatoon-3", + "releases": [ + {"id": "0100C2500FC20000"} + ], + "title": "Splatoon 3" + }, + { + "compatibility": 0, + "directory": "new-super-mario-bros-u-deluxe", + "releases": [ + {"id": "0100EA80032EA000"} + ], + "title": "New Super Mario Bros. U Deluxe" + }, + { + "compatibility": 0, + "directory": "hyrule-warriors-age-of-calamity", + "releases": [ + {"id": "01002B00111A2000"} + ], + "title": "Hyrule Warriors: Age of Calamity" + }, + { + "compatibility": 2, + "directory": "luigis-mansion-3", + "releases": [ + {"id": "0100DCA0064A6000"} + ], + "title": "Luigi's Mansion 3" + }, + { + "compatibility": 2, + "directory": "pokemon-brilliant-diamond", + "releases": [ + {"id": "0100000011D90000"} + ], + "title": "Pokémon Brilliant Diamond" + }, + { + "compatibility": 2, + "directory": "pokemon-shining-pearl", + "releases": [ + {"id": "010018E011D92000"} + ], + "title": "Pokémon Shining Pearl" + }, + { + "compatibility": 1, + "directory": "super-mario-3d-world-bowsers-fury", + "releases": [ + {"id": "010028600EBDA000"} + ], + "title": "Super Mario 3D World + Bowser's Fury" + }, + { + "compatibility": 0, + "directory": "the-legend-of-zelda-links-awakening", + "releases": [ + {"id": "01006BB00C6F0000"} + ], + "title": "The Legend of Zelda: Link's Awakening" + }, + { + "compatibility": 1, + "directory": "fire-emblem-three-houses", + "releases": [ + {"id": "010055D009F78000"} + ], + "title": "Fire Emblem: Three Houses" + }, + { + "compatibility": 2, + "directory": "metroid-dread", + "releases": [ + {"id": "010093801237C000"} + ], + "title": "Metroid Dread" + }, + { + "compatibility": 0, + "directory": "paper-mario-the-origami-king", + "releases": [ + {"id": "0100A3900C3E2000"} + ], + "title": "Paper Mario: The Origami King" + }, + { + "compatibility": 1, + "directory": "xenoblade-chronicles-definitive-edition", + "releases": [ + {"id": "0100FF500E34A000"} + ], + "title": "Xenoblade Chronicles: Definitive Edition" + }, + { + "compatibility": 2, + "directory": "xenoblade-chronicles-3", + "releases": [ + {"id": "010074F013262000"} + ], + "title": "Xenoblade Chronicles 3" + }, + { + "compatibility": 1, + "directory": "pikmin-3-deluxe", + "releases": [ + {"id": "0100F8600D4B0000"} + ], + "title": "Pikmin 3 Deluxe" + }, + { + "compatibility": 0, + "directory": "donkey-kong-country-tropical-freeze", + "releases": [ + {"id": "0100C1F0054B6000"} + ], + "title": "Donkey Kong Country: Tropical Freeze" + }, + { + "compatibility": 1, + "directory": "kirby-and-the-forgotten-land", + "releases": [ + {"id": "01004D300C5AE000"} + ], + "title": "Kirby and the Forgotten Land" + }, + { + "compatibility": 2, + "directory": "mario-party-superstars", + "releases": [ + {"id": "01006B400D8B2000"} + ], + "title": "Mario Party Superstars" + }, + { + "compatibility": 0, + "directory": "clubhouse-games-51-worldwide-classics", + "releases": [ + {"id": "0100F8600D4B0000"} + ], + "title": "Clubhouse Games: 51 Worldwide Classics" + }, + { + "compatibility": 1, + "directory": "ring-fit-adventure", + "releases": [ + {"id": "01006B300BAF8000"} + ], + "title": "Ring Fit Adventure" + }, + { + "compatibility": 2, + "directory": "arms", + "releases": [ + {"id": "01009B500007C000"} + ], + "title": "ARMS" + }, + { + "compatibility": 0, + "directory": "super-mario-maker-2", + "releases": [ + {"id": "01009B90006DC000"} + ], + "title": "Super Mario Maker 2" + }, + { + "compatibility": 0, + "directory": "pokemon-lets-go-pikachu", + "releases": [ + {"id": "010003F003A34000"} + ], + "title": "Pokémon: Let's Go, Pikachu!" + }, + { + "compatibility": 1, + "directory": "pokemon-lets-go-eevee", + "releases": [ + {"id": "0100187003A36000"} + ], + "title": "Pokémon: Let's Go, Eevee!" + }, + { + "compatibility": 2, + "directory": "pokemon-sword", + "releases": [ + {"id": "0100ABF008968000"} + ], + "title": "Pokémon Sword" + }, + { + "compatibility": 2, + "directory": "pokemon-shield", + "releases": [ + {"id": "01008DB008C2C000"} + ], + "title": "Pokémon Shield" + }, + { + "compatibility": 1, + "directory": "new-pokemon-snap", + "releases": [ + {"id": "0100F4300C182000"} + ], + "title": "New Pokémon Snap" + }, + { + "compatibility": 0, + "directory": "mario-golf-super-rush", + "releases": [ + {"id": "0100C9C00E25C000"} + ], + "title": "Mario Golf: Super Rush" + }, + { + "compatibility": 1, + "directory": "mario-tennis-aces", + "releases": [ + {"id": "0100BDE00862A000"} + ], + "title": "Mario Tennis Aces" + }, + { + "compatibility": 2, + "directory": "wario-ware-get-it-together", + "releases": [ + {"id": "0100563010F22000"} + ], + "title": "WarioWare: Get It Together!" + }, + { + "compatibility": 0, + "directory": "big-brain-academy-brain-vs-brain", + "releases": [ + {"id": "0100190010F24000"} + ], + "title": "Big Brain Academy: Brain vs. Brain" + } +] diff --git a/dist/compatibility_list/compatibility_list.qrc b/dist/compatibility_list/compatibility_list.qrc index 3b1359a8e9..a29b735981 100644 --- a/dist/compatibility_list/compatibility_list.qrc +++ b/dist/compatibility_list/compatibility_list.qrc @@ -1,8 +1,3 @@ - - compatibility_list.json diff --git a/dist/org.eden_emu.eden.desktop b/dist/dev.eden_emu.eden.desktop old mode 100644 new mode 100755 similarity index 80% rename from dist/org.eden_emu.eden.desktop rename to dist/dev.eden_emu.eden.desktop index d012ab6d07..98bdf81a46 --- a/dist/org.eden_emu.eden.desktop +++ b/dist/dev.eden_emu.eden.desktop @@ -9,8 +9,8 @@ Version=1.0 Type=Application Name=Eden GenericName=Switch Emulator -Comment=Nintendo Switch video game console emulator -Icon=org.eden_emu.eden +Comment=Multiplatform FOSS Switch 1 emulator written in C++, derived from Yuzu and Sudachi +Icon=dev.eden_emu.eden TryExec=eden Exec=eden %f Categories=Game;Emulator;Qt; diff --git a/dist/dev.eden_emu.eden.metainfo.xml b/dist/dev.eden_emu.eden.metainfo.xml new file mode 100644 index 0000000000..83398eed3b --- /dev/null +++ b/dist/dev.eden_emu.eden.metainfo.xml @@ -0,0 +1,57 @@ + + + + + + + + org.eden_emu.eden + CC0-1.0 + eden + Nintendo Switch emulator + +

Multiplatform FOSS Switch 1 emulator written in C++, derived from Yuzu and Sudachi

+
+ + Game + Emulator + + + switch + emulator + + https://eden-emu.dev/ + https://git.eden-emu.dev/eden-emu/eden/issues + https://eden-emu.dev/docs + https://eden-emu.dev/docs + https://eden-emu.dev/donations + https://explore.transifex.com/edenemu/eden-emulator + https://discord.gg/edenemu + https://git.eden-emu.dev + https://git.eden-emu.dev/eden-emu/eden + org.eden_emu.eden.desktop + + yuzu + yuzu-cmd + + + pointing + keyboard + gamepad + + + 8192 + + + 16384 + + GPL-3.0-or-later + Eden Emulator Team + +
diff --git a/dist/dev.eden_emu.eden.svg b/dist/dev.eden_emu.eden.svg new file mode 100644 index 0000000000..f88b52f625 --- /dev/null +++ b/dist/dev.eden_emu.eden.svg @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dist/org.eden_emu.eden.xml b/dist/dev.eden_emu.eden.xml similarity index 100% rename from dist/org.eden_emu.eden.xml rename to dist/dev.eden_emu.eden.xml diff --git a/dist/eden.bmp b/dist/eden.bmp new file mode 100644 index 0000000000..888138ccf7 Binary files /dev/null and b/dist/eden.bmp differ diff --git a/dist/eden.icns b/dist/eden.icns index 97aed94020..82529ba224 100644 Binary files a/dist/eden.icns and b/dist/eden.icns differ diff --git a/dist/eden.ico b/dist/eden.ico index 507cb23f6a..45120ef312 100644 Binary files a/dist/eden.ico and b/dist/eden.ico differ diff --git a/dist/eden.icon/Assets/dev.eden_emu.eden.svg b/dist/eden.icon/Assets/dev.eden_emu.eden.svg new file mode 100644 index 0000000000..f88b52f625 --- /dev/null +++ b/dist/eden.icon/Assets/dev.eden_emu.eden.svg @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dist/eden.icon/icon.json b/dist/eden.icon/icon.json new file mode 100644 index 0000000000..1f1e7da516 --- /dev/null +++ b/dist/eden.icon/icon.json @@ -0,0 +1,37 @@ +{ + "fill" : { + "automatic-gradient" : "srgb:0.00000,0.00000,0.00000,1.00000" + }, + "groups" : [ + { + "layers" : [ + { + "fill" : "none", + "image-name" : "dev.eden_emu.eden.svg", + "name" : "dev.eden_emu.eden", + "position" : { + "scale" : 1.8, + "translation-in-points" : [ + 0, + 0 + ] + } + } + ], + "shadow" : { + "kind" : "neutral", + "opacity" : 0.5 + }, + "translucency" : { + "enabled" : true, + "value" : 0.5 + } + } + ], + "supported-platforms" : { + "circles" : [ + "watchOS" + ], + "squares" : "shared" + } +} \ No newline at end of file diff --git a/dist/eden_named.ico b/dist/eden_named.ico deleted file mode 100644 index 2ac236b508..0000000000 Binary files a/dist/eden_named.ico and /dev/null differ diff --git a/dist/eden_named.svg b/dist/eden_named.svg deleted file mode 100644 index f0dcb5dcf6..0000000000 --- a/dist/eden_named.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/dist/eden_profile.jpg b/dist/eden_profile.jpg new file mode 100644 index 0000000000..5c458e5332 Binary files /dev/null and b/dist/eden_profile.jpg differ diff --git a/dist/icon_variations/2025.svg b/dist/icon_variations/2025.svg new file mode 100644 index 0000000000..96e7afc800 --- /dev/null +++ b/dist/icon_variations/2025.svg @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dist/icon_variations/README.md b/dist/icon_variations/README.md new file mode 100644 index 0000000000..4259f9ba39 --- /dev/null +++ b/dist/icon_variations/README.md @@ -0,0 +1,9 @@ +# Icon variations + +These icons are licensed under GPLv3. Please see the [script for generating icons](../../tools/README.md) and appropriatedly redirect for seasonal icons. + +- `base_named.svg` - Named variant (deprecated). +- `base_small.svg`: Variant used for tiny icons (16x16, 64x64, etc). +- `base.svg`: Variant without branding/naming. + +Try to keep the icons simple. And preferably automatically be able to be generated (to reduce maintanaince burden). Additionally keep the files small (use `svgo` and `optipng`) to not clutter the git. diff --git a/dist/icon_variations/aprilfools2026.svg b/dist/icon_variations/aprilfools2026.svg new file mode 100644 index 0000000000..7711945aa4 --- /dev/null +++ b/dist/icon_variations/aprilfools2026.svg @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/dist/icon_variations/aprilfools2026_bgcolor b/dist/icon_variations/aprilfools2026_bgcolor new file mode 100644 index 0000000000..fabebfa717 --- /dev/null +++ b/dist/icon_variations/aprilfools2026_bgcolor @@ -0,0 +1 @@ +#43fcfcff diff --git a/dist/icon_variations/base.svg b/dist/icon_variations/base.svg new file mode 100644 index 0000000000..f88b52f625 --- /dev/null +++ b/dist/icon_variations/base.svg @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dist/icon_variations/base_bgcolor b/dist/icon_variations/base_bgcolor new file mode 100644 index 0000000000..a8c30fd338 --- /dev/null +++ b/dist/icon_variations/base_bgcolor @@ -0,0 +1 @@ +#1F143C diff --git a/dist/icon_variations/halloween2025.svg b/dist/icon_variations/halloween2025.svg new file mode 100644 index 0000000000..da683396bc --- /dev/null +++ b/dist/icon_variations/halloween2025.svg @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/dist/icon_variations/newyear2025.svg b/dist/icon_variations/newyear2025.svg new file mode 100644 index 0000000000..5448c488e0 --- /dev/null +++ b/dist/icon_variations/newyear2025.svg @@ -0,0 +1,672 @@ + + + + + + New Year 2025 Logo + + + Madeline_Dev + mailto:madelvidel@gmail.com + + + 2025 + + 2025 Eden Emulator Project + https://git.eden-emu.dev + + + + diff --git a/dist/icon_variations/newyear2025_bgcolor b/dist/icon_variations/newyear2025_bgcolor new file mode 100644 index 0000000000..a8c30fd338 --- /dev/null +++ b/dist/icon_variations/newyear2025_bgcolor @@ -0,0 +1 @@ +#1F143C diff --git a/dist/org.eden_emu.eden.svg b/dist/icon_variations/original.svg similarity index 100% rename from dist/org.eden_emu.eden.svg rename to dist/icon_variations/original.svg diff --git a/dist/icon_variations/original_small.svg b/dist/icon_variations/original_small.svg new file mode 100644 index 0000000000..41db18afc1 --- /dev/null +++ b/dist/icon_variations/original_small.svg @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + diff --git a/dist/icon_variations/saintpatrick2026.svg b/dist/icon_variations/saintpatrick2026.svg new file mode 100644 index 0000000000..b125f4fb80 --- /dev/null +++ b/dist/icon_variations/saintpatrick2026.svg @@ -0,0 +1,196 @@ + + + + + + + + + Madeline_Dev + mailto:madelvidel@gmail.com + + + 2025 + + 2025 Eden Emulator Project + https://git.eden-emu.dev + + + + diff --git a/dist/icon_variations/saintpatrick2026_bgcolor b/dist/icon_variations/saintpatrick2026_bgcolor new file mode 100644 index 0000000000..5fc9cb0b37 --- /dev/null +++ b/dist/icon_variations/saintpatrick2026_bgcolor @@ -0,0 +1 @@ +#3cce5bff \ No newline at end of file diff --git a/dist/icon_variations/valentines2026.svg b/dist/icon_variations/valentines2026.svg new file mode 100644 index 0000000000..7a68ed3e67 --- /dev/null +++ b/dist/icon_variations/valentines2026.svg @@ -0,0 +1,211 @@ + + + + + + + + + Madeline_Dev + mailto:madelvidel@gmail.com + + + 2025 + + 2025 Eden Emulator Project + https://git.eden-emu.dev + + + + diff --git a/dist/icon_variations/valentines2026_bgcolor b/dist/icon_variations/valentines2026_bgcolor new file mode 100644 index 0000000000..d6377400f2 --- /dev/null +++ b/dist/icon_variations/valentines2026_bgcolor @@ -0,0 +1 @@ +#e48cc9ff diff --git a/dist/icons/controller/applet_dual_joycon.png b/dist/icons/controller/applet_dual_joycon.png index 32e0a04ae5..f1701453a9 100644 Binary files a/dist/icons/controller/applet_dual_joycon.png and b/dist/icons/controller/applet_dual_joycon.png differ diff --git a/dist/icons/controller/applet_dual_joycon_dark.png b/dist/icons/controller/applet_dual_joycon_dark.png index 6adc663561..da9367b5f3 100644 Binary files a/dist/icons/controller/applet_dual_joycon_dark.png and b/dist/icons/controller/applet_dual_joycon_dark.png differ diff --git a/dist/icons/controller/applet_dual_joycon_dark_disabled.png b/dist/icons/controller/applet_dual_joycon_dark_disabled.png index 208603ee78..a4d38b633d 100644 Binary files a/dist/icons/controller/applet_dual_joycon_dark_disabled.png and b/dist/icons/controller/applet_dual_joycon_dark_disabled.png differ diff --git a/dist/icons/controller/applet_dual_joycon_disabled.png b/dist/icons/controller/applet_dual_joycon_disabled.png index 43950618da..f3cb35bbdd 100644 Binary files a/dist/icons/controller/applet_dual_joycon_disabled.png and b/dist/icons/controller/applet_dual_joycon_disabled.png differ diff --git a/dist/icons/controller/applet_dual_joycon_midnight.png b/dist/icons/controller/applet_dual_joycon_midnight.png index c7edea8a35..e3f42bb99b 100644 Binary files a/dist/icons/controller/applet_dual_joycon_midnight.png and b/dist/icons/controller/applet_dual_joycon_midnight.png differ diff --git a/dist/icons/controller/applet_dual_joycon_midnight_disabled.png b/dist/icons/controller/applet_dual_joycon_midnight_disabled.png index ee1aafc858..ac5cf51179 100644 Binary files a/dist/icons/controller/applet_dual_joycon_midnight_disabled.png and b/dist/icons/controller/applet_dual_joycon_midnight_disabled.png differ diff --git a/dist/icons/controller/applet_handheld.png b/dist/icons/controller/applet_handheld.png index 7f8dd22275..c16361b913 100644 Binary files a/dist/icons/controller/applet_handheld.png and b/dist/icons/controller/applet_handheld.png differ diff --git a/dist/icons/controller/applet_handheld_dark.png b/dist/icons/controller/applet_handheld_dark.png index 41f6d7aea9..a994041fd5 100644 Binary files a/dist/icons/controller/applet_handheld_dark.png and b/dist/icons/controller/applet_handheld_dark.png differ diff --git a/dist/icons/controller/applet_handheld_dark_disabled.png b/dist/icons/controller/applet_handheld_dark_disabled.png index 5a136ddd1d..6a083a60e1 100644 Binary files a/dist/icons/controller/applet_handheld_dark_disabled.png and b/dist/icons/controller/applet_handheld_dark_disabled.png differ diff --git a/dist/icons/controller/applet_handheld_disabled.png b/dist/icons/controller/applet_handheld_disabled.png index 53f8ce7adc..1ebda184e9 100644 Binary files a/dist/icons/controller/applet_handheld_disabled.png and b/dist/icons/controller/applet_handheld_disabled.png differ diff --git a/dist/icons/controller/applet_handheld_midnight.png b/dist/icons/controller/applet_handheld_midnight.png index 7188b91545..5183f4bb69 100644 Binary files a/dist/icons/controller/applet_handheld_midnight.png and b/dist/icons/controller/applet_handheld_midnight.png differ diff --git a/dist/icons/controller/applet_handheld_midnight_disabled.png b/dist/icons/controller/applet_handheld_midnight_disabled.png index 6ccfc32536..4021d05a1d 100644 Binary files a/dist/icons/controller/applet_handheld_midnight_disabled.png and b/dist/icons/controller/applet_handheld_midnight_disabled.png differ diff --git a/dist/icons/controller/applet_pro_controller.png b/dist/icons/controller/applet_pro_controller.png index e322588558..d6b49c3be2 100644 Binary files a/dist/icons/controller/applet_pro_controller.png and b/dist/icons/controller/applet_pro_controller.png differ diff --git a/dist/icons/controller/applet_pro_controller_dark.png b/dist/icons/controller/applet_pro_controller_dark.png index c122b7b11e..5f411af617 100644 Binary files a/dist/icons/controller/applet_pro_controller_dark.png and b/dist/icons/controller/applet_pro_controller_dark.png differ diff --git a/dist/icons/controller/applet_pro_controller_midnight.png b/dist/icons/controller/applet_pro_controller_midnight.png index 622e57fa13..1749c68162 100644 Binary files a/dist/icons/controller/applet_pro_controller_midnight.png and b/dist/icons/controller/applet_pro_controller_midnight.png differ diff --git a/dist/icons/controller/applet_single_joycon_left.png b/dist/icons/controller/applet_single_joycon_left.png index 47c44d43a7..e0ab49e6e6 100644 Binary files a/dist/icons/controller/applet_single_joycon_left.png and b/dist/icons/controller/applet_single_joycon_left.png differ diff --git a/dist/icons/controller/applet_single_joycon_left_dark.png b/dist/icons/controller/applet_single_joycon_left_dark.png index 69530b69ce..0ca0661a63 100644 Binary files a/dist/icons/controller/applet_single_joycon_left_dark.png and b/dist/icons/controller/applet_single_joycon_left_dark.png differ diff --git a/dist/icons/controller/applet_single_joycon_left_dark_disabled.png b/dist/icons/controller/applet_single_joycon_left_dark_disabled.png index cfe4b1475c..d602f99f00 100644 Binary files a/dist/icons/controller/applet_single_joycon_left_dark_disabled.png and b/dist/icons/controller/applet_single_joycon_left_dark_disabled.png differ diff --git a/dist/icons/controller/applet_single_joycon_left_disabled.png b/dist/icons/controller/applet_single_joycon_left_disabled.png index c0102dc20c..8014f80093 100644 Binary files a/dist/icons/controller/applet_single_joycon_left_disabled.png and b/dist/icons/controller/applet_single_joycon_left_disabled.png differ diff --git a/dist/icons/controller/applet_single_joycon_left_midnight.png b/dist/icons/controller/applet_single_joycon_left_midnight.png index 56522bccb3..14fad854a6 100644 Binary files a/dist/icons/controller/applet_single_joycon_left_midnight.png and b/dist/icons/controller/applet_single_joycon_left_midnight.png differ diff --git a/dist/icons/controller/applet_single_joycon_left_midnight_disabled.png b/dist/icons/controller/applet_single_joycon_left_midnight_disabled.png index 62434c188d..29acc86547 100644 Binary files a/dist/icons/controller/applet_single_joycon_left_midnight_disabled.png and b/dist/icons/controller/applet_single_joycon_left_midnight_disabled.png differ diff --git a/dist/icons/controller/applet_single_joycon_right.png b/dist/icons/controller/applet_single_joycon_right.png index b0d4fba906..0270668d04 100644 Binary files a/dist/icons/controller/applet_single_joycon_right.png and b/dist/icons/controller/applet_single_joycon_right.png differ diff --git a/dist/icons/controller/applet_single_joycon_right_dark.png b/dist/icons/controller/applet_single_joycon_right_dark.png index af26cce4bb..5e49cad49e 100644 Binary files a/dist/icons/controller/applet_single_joycon_right_dark.png and b/dist/icons/controller/applet_single_joycon_right_dark.png differ diff --git a/dist/icons/controller/applet_single_joycon_right_dark_disabled.png b/dist/icons/controller/applet_single_joycon_right_dark_disabled.png index b33efab42a..93a7d6cc92 100644 Binary files a/dist/icons/controller/applet_single_joycon_right_dark_disabled.png and b/dist/icons/controller/applet_single_joycon_right_dark_disabled.png differ diff --git a/dist/icons/controller/applet_single_joycon_right_disabled.png b/dist/icons/controller/applet_single_joycon_right_disabled.png index 01ca383226..caee64b747 100644 Binary files a/dist/icons/controller/applet_single_joycon_right_disabled.png and b/dist/icons/controller/applet_single_joycon_right_disabled.png differ diff --git a/dist/icons/controller/applet_single_joycon_right_midnight.png b/dist/icons/controller/applet_single_joycon_right_midnight.png index 5bf70e21e1..dc3be54eef 100644 Binary files a/dist/icons/controller/applet_single_joycon_right_midnight.png and b/dist/icons/controller/applet_single_joycon_right_midnight.png differ diff --git a/dist/icons/controller/applet_single_joycon_right_midnight_disabled.png b/dist/icons/controller/applet_single_joycon_right_midnight_disabled.png index e6693b0270..9b539dcb69 100644 Binary files a/dist/icons/controller/applet_single_joycon_right_midnight_disabled.png and b/dist/icons/controller/applet_single_joycon_right_midnight_disabled.png differ diff --git a/dist/icons/overlay/arrow_left.png b/dist/icons/overlay/arrow_left.png index a5d4fecfe6..00eaf6f279 100644 Binary files a/dist/icons/overlay/arrow_left.png and b/dist/icons/overlay/arrow_left.png differ diff --git a/dist/icons/overlay/arrow_left_dark.png b/dist/icons/overlay/arrow_left_dark.png index f73672a591..c84e33ead4 100644 Binary files a/dist/icons/overlay/arrow_left_dark.png and b/dist/icons/overlay/arrow_left_dark.png differ diff --git a/dist/icons/overlay/arrow_right.png b/dist/icons/overlay/arrow_right.png index e47ee94bd8..44308c5918 100644 Binary files a/dist/icons/overlay/arrow_right.png and b/dist/icons/overlay/arrow_right.png differ diff --git a/dist/icons/overlay/arrow_right_dark.png b/dist/icons/overlay/arrow_right_dark.png index 91cf83d2c5..7a6e2a62e2 100644 Binary files a/dist/icons/overlay/arrow_right_dark.png and b/dist/icons/overlay/arrow_right_dark.png differ diff --git a/dist/icons/overlay/button_A_dark.png b/dist/icons/overlay/button_A_dark.png index d6b5514fab..20f4869f01 100644 Binary files a/dist/icons/overlay/button_A_dark.png and b/dist/icons/overlay/button_A_dark.png differ diff --git a/dist/icons/overlay/button_B_dark.png b/dist/icons/overlay/button_B_dark.png index 3acbeddcd6..981aadb1d4 100644 Binary files a/dist/icons/overlay/button_B_dark.png and b/dist/icons/overlay/button_B_dark.png differ diff --git a/dist/icons/overlay/button_L.png b/dist/icons/overlay/button_L.png index 77838369ee..5acf8a242e 100644 Binary files a/dist/icons/overlay/button_L.png and b/dist/icons/overlay/button_L.png differ diff --git a/dist/icons/overlay/button_L_dark.png b/dist/icons/overlay/button_L_dark.png index c96a5e8681..59a08da1bb 100644 Binary files a/dist/icons/overlay/button_L_dark.png and b/dist/icons/overlay/button_L_dark.png differ diff --git a/dist/icons/overlay/button_R.png b/dist/icons/overlay/button_R.png index 4e55539544..f4b97b23fb 100644 Binary files a/dist/icons/overlay/button_R.png and b/dist/icons/overlay/button_R.png differ diff --git a/dist/icons/overlay/button_R_dark.png b/dist/icons/overlay/button_R_dark.png index ed13199c4a..c66203ee9b 100644 Binary files a/dist/icons/overlay/button_R_dark.png and b/dist/icons/overlay/button_R_dark.png differ diff --git a/dist/icons/overlay/button_X_dark.png b/dist/icons/overlay/button_X_dark.png index b2c83d0c11..4c80f373bf 100644 Binary files a/dist/icons/overlay/button_X_dark.png and b/dist/icons/overlay/button_X_dark.png differ diff --git a/dist/icons/overlay/button_Y_dark.png b/dist/icons/overlay/button_Y_dark.png index 0f3e4df25f..661eb5b43d 100644 Binary files a/dist/icons/overlay/button_Y_dark.png and b/dist/icons/overlay/button_Y_dark.png differ diff --git a/dist/icons/overlay/button_minus.png b/dist/icons/overlay/button_minus.png index 7b315fe79d..10ec120e95 100644 Binary files a/dist/icons/overlay/button_minus.png and b/dist/icons/overlay/button_minus.png differ diff --git a/dist/icons/overlay/button_minus_dark.png b/dist/icons/overlay/button_minus_dark.png index 6dfcdc1b5f..7d33559b76 100644 Binary files a/dist/icons/overlay/button_minus_dark.png and b/dist/icons/overlay/button_minus_dark.png differ diff --git a/dist/icons/overlay/button_plus.png b/dist/icons/overlay/button_plus.png index 4d8090d7db..fa625fd178 100644 Binary files a/dist/icons/overlay/button_plus.png and b/dist/icons/overlay/button_plus.png differ diff --git a/dist/icons/overlay/button_plus_dark.png b/dist/icons/overlay/button_plus_dark.png index abe8b9c95c..3faf46e033 100644 Binary files a/dist/icons/overlay/button_plus_dark.png and b/dist/icons/overlay/button_plus_dark.png differ diff --git a/dist/icons/overlay/button_press_stick_dark.png b/dist/icons/overlay/button_press_stick_dark.png index 757d0ab292..4953738737 100644 Binary files a/dist/icons/overlay/button_press_stick_dark.png and b/dist/icons/overlay/button_press_stick_dark.png differ diff --git a/dist/icons/overlay/controller_single_joycon_left_a.png b/dist/icons/overlay/controller_single_joycon_left_a.png index e0f5c2ad4f..e4dac234a2 100644 Binary files a/dist/icons/overlay/controller_single_joycon_left_a.png and b/dist/icons/overlay/controller_single_joycon_left_a.png differ diff --git a/dist/icons/overlay/controller_single_joycon_left_a_dark.png b/dist/icons/overlay/controller_single_joycon_left_a_dark.png index 53e04781e6..fa36ee03f9 100644 Binary files a/dist/icons/overlay/controller_single_joycon_left_a_dark.png and b/dist/icons/overlay/controller_single_joycon_left_a_dark.png differ diff --git a/dist/icons/overlay/controller_single_joycon_left_b.png b/dist/icons/overlay/controller_single_joycon_left_b.png index 7429450a33..bafa4847d4 100644 Binary files a/dist/icons/overlay/controller_single_joycon_left_b.png and b/dist/icons/overlay/controller_single_joycon_left_b.png differ diff --git a/dist/icons/overlay/controller_single_joycon_left_b_dark.png b/dist/icons/overlay/controller_single_joycon_left_b_dark.png index 3bd97a8eb6..df06dc4ec6 100644 Binary files a/dist/icons/overlay/controller_single_joycon_left_b_dark.png and b/dist/icons/overlay/controller_single_joycon_left_b_dark.png differ diff --git a/dist/icons/overlay/controller_single_joycon_left_x.png b/dist/icons/overlay/controller_single_joycon_left_x.png index 4615172a33..27a5310424 100644 Binary files a/dist/icons/overlay/controller_single_joycon_left_x.png and b/dist/icons/overlay/controller_single_joycon_left_x.png differ diff --git a/dist/icons/overlay/controller_single_joycon_left_x_dark.png b/dist/icons/overlay/controller_single_joycon_left_x_dark.png index 119e3091af..4074a22f06 100644 Binary files a/dist/icons/overlay/controller_single_joycon_left_x_dark.png and b/dist/icons/overlay/controller_single_joycon_left_x_dark.png differ diff --git a/dist/icons/overlay/controller_single_joycon_left_y.png b/dist/icons/overlay/controller_single_joycon_left_y.png index 24421d8b91..6f53699c50 100644 Binary files a/dist/icons/overlay/controller_single_joycon_left_y.png and b/dist/icons/overlay/controller_single_joycon_left_y.png differ diff --git a/dist/icons/overlay/osk_button_B.png b/dist/icons/overlay/osk_button_B.png index 2664b5923b..b572d5d7b9 100644 Binary files a/dist/icons/overlay/osk_button_B.png and b/dist/icons/overlay/osk_button_B.png differ diff --git a/dist/icons/overlay/osk_button_B_dark.png b/dist/icons/overlay/osk_button_B_dark.png index 1bd3745719..c92c41887c 100644 Binary files a/dist/icons/overlay/osk_button_B_dark.png and b/dist/icons/overlay/osk_button_B_dark.png differ diff --git a/dist/icons/overlay/osk_button_B_dark_disabled.png b/dist/icons/overlay/osk_button_B_dark_disabled.png index 3b88e393cb..df992e6d94 100644 Binary files a/dist/icons/overlay/osk_button_B_dark_disabled.png and b/dist/icons/overlay/osk_button_B_dark_disabled.png differ diff --git a/dist/icons/overlay/osk_button_B_disabled.png b/dist/icons/overlay/osk_button_B_disabled.png index 0f35cd8f26..ead1fa0423 100644 Binary files a/dist/icons/overlay/osk_button_B_disabled.png and b/dist/icons/overlay/osk_button_B_disabled.png differ diff --git a/dist/icons/overlay/osk_button_Y.png b/dist/icons/overlay/osk_button_Y.png index 2cd1934818..0a10b01b64 100644 Binary files a/dist/icons/overlay/osk_button_Y.png and b/dist/icons/overlay/osk_button_Y.png differ diff --git a/dist/icons/overlay/osk_button_Y_dark.png b/dist/icons/overlay/osk_button_Y_dark.png index 0cce567d3f..71e578002a 100644 Binary files a/dist/icons/overlay/osk_button_Y_dark.png and b/dist/icons/overlay/osk_button_Y_dark.png differ diff --git a/dist/icons/overlay/osk_button_Y_dark_disabled.png b/dist/icons/overlay/osk_button_Y_dark_disabled.png index de619efa32..279cde5418 100644 Binary files a/dist/icons/overlay/osk_button_Y_dark_disabled.png and b/dist/icons/overlay/osk_button_Y_dark_disabled.png differ diff --git a/dist/icons/overlay/osk_button_Y_disabled.png b/dist/icons/overlay/osk_button_Y_disabled.png index 8d607bc121..6cb53245ad 100644 Binary files a/dist/icons/overlay/osk_button_Y_disabled.png and b/dist/icons/overlay/osk_button_Y_disabled.png differ diff --git a/dist/icons/overlay/osk_button_plus.png b/dist/icons/overlay/osk_button_plus.png index 9f97874192..b87bc71161 100644 Binary files a/dist/icons/overlay/osk_button_plus.png and b/dist/icons/overlay/osk_button_plus.png differ diff --git a/dist/icons/overlay/osk_button_plus_dark.png b/dist/icons/overlay/osk_button_plus_dark.png index dbe7b0c66c..7701651085 100644 Binary files a/dist/icons/overlay/osk_button_plus_dark.png and b/dist/icons/overlay/osk_button_plus_dark.png differ diff --git a/dist/icons/overlay/osk_button_plus_dark_disabled.png b/dist/icons/overlay/osk_button_plus_dark_disabled.png index a79af6501c..fe53a66e71 100644 Binary files a/dist/icons/overlay/osk_button_plus_dark_disabled.png and b/dist/icons/overlay/osk_button_plus_dark_disabled.png differ diff --git a/dist/icons/overlay/osk_button_plus_disabled.png b/dist/icons/overlay/osk_button_plus_disabled.png index 52ace8ecae..72ddf6e824 100644 Binary files a/dist/icons/overlay/osk_button_plus_disabled.png and b/dist/icons/overlay/osk_button_plus_disabled.png differ diff --git a/dist/icons/overlay/osk_button_shift_lock_off.png b/dist/icons/overlay/osk_button_shift_lock_off.png index b506f456fc..91259b2b86 100644 Binary files a/dist/icons/overlay/osk_button_shift_lock_off.png and b/dist/icons/overlay/osk_button_shift_lock_off.png differ diff --git a/dist/icons/overlay/osk_button_shift_lock_on.png b/dist/icons/overlay/osk_button_shift_lock_on.png index eaa4e98ed0..48003eb77a 100644 Binary files a/dist/icons/overlay/osk_button_shift_lock_on.png and b/dist/icons/overlay/osk_button_shift_lock_on.png differ diff --git a/dist/icons/overlay/osk_button_shift_on_dark.png b/dist/icons/overlay/osk_button_shift_on_dark.png index 58e0d9cf41..484d74e302 100644 Binary files a/dist/icons/overlay/osk_button_shift_on_dark.png and b/dist/icons/overlay/osk_button_shift_on_dark.png differ diff --git a/dist/languages/README.md b/dist/languages/README.md index c5ea1ada0e..12f26242ef 100644 --- a/dist/languages/README.md +++ b/dist/languages/README.md @@ -1,3 +1,7 @@ -This directory stores translation patches (TS files) for yuzu Qt frontend. This directory is linked with [yuzu project on transifex](https://www.transifex.com/yuzu-emulator/yuzu), so you can update the translation by executing `tx pull -t -a`. If you want to contribute to the translation, please go the transifex link and submit your translation there. This directory on the main repo will be synchronized with transifex periodically. +This directory stores translation patches (TS files) for yuzu Qt frontend. This directory is linked with the [Eden project on transifex](https://app.transifex.com/edenemu/eden-emulator), so you can update the translation by executing `tx pull -t -a`. If you want to contribute to the translation, please go the transifex link and submit your translation there. This directory on the main repo will be synchronized with transifex periodically. Do not directly open PRs on github to modify the translation. -Do not directly open PRs on github to modify the translation. +When creating/improving translations, please keep in mind: + +- You are responsible for providing accurate translations that do NOT contain illicit content or messages, +- Many of our developers do not speak the languages you may be translating, so will only be able to help with confusions about the source language, +- And bad-faith translations or attempts to insert illicit content may result in an immediate removal of access. diff --git a/dist/languages/ar.ts b/dist/languages/ar.ts index 72ac87ed55..72195d7f4a 100644 --- a/dist/languages/ar.ts +++ b/dist/languages/ar.ts @@ -1,25 +1,15 @@ - - - + AboutDialog - - About yuzu - حول يوزو - - - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - <html><head/><body><p><span style=" font-size:28pt;">يوزو</span></p></body></html> - - About eden - + About Eden + حول إيدن - <html><head/><body><p><span style=" font-size:28pt;">eden</span></p></body></html> - + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> + <html><head/><body><p><span style=" font-size:28pt;">إيدن</span></p></body></html> @@ -34,72 +24,59 @@ p, li { white-space: pre-wrap; } hr { height: 1px; border-width: 0; } li.unchecked::marker { content: "\2610"; } li.checked::marker { content: "\2612"; } -</style></head><body style=" font-family:'Adwaita Sans'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> - +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css"> +p, li { white-space: pre-wrap; } +hr { height: 1px; border-width: 0; } +li.unchecked::marker { content: "\2610"; } +li.checked::marker { content: "\2612"; } +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">إيدن هو محاكي تجريبي مفتوح المصدر لجهاز نينتندو سويتش مرخص بموجب GPLv3.0+ ويستند إلى محاكي يوزو الذي توقف تطويره في مارس 2024. <br /><br />لا ينبغي استخدام هذا البرنامج لتشغيل ألعاب لم تحصل عليها بطريقة قانونية.</span></p></body></html> - <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">This software should not be used to play games you have not legally obtained.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">يوزو هو محاكٍ تجربيٌّ مفتوح مصدره لجهاز ننتندو سوتش ورخصته هي «+GPLv3.0» </span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">لا تلعب في هذه البرمجية إن لم تشترِ الألعاب وفق القانون. </span></p></body></html> - - - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">موقعنا</span></a>|<a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">رماز المصدر</span></a>|<a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">المساهمون</span></a>|<a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">الرخصة</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">الموقع الإلكتروني</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">رمز المصدر</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">المساهمون</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">تويتر</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">الترخيص</span></a></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. eden is not affiliated with Nintendo in any way.</span></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">«ننتندو سوتش» علامة تجارية تملكها ننتندو، ويوزو ليس ذا صلة بننتندو.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. Eden is not affiliated with Nintendo in any way.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;نينتندو سويتش&quot; هي علامة تجارية مملوكة لشركة نينتندو. لا ترتبط إيدن بشركة نينتندو بأي شكل من الأشكال.</span></p></body></html> CalibrationConfigurationDialog - + Communicating with the server... - يتواصل مع الخادوم + جارٍ الاتصال بالخادم... - + Cancel إلغاء - + Touch the top left corner <br>of your touchpad. - المس الركن الأعلى الأيسر <br>من لوح اللمس + المس الزاوية العلوية اليسرى<br> من لوحة اللمس. - + Now touch the bottom right corner <br>of your touchpad. - والآن المس الركن الأسفل يمينًا <br> من لوح اللمس. + الآن المس الزاوية اليمنى السفلية<br> من لوحة اللمس. - + Configuration completed! - اكتمل الضبط + تم اكتمال الإعداد! - + OK - نعم + موافق @@ -120,78 +97,78 @@ p, li { white-space: pre-wrap; } إرسال رسالة - + Members الأعضاء - + %1 has joined قد انضم %1 - + %1 has left غادر %1 - + %1 has been kicked - طُرِد %1 + تم طرده %1 - + %1 has been banned - حُظِر %1 + تم حظره %1 - + %1 has been unbanned - تم إلغاء حظر %1 + تم إلغاء الحظر عنه %1 - + View Profile عرض ملف المستخدم - - + + Block Player - احجب اللاعب + حظر اللاعب - + When you block a player, you will no longer receive chat messages from them.<br><br>Are you sure you would like to block %1? - لن يتمكَّن من تحجب من مراسلتك، <br><br>فهل تريد حجب %1؟ + عند حظر لاعب، لن تتلقى رسائل الدردشة منه بعد الآن. <br><br>هل أنت متأكد أنك تريد حظر %1؟ + + + + Kick + طرد - Kick - اطرد + Ban + حظر - - Ban - احظر + + Kick Player + طرد اللاعب - Kick Player - اطرد اللاعب - - - Are you sure you would like to <b>kick</b> %1? هل أنت متأكد من رغبتك في <b>طرد</b> %1؟ - + Ban Player - احظر اللاعب + حظر اللاعب - + Are you sure you would like to <b>kick and ban</b> %1? This would ban both their forum username and their IP address. @@ -215,7 +192,7 @@ This would ban both their forum username and their IP address. Moderation... - الإشراف + الإشراف... @@ -226,17 +203,17 @@ This would ban both their forum username and their IP address. ClientRoomWindow - + Connected متصل - + Disconnected غير متصل - + %1 - %2 (%3/%4 members) - connected %1 - %2 (%3\%4 من الأعضاء) - متصلون @@ -259,14 +236,12 @@ This would ban both their forum username and their IP address. Report Game Compatibility أبلغ عن توافق اللعبة - - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of yuzu you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected yuzu account</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">إن أرسلت تقريرًا إلى </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">قامة توافق يوزو</span></a><span style=" font-size:10pt;"> فسوف تُجمَع المعلومات التالية وتُعرض في الصفحة: </span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">معلومات العتاد (أي المعالج ومعالج الرسومات ونظام التشغيل)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">وأي إصدار يوزو أنت مشغِّله</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">، وحساب يوزو المتصل</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">eden Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of eden you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected eden account</li></ul></body></html> - + <html><head/><body><p><span style=" font-size:10pt;">إذا اخترت تقديم حالة اختبار إلى </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">قائمة التوافق مع إيدن + سيتم جمع المعلومات التالية وعرضها على الموقع:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">معلومات الأجهزة (وحدة المعالجة المركزية / وحدة معالجة الرسومات / نظام التشغيل) +</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">أي إصدار من إيدن الذي تقوم بتشغيله</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">حساب إيدن المتصل</li></ul></body></html> @@ -276,22 +251,22 @@ This would ban both their forum username and their IP address. Yes The game starts to output video or audio - تشتغل وأرى رسمًا وأسمع أصوتًا + نعم تبدأ اللعبة في إخراج الفيديو أو الصوت No The game doesn't get past the "Launching..." screen - لا، اللعبة لا تتجاوز شاشة الإطلاق + لا اللعبة لا تتجاوز شاشة ” جارٍ التشغيل ... “ Yes The game gets past the intro/menu and into gameplay - تشتغل، وتصل شاشة البداية وحتى بداية اللعب + نعم، اللعبة تتجاوز المقدمة/القائمة وتبدأ اللعب. No The game crashes or freezes while loading or using the menu - لا تشتغل، فاللعبة تنهار أو تُعلِّق ريثما تحمِّل أو أثناء استخدام القائمة + لا، تتعطل اللعبة أو تتجمد أثناء التحميل أو أثناء استخدام القائمة @@ -331,17 +306,17 @@ This would ban both their forum username and their IP address. Major The game has major graphical errors - توجد أخطاء كبيرة توجد أخطاء رسومية كبيرة في اللعبة + اللعبة تحتوي على أخطاء رسومية كبيرة Minor The game has minor graphical errors - توجد أخطاء صغيرة توجد أخطاء رسومية صغيرة في اللعبة + اللعبة تحتوي على أخطاء رسومية بسيطة None Everything is rendered as it looks on the Nintendo Switch - لا يتم رسم كل شيء كما يرسم على جهاز "نينتيندو سويتش" + لا شيء، يتم عرض كل شيء كما يبدو على نينتندو سويتش @@ -351,17 +326,17 @@ This would ban both their forum username and their IP address. Major The game has major audio errors - توجد أخطاء كبيرة توجد أخطاء صوتية كبيرة في اللعبة + اللعبة تحتوي على أخطاء صوتية كبيرة Minor The game has minor audio errors - توجد أخطاء صغيرة توجد أخطاء صوتية صغيرة في اللعبة + اللعبة تحتوي على أخطاء صوتية بسيطة None Audio is played perfectly - لاشيء شغل الصوت بشكل مثالي + يتم تشغيل الصوت بدون مشاكل @@ -374,22 +349,22 @@ This would ban both their forum username and their IP address. شكرا على مساهمتك - + Submitting - جار إرسال المساهمة + يتم الإرسال - + Communication error - خطأ في الإتصال + خطأ في الاتصال - + An error occurred while sending the Testcase حدث خطأ عند إرسال حالة الاختبار - + Next التالي @@ -397,1539 +372,1931 @@ This would ban both their forum username and their IP address. ConfigurationShared - + % % - + Amiibo editor محرر أميبو - + Controller configuration إعدادات ذراع التحكم - + Data erase محو البيانات - + Error خطأ - + Net connect - + اتصال الشبكة - + Player select اختيار اللاعب - + Software keyboard لوحة المفاتيح البرمجية - + Mii Edit - + Mii تعديل الـ - + Online web - شبكة الإنترنت + الويب متصل - + Shop - + متجر - + Photo viewer عارض الصور - + Offline web الويب غير متصل - + Login share - + مشاركة تسجيل الدخول - + Wifi web auth - + مصادقة الويب واي فاي - + My page صفحتي - + + Enable Overlay Applet + تمكين الطبقة للتطبيق الصغير + + + + Enables Horizon's built-in overlay applet. Press and hold the home button for 1 second to show it. + تمكين التطبيق الصغير المدمج في Horizon. اضغط مع الاستمرار على زر الشاشة الرئيسية لمدة 1 ثانية لإظهاره. + + + Output Engine: محرك الإخراج: - + Output Device: جهاز الإخراج: - + Input Device: جهاز الإدخال: - + Mute audio كتم الصوت - + Volume: الصوت: - + Mute audio when in background كتم الصوت عندما تكون في الخلفية - + Multicore CPU Emulation - + محاكاة وحدة المعالجة المركزية متعددة النواة - - This option increases CPU emulation thread use from 1 to the Switch’s maximum of 4. -This is mainly a debug option and shouldn’t be disabled. - + + This option increases CPU emulation thread use from 1 to the maximum of 4. +This is mainly a debug option and shouldn't be disabled. + يزيد هذا الخيار من استخدام خيط محاكاة وحدة المعالجة المركزية من 1 إلى الحد الأقصى وهو 4. +هذا الخيار مخصص بشكل أساسي لتصحيح الأخطاء، ولا ينبغي تعطيله. - + Memory Layout تخطيط الذاكرة - - Increases the amount of emulated RAM from the stock 4GB of the retail Switch to the developer kit's 8/6GB. -It’s doesn’t improve stability or performance and is intended to let big texture mods fit in emulated RAM. -Enabling it will increase memory use. It is not recommended to enable unless a specific game with a texture mod needs it. - + + Increases the amount of emulated RAM. +Doesn't affect performance/stability but may allow HD texture mods to load. + يزيد من حجم ذاكرة الوصول العشوائي المُحاكاة. +لا يؤثر على الأداء أو الاستقرار، ولكنه قد يسمح بتحميل تعديلات نسيج عالية الدقة. - + Limit Speed Percent الحد من السرعة في المئة - - Controls the game's maximum rendering speed, but it’s up to each game if it runs faster or not. + + Controls the game's maximum rendering speed, but it's up to each game if it runs faster or not. 200% for a 30 FPS game is 60 FPS, and for a 60 FPS game it will be 120 FPS. Disabling it means unlocking the framerate to the maximum your PC can reach. - + يتحكم هذا الخيار في أقصى سرعة عرض للعبة، ولكن لكل لعبة تحديد ما إذا كانت ستعمل أسرع أم لا. +200% للعبة بمعدل 30 إطارًا في الثانية تعادل 60 إطارًا في الثانية، ولللعبة بمعدل 60 إطارًا في الثانية تعادل 120 إطارًا في الثانية. +تعطيله يعني رفع معدل الإطارات إلى أقصى حد يمكن لجهاز الكمبيوتر الوصول إليه. - + + Turbo Speed + سرعة تيربو + + + + When the Turbo Speed hotkey is pressed, the speed will be limited to this percentage. + عند الضغط على مفتاح الاختصار لسرعة التوربو، سيتم تحديد السرعة بهذه النسبة المئوية. + + + + Slow Speed + سرعة بطيئة + + + + When the Slow Speed hotkey is pressed, the speed will be limited to this percentage. + عند الضغط على مفتاح الاختصار للسرعة البطيئة، سيتم تحديد السرعة بهذه النسبة المئوية. + + + Synchronize Core Speed - + مزامنة سرعة النواة - - Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). -Compatibility varies by game; many (especially older ones) may not respond well. + + Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). Can help reduce stuttering at lower framerates. - + يُزامن سرعة نواة المعالج مع أقصى سرعة عرض للعبة لزيادة معدل الإطارات في الثانية دون التأثير على سرعة اللعبة (الرسوم المتحركة، والفيزياء، إلخ). +يساعد في تقليل التلعثم عند معدلات الإطارات المنخفضة. - + Accuracy: - الصحة: + الدقة: - - This setting controls the accuracy of the emulated CPU. -Don't change this unless you know what you are doing. - + + Change the accuracy of the emulated CPU (for debugging only). + تغيير دقة وحدة المعالجة المركزية المحاكية (للتصحيح فقط). - - + + Backend: - :الخلفية + الخلفية: - - Fast CPU Time - + + CPU Overclock + رفع تردد المعالج - + Overclocks the emulated CPU to remove some FPS limiters. Weaker CPUs may see reduced performance, and certain games may behave improperly. Use Boost (1700MHz) to run at the Switch's highest native clock, or Fast (2000MHz) to run at 2x clock. - + يزيد من سرعة وحدة المعالجة المركزية المحاكية لإزالة بعض محددات الإطارات في الثانية. قد تشهد وحدات المعالجة المركزية الأضعف انخفاضًا في الأداء، وقد تعمل بعض الألعاب بشكل غير صحيح. +استخدم المعزز (1700 ميجاهرتز) للتشغيل بأعلى سرعة ساعة أصلية لجهاز سويتش، أو السريع (2000 ميجاهرتز) للتشغيل بسرعة ساعة مضاعفة. - + + Custom CPU Ticks + علامات وحدة المعالجة المركزية المخصصة + + + + Set a custom value of CPU ticks. Higher values can increase performance, but may cause deadlocks. A range of 77-21000 is recommended. + تعيين قيمة مخصصة لدقات وحدة المعالجة المركزية. القيم الأعلى يمكن أن تزيد الأداء، ولكنها قد تسبب حالات توقف تام. يوصى باستخدام نطاق 77-21000. + + + + Enable Host MMU Emulation (fastmem) + (fastmem) المضيف MMU تمكين محاكاة + + + + This optimization speeds up memory accesses by the guest program. +Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU. +Disabling this forces all memory accesses to use Software MMU Emulation. + يُسرّع هذا التحسين وصول برنامج الضيف إلى الذاكرة. يؤدي تفعيله إلى قراءة/كتابة ذاكرة الضيف مباشرةً في الذاكرة، واستخدام وحدة ذاكرة الجهاز المضيف MMU. أما تعطيله، فيُجبر جميع عمليات الوصول إلى الذاكرة على استخدام محاكاة وحدة ذاكرة الجهاز البرمجية MMU. + + + Unfuse FMA (improve performance on CPUs without FMA) - + إلغاء استخدام FMA (تحسين الأداء على وحدات المعالجة المركزية بدون FMA) - + This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support. - + أصلاً FMA يعمل هذا الخيار على تحسين السرعة عن طريق تقليل دقة تعليمات الضرب والإضافة المدمجة على وحدات المعالجة المركزية التي لا تدعم - + Faster FRSQRTE and FRECPE - أسرع تقريبات جذور تربيعية متقابلة ذو نقطة عائمة وتقريبات أرقام متقابلة ذو نقطة عائمة + FRSQRTE و FRECPE أسرع - + This option improves the speed of some approximate floating-point functions by using less accurate native approximations. - + يعمل هذا الخيار على تحسين سرعة بعض وظائف النقاط العائمة التقريبية باستخدام تقريبات أصلية أقل دقة. - + Faster ASIMD instructions (32 bits only) - + أسرع (32 بت فقط) ASIMD تعليمات - + This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes. - + يعمل هذا الخيار على تحسين سرعة وظائف النقطة العائمة ASIMD ذات 32 بت من خلال التشغيل باستخدام أوضاع تقريب غير صحيحة. - + Inaccurate NaN handling - + NaN معالجة غير دقيقة لـ - + This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions. - + NaN يعمل هذا الخيار على تحسين السرعة عن طريق إزالة فحص. +يرجى ملاحظة أن هذا يقلل أيضًا من دقة بعض تعليمات النقاط العائمة. - + Disable address space checks تعطيل عمليات التحقق من مساحة العنوان - - This option improves speed by eliminating a safety check before every memory read/write in guest. -Disabling it may allow a game to read/write the emulator's memory. - + + This option improves speed by eliminating a safety check before every memory operation. +Disabling it may allow arbitrary code execution. + يعمل هذا الخيار على تحسين السرعة من خلال إلغاء فحص الأمان قبل كل عملية ذاكرة. +قد يؤدي تعطيله إلى السماح بتنفيذ تعليمات برمجية عشوائية. - + Ignore global monitor - + تجاهل الشاشة العالمية - + 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. - + يُحسّن هذا الخيار السرعة بالاعتماد فقط على دلالات cmpxchg لضمان سلامة تعليمات الوصول الحصري. يُرجى ملاحظة أن هذا قد يؤدي إلى توقفات وحالات تسابق أخرى. - + API: واجهة برمجة التطبيقات: - - Switches between the available graphics APIs. -Vulkan is recommended in most cases. - + + Changes the output graphics API. +Vulkan is recommended. + يُغيّر واجهة برمجة تطبيقات الرسومات الناتجة. +Vulkan يُنصح باستخدام - + Device: جهاز: - - This setting selects the GPU to use with the Vulkan backend. - + + This setting selects the GPU to use (Vulkan only). + (Vulkan فقط) يحدد هذا الإعداد وحدة معالجة الرسومات التي سيتم استخدامها - - Shader Backend: - - - - - The shader backend to use for the OpenGL renderer. -GLSL is the fastest in performance and the best in rendering accuracy. -GLASM is a deprecated NVIDIA-only backend that offers much better shader building performance at the cost of FPS and rendering accuracy. -SPIR-V compiles the fastest, but yields poor results on most GPU drivers. - - - - + Resolution: - :الدقة + الدقة: - - Forces the game to render at a different resolution. -Higher resolutions require much more VRAM and bandwidth. -Options lower than 1X can cause rendering issues. - + + Forces to render at a different resolution. +Higher resolutions require more VRAM and bandwidth. +Options lower than 1X can cause artifacts. + يُجبر على العرض بدقة مختلفة. +تتطلب الدقة العالية ذاكرة VRAM ونطاق ترددي أكبر. +قد تؤدي الخيارات الأقل من 1X إلى حدوث تشوهات. - + Window Adapting Filter: - + مرشح تكييف النافذة: - + FSR Sharpness: - + FSR حدة: - - Determines how sharpened the image will look while using FSR’s dynamic contrast. - + + Determines how sharpened the image will look using FSR's dynamic contrast. + FSR يقوم بتحديد مدى وضوح الصورة باستخدام التباين الديناميكي لـ - + Anti-Aliasing Method: - + طريقة مضاد التعرج: - + The anti-aliasing method to use. SMAA offers the best quality. -FXAA has a lower performance impact and can produce a better and more stable picture under very low resolutions. - +FXAA can produce a more stable picture in lower resolutions. + طريقة تنعيم الحواف المُستخدمة. +يُقدم SMAA أفضل جودة. +يُمكن لـ FXAA إنتاج صورة أكثر ثباتًا بدقة أقل. - + Fullscreen Mode: وضع ملء الشاشة: - + The method used to render the window in fullscreen. Borderless offers the best compatibility with the on-screen keyboard that some games request for input. Exclusive fullscreen may offer better performance and better Freesync/Gsync support. - + الطريقة المستخدمة لعرض النافذة في وضع ملء الشاشة. +يوفر وضع "بلا حدود" أفضل توافق مع لوحة المفاتيح التي تظهر على الشاشة والتي تتطلبها بعض الألعاب للإدخال. +قد يوفر وضع ملء الشاشة الحصري أداءً أفضل ودعمًا أفضل لتقنيتي Freesync/Gsync. - + Aspect Ratio: - تناسب الابعاد: + نسبة العرض إلى الارتفاع: - - Stretches the game to fit the specified aspect ratio. -Switch games only support 16:9, so custom game mods are required to get other ratios. + + Stretches the renderer to fit the specified aspect ratio. +Most games only support 16:9, so modifications are required to get other ratios. Also controls the aspect ratio of captured screenshots. - + يُمدد برنامج العرض ليناسب نسبة العرض إلى الارتفاع المحددة. +تدعم معظم الألعاب نسبة العرض إلى الارتفاع 16:9 فقط، لذا يلزم إجراء تعديلات للحصول على نسب عرض إلى ارتفاع مختلفة. +كما يتحكم في نسبة العرض إلى الارتفاع للقطات الشاشة الملتقطة. - - Use disk pipeline cache - + + Use persistent pipeline cache + استخدام ذاكرة التخزين المؤقتة الدائمة للأنابيب - + Allows saving shaders to storage for faster loading on following game boots. Disabling it is only intended for debugging. - + يسمح بحفظ التظليلات في وحدة التخزين لتحميلها بشكل أسرع عند تشغيل اللعبة في المرات التالية. +لا يُقصد من تعطيله سوى تصحيح الأخطاء. - - Optimize SPIRV output shader - + + Optimize SPIRV output + SPIRV تحسين مخرجات - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. This feature is experimental. - + التي تم إنشاؤها SPIRV يقوم بتشغيل عملية تحسين إضافية على تظليلات +سيزيد الوقت اللازم لتجميع التظليل. +قد يحسن الأداء بشكل طفيف. +هذه الميزة تجريبية. - - Use asynchronous GPU emulation - - - - - Uses an extra CPU thread for rendering. -This option should always remain enabled. - - - - + NVDEC emulation: - + NVDEC محاكاة: - + Specifies how videos should be decoded. It can either use the CPU or the GPU for decoding, or perform no decoding at all (black screen on videos). In most cases, GPU decoding provides the best performance. - + يُحدد كيفية فك تشفير الفيديوهات.يمكن استخدام وحدة المعالجة المركزية CPU أو وحدة معالجة الرسومات GPU لفك التشفير، أو عدم فك التشفير إطلاقًا (شاشة سوداء على الفيديوهات).في معظم الحالات، يُوفر فك تشفير وحدة معالجة الرسومات GPU أفضل أداء. - + ASTC Decoding Method: - + ASTC طريقة فك تشفير: - + This option controls how ASTC textures should be decoded. -CPU: Use the CPU for decoding, slowest but safest method. -GPU: Use the GPU's compute shaders to decode ASTC textures, recommended for most games and users. -CPU Asynchronously: Use the CPU to decode ASTC textures as they arrive. Completely eliminates ASTC decoding -stuttering at the cost of rendering issues while the texture is being decoded. - +CPU: Use the CPU for decoding. +GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). +CPU Asynchronously: Use the CPU to decode ASTC textures on demand. EliminatesASTC decoding +stuttering but may present artifacts. + يتحكم هذا الخيار في كيفية فك تشفير قوام ASTC. +وحدة المعالجة المركزية: استخدمها لفك التشفير. +وحدة معالجة الرسومات: استخدم وحدات تظليل الحوسبة الخاصة بوحدة معالجة الرسومات لفك تشفير قوام ASTC (موصى به). +وحدة المعالجة المركزية بشكل غير متزامن: استخدمها لفك تشفير قوام ASTC عند الطلب. يزيل هذا الخيار تقطع فك تشفير ASTC، ولكنه قد يُظهر بعض العيوب. - + ASTC Recompression Method: - + ASTC طريقة إعادة ضغط: - - Almost all desktop and laptop dedicated GPUs lack support for ASTC textures, forcing the emulator to decompress to an intermediate format any card supports, RGBA8. -This option recompresses RGBA8 to either the BC1 or BC3 format, saving VRAM but negatively affecting image quality. - + + Most GPUs lack support for ASTC textures and must decompress to anintermediate format: RGBA8. +BC1/BC3: The intermediate format will be recompressed to BC1 or BC3 format, + saving VRAM but degrading image quality. + تفتقر معظم وحدات معالجة الرسومات إلى دعم قوام ASTC، ويجب فك ضغطها إلى صيغة وسيطة: RGBA8. +BC1/BC3: سيتم إعادة ضغط الصيغة الوسيطة إلى صيغة BC1 أو BC3، مما يوفر مساحة على ذاكرة الوصول العشوائي للفيديو VRAM ولكنه يُضعف جودة الصورة. - + + Frame Pacing Mode (Vulkan only) + (Vulkan فقط) وضع توقيت الإطارات + + + + Controls how the emulator manages frame pacing to reduce stuttering and make the frame rate smoother and more consistent. + يتحكم في كيفية إدارة المحاكي لسرعة الإطارات لتقليل التقطع وجعل معدل الإطارات أكثر سلاسة واتساقًا. + + + VRAM Usage Mode: - + VRAM وضع استهلاك: - - Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. Has no effect on integrated graphics. Aggressive mode may severely impact the performance of other applications such as recording software. - + + Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. +Aggressive mode may impact performance of other applications such as recording software. + يُحدد ما إذا كان ينبغي على المُحاكي تفضيل توفير الذاكرة أو الاستفادة القصوى من ذاكرة الفيديو المُتاحة لتحسين الأداء. +قد يؤثر الوضع المُكثّف على أداء تطبيقات أخرى، مثل برامج التسجيل. - + + Skip CPU Inner Invalidation + تخطي إبطال وحدة المعالجة المركزية الداخلية + + + + Skips certain cache invalidations during memory updates, reducing CPU usage and improving latency. This may cause soft-crashes. + يتخطى بعض عمليات إبطال ذاكرة التخزين المؤقتة أثناء تحديثات الذاكرة، مما يقلل من استخدام وحدة المعالجة المركزية ويحسّن زمن الوصول. قد يؤدي هذا إلى أعطال مؤقتة. + + + VSync Mode: VSync وضع: - + FIFO (VSync) does not drop frames or exhibit tearing but is limited by the screen refresh rate. -FIFO Relaxed is similar to FIFO but allows tearing as it recovers from a slow down. +FIFO Relaxed 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. - +Immediate (no synchronization) presents whatever is available and can exhibit tearing. + لا يُسقط FIFO (المزامنة الرأسية) الإطارات ولا يُظهر تمزقًا، ولكنه مُقيد بمعدل تحديث الشاشة. +يسمح FIFO المُريح بالتمزق أثناء التعافي من التباطؤ. +يُمكن أن يكون زمن وصول صندوق البريد أقل من FIFO، ولا يُسقط الإطارات، ولكنه قد يُسقط الإطارات. +يُظهر الوضع الفوري (بدون مزامنة) كل ما هو متاح، وقد يُظهر تمزقًا. - + + Sync Memory Operations + مزامنة عمليات الذاكرة + + + + Ensures data consistency between compute and memory operations. +This option fixes issues in games, but may degrade performance. +Unreal Engine 4 games often see the most significant changes thereof. + يضمن اتساق البيانات بين عمليات الحوسبة والذاكرة. +يُصلح هذا الخيار مشاكل الألعاب، ولكنه قد يُقلل من الأداء. +التغييرات الأكثر أهمية Unreal Engine 4 غالبًا ما تشهد ألعاب. + + + Enable asynchronous presentation (Vulkan only) - + (Vulkan فقط) تمكين العرض التقديمي غير المتزامن - + Slightly improves performance by moving presentation to a separate CPU thread. - + تحسين الأداء بشكل طفيف عن طريق نقل العرض التقديمي إلى مؤشر ترابط منفصل في وحدة المعالجة المركزية. - + Force maximum clocks (Vulkan only) - + (Vulkan فقط) فرض الحد الأقصى للساعات - + Runs work in the background while waiting for graphics commands to keep the GPU from lowering its clock speed. - + يعمل في الخلفية أثناء انتظار أوامر الرسومات لمنع وحدة معالجة الرسومات من خفض سرعة الساعة. - + Anisotropic Filtering: - + الترشيح المتباين الخواص: - + Controls the quality of texture rendering at oblique angles. -It’s a light setting and safe to set at 16x on most GPUs. - +Safe to set at 16x on most GPUs. + يتحكم بجودة عرض الملمس بزوايا مائلة. +من الآمن ضبطه على 16x على معظم وحدات معالجة الرسومات. - - Accuracy Level: - مستوى الدقة: + + GPU Mode: + وضع وحدة معالجة الرسومات: - - GPU emulation accuracy. -Most games render fine with Normal, but High is still required for some. -Particles tend to only render correctly with High accuracy. -Extreme should only be used for debugging. -This option can be changed while playing. -Some games may require booting on high to render properly. - + + Controls the GPU emulation mode. +Most games render fine with Fast or Balanced modes, but Accurate is still required for some. +Particles tend to only render correctly with Accurate mode. + يتحكم في وضع محاكاة وحدة معالجة الرسومات.تُعرض معظم الألعاب بشكل جيد في الوضعين السريع أو المتوازن، ولكن الوضع الدقيق لا يزال مطلوبًا لبعض الألعاب.تميل الجسيمات إلى العرض بشكل صحيح فقط في الوضع الدقيق. - - Use asynchronous shader building (Hack) - + + DMA Accuracy: + DMA دقة: - - Enables asynchronous shader compilation, which may reduce shader stutter. -This feature is experimental. - + + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. + الدقة الآمنة تعمل على إصلاح المشكلات في بعض الألعاب ولكنها قد تؤدي إلى انخفاض الأداء DMA يتحكم في دقة - + + Enable asynchronous shader compilation + تفعيل تجميع التظليل غير المتزامن + + + + May reduce shader stutter. + قد يقلل من تقطع التظليل. + + + + Fast GPU Time + وقت معالجة الرسومات السريع + + + + Overclocks the emulated GPU to increase dynamic resolution and render distance. +Use 256 for maximal performance and 512 for maximal graphics fidelity. + يزيد من سرعة وحدة معالجة الرسومات المحاكية لزيادة الدقة الديناميكية ومسافة العرض.استخدم 256 للحصول على أقصى أداء و 512 للحصول على أقصى دقة للرسومات. + + + + GPU Unswizzle + إلغاء ترتيب بيانات وحدة معالجة الرسومات + + + + Accelerates BCn 3D texture decoding using GPU compute. +Disable if experiencing crashes or graphical glitches. + باستخدام حوسبة وحدة معالجة الرسومات BCn 3D يسرع فك تشفير نسيج. +قم بتعطيله في حالة حدوث أعطال أو مشاكل في الرسومات. + + + + GPU Unswizzle Max Texture Size + الحد الأقصى لحجم النسيج في وحدة معالجة الرسومات بعد إعادة ترتيب البيانات + + + + Sets the maximum size (MiB) for GPU-based texture unswizzling. +While the GPU is faster for medium and large textures, the CPU may be more efficient for very small ones. +Adjust this to find the balance between GPU acceleration and CPU overhead. + يحدد الحجم الأقصى (ميغابايت) لإزالة تشويش النسيج القائم على وحدة معالجة الرسومات. +في حين أن وحدة معالجة الرسومات أسرع في معالجة النسيج المتوسط والكبير، فإن وحدة المعالجة المركزية قد تكون أكثر كفاءة في معالجة النسيج الصغير جدًا. +اضبط هذا الخيار لإيجاد التوازن بين تسريع وحدة معالجة الرسومات وعبء وحدة المعالجة المركزية. + + + + GPU Unswizzle Stream Size + حجم تدفق إلغاء ترتيب بيانات وحدة معالجة الرسومات + + + + Sets the maximum amount of texture data (in MiB) processed per frame. +Higher values can reduce stutter during texture loading but may impact frame consistency. + يحدد الحد الأقصى لكمية بيانات النسيج (بالميغابايت) التي تتم معالجتها لكل إطار. +يمكن أن تقلل القيم الأعلى من التقطع أثناء تحميل النسيج، ولكنها قد تؤثر على اتساق الإطارات. + + + + GPU Unswizzle Chunk Size + حجم كتلة إلغاء ترتيب بيانات وحدة معالجة الرسومات + + + + Determines the number of depth slices processed in a single dispatch. +Increasing this can improve throughput on high-end GPUs but may cause TDR or driver timeouts on weaker hardware. + يُحدد هذا الخيار عدد شرائح العمق التي تتم معالجتها في عملية إرسال واحدة. +زيادة هذا الخيار قد تُحسّن الإنتاجية على وحدات معالجة الرسومات المتطورة، ولكنها قد تُسبب أخطاء في إعادة تعيين وقت الاستجابة أو انقطاع الاتصال ببرنامج التشغيل على الأجهزة ذات المواصفات الأقل. + + + Use Vulkan pipeline cache - + Vulkan استخدام ذاكرة التخزين المؤقتة لخط أنابيب - + Enables GPU vendor-specific pipeline cache. This option can improve shader loading time significantly in cases where the Vulkan driver does not store pipeline cache files internally. - + يُفعّل ذاكرة التخزين المؤقت لخطوط الأنابيب الخاصة ببائع وحدة معالجة الرسومات. +بتخزين ملفات ذاكرة التخزين المؤقتة للخطوط الداخلية Vulkan يمكن أن يؤدي هذا الخيار إلى تحسين وقت تحميل التظليل بشكل كبير في الحالات التي لا يقوم فيها برنامج تشغيل. - + Enable Compute Pipelines (Intel Vulkan Only) - + (Intel Vulkan فقط) تمكين خطوط أنابيب الحوسبة - - Enable compute pipelines, required by some games. -This setting only exists for Intel proprietary drivers, and may crash if enabled. + + 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. - + مطلوب في بعض الألعاب. +هذا الإعداد متوفر فقط لبرامج تشغيل Intel الخاصة، وقد يتعطل في حال تفعيله. +خطوط أنابيب الحوسبة مفعلة دائمًا على جميع برامج التشغيل الأخرى. - + Enable Reactive Flushing تمكين التنظيف التفاعلي - + Uses reactive flushing instead of predictive flushing, allowing more accurate memory syncing. - + يستخدم التنظيف التفاعلي بدلاً من التنظيف التنبئي، مما يسمح بمزامنة الذاكرة بشكل أكثر دقة. - + Sync to framerate of video playback المزامنة مع معدل الإطارات لتشغيل الفيديو - + Run the game at normal speed during video playback, even when the framerate is unlocked. قم بتشغيل اللعبة بالسرعة العادية أثناء تشغيل الفيديو، حتى عندما يكون معدل الإطارات مفتوحًا. - + Barrier feedback loops - + حلقات التغذية الراجعة للحواجز - + Improves rendering of transparency effects in specific games. - + يحسن عرض تأثيرات الشفافية في بعض الألعاب المحددة. - + + Enable buffer history + تمكين سجل التخزين المؤقت + + + + Enables access to previous buffer states. +This option may improve rendering quality and performance consistency in some games. + يُتيح هذا الخيار الوصول إلى حالات التخزين المؤقت السابقة. وقد يُحسّن جودة العرض وثبات الأداء في بعض الألعاب. + + + + Fix bloom effects + إصلاح تأثيرات التوهج + + + + Removes bloom in Burnout. + يزيل التوهج في وضع الاحتراق. + + + + Enable Legacy Rescale Pass + تفعيل ميزة إعادة التحجيم القديمة + + + + May fix rescale issues in some games by relying on behavior from the previous implementation. +Legacy behavior workaround that fixes line artifacts on AMD and Intel GPUs, and grey texture flicker on Nvidia GPUs in Luigis Mansion 3. + قد يصلح مشاكل إعادة القياس في بعض الألعاب بالاعتماد على سلوك من التنفيذ السابق. +حل لسلوك قديم يصلح تشوهات الخطوط على بطاقات AMD وIntel الرسومية، ووميض النسيج الرمادي على بطاقات Nvidia الرسومية في لعبة Luigi's Mansion 3. + + + + Extended Dynamic State + الحالة الديناميكية الموسعة + + + + Controls the number of features that can be used in Extended Dynamic State. +Higher states allow for more features and can increase performance, but may cause additional graphical issues. + يتحكم في عدد الميزات التي يمكن استخدامها في الحالة الديناميكية الموسعة.تسمح الحالات الأعلى بمزيد من الميزات ويمكن أن تزيد من الأداء، ولكنها قد تسبب مشكلات رسومية إضافية. + + + + Vertex Input Dynamic State + حالة ديناميكية لإدخال الرأس + + + + Enables vertex input dynamic state feature for better quality and performance. + يتيح ميزة الحالة الديناميكية لإدخال الرأس لتحسين الجودة والأداء. + + + + Sample Shading + تظليل العينة + + + + Allows the fragment shader to execute per sample in a multi-sampled fragment instead of once per fragment. Improves graphics quality at the cost of performance. +Higher values improve quality but degrade performance. + يسمح لمظلل الأجزاء بالتنفيذ لكل عينة في جزء متعدد العينات بدلاً من مرة واحدة لكل جزء. يحسن جودة الرسومات على حساب الأداء. +القيم الأعلى تحسن الجودة ولكنها تقلل من الأداء. + + + RNG Seed - بذرة الرقم العشوائي RNG + مولد الأرقام العشوائية - + Controls the seed of the random number generator. -Mainly used for speedrunning purposes. - +Mainly used for speedrunning. + يتحكم في بذرة مولد الأرقام العشوائية. +يُستخدم بشكل رئيسي في سباقات السرعة. - + Device Name اسم الجهاز - - The name of the emulated Switch. - + + The name of the console. + اسم وحدة التحكم. - + Custom RTC Date: - + المخصص RTC تاريخ: - - This option allows to change the emulated clock of the Switch. + + This option allows to change the clock of the console. Can be used to manipulate time in games. - + يتيح لك هذا الخيار تغيير ساعة وحدة التحكم. +يمكن استخدامه للتحكم بالوقت في الألعاب. - + + The number of seconds from the current unix time + عدد الثواني من وقت يونكس الحالي + + + Language: اللغة: - - Note: this can be overridden when region setting is auto-select - ملحوظة: قد يتم تجاهل هذا الإعداد عندما يحدد إعداد المنطقة على الإختيار التلقائي + + This option can be overridden when region setting is auto-select + يمكن تجاوز هذا الخيار عند تحديد إعداد المنطقة تلقائيًا - + Region: المنطقة: - - The region of the emulated Switch. - + + The region of the console. + منطقة وحدة التحكم. - + Time Zone: المنطقة الزمنية: - - The time zone of the emulated Switch. - + + The time zone of the console. + المنطقة الزمنية لوحدة التحكم. - + Sound Output Mode: وضع إخراج الصوت: - + Console Mode: وضع وحدة التحكم: - - Selects if the console is emulated in Docked or Handheld mode. + + Selects if the console is in Docked or Handheld mode. Games will change their resolution, details and supported controllers and depending on this setting. Setting to Handheld can help improve performance for low end systems. - + يُحدد ما إذا كان الجهاز في وضع الإرساء أو الوضع المحمول. +ستتغير دقة الألعاب وتفاصيلها وأجهزة التحكم المدعومة بناءً على هذا الإعداد. +يُمكن أن يُساعد الضبط على الوضع المحمول على تحسين أداء الأجهزة منخفضة المواصفات. - - Prompt for user on game boot - مطالبة المستخدم عند تشغيل اللعبة + + Unit Serial + الرقم التسلسلي للوحدة - - Pause emulation when in background - إيقاف المحاكاة مؤقتًا عندما تكون في الخلفية + + Battery Serial + الرقم التسلسلي للبطارية - - Fast GPU Time (Hack) - + + Debug knobs + مقابض تصحيح الأخطاء - - Overclocks the emulated GPU to increase dynamic resolution and render distance. -Use 128 for maximal performance and 512 for maximal graphics fidelity. - + + Prompt for user profile on boot + المطالبة بملف تعريف المستخدم عند التشغيل - - Extended Dynamic State - + + Useful if multiple people use the same PC. + مفيد إذا كان هناك عدة أشخاص يستخدمون نفس الكمبيوتر. - - Enables the VkExtendedDynamicState* extensions. -Higher dynamic states will generally improve performance, but may cause issues on certain games or devices. - + + Pause when not in focus + توقف عند عدم التركيز - - Provoking Vertex - + + Pauses emulation when focusing on other windows. + يوقف المحاكاة عند التركيز على نوافذ أخرى. - - Improves lighting and vertex handling in certain games. -Only Vulkan 1.0+ devices support this extension. - - - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - - Ask to select a user profile on each boot, useful if multiple people use eden on the same PC. - - - - - This setting pauses eden when focusing other windows. - - - - + Confirm before stopping emulation - قم بالتأكيد قبل إيقاف المحاكاة + تأكيد قبل إيقاف المحاكاة - - This setting overrides game prompts asking to confirm stopping the game. + + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - + يتجاوز المطالبات التي تطلب تأكيد إيقاف المحاكاة. +يؤدي تمكينه إلى تجاوز هذه المطالبات والخروج مباشرة من المحاكاة. - + Hide mouse on inactivity إخفاء الماوس عند عدم النشاط - - This setting hides the mouse after 2.5s of inactivity. - + + Hides the mouse after 2.5s of inactivity. + يخفي الماوس بعد 2.5 ثانية من عدم النشاط. - + Disable controller applet تعطيل تطبيق التحكم - - Forcibly disables the use of the controller applet by guests. -When a guest attempts to open the controller applet, it is immediately closed. - + + Forcibly disables the use of the controller applet in emulated programs. +When a program attempts to open the controller applet, it is immediately closed. + يُعطّل استخدام أداة التحكم في البرامج المُحاكاة قسرًا. +عند محاولة أي برنامج فتح أداة التحكم، تُغلق فورًا. - + Check for updates - + التحقق من توفر التحديثات - + Whether or not to check for updates upon startup. - + ما إذا كان يجب التحقق من التحديثات عند بدء التشغيل أم لا. - + Enable Gamemode تمكين وضع اللعبة - + + Force X11 as Graphics Backend + كخلفية رسومات X11 فرض + + + Custom frontend الواجهة الأمامية المخصصة - + Real applet - + تطبيق صغير حقيقي - + Never - + أبداً - + On Load - + عند التحميل - + Always - + دائماً - + CPU - المعالج + وحدة المعالجة المركزية - + GPU وحدة معالجة الرسومات - + CPU Asynchronous - + وحدة المعالجة المركزية غير المتزامنة - + Uncompressed (Best quality) Uncompressed (أفضل جودة) - + BC1 (Low quality) BC1 (جودة منخفضة) - + BC3 (Medium quality) BC3 (جودة متوسطة) - - Conservative - - - - - Aggressive - - - - - OpenGL - OpenGL - - - - Vulkan - Vulkan - - - - Null - لا شيء - - - - GLSL - GLSL - - - - GLASM (Assembly Shaders, NVIDIA Only) - - - - - SPIR-V (Experimental, AMD/Mesa Only) - - - - - Normal - عادي - - - - High - عالي - - - - Extreme - - - - + + Auto تلقائي - + + 30 FPS + 30 إطارًا في الثانية + + + + 60 FPS + 60 إطارًا في الثانية + + + + 90 FPS + 90 إطارًا في الثانية + + + + 120 FPS + 120 إطارًا في الثانية + + + + Conservative + محافظ + + + + Aggressive + عدواني + + + + Vulkan + Vulkan + + + + OpenGL GLSL + OpenGL GLSL + + + + OpenGL GLASM (Assembly Shaders, NVIDIA Only) + OpenGL GLASM (Assembly Shaders, NVIDIA Only) + + + + OpenGL SPIR-V (Experimental, AMD/Mesa Only) + OpenGL SPIR-V (Experimental, AMD/Mesa Only) + + + + Null + لا شيء + + + + Fast + سريع + + + + Balanced + متوازن + + + + Accurate دقه - - Unsafe - غير آمن - - - - Paranoid (disables most optimizations) - - - - - Dynarmic - - - - - NCE - NCE - - - - Borderless Windowed - نوافذ بلا حدود - - - - Exclusive Fullscreen - شاشة كاملة حصرية - - - - No Video Output - لا يوجد إخراج فيديو - - - - CPU Video Decoding - - - - - GPU Video Decoding (Default) - - - - - 0.25X (180p/270p) [EXPERIMENTAL] - - - - - 0.5X (360p/540p) [EXPERIMENTAL] - 0.5X (360p/540p) [تجريبي] - - - - 0.75X (540p/810p) [EXPERIMENTAL] - 0.75X (540p/810p) [تجريبي] - - - - 1X (720p/1080p) - 1X (720p/1080p) - - - - 1.5X (1080p/1620p) [EXPERIMENTAL] - 1.5X (1080p/1620p) [تجريبي] - - - - 2X (1440p/2160p) - 2X (1440p/2160p) - - - - 3X (2160p/3240p) - 3X (2160p/3240p) - - - - 4X (2880p/4320p) - 4X (2880p/4320p) - - - - 5X (3600p/5400p) - 5X (3600p/5400p) - - - - 6X (4320p/6480p) - 6X (4320p/6480p) - - - - 7X (5040p/7560p) - 7X (5040p/7560p) - - - - 8X (5760p/8640p) - 8X (5760p/8640p) - - - - Nearest Neighbor - Nearest Neighbor - - - - Bilinear - Bilinear - - - - Bicubic - Bicubic - - - - Gaussian - Gaussian - - - - ScaleForce - ScaleForce - - - - AMD FidelityFX™️ Super Resolution - AMD FidelityFX™️ Super Resolution - - - - Area - - - - - None - لا شيء - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Default (16:9) - (16:9) افتراضي - - - - Force 4:3 - 4:3 فرض - - - - Force 21:9 - 21:9 فرض - - - - Force 16:10 - 16:10 فرض - - - - Stretch to Window - تمتد إلى النافذة - - - - Automatic - تلقائي - - - + + Default افتراضي - + + Unsafe (fast) + غير آمن (سريع) + + + + Safe (stable) + آمن (مستقر) + + + + Unsafe + غير آمن + + + + Paranoid (disables most optimizations) + جنون العظمة (يعطل معظم التحسينات) + + + + Debugging + تصحيح الأخطاء + + + + Dynarmic + Dynarmic + + + + NCE + NCE + + + + Borderless Windowed + نافذة بلا حدود + + + + Exclusive Fullscreen + شاشة كاملة حصرية + + + + No Video Output + لا يوجد إخراج فيديو + + + + CPU Video Decoding + فك تشفير فيديو وحدة المعالجة المركزية + + + + GPU Video Decoding (Default) + فك تشفير فيديو وحدة معالجة الرسومات (افتراضي) + + + + 0.25X (180p/270p) [EXPERIMENTAL] + 0.25X (180p/270p) [تجريبي] + + + + 0.5X (360p/540p) [EXPERIMENTAL] + 0.5X (360p/540p) [تجريبي] + + + + 0.75X (540p/810p) [EXPERIMENTAL] + 0.75X (540p/810p) [تجريبي] + + + + 1X (720p/1080p) + 1X (720p/1080p) + + + + 1.25X (900p/1350p) [EXPERIMENTAL] + 1.25X (900p/1350p) [تجريبي] + + + + 1.5X (1080p/1620p) [EXPERIMENTAL] + 1.5X (1080p/1620p) [تجريبي] + + + + 2X (1440p/2160p) + 2X (1440p/2160p) + + + + 3X (2160p/3240p) + 3X (2160p/3240p) + + + + 4X (2880p/4320p) + 4X (2880p/4320p) + + + + 5X (3600p/5400p) + 5X (3600p/5400p) + + + + 6X (4320p/6480p) + 6X (4320p/6480p) + + + + 7X (5040p/7560p) + 7X (5040p/7560p) + + + + 8X (5760p/8640p) + 8X (5760p/8640p) + + + + Nearest Neighbor + Nearest Neighbor + + + + Bilinear + Bilinear + + + + Bicubic + Bicubic + + + + Gaussian + Gaussian + + + + Lanczos + Lanczos + + + + ScaleForce + ScaleForce + + + + AMD FidelityFX Super Resolution + AMD FidelityFX Super Resolution + + + + Area + Area + + + + MMPX + MMPX + + + + Zero-Tangent + Zero-Tangent + + + + B-Spline + B-Spline + + + + Mitchell + Mitchell + + + + Spline-1 + Spline-1 + + + + + None + لا شيء + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Default (16:9) + (16:9) افتراضي + + + + Force 4:3 + 4:3 فرض + + + + Force 21:9 + 21:9 فرض + + + + Force 16:10 + 16:10 فرض + + + + Stretch to Window + تمديد إلى النافذة + + + + Automatic + تلقائي + + + 2x 2x - + 4x 4x - + 8x 8x - + 16x 16x - + + 32x + 32x + + + + 64x + 64x + + + Japanese (日本語) اليابانية (日本語) - + American English - + الإنجليزية الأمريكية - + French (français) - الفرنسية الأوروبية (Français) + الفرنسية (français) - + German (Deutsch) الألمانية (Deutsch) - + Italian (italiano) الإيطالية (Italiano) - + Spanish (español) - الإسبانية الأوروبية (Español) + الإسبانية (español) - + Chinese - الصينية المبسطة + الصينية - + Korean (한국어) الكورية (한국어) - + Dutch (Nederlands) الهولندية (Nederlands) - + Portuguese (português) - البرتغالية الأوروبية (Português) + البرتغالية (Português) - + Russian (Русский) الروسية (Русский) - + Taiwanese - الصينية التقليدية (تايوان) + تايواني - + British English الإنكليزية البريطانية - + Canadian French - الفرنسية الأمريكية (كندا) + الكندية الفرنسية - + Latin American Spanish - الإسبانية الأمريكية (أمريكا اللاتينية) + أمريكا اللاتينية الإسبانية - + Simplified Chinese الصينية المبسطة - + Traditional Chinese (正體中文) الصينية التقليدية (正體中文) - + Brazilian Portuguese (português do Brasil) - + البرتغالية البرازيلية (português do Brasil) - - + + Polish (polska) + البولندية (polska) + + + + Thai (แบบไทย) + التايلاندية (แบบไทย) + + + + Japan اليابان - + USA الولايات المتحدة الأمريكية - + Europe أوروبا - + Australia أستراليا - + China الصين - + Korea كوريا - + Taiwan تايوان - + Auto (%1) Auto select time zone تلقائي (%1) - + Default (%1) Default time zone افتراضي (%1) - + CET - + CET - + CST6CDT - + CST6CDT - + Cuba - + Cuba - + EET - + EET - + Egypt - + Egypt - + Eire - + Eire - + EST - + EST - + EST5EDT - + EST5EDT - + GB GB - + GB-Eire - + GB-Eire - + GMT - + GMT - + GMT+0 - + GMT+0 - + GMT-0 - + GMT-0 - + GMT0 - + GMT0 - + Greenwich - + Greenwich - + Hongkong - + Hongkong - + HST - + HST - + Iceland - + Iceland - + Iran - + Iran - + Israel - + Israel - + Jamaica - + Jamaica - + Kwajalein - + Kwajalein - + Libya - + Libya - + MET - + MET - + MST - + MST - + MST7MDT - + MST7MDT - + Navajo - + Navajo - + NZ - + NZ - + NZ-CHAT - + NZ-CHAT - + Poland - + Poland - + Portugal - + Portugal - + PRC - + PRC - + PST8PDT - + PST8PDT - + ROC - + ROC - + ROK - + ROK - + Singapore - + Singapore - + Turkey - + Turkey - + UCT - + UCT - + Universal - + عالمي - + UTC - + UTC - + W-SU - + W-SU - + WET - + WET - + Zulu - + Zulu - + Mono - صوت مونو + أحادي - + Stereo - صوت ستيريو + مجسم - + Surround - صوت سيراوند + محيطي - + 4GB DRAM (Default) 4GB DRAM (افتراضي) - + 6GB DRAM (Unsafe) 6GB DRAM (غير آمنة) - + 8GB DRAM - + 8GB DRAM - + 10GB DRAM (Unsafe) - + 10GB DRAM (غير آمنة) - + 12GB DRAM (Unsafe) - + 12GB DRAM (غير آمنة) - - Low (128) - - - - - Medium (256) - - - - - High (512) - - - - 8GB DRAM (Unsafe) - 8GB DRAM (غير آمنة) - - - + Docked - مركب بالمنصة + الإرساء - + Handheld محمول - + + + Off + تعطيل + + + Boost (1700MHz) - + تعزيز (1700 ميجا هرتز) - + Fast (2000MHz) - + سريع (2000 ميجاهرتز) - + Always ask (Default) - Always ask (افتراضي) + اسأل دائمًا (افتراضي) - + Only if game specifies not to stop فقط إذا حددت اللعبة عدم التوقف - + Never ask لا تسأل أبدا + + + + Medium (256) + متوسط (256) + + + + + High (512) + عالي (512) + + + + Very Small (16 MB) + صغير جدًا (16 ميغابايت) + + + + Small (32 MB) + صغير (32 ميغابايت) + + + + Normal (128 MB) + قياسي (128 ميغابايت) + + + + Large (256 MB) + كبير (256 ميغابايت) + + + + Very Large (512 MB) + كبير جدًا (512 ميغابايت) + + + + Very Low (4 MB) + منخفض جدًا (4 ميغابايت) + + + + Low (8 MB) + منخفض (8 ميغابايت) + + + + Normal (16 MB) + قياسي (16 ميغابايت) + + + + Medium (32 MB) + متوسط (32 ميغابايت) + + + + High (64 MB) + عالي (64 ميغابايت) + + + + Very Low (32) + منخفض جدًا (32) + + + + Low (64) + منخفض (64) + + + + Normal (128) + قياسي (128) + + + + Disabled + معطل + + + + ExtendedDynamicState 1 + الحالة الديناميكية الممتدة 1 + + + + ExtendedDynamicState 2 + الحالة الديناميكية الممتدة 2 + + + + ExtendedDynamicState 3 + الحالة الديناميكية الممتدة 3 + + + + Tree View + عرض قائمة + + + + Grid View + عرض شبكة + ConfigureApplets Form - الشكل + نموذج Applets - + التطبيقات الصغيرة Applet mode preference - + تفضيلات وضع التطبيقات الصغيرة @@ -1946,7 +2313,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Configure Infrared Camera - إعداد كاميرا الاشعة فوق الحمراء + إعدادات كاميرا الأشعة فوق الحمراء @@ -1981,10 +2348,10 @@ When a guest attempts to open the controller applet, it is immediately closed. Restore Defaults - استعادة الافتراضي + استعادة الإعدادات الافتراضية - + Auto تلقائي @@ -1994,7 +2361,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Form - الشكل + نموذج @@ -2009,22 +2376,22 @@ When a guest attempts to open the controller applet, it is immediately closed. We recommend setting accuracy to "Auto". - نوصي بضبط الدقة على "تلقائي". + نوصي بضبط الدقة على ”تلقائي“. CPU Backend - + وحدة المعالجة المركزية الخلفية Unsafe CPU Optimization Settings - إعدادات غير سالمة لتحسين مردود المعالج + إعدادات تحسين وحدة المعالجة المركزية غير الآمنة These settings reduce accuracy for speed. - هذه الإعدادات تتنازل عن صحة المحاكاة في سبيل السرعة. + تعمل هذه الإعدادات على تقليل الدقة مقابل زيادة السرعة. @@ -2032,7 +2399,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Form - الشكل + نموذج @@ -2047,7 +2414,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <html><head/><body><p><span style=" font-weight:600;">For debugging only.</span><br/>If you're not sure what these do, keep all of these enabled. <br/>These settings, when disabled, only take effect when CPU Debugging is enabled. </p></body></html> - + <html><head/><body><p><span style=" font-weight:600;">للتصحيح فقط.</span><br/>إذا لم تكن متأكدًا من وظيفة هذه الخيارات، فاتركها جميعًا ممكّنة. <br/>عند تعطيل هذه الإعدادات، لا تصبح سارية المفعول إلا عند تمكين تصحيح أخطاء وحدة المعالجة المركزية. </p></body></html> @@ -2056,7 +2423,11 @@ When a guest attempts to open the controller applet, it is immediately closed. - + +<div style="white-space: nowrap">يعمل هذا التحسين على تسريع عمليات الوصول إلى الذاكرة بواسطة برنامج الضيف.</div> +<div style="white-space: nowrap">يؤدي تمكينه إلى تضمين الوصول إلى مؤشرات PageTable::pointers في الكود الصادر.</div> +<div style="white-space: nowrap">يؤدي تعطيل هذا إلى إجبار جميع عمليات الوصول إلى الذاكرة على المرور عبر وظائف Memory::Read/Memory::Write.</div> + @@ -2068,7 +2439,9 @@ When a guest attempts to open the controller applet, it is immediately closed. <div>This optimization avoids dispatcher lookups by allowing emitted basic blocks to jump directly to other basic blocks if the destination PC is static.</div> - + +<div>يتجنب هذا التحسين عمليات البحث عن المرسل من خلال السماح للكتل الأساسية المنبعثة بالانتقال مباشرة إلى كتل أساسية أخرى إذا كان جهاز الكمبيوتر الوجهة ثابتًا.</div> + @@ -2080,31 +2453,37 @@ When a guest attempts to open the controller applet, it is immediately closed. <div>This optimization avoids dispatcher lookups by keeping track potential return addresses of BL instructions. This approximates what happens with a return stack buffer on a real CPU.</div> - + +<div>يتجنب هذا التحسين عمليات بحث المُرسِل من خلال تتبع عناوين الإرجاع المحتملة لتعليمات BL. يُشبه هذا ما يحدث مع مخزن كومة الإرجاع على وحدة معالجة مركزية حقيقية.</div> + Enable return stack buffer - + تمكين مخزن مؤقت لمكدس الإرجاع <div>Enable a two-tiered dispatch system. A faster dispatcher written in assembly has a small MRU cache of jump destinations is used first. If that fails, dispatch falls back to the slower C++ dispatcher.</div> - + +<div>تفعيل نظام إرسال ثنائي المستوى. جهاز الإرسال الأسرع المكتوب بلغة التجميع يحتوي على ذاكرة تخزين مؤقتة صغيرة لوحدات MRU لوجهات الاتصال، ويُستخدم أولاً. في حال فشل ذلك، يعود الإرسال إلى جهاز الإرسال الأبطأ بلغة C++.</div> + Enable fast dispatcher - + تمكين المرسل السريع <div>Enables an IR optimization that reduces unnecessary accesses to the CPU context structure.</div> - + +<div>يمكّن تحسين IR الذي يقلل من عمليات الوصول غير الضرورية إلى بنية سياق وحدة المعالجة المركزية.</div> + @@ -2116,19 +2495,23 @@ When a guest attempts to open the controller applet, it is immediately closed. <div>Enables IR optimizations that involve constant propagation.</div> - + + <div>يتيح تحسينات الأشعة تحت الحمراء التي تنطوي على انتشار مستمر</div> + Enable constant propagation - + تمكين الانتشار الثابت <div>Enables miscellaneous IR optimizations.</div> - + + <div>يتيح تحسينات متنوعة للأشعة تحت الحمراء</div> + @@ -2141,7 +2524,10 @@ When a guest attempts to open the controller applet, it is immediately closed. - + + <div style="white-space: nowrap">عند التمكين، لا يتم تشغيل عدم المحاذاة إلا عندما يتجاوز الوصول حدود الصفحة</div> + <div style="white-space: nowrap">عند التعطيل، يتم تشغيل عدم المحاذاة على جميع عمليات الوصول غير المتوافقة</div> + @@ -2152,29 +2538,37 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all memory accesses to use Software MMU Emulation.</div> - + +<div style="white-space: nowrap">يعمل هذا التحسين على تسريع عمليات الوصول إلى الذاكرة بواسطة برنامج الضيف.</div> +<div style="white-space: nowrap">يؤدي تمكينه إلى إجراء عمليات قراءة/كتابة ذاكرة الضيف مباشرة في الذاكرة والاستفادة من وحدة MMU الخاصة بالمضيف.</div> +<div style="white-space: nowrap">يؤدي تعطيل هذا إلى إجبار جميع عمليات الوصول إلى الذاكرة على استخدام محاكاة MMU البرمجية.</div> + Enable Host MMU Emulation (general memory instructions) - + المضيف (تعليمات الذاكرة العامة) MMU تمكين محاكاة <div style="white-space: nowrap">This optimization speeds up exclusive memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all exclusive memory accesses to use Software MMU Emulation.</div> - + +<div style="white-space: nowrap">يعمل هذا التحسين على تسريع عمليات الوصول الحصري للذاكرة بواسطة برنامج الضيف.</div> +<div style="white-space: nowrap">يؤدي تمكينه إلى إجراء عمليات قراءة/كتابة للذاكرة الحصرية للضيوف مباشرة في الذاكرة والاستفادة من وحدة MMU الخاصة بالمضيف.</div> +<div style="white-space: nowrap">يؤدي تعطيل هذا إلى إجبار جميع عمليات الوصول الحصرية للذاكرة على استخدام محاكاة MMU البرمجية.</div> + Enable Host MMU Emulation (exclusive memory instructions) - + المضيف (تعليمات الذاكرة الحصرية) MMU تمكين محاكاة @@ -2182,18 +2576,21 @@ When a guest attempts to open the controller applet, it is immediately closed. - + +<div style="white-space: nowrap">يعمل هذا التحسين على تسريع عمليات الوصول الحصري للذاكرة بواسطة برنامج الضيف.</div> +<div style="white-space: nowrap">يؤدي تمكينه إلى تقليل التكلفة الإضافية لفشل fastmem في الوصول إلى الذاكرة الحصرية.</div> + Enable recompilation of exclusive memory instructions - + تمكين إعادة تجميع تعليمات الذاكرة الحصرية <div style="white-space: nowrap">This optimization speeds up memory accesses by allowing invalid memory accesses to succeed.</div> - <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> + <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> <div style="white-space: nowrap">يعمل هذا التحسين على تسريع عمليات الوصول إلى الذاكرة عن طريق السماح بنجاح الوصول إلى الذاكرة غير الصالحة.</div> @@ -2221,7 +2618,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Enable GDB Stub - + GDB Stub تمكين @@ -2231,42 +2628,42 @@ When a guest attempts to open the controller applet, it is immediately closed. Logging - تسجيل + السجلات - - Open Log Location - فتح موقع السجل - - - + Global Log Filter - مرشح السجل العالمي + مرشح السجلات العالمي - + When checked, the max size of the log increases from 100 MB to 1 GB عند تحديده، يزيد الحد الأقصى لحجم السجل من 100 ميجا بايت إلى 1 جيجا بايت - + Enable Extended Logging** تفعيل السجل المطول - + Show Log in Console عرض السجل في الطرفية + + + Open Log Location + فتح موقع السجل + Homebrew - البيرة المنزلية + برمجيات يُنتجها هواة Arguments String - + سلسلة الحجج @@ -2276,72 +2673,72 @@ When a guest attempts to open the controller applet, it is immediately closed. When checked, it executes shaders without loop logic changes - + عند تحديده، يتم تنفيذ التظليل دون تغييرات في منطق الحلقة Disable Loop safety checks - + تعطيل عمليات فحص سلامة الحلقة When checked, it will dump all the macro programs of the GPU - + عند تحديده، سيتم تفريغ جميع برامج الماكرو الخاصة بوحدة معالجة الرسومات Dump Maxwell Macros - + تفريغ وحدات ماكرو ماكسويل When checked, it enables Nsight Aftermath crash dumps - + Nsight Aftermath عند تحديد هذا الخيار، يتم تمكين عمليات تفريغ الأعطال الخاصة بـ Enable Nsight Aftermath - + Nsight Aftermath تمكين When checked, it will dump all the original assembler shaders from the disk shader cache or game as found - + عند تحديده، سيتم تفريغ جميع تظليلات المجمع الأصلية من ذاكرة التخزين المؤقتة لتظليلات القرص أو اللعبة كما هي موجودة. Dump Game Shaders - + تفريغ تظليل اللعبة Enable Renderdoc Hotkey - + Renderdoc تمكين مفتاح التشغيل السريع لـ When checked, it disables the macro Just In Time compiler. Enabling this makes games run slower - + عند تفعيله، يُعطّل مُجمّع الماكرو "Just In Time". تفعيله يُبطئ تشغيل الألعاب. Disable Macro JIT - + JIT تعطيل ماكرو When checked, it disables the macro HLE functions. Enabling this makes games run slower - + عند تفعيله، يُعطّل وظائف الماكرو HLE. تفعيله يُبطئ تشغيل الألعاب. Disable Macro HLE - + HLE تعطيل ماكرو When checked, the graphics API enters a slower debugging mode - + عند تحديد هذا الخيار، تدخل واجهة برمجة التطبيقات الرسومية في وضع تصحيح أبطأ @@ -2351,22 +2748,22 @@ When a guest attempts to open the controller applet, it is immediately closed. When checked, yuzu will log statistics about the compiled pipeline cache - + عند تحديد هذا الخيار، سيقوم يوزو بتسجيل إحصائيات حول ذاكرة التخزين المؤقتة للأنابيب المجمعة. Enable Shader Feedback - + تمكين ملاحظات التظليل <html><head/><body><p>When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.</p></body></html> - + <html><head/><body><p>عند تحديده، يتم تعطيل إعادة ترتيب تحميلات الذاكرة المعينة، مما يسمح بربط التحميلات بعمليات سحب محددة. قد يؤدي ذلك إلى انخفاض الأداء في بعض الحالات.</p></body></html> Disable Buffer Reorder - + تعطيل إعادة ترتيب المخزن المؤقت @@ -2376,17 +2773,17 @@ When a guest attempts to open the controller applet, it is immediately closed. 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. - + يُمكّن يوزو من التحقق من بيئة Vulkan فعّالة عند بدء تشغيل البرنامج. عطّل هذه الميزة إذا كانت تُسبب مشاكل في رؤية البرامج الخارجية ليوزو. Perform Startup Vulkan Check - Vulkan إجراء فحص بدء التشغيل + عند بدء التشغيل Vulkan إجراء فحص Disable Web Applet - تعطيل برنامج الويب + تعطيل تطبيق الويب @@ -2394,28 +2791,19 @@ When a guest attempts to open the controller applet, it is immediately closed.تمكين كافة أنواع اذرع التحكم - - Censor username in logs - - - - - **This will be reset automatically when eden closes. - - - - Enable Auto-Stub** - تمكين الإيقاف التلقائي** + + Enable Auto-Stub + تمكين الملحق تلقائي Kiosk (Quest) Mode - + Kiosk (Quest) Mode - Enable CPU Debugging - تمكين تصحيح أخطاء وحدة المعالجة المركزية + Use dev.keys + dev.keys استخدام مفاتيح التطوير @@ -2428,43 +2816,74 @@ When a guest attempts to open the controller applet, it is immediately closed.تصحيح الأخطاء - - Flush log output on each line - + + Battery Serial: + :رقم تسلسلي للبطارية - - Enable FS Access Log - + + Bitmask for quick development toggles + قناع بت للتبديل السريع بين أوضاع التطوير - + + Set debug knobs (bitmask) + ضبط أزرار تصحيح الأخطاء (قناع البت) + + + + 16-bit debug knob set for quick development toggles + مجموعة أزرار تصحيح أخطاء 16 بت للتبديل السريع بين أوضاع التطوير + + + + (bitmask) + (قناع البت) + + + + Debug Knobs: + أزرار تصحيح الأخطاء: + + + + Unit Serial: + :الرقم التسلسلي للوحدة + + + Enable this to output the latest generated audio command list to the console. Only affects games using the audio renderer. - + قم بتمكين هذه الخيار لإخراج أحدث قائمة أوامر صوتية تم إنشاؤها إلى وحدة التحكم. يؤثر فقط على الألعاب التي تستخدم عارض الصوت. - - Enable Auto-Stub - - - - + Dump Audio Commands To Console** - + تفريغ أوامر الصوت إلى وحدة التحكم - + + Flush log output on each line + مسح إخراج السجل على كل سطر + + + + Enable FS Access Log + FS تمكين سجل وصول + + + Enable Verbose Reporting Services** - تمكين خدمات التقارير المطولة** + تمكين خدمات التقارير التفصيلية - **This will be reset automatically when yuzu closes. - ** سيتم إعادة ضبط هذا تلقائيًا عند إغلاق يوزو. + + Censor username in logs + اخفي اسم المستخدم في السجلات - - Web applet not compiled - لم يتم تجميع برنامج الويب + + **This will be reset automatically when Eden closes. + **سيتم إعادة تعيين هذا تلقائيًا عند إغلاق إيدن. @@ -2472,7 +2891,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Configure Debug Controller - تهيئة تصحيح أخطاء ذراع التحكم + إعدادات تصحيح أخطاء ذراع التحكم @@ -2482,7 +2901,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Defaults - الافتراضيات + الافتراضية @@ -2490,7 +2909,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Form - الشكل + نموذج @@ -2506,14 +2925,10 @@ When a guest attempts to open the controller applet, it is immediately closed. ConfigureDialog - - yuzu Configuration - إعدادات يوزو - - eden Configuration - + Eden Configuration + إعدادات إيدن @@ -2521,90 +2936,90 @@ When a guest attempts to open the controller applet, it is immediately closed.بعض الإعدادات تتوفر عندما تكون اللعبة غير مشغلة. - + Applets - + التطبيقات الصغيرة - - + + Audio الصوت - - + + CPU المعالج - + Debug تصحيح الأخطاء - + Filesystem نظام الملفات - - + + General عام - - + + Graphics الرسومات - + GraphicsAdvanced الرسومات المتقدمة - - GraphicsExtensions - + + GraphicsExtra + رسومات إضافية - + Hotkeys - الأزرار السريعة + مفاتيح الاختصار - - + + Controls ذراع التحكم - + Profiles - ملفات المستخدمين + ملفات التعريف - + Network الشبكة - - + + System النظام - + Game List قائمة الألعاب - + Web - الشبكة + الويب @@ -2612,7 +3027,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Form - الشكل + نموذج @@ -2622,19 +3037,20 @@ When a guest attempts to open the controller applet, it is immediately closed. Storage Directories - أدلة التخزين + مجلدات التخزين NAND - NAND + الذاكرة الداخلية - - - + + + + ... ... @@ -2644,107 +3060,183 @@ When a guest attempts to open the controller applet, it is immediately closed.بطاقة الذاكرة - + + Save Data + بيانات الحفظ + + + Gamecard بطاقة اللعبة - + Path المسار - + Inserted مدرج - + Current Game اللعبة الحالية - + Patch Manager - مدير الرقع + مدير التصحيحات - + Dump Decompressed NSOs - + المضغوطة NSO تفريغ ملفات - + Dump ExeFS - + ExeFS تفريغ - + Mod Load Root - + تحميل تعديل الجذر - + Dump Root - + تفريغ الجذر - + Caching التخزين المؤقت - + Cache Game List Metadata - ذاكرة التخزين المؤقت لقائمة البيانات الوصفية + ذاكرة التخزين المؤقتة لقائمة البيانات الوصفية - - - - + Reset Metadata Cache إعادة تعيين الذاكرة المؤقتة للبيانات الوصفية - + Select Emulated NAND Directory... - الذي تمت محاكاته NAND حدد مجلد + حدد مجلد الذاكرة الداخلية المحاكاة... - + Select Emulated SD Directory... حدد مجلد بطاقة الذاكرة الذي تمت محاكاته - + + + Select Save Data Directory... + حدد مجلد بيانات الحفظ... + + + Select Gamecard Path... أختر مسار بطاقة اللعبة - + Select Dump Directory... حدد مجلد التفريغ - + Select Mod Load Directory... حدد مجلد تحميل التعديل - - The metadata cache is already empty. - الذاكرة مؤقتة للبيانات الوصفية لقائمة الألعاب فارغة مسبقا. + + Save Data Directory + مجلد بيانات الحفظ - - The operation completed successfully. - أكتملت العملية بنجاح + + Choose an action for the save data directory: + اختر إجراءً لمجلد بيانات الحفظ: - - The metadata cache couldn't be deleted. It might be in use or non-existent. - لا يمكن حذف الذاكرة المؤقتة للبيانات الوصفية لقائمة الألعاب. قد تكون مستخدمة الآن أو غير موجودة. + + Set Custom Path + تعيين مسار مخصص + + + + Reset to NAND + إعادة ضبط إلى الذاكرة الداخلية + + + + Save data exists in both the old and new locations. + +Old: %1 +New: %2 + +Would you like to migrate saves from the old location? +WARNING: This will overwrite any conflicting saves in the new location! + البيانات المحفوظة موجودة في كل من الموقعين القديم والجديد.القديم: %1الجديد: %2هل ترغب في نقل الملفات المحفوظة من الموقع القديم؟تحذير: سيؤدي هذا إلى استبدال أي ملفات حفظ متعارضة في الموقع الجديد! + + + + Would you like to migrate your save data to the new location? + +From: %1 +To: %2 + هل ترغب في نقل بياناتك المحفوظة إلى الموقع الجديد؟من: %1الى: %2 + + + + Migrate Save Data + نقل البيانات الحفظ + + + + Migrating save data... + نقل بيانات الحفظ... + + + + Cancel + إلغاء + + + + + Migration Failed + فشل عملية النقل + + + + Failed to create destination directory. + فشل في إنشاء مجلد الوجهة. + + + + Failed to migrate save data: +%1 + فشل نقل بيانات الحفظ:%1 + + + + Migration Complete + اكتملت عملية النقل + + + + Save data has been migrated successfully. + +Would you like to delete the old save data? + تم نقل بيانات الحفظ بنجاح.هل تريد حذف بيانات الحفظ القديمة؟ @@ -2752,7 +3244,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Form - الشكل + نموذج @@ -2762,27 +3254,53 @@ When a guest attempts to open the controller applet, it is immediately closed. - Linux - Linux + External Content + محتوى خارجي - + + Add directories to scan for DLCs and Updates without installing to NAND + إضافة مجلدات لفحصها بحثًا عن المحتوى القابل للتنزيل والتحديثات دون تثبيتها على الذاكرة الداخلية + + + + Add Directory + إضافة مجلد + + + + Remove Selected + إزالة المحدد + + + Reset All Settings إعادة تعيين جميع الإعدادات - yuzu - يوزو + + Eden + إيدن - - eden - - - - + This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed? - يؤدي هذا إلى إعادة تعيين جميع الإعدادات وإزالة جميع التكوينات لكل لعبة. لن يؤدي هذا إلى حذف أدلة اللعبة أو الملفات الشخصية أو ملفات تعريف الإدخال. يتابع؟ + سيؤدي ذلك إلى إعادة تعيين جميع الإعدادات وإزالة جميع التكوينات الخاصة بكل لعبة. لن يؤدي ذلك إلى حذف مجلدات الألعاب أو ملفات التعريف أو ملفات تعريف الإدخال. هل تريد المتابعة؟ + + + + Select External Content Directory... + حدد مجلد المحتوى الخارجي... + + + + Directory Already Added + تمت إضافة المجلد مسبقًا + + + + This directory is already in the list. + هذا المجلد موجود بالفعل في القائمة. @@ -2790,7 +3308,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Form - الشكل + نموذج @@ -2813,33 +3331,33 @@ When a guest attempts to open the controller applet, it is immediately closed.:لون الخلفية - + % FSR sharpening percentage (e.g. 50%) % - + Off معطل - + VSync Off VSync معطل - + Recommended مستحسن - + On مفعل - + VSync On VSync مفعل @@ -2849,7 +3367,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Form - الشكل + نموذج @@ -2857,7 +3375,7 @@ When a guest attempts to open the controller applet, it is immediately closed.متقدم - + Advanced Graphics Settings إعدادات الرسومات المتقدمة @@ -2867,24 +3385,38 @@ When a guest attempts to open the controller applet, it is immediately closed. Form - الشكل + نموذج - Extensions - + Extras + إضافات - - Vulkan Extension Settings - + + Hacks + اختراقات - - While it's recommended to use state 3, some games may perform better on lower states. Setting to 0 (disabled) may also break games. -If your GPU is older (i.e. RX570/580 or older), it may not support these features. If this is the case, set the slider to 0 and uncheck all boxes. -These settings are experimental, and may cause black screens. If your games fail to boot or are stuck on a black screen, change these settings around. - + + Changing these options from their default may cause issues. Novitii cavete! + قد يؤدي تغيير هذه الخيارات عن إعداداتها الافتراضية إلى حدوث مشكلات. تنبيه للمبتدئين! + + + + Vulkan Extensions + Vulkan ملحقات + + + + % + Sample Shading percentage (e.g. 50%) + % + + + + Extended Dynamic State is disabled on macOS due to MoltenVK compatibility issues that cause black screens. + تم تعطيل الحالة الديناميكية الممتدة على نظام macOS بسبب مشكلات توافق MoltenVK التي تتسبب في ظهور شاشات سوداء. @@ -2892,17 +3424,17 @@ These settings are experimental, and may cause black screens. If your games fail Hotkey Settings - إعدادات الأزرار السريعة + إعدادات مفاتيح الاختصار Hotkeys - الأزرار السريعة + مفاتيح الاختصار Double-click on a binding to change it. - انقر مرتين على التزام لتغييره. + انقر نقرًا مزدوجًا على التزام لتغييره. @@ -2912,78 +3444,78 @@ These settings are experimental, and may cause black screens. If your games fail Restore Defaults - استعادة الافتراضي + استعادة الإعدادات الافتراضية - + Action - فعل + الإجراء - + Hotkey - زر إختصار + زر الاختصار للوحة المفاتيح - + Controller Hotkey - مفتاح التحكم السريع + زر الاختصار لذراع التحكم - - - + + + Conflicting Key Sequence - تسلسل أزرار متناقض مع الموجود + تسلسل المفاتيح المتعارضة - - + + The entered key sequence is already assigned to: %1 سبق و تم تعيين تسلسل الأزرار الذي أدخلته، مع: %1 - + [waiting] - [بانتظار الرد] + [انتظار] - + Invalid غير صالح - + Invalid hotkey settings إعدادات مفتاح الاختصار غير صالحة - + An error occurred. Please report this issue on github. حدث خطأ. يرجى الإبلاغ عن هذه المشكلة على جيثب. - + Restore Default - استعادة الافتراضي + استعادة الإعدادات الافتراضية - + Clear مسح - + Conflicting Button Sequence - + تسلسل الأزرار المتضاربة - + The default button sequence is already assigned to: %1 - + تم تعيين تسلسل الزر الافتراضي بالفعل إلى: %1 - + The default key sequence is already assigned to: %1 %1 تم بالفعل تعيين تسلسل المفاتيح الافتراضي إلى @@ -2993,7 +3525,7 @@ These settings are experimental, and may cause black screens. If your games fail ConfigureInput - تعديل الأزرار + إعدادات الإدخال @@ -3052,12 +3584,12 @@ These settings are experimental, and may cause black screens. If your games fail Console Mode - وضع الوحدة + وضع وحدة التحكم Docked - مركب بالمنصة + الإرساء @@ -3073,7 +3605,7 @@ These settings are experimental, and may cause black screens. If your games fail Configure - تعديل + الإعدادات @@ -3083,7 +3615,7 @@ These settings are experimental, and may cause black screens. If your games fail Controllers - ذراع التحكم + اذرع التحكم @@ -3133,7 +3665,7 @@ These settings are experimental, and may cause black screens. If your games fail Defaults - افتراضي + الافتراضية @@ -3146,7 +3678,7 @@ These settings are experimental, and may cause black screens. If your games fail Configure Input - إعداد الإدخال + إعدادات الإدخال @@ -3168,7 +3700,7 @@ These settings are experimental, and may cause black screens. If your games fail L Body - + L Body @@ -3192,7 +3724,7 @@ These settings are experimental, and may cause black screens. If your games fail R Body - + R Body @@ -3254,7 +3786,7 @@ These settings are experimental, and may cause black screens. If your games fail Mouse - الفأرة + الماوس @@ -3277,12 +3809,12 @@ These settings are experimental, and may cause black screens. If your games fail Configure - تعديل + الإعدادات Ring Controller - + وحدة تحكم الحلقة @@ -3303,27 +3835,23 @@ These settings are experimental, and may cause black screens. If your games fail - Requires restarting eden - - - - Requires restarting yuzu - يتطلب إعادة تشغيل يوزو + Requires restarting Eden + يتطلب إعادة تشغيل إيدن Enable XInput 8 player support (disables web applet) - + (يعطل تطبيق الويب الصغير) XInput 8 تمكين دعم مشغل Enable UDP controllers (not needed for motion) - + (غير مطلوبة للحركة) UDP تمكين وحدات التحكم Controller navigation - + التنقل في وحدة التحكم @@ -3333,7 +3861,7 @@ These settings are experimental, and may cause black screens. If your games fail Enable direct Pro Controller driver [EXPERIMENTAL] - + المباشر [تجريبي] Pro Controller تمكين برنامج تشغيل @@ -3356,7 +3884,7 @@ These settings are experimental, and may cause black screens. If your games fail Form - الشكل + نموذج @@ -3371,52 +3899,52 @@ These settings are experimental, and may cause black screens. If your games fail Player 1 Profile - الملف الشخصي للاعب 1 + ملف تعريف اللاعب 1 Player 2 Profile - الملف الشخصي للاعب 2 + ملف تعريف اللاعب 2 Player 3 Profile - الملف الشخصي للاعب 3 + ملف تعريف اللاعب 3 Player 4 Profile - الملف الشخصي للاعب 4 + ملف تعريف اللاعب 4 Player 5 Profile - الملف الشخصي للاعب 5 + ملف تعريف اللاعب 5 Player 6 Profile - الملف الشخصي للاعب 6 + ملف تعريف اللاعب 6 Player 7 Profile - الملف الشخصي للاعب 7 + ملف تعريف اللاعب 7 Player 8 Profile - الملف الشخصي للاعب 8 + ملف تعريف اللاعب 8 Use global input configuration - استخدم تكوين الإدخال العالمي + استخدم إعدادات الإدخال العالمي Player %1 profile - %1 الملف الشخصي للاعب + %1 ملف تعريف اللاعب @@ -3424,7 +3952,7 @@ These settings are experimental, and may cause black screens. If your games fail Configure Input - إعداد الإدخال + إعدادات الإدخال @@ -3458,30 +3986,19 @@ These settings are experimental, and may cause black screens. If your games fail - + Left Stick العصا اليسرى - - - - - - - Up - فوق - - - - - - - - - - Left - يسار + + + + + + + Down + تحت @@ -3495,14 +4012,25 @@ These settings are experimental, and may cause black screens. If your games fail يمين - - - - - - - Down - تحت + + + + + + + + Left + يسار + + + + + + + + + Up + فوق @@ -3510,7 +4038,7 @@ These settings are experimental, and may cause black screens. If your games fail Pressed - الضغط + مضغوط @@ -3518,7 +4046,7 @@ These settings are experimental, and may cause black screens. If your games fail Modifier - معدل الضغطة + تعديل @@ -3542,21 +4070,13 @@ These settings are experimental, and may cause black screens. If your games fail Modifier Range: 0% - 0% :نطاق التعديل + 0% :تعديل النطاق D-Pad الأسهم - - - - - - SL - SL - @@ -3566,59 +4086,55 @@ These settings are experimental, and may cause black screens. If your games fail SR - - - - L - L + + + + + SL + SL - + ZL ZL + + + + + L + L + Minus - ناقص - - - - - Capture - التقاط + Minus - + Plus - زائد - - - - - Home - المنزل - - - - - - - R - R + Plus - + ZR ZR + + + + + + R + R + Motion 1 @@ -3629,6 +4145,18 @@ These settings are experimental, and may cause black screens. If your games fail Motion 2 الحركة 2 + + + + Capture + Capture + + + + + Home + Home + Face Buttons @@ -3641,10 +4169,10 @@ These settings are experimental, and may cause black screens. If your games fail X - - - Y - Y + + + B + B @@ -3653,263 +4181,264 @@ These settings are experimental, and may cause black screens. If your games fail A - - - B - B + + + Y + Y - + Right Stick العصا اليمنى Mouse panning - تحريك الفأرة + تحريك الماوس Configure - تعديل + الإعدادات - - - - + + + + Clear مسح - - - - - + + + + + [not set] - [ غير معد ] + [غير محدد] - - - + + + Invert button عكس الزر - - + + Toggle button زر التبديل - + Turbo button - + زر التوربو - - + + Invert axis عكس المحاور - - - + + + Set threshold - تعيين الحد الأدنى + تعيين الحد الفاصل - - + + Choose a value between 0% and 100% - + اختر قيمة بين 0% و 100% - + Toggle axis تبديل المحور - + Set gyro threshold - + تعيين الحد الفاصل الجيروسكوب - + Calibrate sensor معايرة الاستشعار - + Map Analog Stick - خريطة عصا التناظرية + تعيين عصا التحكم التناظرية - + After pressing OK, first move your joystick horizontally, and then vertically. To invert the axes, first move your joystick vertically, and then horizontally. - + بعد الضغط على "موافق"، حرّك عصا التحكم أفقيًا، ثم رأسيًا. +لعكس المحاور، حرّك عصا التحكم رأسيًا، ثم أفقيًا. - + Center axis - + المحور المركزي - - + + Deadzone: %1% المنطقة الميتة: %1% - - + + Modifier Range: %1% - %1% :نطاق التعديل + %1% :تعديل النطاق - - + + Pro Controller Pro Controller - + Dual Joycons جوي كون ثنائي - + Left Joycon - جوي كون يسار + جوي كون اليسرى - + Right Joycon - جوي كون يمين + جوي كون اليمنى - + Handheld محمول - + GameCube Controller - GameCube أداة تحكم + GameCube ذراع تحكم - + Poke Ball Plus Poke Ball Plus - + NES Controller - أداة تحكم NES + NES ذراع تحكم - + SNES Controller - أداة تحكم SNES + SNES ذراع تحكم - + N64 Controller - أداة تحكم N64 + N64 ذراع تحكم - + Sega Genesis Sega Genesis - + Start / Pause - بدء / إيقاف مؤقت + Start / Pause - + Z Z - + Control Stick عصا التحكم - + C-Stick C-عصا - + Shake! - هزة! + هزّ! - + [waiting] - [بانتظار الرد] + [انتظار] - + New Profile - الملف الشخصي الجديد + ملف تعريف جديد - + Enter a profile name: - :أدخل اسم الملف الشخصي + أدخل اسم ملف التعريف: - - + + Create Input Profile إنشاء ملف تعريف الإدخال - + The given profile name is not valid! - اسم الملف الشخصي المحدد غير صالح! + اسم ملف التعريف المحدد غير صالح! - + Failed to create the input profile "%1" "%1" فشل في إنشاء ملف تعريف الإدخال - + Delete Input Profile حذف ملف تعريف الإدخال - + Failed to delete the input profile "%1" "%1" فشل في مسح ملف تعريف الإدخال - + Load Input Profile تحميل ملف تعريف الإدخال - + Failed to load the input profile "%1" "%1" فشل في تحميل ملف تعريف الإدخال - + Save Input Profile حفظ ملف تعريف الإدخال - + Failed to save the input profile "%1" "%1" فشل في حفظ ملف تعريف الإدخال @@ -3929,16 +4458,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Defaults - افتراضي - - - - ConfigureLinuxTab - - - - Linux - Linux + الافتراضية @@ -3946,7 +4466,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Configure Motion / Touch - إعداد الحركة / اللمس + إعدادات الحركة / اللمس @@ -3956,7 +4476,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< UDP Calibration: - + UDP معايرة: @@ -3966,24 +4486,24 @@ To invert the axes, first move your joystick vertically, and then horizontally.< - + Configure - تعديل + الإعدادات Touch from button profile: - + اللمس من ملف تعريف الزر: CemuhookUDP Config - + CemuhookUDP إعدادات You may use any Cemuhook compatible UDP input source to provide motion and touch input. - + يمكنك استخدام أي مصدر إدخال UDP متوافق مع Cemuhook لتوفير إدخال الحركة واللمس. @@ -3996,113 +4516,95 @@ To invert the axes, first move your joystick vertically, and then horizontally.< :المنفذ - - Learn More - معرفة المزيد - - - - + + Test إختبار - + Add Server إضافة خادم - + Remove Server إزالة الخادم - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">معرفة المزيد</span></a> - - - + %1:%2 %1:%2 - yuzu - يوزو + + + + + + + Eden + إيدن - - <a href='https://eden-emulator.github.io/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - - - - + Port number has invalid characters يحتوي رقم المنفذ على أحرف غير صالحة - - - - - - - eden - - - - + Port has to be in range 0 and 65353 يجب أن يكون المنفذ في النطاق 0 و 65353 - + IP address is not valid غير صالح IP عنوان - + This UDP server already exists - + هذا موجود بالفعل UDP خادم - + Unable to add more than 8 servers غير قادر على إضافة أكثر من 8 خوادم - + Testing اختبار - + Configuring - تكوين + الإعدادات - + Test Successful تم الاختبار بنجاح - + Successfully received data from the server. تم استلام البيانات من الخادم بنجاح. - + Test Failed فشل الاختبار - + Could not receive valid data from the server.<br>Please verify that the server is set up correctly and the address and port are correct. تعذر تلقي بيانات صالحة من الخادم.<br> يرجى التحقق من إعداد الخادم بشكل صحيح ومن صحة العنوان والمنفذ. - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. - + أو ضبط المعايرة قيد التقدم. <br>يرجى الانتظار حتى الانتهاء UDP اختبار @@ -4110,7 +4612,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Configure mouse panning - تكوين تحريك الماوس + إعدادات حركة الماوس @@ -4120,7 +4622,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Can be toggled via a hotkey. Default hotkey is Ctrl + F9 - + Ctrl + F9 يمكن التبديل بينهما عبر مفتاح التشغيل السريع. مفتاح التشغيل السريع الافتراضي هو @@ -4149,12 +4651,12 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Deadzone counterweight - + موازن منطقة الميتة Counteracts a game's built-in deadzone - يتصدى للمنطقة الميتة المضمنة في اللعبة + يتصدى للمنطقة الميتة المدمجة في اللعبة @@ -4164,17 +4666,17 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Stick decay - + تدهور العصا Strength - + القوة Minimum - + الحد الأدنى @@ -4185,7 +4687,8 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Mouse panning works better with a deadzone of 0% and a range of 100%. Current values are %1% and %2% respectively. - + يعمل تحريك الماوس بشكل أفضل مع منطقة ميتة 0٪ ونطاق 100٪. + القيم الحالية هي %1٪ و%2٪ على التوالي. @@ -4208,7 +4711,7 @@ Current values are %1% and %2% respectively. Form - الشكل + نموذج @@ -4226,9 +4729,9 @@ Current values are %1% and %2% respectively. واجهة الشبكة - - None - الاسم + + Enable Airplane Mode + تمكين وضع الطيران @@ -4236,7 +4739,7 @@ Current values are %1% and %2% respectively. Dialog - + حوار @@ -4261,12 +4764,12 @@ Current values are %1% and %2% respectively. Format - الصيغة + التنسيق Version - إصدار + الإصدار @@ -4281,52 +4784,57 @@ Current values are %1% and %2% respectively. Some settings are only available when a game is not running. - بعض الإعدادات تتوفر عند عدم تشغيل اللعبة + بعض الإعدادات متوفرة فقط عندما لا تكون اللعبة قيد التشغيل. - + Add-Ons - الاضافات + الإضافات - + System النظام - + CPU المعالج - + Graphics الرسومات - + Adv. Graphics الرسومات المتقدمة - - GPU Extensions - + + Ext. Graphics + الرسومات الخارجية - + Audio الصوت - + Input Profiles ملفات تعريف الإدخال - Linux - Linux + Network + الشبكة + + + + Applets + التطبيقات الصغيرة @@ -4339,22 +4847,122 @@ Current values are %1% and %2% respectively. Form - الشكل + نموذج Add-Ons - الاضافات + الإضافات - + + Import Mod from ZIP + استيراد التعديل من ملف مضغوط + + + + Import Mod from Folder + استيراد التعديل من مجلد + + + Patch Name - اسم الرقعة + اسم التصحيح - + Version - إصدار + الإصدار + + + + Mod Install Succeeded + تم تثبيت التعديل بنجاح + + + + Successfully installed all mods. + تم تثبيت جميع التعديلات بنجاح. + + + + Mod Install Failed + فشل تثبيت التعديل + + + + Failed to install the following mods: + %1 +Check the log for details. + فشل تثبيت التعديلات التالية: + %1 +تحقق من السجل للحصول على التفاصيل. + + + + Mod Folder + مجلد التعديلات + + + + Zipped Mod Location + موقع التعديل المضغوط + + + + Zipped Archives (*.zip) + (*.zip) موقع التعديل المضغوط + + + + Invalid Selection + اختيار غير صالح + + + + Only mods, cheats, and patches can be deleted. +To delete NAND-installed updates, right-click the game in the game list and click Remove -> Remove Installed Update. + يمكن حذف الإضافات والغش والتصحيحات فقط. +لحذف التحديثات المثبتة على الذاكرة الداخلية، انقر بزر الماوس الأيمن على اللعبة في قائمة الألعاب ثم اختر إزالة -> إزالة التحديث المثبت. + + + + You are about to delete the following installed mods: + + أنت على وشك حذف التعديلات المثبتة التالية: + + + + + +Once deleted, these can NOT be recovered. Are you 100% sure you want to delete them? + +بمجرد حذفها، لا يمكن استعادتها. هل أنت متأكد 100% من رغبتك في حذفها؟ + + + + Delete add-on(s)? + حذف الإضافة(ات)؟ + + + + Successfully deleted + تم الحذف بنجاح + + + + Successfully deleted all selected mods. + تم حذف جميع التعديلات المحددة بنجاح. + + + + &Delete + &حذف + + + + &Open in File Manager + &فتح في مدير الملفات @@ -4362,17 +4970,17 @@ Current values are %1% and %2% respectively. Form - الشكل + نموذج Profiles - ملفات المستخدمين + ملفات التعريف Profile Manager - مدير الملف الشخصي + مدير ملف التعريف @@ -4385,32 +4993,17 @@ Current values are %1% and %2% respectively. اسم المستخدم - - Set Image - تعيين صورة - - - + Add إضافة - - Rename - تسمية - - - - Remove - إزالة - - - + Profile management is available only when game is not running. - إدارة الملف الشخصي متاحة فقط عندما لا تكون اللعبة قيد التشغيل. + إدارة الملف الشخصي متوفر فقط عندما لا تكون اللعبة قيد التشغيل. - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -4418,100 +5011,80 @@ Current values are %1% and %2% respectively. %2 - - Enter Username - أدخل اسم المستخدم - - - + Users المستخدمين - - Enter a username for the new user: - :أدخل اسم مستخدم للمستخدم الجديد - - - - Enter a new username: - :أدخل اسم مستخدم جديد - - - - Select User Image - اختر صورة المستخدم - - - - JPEG Images (*.jpg *.jpeg) - صور JPEG (*.jpg *.jpeg) - - - + Error deleting image خطأ في حذف الصورة - + Error occurred attempting to overwrite previous image at: %1. %1 حدث خطأ أثناء محاولة الكتابة فوق الصورة السابقة في - + Error deleting file خطأ في حذف الملف - + Unable to delete existing file: %1. %1 غير قادر على حذف الملف الموجود - + Error creating user image directory خطأ في إنشاء مجلد صورة المستخدم - + Unable to create directory %1 for storing user images. - + غير قادر على إنشاء الدليل %1 لتخزين صور المستخدم. - - Error copying user image - حدث خطأ أثناء نسخ صورة المستخدم + + Error saving user image + خطأ في حفظ صورة المستخدم - - Unable to copy image from %1 to %2 - + + Unable to save image to file + غير قادر على حفظ الصورة في الملف - - Error resizing user image - خطأ في تغيير حجم صورة المستخدم + + &Edit + &تعديل - - Unable to resize image - غير قادر على تغيير حجم الصورة + + &Delete + &حذف + + + + Edit User + تعديل المستخدم ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. حذف هذا المستخدم؟ سيتم حذف جميع بيانات الحفظ الخاصة بالمستخدم. - + Confirm Delete تأكيد الحذف - + Name: %1 UUID: %2 الاسم: %1 @@ -4523,17 +5096,17 @@ UUID: %2 Configure Ring Controller - + إعدادات حلقة وحدة التحكم 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. - + لاستخدام Ring-Con، قم إعداد اللاعب 1 كـ Joy-Con الأيمن (المادي والمحاكي)، واللاعب 2 كـ Joy-Con الأيسر (المادي الأيسر والمحاكي المزدوج) قبل بدء اللعبة. Virtual Ring Sensor Parameters - + معلمات مستشعر الحلقة الافتراضية @@ -4560,90 +5133,90 @@ UUID: %2 Enable Ring Input - + تمكين إدخال الحلقة - + Enable تفعيل Ring Sensor Value - + قيمة مستشعر الحلقة - + Not connected غير متصل Restore Defaults - استعادة الافتراضي + استعادة الإعدادات الافتراضية - + Clear مسح - + [not set] - [ غير معد ] + [غير محدد] - + Invert axis عكس المحاور - - + + Deadzone: %1% المنطقة الميتة: %1% - + Error enabling ring input - + حدث خطأ أثناء تمكين إدخال الحلقة - + Direct Joycon driver is not enabled لم يتم تمكين برنامج تشغيل جوي كون المباشر - + Configuring - تكوين + الإعدادات - + The current mapped device doesn't support the ring controller - - - - - The current mapped device doesn't have a ring attached - + الجهاز المُعيَّن حاليًا لا يدعم وحدة التحكم بالحلقة + The current mapped device doesn't have a ring attached + الجهاز المُعَيَّن حاليًا ليس به حلقة مُرفقة + + + The current mapped device is not connected الجهاز المعين الحالي غير متصل - + Unexpected driver result %1 %1 نتيجة برنامج التشغيل غير متوقع - + [waiting] - [بانتظار الرد] + [انتظار] @@ -4651,7 +5224,7 @@ UUID: %2 Form - الشكل + نموذج @@ -4665,9 +5238,9 @@ UUID: %2 النواة - + Warning: "%1" is not a valid language for region "%2" - + تحذير: "%1" ليست لغة صالحة للمنطقة "%2" @@ -4675,37 +5248,37 @@ UUID: %2 TAS - + TAS - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the eden website.</p></body></html> - + <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the user handbook.</p></body></html> + <html><head/><body><p>يقوم بقراءة مدخلات وحدة التحكم من البرامج النصية بنفس تنسيق البرامج النصية TAS-nx. <br/>للحصول على شرح أكثر تفصيلاً، يرجى الرجوع إلى دليل المستخدم.</p></body></html> To check which hotkeys control the playback/recording, please refer to the Hotkey settings (Configure -> General -> Hotkeys). - + للتحقق من مفاتيح الاختصار التي تتحكم في التشغيل/التسجيل، يرجى الرجوع إلى إعدادات مفاتيح الاختصار (الإعدادات-> عام -> مفاتيح الاختصار). WARNING: This is an experimental feature.<br/>It will not play back scripts frame perfectly with the current, imperfect syncing method. - + تحذير: هذه ميزة تجريبية.<br/>لن يتم تشغيل البرامج النصية بشكل مثالي مع طريقة المزامنة الحالية غير المثالية. Settings - إعدادات + الإعدادات Enable TAS features - + TAS تمكين ميزات Loop script - + نص برمجي متكرر @@ -4713,17 +5286,22 @@ UUID: %2 إيقاف التنفيذ مؤقتا أثناء التحميل - - Script Directory - + + Show recording dialog + عرض مربع حوار التسجيل - + + Script Directory + مجلد السكربت + + + Path المسار - + ... ... @@ -4731,14 +5309,14 @@ UUID: %2 ConfigureTasDialog - + TAS Configuration - + TAS تخصيص - + Select TAS Load Directory... - + TAS حدد مجلد تحميل... @@ -4746,12 +5324,12 @@ UUID: %2 Configure Touchscreen Mappings - تكوين تعيينات شاشة اللمس + إعدادات تعيينات شاشة اللمس Mapping: - :تخطيط أزرار + :تعيين @@ -4773,7 +5351,7 @@ UUID: %2 Click the bottom area to add a point, then press a button to bind. Drag points to change position, or double-click table cells to edit values. انقر على المنطقة السفلية لإضافة نقطة، ثم اضغط على زر للربط. -اسحب النقاط لتغيير موضعها، أو انقر نقرًا مزدوجًا فوق خلايا الجدول لتحرير القيم. +اسحب النقاط لتغيير الموضع، أو انقر نقرًا مزدوجًا على خلايا الجدول لتحرير القيم. @@ -4800,27 +5378,27 @@ Drag points to change position, or double-click table cells to edit values. New Profile - الملف الشخصي الجديد + ملف تعريف جديد Enter the name for the new profile. - أدخل اسم الملف الشخصي الجديد. + أدخل اسم ملف التعريف الجديد. Delete Profile - حذف الملف الشخصي + حذف ملف التعريف Delete profile %1? - %1 حذف الملف الشخصي + %1 حذف ملف التعريف Rename Profile - إعادة تسمية الملف الشخصي + إعادة تسمية ملف التعريف @@ -4838,31 +5416,27 @@ Drag points to change position, or double-click table cells to edit values. Configure Touchscreen - تكوين شاشة اللمس - - - Warning: The settings in this page affect the inner workings of yuzu's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - تحذير: تؤثر الإعدادات الموجودة في هذه الصفحة على الأعمال الداخلية لشاشة اللمس التي تمت محاكاتها في يوزو. قد يؤدي تغييرها إلى سلوك غير مرغوب فيه، مثل شاشة اللمس جزئيًا أو عدم عملها. يجب عليك استخدام هذه الصفحة فقط إذا كنت تعرف ما تفعله. + إعدادات شاشة اللمس - Warning: The settings in this page affect the inner workings of eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - + Warning: The settings in this page affect the inner workings of Eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. + تحذير: الإعدادات في هذه الصفحة تؤثر على طريقة عمل شاشة اللمس المحاكية في إيدن. تغييرها قد يؤدي إلى سلوك غير مرغوب فيه، مثل عدم عمل شاشة اللمس جزئيًا أو بالكامل. يجب استخدام هذه الصفحة فقط إذا كنت تعرف ما تفعله. Touch Parameters - + معايير اللمس Touch Diameter Y - + Y قطر اللمس Touch Diameter X - + X قطر اللمس @@ -4872,70 +5446,49 @@ Drag points to change position, or double-click table cells to edit values. Restore Defaults - استعادة الافتراضي + استعادة الإعدادات الافتراضية ConfigureUI - - - + + None لاشيء - - - Small (32x32) - صغير (32*32) - - Standard (64x64) - معياري (64*64) - - - - Large (128x128) - كبير (128*128) - - - - Full Size (256x256) - الحجم الكامل (256*256) - - - Small (24x24) صغير (24*24) - + Standard (48x48) - معياري (48*48) + قياسي (48*48) - + Large (72x72) كبير (72*72) - + Filename اسم الملف - + Filetype نوع الملف - + Title ID معرف العنوان - + Title Name اسم العنوان @@ -4945,7 +5498,7 @@ Drag points to change position, or double-click table cells to edit values. Form - الشكل + نموذج @@ -4960,7 +5513,7 @@ Drag points to change position, or double-click table cells to edit values. Note: Changing language will apply your configuration. - ملاحظة: سيؤدي تغيير اللغة إلى تطبيق التكوين الخاص بك. + ملاحظة: سيؤدي تغيير اللغة إلى تطبيق الإعدادات الخاصة بك. @@ -4995,7 +5548,7 @@ Drag points to change position, or double-click table cells to edit values. Show File Types Column - عرض عمود أنواع الملف + عرض عمود أنواع الملفات @@ -5004,71 +5557,66 @@ Drag points to change position, or double-click table cells to edit values. - Game Icon Size: - :حجم أيقونة اللعبة - - - Folder Icon Size: :حجم أيقونة المجلد - + Row 1 Text: :نص السطر 1 - + Row 2 Text: :نص السطر 2 - + Screenshots لقطات الشاشة - + Ask Where To Save Screenshots (Windows Only) السؤال عن مكان حفظ لقطات الشاشة (ويندوز فقط) - + Screenshots Path: :مسار لقطات الشاشة - + ... ... - + TextLabel - + تسمية النص - + Resolution: :الدقة - + Select Screenshots Path... أختر مسار لقطات الشاشة - + <System> <System> - + English - الإنكليزية الأمريكية (English) + الإنجليزية - + Auto (%1 x %2, %3 x %4) Screenshot width value تلقائي (%1 x %2, %3 x %4) @@ -5079,12 +5627,12 @@ Drag points to change position, or double-click table cells to edit values. Configure Vibration - تكوين الاهتزاز + إعدادات الاهتزاز Press any controller button to vibrate the controller. - اضغط على أي زر تحكم ليهتز جهاز التحكم. + اضغط على أي زر في جهاز التحكم لإحداث اهتزاز في الجهاز. @@ -5146,7 +5694,7 @@ Drag points to change position, or double-click table cells to edit values. Settings - إعدادات + الإعدادات @@ -5159,173 +5707,185 @@ Drag points to change position, or double-click table cells to edit values. Form - الشكل + نموذج Web - الشبكة - - - yuzu Web Service - خدمة الويب يوزو - - - By providing your username and token, you agree to allow yuzu to collect additional usage data, which may include user identifying information. - بتقديمك اسم المستخدم والرمز المميز الخاص بك، فأنك توافق بالسماح ليوزو بجمع بيانات استخدام إضافية، التي قد تحتوي على بيانات تعريف المستخدم. + الويب - eden Web Service - + Eden Web Service + خدمة ويب إيدن - - By providing your username and token, you agree to allow eden to collect additional usage data, which may include user identifying information. - - - - - Verify - تحقق - - - - Sign up - تسجيل - - - + Token: :الرمز - + Username: :اسم المستخدم - - What is my token? - ما هو الرمز الخاص بي؟ + + Generate + إنشاء - + Web Service configuration can only be changed when a public room isn't being hosted. - لا يمكن تغيير تكوين خدمة الويب إلا في حالة عدم استضافة غرفة عامة. + لا يمكن تغيير إعدادات خدمة الويب إلا عندما لا تكون هناك غرفة عامة مستضافة. - Telemetry - القياس عن بعد - - - Share anonymous usage data with the yuzu team - مشاركة معلومات الاستخدام المجهولة مع فريق يوزو - - - Learn more - معرفة المزيد - - - Telemetry ID: - :معرف القياس عن بعد - - - Regenerate - إعادة توليد - - - + Discord Presence - وجود ديسكورد + الحضور على ديسكورد - + Show Current Game in your Discord Status - إظهار اللعبة الحالية في حالة ديسكورد الخاصة بك - - - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">معرفة المزيد</span></a> - - - - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">تسجيل</span></a> - - - - <a href='https://evilperson1337.notion.site/Hosting-a-Room-Inside-of-Eden-20457c2edaf680108abac6215a79acdb'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - - - - - Warning - + عرض اللعبة الحالية في حالة ديسكورد الخاصة بك + - Verification is currently nonfunctional, instead generate a random 48-character string with only lowercase a-z. - - - - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">ماهو رمزي المميز؟</span></a> - - - Telemetry ID: 0x%1 - معرف القياس عن بعد: 0x%1 - - - Unspecified - غير محدد - - - Token not verified - لم يتم التحقق من الرمز المميز - - - - Unverified, please click Verify before saving configuration + All Good Tooltip - لم يتم التحقق منه، الرجاء النقر فوق "تحقق" قبل حفظ التكوين + كل شيء جيد - Verifying... - جاري التحقق - - - Verified + + Must be between 4-20 characters Tooltip - تم التحقق + يجب أن يكون بين 4-20 حرفًا - Verification failed + + Must be 48 characters, and lowercase a-z Tooltip - فشل التحقق - - - Verification failed - فشل التحقق - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - فشل التحقق. تأكد من إدخال الرمز المميز الخاص بك بشكل صحيح، ومن أن اتصالك بالإنترنت يعمل. + يجب أن يكون 48 حرفًا، وبأحرف صغيرة من a إلى z ControllerDialog - + Controller P1 P1 ذراع التحكم - + &Controller P1 &P1 ذراع التحكم + + DataDialog + + + Data Manager + مدير البيانات + + + + Deleting ANY data is IRREVERSABLE! + حذف أي بيانات أمر لا رجعة فيه! + + + + Shaders + التظليل + + + + UserNAND + UserNAND + + + + SysNAND + SysNAND + + + + Mods + التعديلات + + + + Saves + الحفظ + + + + DataWidget + + + Form + نموذج + + + + Tooltip + تلميح الأدوات + + + + Open with your system file manager + فتح باستخدام مدير ملفات النظام + + + + Delete all data in this directory. THIS IS 100% IRREVERSABLE! + حذف جميع البيانات الموجودة في هذا الدليل. هذا الإجراء لا رجعة فيه بنسبة 100%! + + + + Export all data in this directory. This may take a while! + تصدير جميع البيانات الموجودة في هذا المجلد. قد يستغرق ذلك بعض الوقت! + + + + Import data for this directory. This may take a while, and will delete ALL EXISTING DATA! + استيراد البيانات لهذا المجلد. قد يستغرق هذا بعض الوقت، وسيؤدي إلى حذف جميع البيانات الموجودة! + + + + Calculating... + يتم الحساب... + + + + DepsDialog + + + Eden Dependencies + تبعيات إيدن + + + + <html><head/><body><p><span style=" font-size:28pt;">Eden Dependencies</span></p></body></html> + <html><head/><body><p><span style=" font-size:28pt;">تبعيات إيدن</span></p></body></html> + + + + <html><head/><body><p>The projects that make Eden possible</p></body></html> + <html><head/><body><p>المشاريع التي تجعل إيدن ممكنة</p></body></html> + + + + Dependency + التبعية + + + + Version + الإصدار + + DirectConnect @@ -5341,7 +5901,7 @@ Drag points to change position, or double-click table cells to edit values. <html><head/><body><p>Server address of the host</p></body></html> - + <html><head/><body><p>عنوان خادم المضي</p></body></html> @@ -5351,7 +5911,7 @@ Drag points to change position, or double-click table cells to edit values. <html><head/><body><p>Port number the host is listening on</p></body></html> - + <html><head/><body><p>رقم المنفذ الذي يستمع إليه المضي</p></body></html> @@ -5387,1680 +5947,363 @@ Drag points to change position, or double-click table cells to edit values. Username is not valid. Must be 4 to 20 alphanumeric characters. - اسم المستخدم غير صالح. يجب ان يتكون من 4 الى 20 حرف ورقم. + اسم المستخدم غير صالح. يجب أن يكون من 4 إلى 20 حرفًا أبجديًا رقميًا. Room name is not valid. Must be 4 to 20 alphanumeric characters. - اسم الغرفة غير صالح. يجب ان يتكون من 4 الى 20 حرف ورقم. + اسم الغرفة غير صالح. يجب أن يكون بين 4 إلى 20 حرفًا أو رقمًا. Username is already in use or not valid. Please choose another. - اسم المستخدم مستخدم من قبل أو غير صالح. رجاء اختر غيره. + اسم المستخدم مستخدم بالفعل أو غير صالح. يرجى اختيار اسم آخر. IP is not a valid IPv4 address. - IP غير صالح كعنوان IPv4. + IPv4 غير صالح لبروتوكول IP عنوان Port must be a number between 0 to 65535. - المنفذ يجب ان يكون رقم بين 0 و 65535. + يجب أن يكون المنفذ رقماً بين 0 و65535. You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - يجب عليك اختيار لعبة مفضلة لاستضافة غرفة. إذا لم يكن لديك أي ألعاب في قائمة الألعاب الخاصة بك حتى الآن، قم بإضافة مجلد الألعاب من خلال النقر على أيقونة الزائد في قائمة الألعاب. + يجب عليك اختيار لعبة مفضلة لاستضافة غرفة. إذا لم يكن لديك أي ألعاب في قائمة ألعابك بعد، أضف مجلد لعبة بالنقر على أيقونة الزائد في قائمة الألعاب. Unable to find an internet connection. Check your internet settings. - غير قادر على العثور على اتصال بالإنترنت. تحقق من إعدادات الإنترنت لديك. + غير قادر على العثور على اتصال بالإنترنت. تحقق من إعدادات الإنترنت الخاصة بك. Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - غير قادر على الاتصال بالمضيف. تأكد من صحة إعدادات الاتصال. إذا كنت لا تزال غير قادر على الاتصال، فاتصل بمضيف الغرفة وتأكد من تكوين المضيف بشكل صحيح مع إعادة توجيه المنفذ الخارجي. + غير قادر على الاتصال بالمضيف. تحقق من أن إعدادات الاتصال صحيحة. إذا لم تتمكن من الاتصال بعد، اتصل بمضيف الغرفة وتأكد من أن المضيف مُهيأ بشكل صحيح مع إعادة توجيه المنفذ الخارجي. Unable to connect to the room because it is already full. - غير قادر على الاتصال بالغرفة لأنها ممتلئة بالفعل. + غير قادر على الاتصال بالغرفة لأنها ممتلئة بالفعل. - Creating a room failed. Please retry. Restarting eden might be necessary. - + Creating a room failed. Please retry. Restarting Eden might be necessary. + فشل إنشاء الغرفة. يرجى المحاولة مرة أخرى. قد يكون من الضروري إعادة تشغيل إيدن. The host of the room has banned you. Speak with the host to unban you or try a different room. - لقد قام مضيف الغرفة بحظرك. تحدث مع المضيف لإلغاء الحظر عليك أو تجربة غرفة مختلفة. + لقد قام مضيف الغرفة بحظرك. تحدث مع المضيف لإلغاء الحظر أو جرب غرفة أخرى. - Version mismatch! Please update to the latest version of eden. If the problem persists, contact the room host and ask them to update the server. - + Version mismatch! Please update to the latest version of Eden. If the problem persists, contact the room host and ask them to update the server. + عدم تطابق الإصدار! يرجى التحديث إلى أحدث إصدار من إيدن. إذا استمرت المشكلة، اتصل بمضيف الغرفة واطلب منه تحديث الخادم. Incorrect password. - كلمة مرور غير صحيحة. + كلمة المرور غير صحيحة. An unknown error occurred. If this error continues to occur, please open an issue - حدث خطأ غير معروف. إذا استمر حدوث المشكلة، رجاء افتح مشكلة + حدث خطأ غير معروف. إذا استمر حدوث هذا الخطأ، يرجى فتح مشكلة Connection to room lost. Try to reconnect. - فقد الاتصال مع الغرفة. حاول إعادة الاتصال. + تم فقدان الاتصال بالغرفة. حاول إعادة الاتصال. You have been kicked by the room host. - طردت من قبل مستضيف الغرفة. + لقد تم طردك من قبل مضيف الغرفة. IP address is already in use. Please choose another. - عنوان IP مستخدم مسبقا. رجاء اختر غيره. + قيد الاستخدام بالفعل. يرجى اختيار عنوان آخر IP عنوان. You do not have enough permission to perform this action. - ليست لديك الصلاحية الكافية لتنفيذ هذا الفعل. + ليس لديك الإذن الكافي لتنفيذ هذا الإجراء. The user you are trying to kick/ban could not be found. They may have left the room. - المستخدم الذي تحاول طرده/حظره غير موجود. -قد يكون ترك الغرفة. + لم يتم العثور على المستخدم الذي تحاول طرده/حظره. +ربما يكون قد غادر الغرفة. No valid network interface is selected. Please go to Configure -> System -> Network and make a selection. - لم يتم تحديد واجهة شبكة صالحة. -يرجى الانتقال إلى التكوين -> النظام -> الشبكة وتحديد الاختيار. + لم يتم تحديد واجهة شبكة صالحة. +يرجى الانتقال إلى الإعدادات -> النظام -> الشبكة وتحديد خيار. Error - خطأ - - - - GMainWindow - - Telemetry - القياس عن بعد - - - - Broken Vulkan Installation Detected - معطل Vulkan تم اكتشاف تثبيت - - - - Running a game - TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping - تشغيل لعبة - - - - Loading Web Applet... - جارٍ تحميل برنامج الويب... - - - - - Disable Web Applet - تعطيل برنامج الويب - - - - 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.) - - - - - The amount of shaders currently being built - كمية التظليل التي يتم بناؤها حاليا - - - - The current selected resolution scaling multiplier. - مضاعف قياس الدقة المحدد الحالي. - - - - Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. - سرعة المحاكاة الحالية. تشير القيم الأعلى أو الأقل من 100% إلى أن المحاكاة تعمل بشكل أسرع أو أبطأ من سويتش. - - - - How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. - كم عدد الإطارات في الثانية التي تعرضها اللعبة حاليًا. سيختلف هذا من لعبة إلى أخرى ومن مشهد إلى آخر. - - - - 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. - - - - - Unmute - إلغاء الكتم - - - - Mute - كتم - - - - Reset Volume - إعادة ضبط مستوى الصوت - - - - &Clear Recent Files - &مسح الملفات الحديثة - - - - &Continue - &استأنف - - - - &Pause - &إيقاف مؤقت - - - - Warning Outdated Game Format - تحذير من تنسيق اللعبة القديم - - - - - Error while loading ROM! - ROM خطأ أثناء تحميل - - - - The ROM format is not supported. - غير مدعوم ROM تنسيق. - - - - An error occurred initializing the video core. - حدث خطأ أثناء تهيئة مركز الفيديو. - - - - Error while loading ROM! %1 - %1 signifies a numeric error code. - - - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://eden-emulator.github.io/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - - - - - Game Updates Warning - - - - - The game you are trying to launch is known to have performance or booting issues when updates are applied. Please try increasing the memory layout to 6GB or 8GB if any issues occur.<br><br>Press "OK" to continue launching, or "Cancel" to cancel the launch. - - - - - Don't show again for this game - - - - - 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.<br><br>For an explanation of the various Switch formats eden supports, <a href='https://eden-emulator.github.io/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - - - - - eden 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: <a href='https://eden-emulator.github.io/help/reference/log-files/'>How to Upload the Log File</a>. - - - - - %1<br>Please redump your files or ask on Discord for help. - %1 signifies an error string. - - - - - An unknown error occurred. Please see the log for more details. - حدث خطأ غير معروف. يرجى الاطلاع على السجل لمزيد من التفاصيل. - - - - (64-bit) - (64-bit) - - - - (32-bit) - (32-bit) - - - - %1 %2 - %1 is the title name. %2 indicates if the title is 64-bit or 32-bit - %1 %2 - - - - Closing software... - إغلاق البرامج - - - - Save Data - حفظ البيانات - - - - Mod Data - - - - - Error Opening %1 Folder - %1 حدث خطأ أثناء فتح المجلد - - - - - Folder does not exist! - المجلد غير موجود - - - - Error Opening Transferable Shader Cache - - - - - Failed to create the shader cache directory for this title. - فشل إنشاء مجلد ذاكرة التخزين المؤقت للتظليل لهذا العنوان. - - - - Error Removing Contents - خطأ في إزالة المحتويات - - - - Error Removing Update - خطأ في إزالة التحديث - - - - Error Removing DLC - DLC خطأ في إزالة - - - - Remove Installed Game Contents? - هل تريد إزالة محتويات اللعبة المثبتة؟ - - - - Remove Installed Game Update? - هل تريد إزالة تحديث اللعبة المثبت؟ - - - - Remove Installed Game DLC? - للعبة المثبتة؟ DLC إزالة المحتوى القابل للتنزيل - - - - Remove Entry - إزالة الإدخال - - - - - - - - - Successfully Removed - تمت الإزالة بنجاح - - - - Successfully removed the installed base game. - تمت إزالة اللعبة الأساسية المثبتة بنجاح. - - - - The base game is not installed in the NAND and cannot be removed. - ولا يمكن إزالتها NAND لم يتم تثبيت اللعبة الأساسية في - - - - Successfully removed the installed update. - تمت إزالة التحديث المثبت بنجاح. - - - - There is no update installed for this title. - لا يوجد تحديث مثبت لهذا العنوان. - - - - There are no DLC installed for this title. - مثبت لهذا العنوان DLC لا يوجد أي محتوى قابل للتنزيل. - - - - Successfully removed %1 installed DLC. - - - - - Delete OpenGL Transferable Shader Cache? - - - - - Delete Vulkan Transferable Shader Cache? - - - - - Delete All Transferable Shader Caches? - - - - - Remove Custom Game Configuration? - إزالة تكوين اللعبة المخصصة؟ - - - - Remove Cache Storage? - إزالة تخزين ذاكرة التخزين المؤقت؟ - - - - Remove File - إزالة الملف - - - - Remove Play Time Data - إزالة بيانات زمن اللعب - - - - Reset play time? - إعادة تعيين زمن اللعب؟ - - - - - Error Removing Transferable Shader Cache - - - - - - A shader cache for this title does not exist. - - - - - Successfully removed the transferable shader cache. - - - - - Failed to remove the transferable shader cache. - - - - - Error Removing Vulkan Driver Pipeline Cache - - - - - Failed to remove the driver pipeline cache. - - - - - - Error Removing Transferable Shader Caches - - - - - Successfully removed the transferable shader caches. - - - - - Failed to remove the transferable shader cache directory. - - - - - - Error Removing Custom Configuration - حدث خطأ أثناء إزالة التكوين المخصص - - - - A custom configuration for this title does not exist. - لا يوجد تكوين مخصص لهذا العنوان. - - - - Successfully removed the custom game configuration. - تمت إزالة تكوين اللعبة المخصص بنجاح. - - - - Failed to remove the custom game configuration. - فشل إزالة تكوين اللعبة المخصص. - - - - - RomFS Extraction Failed! - - - - - There was an error copying the RomFS files or the user cancelled the operation. - - - - - Full - كامل - - - - Skeleton - - - - - Select RomFS Dump Mode - - - - - Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. - - - - - There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root - - - - - Extracting RomFS... - - - - - - - - - Cancel - إلغاء - - - - RomFS Extraction Succeeded! - - - - - - - The operation completed successfully. - أكتملت العملية بنجاح - - - - Integrity verification couldn't be performed! - لا يمكن إجراء التحقق من سلامة - - - - File contents were not checked for validity. - لم يتم التحقق من صحة محتويات الملف. - - - - - Verifying integrity... - التحقق من سلامة - - - - - Integrity verification succeeded! - نجح التحقق من سلامة - - - - - Integrity verification failed! - فشل التحقق من سلامة - - - - File contents may be corrupt. - قد تكون محتويات الملف تالفة. - - - - - - - Create Shortcut - إنشاء إختصار - - - - Do you want to launch the game in fullscreen? - - - - - Successfully created a shortcut to %1 - %1 تم إنشاء اختصار بنجاح إلى - - - - This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - - - - - Failed to create a shortcut to %1 - - - - - Create Icon - إنشاء أيقونة - - - - Cannot create icon file. Path "%1" does not exist and cannot be created. - - - - - Error Opening %1 - %1 خطأ في فتح - - - - Select Directory - حدد المجلد - - - - Properties - خصائص - - - - The game properties could not be loaded. - تعذر تحميل خصائص اللعبة. - - - - Switch Executable (%1);;All Files (*.*) - %1 is an identifier for the Switch executable file extensions. - - - - - Load File - تشغيل المِلَفّ - - - - Open Extracted ROM Directory - - - - - Invalid Directory Selected - تم تحديد مجلد غير صالح - - - - The directory you have selected does not contain a 'main' file. - لا يحتوي المجلد الذي حددته على ملف رئيسي - - - - Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - - - - - Install Files - تثبيت الملفات - - - - %n file(s) remaining - - - - - - - - - - - - Installing file "%1"... - "%1" تثبيت الملف - - - - - Install Results - تثبيت النتائج - - - - To avoid possible conflicts, we discourage users from installing base games to the NAND. -Please, only use this feature to install updates and DLC. - - - - - %n file(s) were newly installed - - - - - - - - - - - - - %n file(s) were overwritten - - - - - - - - - - - - - %n file(s) failed to install - - - - - - - - - - - - - System Application - تطبيق النظام - - - - System Archive - أرشيف النظام - - - - System Application Update - تحديث تطبيق النظام - - - - Firmware Package (Type A) - - - - - Firmware Package (Type B) - - - - - Game - اللعبة - - - - Game Update - تحديث اللعبة - - - - Game DLC - - - - - Delta Title - - - - - Select NCA Install Type... - - - - - Please select the type of title you would like to install this NCA as: -(In most instances, the default 'Game' is fine.) - - - - - Failed to Install - فشل فى التثبيت - - - - The title type you selected for the NCA is invalid. - - - - - File not found - لم يتم العثور على الملف - - - - File "%1" not found - - - - - OK - موافق - - - - - Hardware requirements not met - لم يتم استيفاء متطلبات الأجهزة - - - - - Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled. - لا يلبي نظامك متطلبات الأجهزة الموصى بها. تم تعطيل الإبلاغ عن التوافق. - - - - Missing yuzu Account - حساب يوزو مفقود - - - - In order to submit a game compatibility test case, you must link your eden account.<br><br/>To link your eden account, go to Emulation &gt; Configuration &gt; Web. - - - - - Install decryption keys and restart eden before attempting to install firmware. - - - - - Firmware installation cancelled, firmware may be in bad state, restart eden or re-install firmware. - - - - - Encryption keys are missing. - - - - - Are you sure you want to close eden? - - - - - - - eden - - - - - The currently running application has requested eden to not exit. - -Would you like to bypass this and exit anyway? - - - - - Error opening URL - خطأ في فتح URL - - - - Unable to open the URL "%1". - - - - - TAS Recording - - - - - Overwrite file of player 1? - الكتابة فوق ملف اللاعب 1؟ - - - - Invalid config detected - تم اكتشاف تكوين غير صالح - - - - Handheld controller can't be used on docked mode. Pro controller will be selected. - - - - - - Amiibo - أميبو - - - - - The current amiibo has been removed - أميبو اللعبة الحالية تمت إزالته - - - - Error خطأ - - - - The current game is not looking for amiibos - اللعبة الحالية لا تبحث عن أميبو - - - - Amiibo File (%1);; All Files (*.*) - - - - - Load Amiibo - تحميل أميبو - - - - Error loading Amiibo data - خطأ أثناء تحميل بيانات أميبو - - - - The selected file is not a valid amiibo - الملف المحدد ليس ملف أميبو صالحًا - - - - The selected file is already on use - الملف المحدد قيد الاستخدام بالفعل - - - - An unknown error occurred - حدث خطأ غير معروف - - - - - Verification failed for the following files: - -%1 - - - - - Keys not installed - - - - - Select Dumped Firmware Source Location - - - - - Installing Firmware... - - - - - - - - Firmware install failed - - - - - Unable to locate potential firmware NCA files - - - - - Failed to delete one or more firmware file. - - - - - One or more firmware files failed to copy into NAND. - - - - - Firmware integrity verification failed! - - - - - Select Dumped Keys Location - - - - - - - Decryption Keys install failed - - - - - prod.keys is a required decryption key file. - - - - - One or more keys failed to copy. - - - - - Decryption Keys install succeeded - - - - - Decryption Keys were successfully installed - - - - - Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. - - - - - - - - - - - No firmware available - لا توجد برامج ثابتة متاحة - - - - Please install the firmware to use the Album applet. - الرجاء تثبيت البرنامج الثابت لاستخدام التطبيق الصغير للألبوم. - - - - Album Applet - التطبيق الصغير للألبوم - - - - Album applet is not available. Please reinstall firmware. - التطبيق الصغير للألبوم غير متوفر. الرجاء إعادة تثبيت البرامج الثابتة. - - - - Please install the firmware to use the Cabinet applet. - الرجاء تثبيت البرنامج الثابت لاستخدام برنامج الخزانة. - - - - Cabinet Applet - التطبيق الصغير للخزانة - - - - Cabinet applet is not available. Please reinstall firmware. - التطبيق الصغير للخزانة غير متوفر. الرجاء إعادة تثبيت البرامج الثابتة. - - - - Please install the firmware to use the Mii editor. - Mii الرجاء تثبيت البرنامج الثابت لاستخدام محرر - - - - Mii Edit Applet - Mii تحرير التطبيق الصغير - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Controller Menu. - - - - - Controller Applet - تطبيق التحكم - - - - Controller Menu is not available. Please reinstall firmware. - قائمة التحكم غير متوفرة. الرجاء إعادة تثبيت فريموير - - - - Please install the firmware to use the Home Menu. - - - - - - Home Menu Applet - - - - - - Home Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use Starter. - - - - - Starter Applet - - - - - Starter is not available. Please reinstall firmware. - - - - - Please install firmware to use the home menu. - - - - - Capture Screenshot - لقطة شاشة - - - - PNG Image (*.png) - - - - - Update Available - - - - - Update %1 for Eden is available. -Would you like to download it? - - - - - TAS state: Running %1/%2 - - - - - TAS state: Recording %1 - - - - - TAS state: Idle %1/%2 - - - - - TAS State: Invalid - - - - - &Stop Running - &إيقاف التشغيل - - - - &Start - &بدء - - - - Stop R&ecording - &إيقاف التسجيل - - - - R&ecord - &تسجيل - - - - Building: %n shader(s) - - - - - - - - - - - - Scale: %1x - %1 is the resolution scaling factor - - - - - Speed: %1% / %2% - - - - - Speed: %1% - - - - - Game: %1 FPS - - - - - Frame: %1 ms - - - - - %1 %2 - %1 %2 - - - - - FSR - FSR - - - - NO AA - NO AA - - - - VOLUME: MUTE - الصوت: كتم الصوت - - - - VOLUME: %1% - Volume percentage (e.g. 50%) - - - - - Derivation Components Missing - - - - - Select RomFS Dump Target - - - - - Please select which RomFS you would like to dump. - - - - Are you sure you want to close yuzu? - هل أنت متأكد أنك تريد إغلاق يوزو؟ - - - yuzu - يوزو - - - - Are you sure you want to stop the emulation? Any unsaved progress will be lost. - هل أنت متأكد من أنك تريد إيقاف المحاكاة؟ سيتم فقدان أي تقدم غير محفوظ - - - The currently running application has requested yuzu to not exit. - -Would you like to bypass this and exit anyway? - لقد طلب التطبيق قيد التشغيل حاليًا من يوزو عدم الخروج. - -هل ترغب في تجاوز هذا والخروج على أية حال؟ - - - - None - لا شيء - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Nearest - Nearest - - - - Bilinear - Bilinear - - - - Bicubic - Bicubic - - - - Gaussian - Gaussian - - - - ScaleForce - ScaleForce - - - - Area - - - - - Docked - مركب بالمنصة - - - - Handheld - محمول - - - - Normal - عادي - - - - High - عالي - - - - Extreme - - - - - Vulkan - Vulkan - - - - OpenGL - OpenGL - - - - Null - قيمه خاليه - - - - GLSL - GLSL - - - - GLASM - GLASM - - - - SPIRV - SPIRV - GRenderWindow - - + + OpenGL not available! - غير متوفر! OpenGL + OpenGL غير متوفر! - + OpenGL shared contexts are not supported. - + OpenGL لا يتم دعم السياقات المشتركة - yuzu has not been compiled with OpenGL support. - لم يتم تجميع يوزو بدعم OpenGL. + + Eden has not been compiled with OpenGL support. + OpenGL لم يتم تجميع إيدن بدعم - - eden has not been compiled with OpenGL support. - - - - - + + Error while initializing OpenGL! - حدث خطأ أثناء تهيئة OpenGL + OpenGL حدث خطأ أثناء تهيئة - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. - + أو قد لا يكون لديك أحدث برنامج تشغيل للرسومات OpenGL قد لا تدعم بطاقة الرسومات الخاصة بك - + Error while initializing OpenGL 4.6! - + OpenGL 4.6 حدث خطأ أثناء تهيئة - + Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 - + أو قد لا يكون لديك أحدث برنامج تشغيل للرسومات OpenGL 4.6 قد لا تدعم بطاقة الرسومات الخاصة بك.<br><br>GL Renderer:<br>%1 - + Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2 - + قد لا تدعم وحدة معالجة الرسومات لديك ملحقًا واحدًا أو أكثر من ملحقات OpenGL المطلوبة. يُرجى التأكد من تثبيت أحدث برنامج تشغيل للرسومات.<br><br>GL Renderer:<br>1%<br><br>إضافات غير مدعومة: <br>2% GameList - + + &Add New Game Directory + &إضافة مجلد ألعاب جديد + + + Favorite مفضلة - + Start Game بدء اللعبة - + Start Game without Custom Configuration بدء اللعبة بدون الإعدادات المخصصة - + Open Save Data Location فتح موقع بيانات الحفظ - + Open Mod Data Location فتح موقع بيانات التعديلات - + Open Transferable Pipeline Cache - + ذاكرة التخزين المؤقتة المفتوحة القابلة للتحويل - + + Link to Ryujinx + Ryujinx ربط بـ + + + Remove إزالة - + Remove Installed Update إزالة التحديث المثبت - + Remove All Installed DLC - المثبت DLC إزالة كافة محتوى + إزالة جميع المحتويات القابلة للتنزيل المثبتة - + Remove Custom Configuration - إزالة التكوين المخصص + إزالة الإعدادات المخصصة - - Remove Play Time Data - إزالة بيانات زمن اللعب - - - + Remove Cache Storage - إزالة تخزين ذاكرة التخزين المؤقت + إزالة تخزين ذاكرة التخزين المؤقتة - + Remove OpenGL Pipeline Cache - + OpenGL إزالة ذاكرة التخزين المؤقتة لخط أنابيب - + Remove Vulkan Pipeline Cache - + Vulkan إزالة ذاكرة التخزين المؤقتة لخط أنابيب - + Remove All Pipeline Caches - + إزالة جميع ذاكرات التخزين المؤقتة لخط الأنابيب - + Remove All Installed Contents إزالة كافة المحتويات المثبتة - - + + Manage Play Time + إدارة زمن اللعب + + + + Edit Play Time Data + تعديل بيانات زمن التشغيل + + + + Remove Play Time Data + إزالة بيانات زمن اللعب + + + + Dump RomFS - + RomFS تفريغ - + Dump RomFS to SDMC - + SDMC إلى RomFS تفريغ - + Verify Integrity - التحقق من سلامة + التحقق من السلامة - + Copy Title ID to Clipboard نسخ معرف العنوان إلى الحافظة - + Navigate to GameDB entry - + انتقل إلى إدخال قاعدة بيانات الألعاب - + Create Shortcut إنشاء إختصار - + Add to Desktop إضافة إلى سطح المكتب - + Add to Applications Menu إضافة إلى قائمة التطبيقات - + Configure Game - + إعدادات اللعبة - Properties - خصائص - - - + Scan Subfolders مسح الملفات الداخلية - + Remove Game Directory إزالة مجلد اللعبة - + ▲ Move Up ▲ نقل للأعلى - + ▼ Move Down ▼ نقل للأسفل - + Open Directory Location فتح موقع المجلد - + Clear مسح - + Name الاسم - + Compatibility التوافق - + Add-ons الإضافات - + File type نوع الملف - + Size الحجم - + Play time زمن اللعب @@ -7068,70 +6311,70 @@ Would you like to bypass this and exit anyway? GameListItemCompat - + Ingame في اللعبة - + Game starts, but crashes or major glitches prevent it from being completed. تبدأ اللعبة، لكن الأعطال أو الأخطاء الرئيسية تمنعها من الاكتمال. - + Perfect مثالي - + Game can be played without issues. يمكن لعب اللعبة بدون مشاكل. - + Playable قابل للعب - + Game functions with minor graphical or audio glitches and is playable from start to finish. تحتوي وظائف اللعبة على بعض الأخطاء الرسومية أو الصوتية البسيطة ويمكن تشغيلها من البداية إلى النهاية. - + Intro/Menu مقدمة/القائمة - + Game loads, but is unable to progress past the Start Screen. يتم تحميل اللعبة، ولكنها غير قادرة على التقدم بعد شاشة البدء. - + Won't Boot لا تشتغل - + The game crashes when attempting to startup. تعطل اللعبة عند محاولة بدء التشغيل. - + Not Tested لم تختبر - + The game has not yet been tested. - اللعبة لم يتم اختبارها بعد. + لم يتم اختبار اللعبة بعد. GameListPlaceholder - + Double-click to add a new folder to the game list انقر نقرًا مزدوجًا لإضافة مجلد جديد إلى قائمة الألعاب @@ -7139,26 +6382,19 @@ Would you like to bypass this and exit anyway? GameListSearchField - + %1 of %n result(s) - - - - - - - - + %1 من %n نتيجة (نتائج)%1 من %n نتيجة (نتائج)%1 من %n نتيجة (نتائج)%1 من %n نتيجة (نتائج)%1 من %n نتيجة (نتائج)%1 من %n نتيجة (نتائج) - + Filter: - :مرشح + :تصفية - + Enter pattern to filter - أدخل نمط للمرشح + أدخل النمط المطلوب لتصفية النتائج @@ -7176,7 +6412,7 @@ Would you like to bypass this and exit anyway? Preferred Game - لعبة مفضلة + اللعبة المفضلة @@ -7191,7 +6427,7 @@ Would you like to bypass this and exit anyway? (Leave blank for open game) - (اتركه فارغا للعبة مفتوحة) + (اتركه فارغًا للعبة مفتوحة) @@ -7226,242 +6462,257 @@ Would you like to bypass this and exit anyway? Host Room - غرفة المضيفة + غرفة المضيف HostRoomWindow - + Error خطأ - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. + + Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid Eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. Debug Message: - + فشل في الإعلان عن الغرفة في الردهة العامة. من أجل استضافة غرفة بشكل عام، يجب أن يكون لديك حساب إيدن صالح مُكوَّن في المحاكاة -> الإعدادات -> الويب. إذا كنت لا ترغب في نشر الغرفة في الردهة العامة، فاختر "غير مدرجة" بدلاً من ذلك. +رسالة تصحيح الأخطاء: Hotkeys - + Audio Mute/Unmute كتم الصوت/إلغاء كتم الصوت - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Main Window النافذة الرئيسية - + Audio Volume Down خفض مستوى الصوت - + Audio Volume Up رفع مستوى الصوت - + Capture Screenshot لقطة شاشة - + Change Adapting Filter - + تغيير مرشح التكيف - + Change Docked Mode تغيير وضع الإرساء - - Change GPU Accuracy - + + Change GPU Mode + تغيير وضع وحدة معالجة الرسومات - + Configure - تعديل + الإعدادات - + Configure Current Game - + إعدادات اللعبة الحالية - + Continue/Pause Emulation استأنف/إيقاف مؤقت للمحاكاة - + Exit Fullscreen الخروج من وضع ملء الشاشة - Exit yuzu - الخروج من يوزو + + Exit Eden + خروج من إيدن - - Exit eden - - - - + Fullscreen ملء الشاشة - + Load File تحميل الملف - + Load/Remove Amiibo تحميل/إزالة أميبو - - Multiplayer Browse Public Game Lobby - + + Browse Public Game Lobby + تصفح قائمة الألعاب العامة - - Multiplayer Create Room - + + Create Room + إنشاء غرفة - - Multiplayer Direct Connect to Room - + + Direct Connect to Room + اتصال مباشر بالغرفة - - Multiplayer Leave Room - + + Leave Room + مغادرة الغرفة - - Multiplayer Show Current Room - + + Show Current Room + عرض الغرفة الحالية - + Restart Emulation إعادة تشغيل المحاكاة - + Stop Emulation إيقاف المحاكاة - + TAS Record - + TAS سجل - + TAS Reset - + TAS إعادة تعيين - + TAS Start/Stop - + TAS بدء/إيقاف - + Toggle Filter Bar - + تبديل شريط التصفية - + Toggle Framerate Limit تبديل حد معدل الإطارات - + + Toggle Turbo Speed + تبديل سرعة تيربو + + + + Toggle Slow Speed + تبديل السرعة البطيئة + + + Toggle Mouse Panning - + تحريك الماوس - + Toggle Renderdoc Capture - + Renderdoc تبديل التقاط - + Toggle Status Bar تبديل شريط الحالة + + + Toggle Performance Overlay + تبديل طبقة الأداء + InstallDialog - - - Please confirm these are the files you wish to install. - الرجاء تأكيد هذه هي الملفات التي ترغب في تثبيتها. - - Installing an Update or DLC will overwrite the previously installed one. - إلى استبدال التحديث المثبت مسبقًا DLC سيؤدي تثبيت التحديث أو المحتوى القابل للتنزيل + Please confirm these are the files you wish to install. + يرجى التأكد من أن هذه هي الملفات التي ترغب في تثبيتها. - + + Installing an Update or DLC will overwrite the previously installed one. + سيؤدي تثبيت تحديث أو محتوى قابل للتنزيل إلى استبدال المحتوى المثبت مسبقًا. + + + Install تثبيت - + Install Files to NAND - تثبيت الملفات الى NAND + تثبيت الملفات في الذاكرة الداخلية LimitableInputDialog - - The text can't contain any of the following characters: + + The text can't contain any of the following characters: %1 لا يمكن أن يحتوي النص على أي من الأحرف التالية: %1 @@ -7477,7 +6728,7 @@ Debug Message: Loading Shaders %v out of %m - %m من %v جاري تحميل التظليل + %m من %v جارٍ تحميل التظليل @@ -7485,22 +6736,22 @@ Debug Message: 5m 4s الوقت المقدر - + Loading... - جاري التحميل... + جارٍ التحميل... - + Loading Shaders %1 / %2 - %1 / %2 جاري تحميل التظليل + %1 / %2 جارٍ تحميل التظليل - + Launching... - يتم بدء اللعبة... + يتم التشغيل... - + Estimated Time %1 %1 الوقت المقدر @@ -7521,7 +6772,7 @@ Debug Message: Filters - المرشحات + تصفية @@ -7546,45 +6797,45 @@ Debug Message: Refresh Lobby - إنعاش الردهة + تحديث القائمة - + Password Required to Join كلمة المرور مطلوبة للإنظمام - + Password: :كلمة المرور - + Players اللاعبين - + Room Name اسم الغرفة - + Preferred Game - لعبة مفضلة + اللعبة المفضلة - + Host المستضيف - + Refreshing - ينعش + تحديث - + Refresh List تحديث القائمة @@ -7607,362 +6858,1462 @@ Debug Message: &الملفات الحديثة - - &Emulation - &المحاكاة + + Open &Eden Folders + فتح مجلدات إيدن - + + &Emulation + &محاكاة + + + &View &عرض - + &Reset Window Size - &إعادة ضبط حجم النافذة + &إعادة تعيين حجم النافذة - + &Debugging &تصحيح الأخطاء - + + &Game List Mode + &وضع قائمة الألعاب + + + + Game &Icon Size + اللعبة وحجم الأيقونة + + + Reset Window Size to &720p 720p إعادة تعيين حجم النافذة إلى - + Reset Window Size to 720p 720p إعادة تعيين حجم النافذة إلى - + Reset Window Size to &900p 900p إعادة تعيين حجم النافذة إلى - + Reset Window Size to 900p 900p إعادة تعيين حجم النافذة إلى - + Reset Window Size to &1080p 1080p إعادة تعيين حجم النافذة إلى - + Reset Window Size to 1080p 1080p إعادة تعيين حجم النافذة إلى - + &Multiplayer &متعدد اللاعبين - + &Tools &أدوات - - &Amiibo - أميبو + + Am&iibo + أم&يبو - + + Launch &Applet + تشغيل &التطبيق المصغر + + + &TAS - + &TAS - + &Create Home Menu Shortcut - + &إنشاء اختصار لقائمة الشاشة الرئيسية - + + Install &Firmware + تثبيت &الفيرموير + + + &Help &مساعدة - + &Install Files to NAND... - &NAND تثبيت الملفات على + &تثبيت الملفات في الذاكرة الداخلية - + L&oad File... - &تحميل ملف + ت&حميل ملف - + Load &Folder... تحميل &مجلد - + E&xit - &خروج + خ&روج - + + &Pause &إيقاف مؤقت - + &Stop &إيقاف - + &Verify Installed Contents - التحقق من المحتويات المثبتة + &التحقق من المحتويات المثبتة - - &About eden - + + &About Eden + &حول إيدن - - Open &eden Folder - - - - - Open Home Menu - - - - - &Discord - - - - - Open &Setup - - - - - &Desktop - - - - - &Application Menu - - - - &About yuzu - &حول يوزو - - - + Single &Window Mode - وضع النافذة الواحدة + وضع &النافذة الواحدة - + Con&figure... - &الإعدادات + الإع&دادات - + Ctrl+, - + Ctrl+, - - Display D&ock Widget Headers - + + Enable Overlay Display Applet + تمكين الطبقة للعرض التطبيق الصغير - + Show &Filter Bar - عرض &شريط المرشح + عرض &شريط التصفية - + Show &Status Bar عرض &شريط الحالة - + Show Status Bar عرض شريط الحالة - + &Browse Public Game Lobby - &استعراض ردهة الألعاب العامة + &تصفح قائمة الألعاب العامة - + &Create Room &إنشاء غرفة - + &Leave Room &مغادرة الغرفة - + &Direct Connect to Room &الاتصال المباشر بالغرفة - + &Show Current Room &عرض الغرفة الحالية - + F&ullscreen - &ملء الشاشة + م&لء الشاشة - + &Restart &إعادة التشغيل - + Load/Remove &Amiibo... تحميل/إزالة &أميبو - + &Report Compatibility &تقرير التوافق - + Open &Mods Page - فتح صفحة &التعديلات + صفحة &التعديلات - + Open &Quickstart Guide - فتح دليل البدء السريع + &دليل البدء السريع - + &FAQ - &التعليمات + &الأسئلة الشائعة - Open &yuzu Folder - فتح مجلد &يوزو - - - + &Capture Screenshot &التقاط لقطة للشاشة - - Open &Album - فتح الألبوم + + &Album + &الألبوم - + &Set Nickname and Owner &تعيين الاسم المستعار والمالك - + &Delete Game Data حذف بيانات اللعبة - + &Restore Amiibo &استعادة أميبو - + &Format Amiibo &تنسيق أميبو - - Open &Mii Editor - Mii فتح محرر + + &Mii Editor + &Mii محرر - + &Configure TAS... - + &TAS إعدادات - + Configure C&urrent Game... - إعدادات &اللعبة الحالية + إعدادات اللعبة ال&حالية - + + &Start &بدء - + &Reset &إعادة تعيين - + + R&ecord - &تسجيل + ت&سجيل - + Open &Controller Menu - فتح قائمة التحكم + &قائمة ذراع التحكم - - Install Firmware - + + Install Decryption &Keys + تثبيت &مفاتيح فك التشفير - - Install Decryption Keys - + + &Home Menu + &القائمة الرئيسية - - - MicroProfileDialog - - &MicroProfile - + + &Desktop + &سطح المكتب + + + + &Application Menu + &قائمة التطبيقات + + + + &Root Data Folder + &مجلد البيانات الرئيسي + + + + &NAND Folder + &مجلد الذاكرة الداخلية + + + + &SDMC Folder + &مجلد بطاقة الذاكرة + + + + &Mod Folder + &مجلد التعديلات + + + + &Log Folder + &مجلد السجلات + + + + From Folder + من مجلد + + + + From ZIP + من ملف مضغوط + + + + &Eden Dependencies + &تبعيات إيدن + + + + &Data Manager + &مدير البيانات + + + + &Tree View + &عرض الشجرة + + + + &Grid View + &عرض الشبكة + + + + Game Icon Size + حجم أيقونة اللعبة + + + + + + None + لا شيء + + + + Show Game &Name + عرض اسم &اللعبة + + + + Show &Performance Overlay + عرض &طبقة الأداء + + + + Small (32x32) + صغير (32x32) + + + + Standard (64x64) + قياسي (64x64) + + + + Large (128x128) + كبير (128x128) + + + + Full Size (256x256) + حجم كامل (256x256) + + + + Broken Vulkan Installation Detected + Vulkan تم الكشف عن تلف في تثبيت + + + + Vulkan initialization failed during boot. + أثناء التشغيل Vulkan فشل تهيئة. + + + + Running a game + TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping + تشغيل لعبة + + + + Loading Web Applet... + جارٍ تحميل تطبيق الويب... + + + + + Disable Web Applet + تعطيل تطبيق الويب + + + + 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.) + قد يؤدي تعطيل أداة الويب إلى سلوك غير محدد، ويجب استخدامه فقط مع لعبة Super Mario 3D All-Stars. هل أنت متأكد من رغبتك في تعطيل أداة الويب؟ +(يمكن إعادة تفعيلها في إعدادات التصحيح.) + + + + The amount of shaders currently being built + كمية التظليلات التي يتم بناؤها حاليًا + + + + The current selected resolution scaling multiplier. + مضاعف قياس الدقة المحددة حالياً. + + + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. + Switch سرعة المحاكاة الحالية. تشير القيم الأعلى أو الأقل من 100٪ إلى أن المحاكاة تعمل بشكل أسرع أو أبطأ من. + + + + How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. + عدد الإطارات في الثانية التي تعرضها اللعبة حاليًا. يختلف هذا العدد من لعبة إلى أخرى ومن مشهد إلى آخر. + + + + 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. + الوقت المستغرق لمحاكاة إطار على جهاز سويتش، بدون احتساب تحديد الإطارات أو المزامنة العمودية. لمحاكاة بسرعة كاملة، يجب أن يكون هذا في حدود 16.67 مللي ثانية كحد أقصى. + + + + Unmute + إلغاء كتم الصوت + + + + Mute + كتم الصوت + + + + Reset Volume + إعادة تعيين مستوى الصوت + + + + &Clear Recent Files + &مسح الملفات الحديثة + + + + &Continue + &متابعة + + + + Warning: Outdated Game Format + تحذير: تنسيق اللعبة قديم + + + + 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.<br>For an explanation of the various Switch formats Eden supports, out our user handbook. This message will not be shown again. + أنت تستخدم تنسيق مجلد ROM المُفكك لهذه اللعبة، وهو تنسيق قديم استُبدل بآخر مثل NCA وNAX وXCI وNSP. تفتقر مجلدات ROM المُفككة إلى الأيقونات والبيانات الوصفية ودعم التحديثات. <br>لتوضيح تنسيقات Switch المختلفة التي يدعمها Eden، يُرجى مراجعة دليل المستخدم. لن تظهر هذه الرسالة مرة أخرى. + + + + + Error while loading ROM! + ROM خطأ أثناء تحميل + + + + The ROM format is not supported. + غير مدعوم ROM تنسيق. + + + + An error occurred initializing the video core. + حدث خطأ أثناء تهيئة نواة الفيديو. + + + + Eden 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: <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>How to Upload the Log File</a>. + واجه إيدن خطأً أثناء تشغيل نواة الفيديو. عادةً ما يكون السبب هو برامج تشغيل وحدة معالجة الرسومات القديمة، بما في ذلك المدمجة منها. يُرجى مراجعة السجل لمزيد من التفاصيل. لمزيد من المعلومات حول الوصول إلى السجل، يُرجى زيارة الصفحة التالية: <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>كيفيه رفع سجلات الإخطاء</a>. + + + + Error while loading ROM! %1 + %1 signifies a numeric error code. + حدث خطأ أثناء تحميل ROM! %1 + + + + %1<br>Please redump your files or ask on Discord/Stoat for help. + %1 signifies an error string. + %1<br>Discord/Stoat يرجى إعادة تحميل ملفاتك أو طلب المساعدة على + + + + An unknown error occurred. Please see the log for more details. + حدث خطأ غير معروف. يرجى الاطلاع على السجل لمزيد من التفاصيل. + + + + (64-bit) + (64-bit) + + + + (32-bit) + (32-bit) + + + + %1 %2 + %1 is the title name. %2 indicates if the title is 64-bit or 32-bit + %1 %2 + + + + Closing software... + جارٍ إغلاق البرنامج... + + + + Save Data + بيانات الحفظ + + + + Mod Data + بيانات التعديل + + + + Error Opening %1 Folder + خطأ في فتح المجلد %1 + + + + + Folder does not exist! + المجلد غير موجود! + + + + Remove Installed Game Contents? + إزالة محتويات اللعبة المثبتة؟ + + + + Remove Installed Game Update? + إزالة تحديث اللعبة المثبت؟ + + + + Remove Installed Game DLC? + إزالة المحتوى القابل للتنزيل المثبت للعبة؟ + + + + Remove Entry + إزالة الإدخال + + + + Delete OpenGL Transferable Shader Cache? + OpenGL Shader حذف ذاكرة التخزين المؤقتة القابلة للنقل لـ + + + + Delete Vulkan Transferable Shader Cache? + Vulkan Shader حذف ذاكرة التخزين المؤقتة القابلة للنقل لـ + + + + Delete All Transferable Shader Caches? + حذف جميع مخازن ذاكرة التظليل القابلة للنقل؟ + + + + Remove Custom Game Configuration? + إزالة إعدادات اللعبة المخصص؟ + + + + Remove Cache Storage? + إزالة ذاكرة التخزين المؤقتة؟ + + + + Remove File + إزالة الملف + + + + Remove Play Time Data + إزالة بيانات زمن اللعب + + + + Reset play time? + إعادة تعيين زمن اللعب؟ + + + + + RomFS Extraction Failed! + RomFS فشل استخراج + + + + There was an error copying the RomFS files or the user cancelled the operation. + أو قام المستخدم بإلغاء العملية RomFS حدث خطأ أثناء نسخ ملفات + + + + Full + كامل + + + + Skeleton + Skeleton + + + + Select RomFS Dump Mode + RomFS حدد وضع تفريغ + + + + Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. + الرجاء تحديد الطريقة التي تريد بها تفريغ RomFS. <br>سيتم نسخ جميع الملفات إلى المجلد الجديد في أثناء <br>قيام الهيكل العظمي بإنشاء بنية المجلد فقط. + + + + There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root + لا توجد مساحة فارغة كافية في %1 لاستخراج نظام الملفات RomFS. يُرجى تحرير مساحة أو اختيار مجلد تفريغ آخر من: المحاكاة > التكوين > النظام > نظام الملفات > تفريغ الجذر. + + + + Extracting RomFS... + RomFS استخراج... + + + + + Cancel + إلغاء + + + + RomFS Extraction Succeeded! + بنجاح RomFS تم استخراج! + + + + The operation completed successfully. + تمت العملية بنجاح. + + + + Error Opening %1 + خطأ في فتح %1 + + + + Select Directory + حدد المجلد + + + + Properties + خصائص + + + + The game properties could not be loaded. + تعذر تحميل خصائص اللعبة. + + + + Switch Executable (%1);;All Files (*.*) + %1 is an identifier for the Switch executable file extensions. + تبديل الملف القابل للتنفيذ (%1);;جميع الملفات (*.*) + + + + Load File + تحميل الملف + + + + Open Extracted ROM Directory + المستخرج ROM فتح ملف + + + + Invalid Directory Selected + تم تحديد مجلد غير صالح + + + + The directory you have selected does not contain a 'main' file. + لا يحتوي المجلد الذي حددته على ملف رئيسي + + + + Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) + Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) + + + + Install Files + تثبيت الملفات + + + + %n file(s) remaining + %n ملف (ملفات) متبقية%n ملف (ملفات) متبقية%n ملف (ملفات) متبقية%n ملف (ملفات) متبقية%n ملف (ملفات) متبقية%n ملف (ملفات) متبقية + + + + Installing file "%1"... + تثبيت الملف ”%1“... + + + + + Install Results + نتائج التثبيت + + + + To avoid possible conflicts, we discourage users from installing base games to the NAND. +Please, only use this feature to install updates and DLC. + لتجنب أي تعارضات محتملة، ننصح المستخدمين بعدم تثبيت الألعاب الأساسية على الذاكرة الداخلية. +يرجى استخدام هذه الميزة فقط لتثبيت التحديثات والمحتوى القابل للتنزيل. + + + + %n file(s) were newly installed + + %n تم تثبيت ملف (ملفات) جديدة +%n تم تثبيت ملف (ملفات) جديدة +%n تم تثبيت ملف (ملفات) جديدة +%n تم تثبيت ملف (ملفات) جديدة +%n تم تثبيت ملف (ملفات) جديدة +%n تم تثبيت ملف (ملفات) جديدة + + + + + %n file(s) were overwritten + + %n تم استبدال ملف (ملفات) +%n تم استبدال ملف (ملفات) +%n تم استبدال ملف (ملفات) +%n تم استبدال ملف (ملفات) +%n تم استبدال ملف (ملفات) +%n تم استبدال ملف (ملفات) + + + + + %n file(s) failed to install + + %n فشل تثبيت ملف (ملفات) +%n فشل تثبيت ملف (ملفات) +%n فشل تثبيت ملف (ملفات) +%n فشل تثبيت ملف (ملفات) +%n فشل تثبيت ملف (ملفات) +%n فشل تثبيت ملف (ملفات) + + + + + System Application + تطبيق النظام + + + + System Archive + أرشيف النظام + + + + System Application Update + تحديث تطبيق النظام + + + + Firmware Package (Type A) + حزمة الفيرموير (النوع أ) + + + + Firmware Package (Type B) + حزمة الفيرموير (النوع ب) + + + + Game + لعبة + + + + Game Update + تحديث اللعبة + + + + Game DLC + الخاص باللعبة DLC الـ + + + + Delta Title + Delta عنوان + + + + Select NCA Install Type... + NCA حدد نوع تثبيت... + + + + Please select the type of title you would like to install this NCA as: +(In most instances, the default 'Game' is fine.) + يرجى تحديد نوع اللعبة التي ترغب في تثبيت NCA عليها: +(في معظم الحالات، يكون الإعداد الافتراضي "لعبة" مناسبًا.) + + + + Failed to Install + فشل التثبيت + + + + The title type you selected for the NCA is invalid. + غير صالح NCA نوع العنوان الذي حددته لـ. + + + + File not found + لم يتم العثور على الملف + + + + File "%1" not found + لم يتم العثور على الملف "%1" + + + + OK + موافق + + + + Function Disabled + الوظيفة معطلة + + + + Compatibility list reporting is currently disabled. Check back later! + تقارير قائمة التوافق معطلة حاليًا. يرجى التحقق لاحقًا! + + + + Error opening URL + خطأ في فتح الرابط + + + + Unable to open the URL "%1". + تعذر فتح الرابط ”%1“ + + + + TAS Recording + TAS تسجيل + + + + Overwrite file of player 1? + الكتابة فوق ملف اللاعب 1؟ + + + + Invalid config detected + تم اكتشاف إعدادات غير صالح + + + + Handheld controller can't be used on docked mode. Pro controller will be selected. + لا يمكن استخدام وحدة التحكم المحمولة في وضع الإرساء. سيتم اختيار وحدة تحكم احترافية. + + + + + Amiibo + أميبو + + + + + The current amiibo has been removed + تمت إزالة أميبو الحالي. + + + + Error + خطأ + + + + + The current game is not looking for amiibos + اللعبة الحالية لا تبحث عن أميبو + + + + Amiibo File (%1);; All Files (*.*) + جميع الملفات (%1)؛؛ ملف أميبو (*.*) + + + + Load Amiibo + تحميل أميبو + + + + Error loading Amiibo data + خطأ أثناء تحميل بيانات أميبو + + + + The selected file is not a valid amiibo + الملف المحدد ليس أميبو صالح + + + + The selected file is already on use + الملف المحدد قيد الاستخدام بالفعل + + + + An unknown error occurred + حدث خطأ غير معروف + + + + + Keys not installed + المفاتيح غير مثبتة + + + + + Install decryption keys and restart Eden before attempting to install firmware. + قم بتثبيت مفاتيح فك التشفير وأعد تشغيل إيدن قبل محاولة تثبيت الفيرموير. + + + + Select Dumped Firmware Source Location + حدد موقع مصدر الفيرموير المفرغة + + + + Select Dumped Firmware ZIP + حدد ملف الفيرموير المضغوط الذي تم تفريغه + + + + Zipped Archives (*.zip) + Zipped Archives (*.zip) + + + + Firmware cleanup failed + فشل مسح الفيرموير + + + + Failed to clean up extracted firmware cache. +Check write permissions in the system temp directory and try again. +OS reported error: %1 + فشل تنظيف ذاكرة التخزين المؤقتة للفيرموير المستخرج. +تحقق من أذونات الكتابة في دليل الملفات المؤقتة للنظام وحاول مرة أخرى. +أبلغ نظام التشغيل عن خطأ: %1 + + + + No firmware available + لا يوجد فيرموير متوفر + + + + Firmware Corrupted + الفيرموير تالف + + + + Unknown applet + تطبيق غير معروف + + + + Applet doesn't map to a known value. + لا يرتبط التطبيق المصغر بقيمة معروفة. + + + + Record not found + لم يتم العثور على السجل + + + + Applet not found. Please reinstall firmware. + لم يتم العثور على التطبيق المصغر. يرجى إعادة تثبيت الفيرموير. + + + + Capture Screenshot + التقاط لقطة شاشة + + + + PNG Image (*.png) + PNG Image (*.png) + + + + Update Available + تحديث متوفر + + + + Download %1? + تنزيل 1%؟ + + + + TAS state: Running %1/%2 + حالة TAS: تشغيل %1/%2 + + + + TAS state: Recording %1 + حالة TAS: تسجيل %1 + + + + TAS state: Idle %1/%2 + حالة TAS: خامل %1/%2 + + + + TAS State: Invalid + حالة TAS: غير صالحة + + + + &Stop Running + &إيقاف التشغيل + + + + Stop R&ecording + إيقاف ال&تسجيل + + + + Building: %n shader(s) + بناء: %n تظليل(ات)بناء: %n تظليل(ات)بناء: %n تظليل(ات)بناء: %n تظليل(ات)بناء: %n تظليل(ات)بناء: %n تظليل(ات) + + + + Scale: %1x + %1 is the resolution scaling factor + الدقة: %1x + + + + Speed: %1% / %2% + السرعة: %1% / %2% + + + + Speed: %1% + السرعة: %1% + + + + Game: %1 FPS + اللعبة: %1 FPS + + + + Frame: %1 ms + الإطار: %1 ms + + + + + FSR + FSR + + + + NO AA + NO AA + + + + VOLUME: MUTE + الصوت: كتم الصوت + + + + VOLUME: %1% + Volume percentage (e.g. 50%) + %1% :الصوت + + + + Derivation Components Missing + مكونات الاشتقاق مفقودة + + + + Decryption keys are missing. Install them now? + مفاتيح فك التشفير مفقودة. هل تريد تثبيتها الآن؟ + + + + Wayland Detected! + Wayland تم الكشف عن + + + + Wayland is known to have significant performance issues and mysterious bugs. +It's recommended to use X11 instead. + +Would you like to force it for future launches? + يعاني من مشاكل كبيرة في الأداء وأخطاء غامضة Wayland من المعروف أن +بدلاً من ذلك X11 يوصى باستخدام + +هل ترغب في فرض استخدامه في عمليات التشغيل المستقبلية؟ + + + + Use X11 + X11 استخدم + + + + Continue with Wayland + Wayland متابعة مع + + + + Don't show again + لا تعرض مرة أخرى + + + + Restart Required + إعادة التشغيل مطلوبة + + + + Restart Eden to apply the X11 backend. + X11 أعد تشغيل إيدن لتطبيق الخلفية + + + + Slow + بطيء + + + + Turbo + تيربو + + + + Unlocked + إلغاء القفل + + + + Select RomFS Dump Target + RomFS حدد هدف تفريغ + + + + Please select which RomFS you would like to dump. + الذي تريد تفريغه RomFS الرجاء تحديد + + + + Are you sure you want to close Eden? + هل أنت متأكد من أنك تريد إغلاق إيدن؟ + + + + + + Eden + إيدن + + + + Are you sure you want to stop the emulation? Any unsaved progress will be lost. + هل أنت متأكد من أنك تريد إيقاف المحاكاة؟ سيتم فقدان أي تقدم لم يتم حفظه. + + + + The currently running application has requested Eden to not exit. + +Would you like to bypass this and exit anyway? + طلب التطبيق الذي يتم تشغيله حاليًا من إيدن عدم الخروج. + +هل ترغب في تجاوز هذا والخروج على أي حال؟ + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Nearest + Nearest + + + + Bilinear + Bilinear + + + + Bicubic + Bicubic + + + + Zero-Tangent + Zero-Tangent + + + + B-Spline + B-Spline + + + + Mitchell + Mitchell + + + + Spline-1 + Spline-1 + + + + Gaussian + Gaussian + + + + Lanczos + Lanczos + + + + ScaleForce + ScaleForce + + + + Area + Area + + + + MMPX + MMPX + + + + Docked + الإرساء + + + + Handheld + محمول + + + + Fast + سريع + + + + Balanced + متوازن + + + + Accurate + دقه + + + + Vulkan + Vulkan + + + + OpenGL GLSL + OpenGL GLSL + + + + OpenGL SPIRV + OpenGL SPIRV + + + + OpenGL GLASM + OpenGL GLASM + + + + Null + لا شيء MigrationWorker - - Data was migrated successfully. - - - - + Linking the old directory failed. You may need to re-run with administrative privileges on Windows. OS gave error: %1 - + فشل ربط المجلد القديم. قد تحتاج إلى إعادة التشغيل باستخدام امتيازات المسؤول في ويندوز. +أصدر نظام التشغيل خطأ: %1 - + + + +Note that your configuration and data will be shared with %1. +If this is not desirable, delete the following files: +%2 +%3 +%4 + + +يرجى ملاحظة أن التكوين والبيانات الخاصة بك سيتم مشاركتها مع %1. +إذا لم تكن ترغب في ذلك، فاحذف الملفات التالية: +%2 +%3 +%4 + + + If you wish to clean up the files which were left in the old data location, you can do so by deleting the following directory: %1 - + + +إذا كنت ترغب في تنظيف الملفات التي تركت في موقع البيانات القديم، يمكنك القيام بذلك عن طريق حذف الدليل التالي: +%1 + + + + Data was migrated successfully. + تم نقل البيانات بنجاح. + + + + ModSelectDialog + + + Dialog + حوار + + + + The specified folder or archive contains the following mods. Select which ones to install. + يحتوي المجلد أو الأرشيف المحدد على التعديلات التالية. حدد التعديلات التي تريد تثبيتها. @@ -7970,7 +8321,7 @@ If you wish to clean up the files which were left in the old data location, you Moderation - + الإشراف @@ -7979,9 +8330,9 @@ If you wish to clean up the files which were left in the old data location, you - + Refreshing - ينعش + تحديث @@ -7989,65 +8340,65 @@ If you wish to clean up the files which were left in the old data location, you إلغاء الحظر - + Subject الموضوع - + Type النوع - + Forum Username اسم المستخدم في المنتدى - + IP Address عنوان IP - + Refresh - إنعاش + تحديث MultiplayerState - + Current connection status حالة الاتصال الحالية - + Not Connected. Click here to find a room! غير متصل. اضغط هنا للبحث عن غرفة! - + Not Connected غير متصل - + Connected متصل - + New Messages Received - رسالة جديدة استقبلت + تم استلام رسائل جديدة - + Error خطأ - + Failed to update the room information. Please check your Internet connection and try hosting the room again. Debug Message: فشل في تحديث معلومات الغرفة. يرجى التحقق من اتصالك بالإنترنت ومحاولة استضافة الغرفة مرة أخرى. @@ -8056,90 +8407,6 @@ Debug Message: NetworkMessage - - Username is not valid. Must be 4 to 20 alphanumeric characters. - اسم المستخدم غير صالح. يجب ان يتكون من 4 الى 20 حرف ورقم. - - - Room name is not valid. Must be 4 to 20 alphanumeric characters. - اسم الغرفة غير صالح. يجب ان يتكون من 4 الى 20 حرف ورقم. - - - Username is already in use or not valid. Please choose another. - اسم المستخدم مستخدم من قبل أو غير صالح. رجاء اختر غيره. - - - IP is not a valid IPv4 address. - IP غير صالح كعنوان IPv4. - - - Port must be a number between 0 to 65535. - المنفذ يجب ان يكون رقم بين 0 و 65535. - - - You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - يجب عليك اختيار لعبة مفضلة لاستضافة غرفة. إذا لم يكن لديك أي ألعاب في قائمة الألعاب الخاصة بك حتى الآن، قم بإضافة مجلد الألعاب من خلال النقر على أيقونة الزائد في قائمة الألعاب. - - - Unable to find an internet connection. Check your internet settings. - غير قادر على العثور على اتصال بالإنترنت. تحقق من إعدادات الإنترنت لديك. - - - Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - غير قادر على الاتصال بالمضيف. تأكد من صحة إعدادات الاتصال. إذا كنت لا تزال غير قادر على الاتصال، فاتصل بمضيف الغرفة وتأكد من تكوين المضيف بشكل صحيح مع إعادة توجيه المنفذ الخارجي. - - - Unable to connect to the room because it is already full. - غير قادر على الاتصال بالغرفة لأنها ممتلئة بالفعل. - - - Creating a room failed. Please retry. Restarting yuzu might be necessary. - فشل إنشاء الغرفة. الرجاء اعادة المحاولة. قد تكون إعادة تشغيل يوزو ضرورية. - - - The host of the room has banned you. Speak with the host to unban you or try a different room. - لقد قام مضيف الغرفة بحظرك. تحدث مع المضيف لإلغاء الحظر عليك أو تجربة غرفة مختلفة. - - - Version mismatch! Please update to the latest version of yuzu. If the problem persists, contact the room host and ask them to update the server. - عدم تطابق إصدار! يرجى التحديث إلى أحدث إصدار من يوزو. إذا استمرت المشكلة، فاتصل بمضيف الغرفة واطلب منه تحديث الخادم. - - - Incorrect password. - كلمة مرور غير صحيحة. - - - An unknown error occurred. If this error continues to occur, please open an issue - حدث خطأ غير معروف. إذا استمر حدوث المشكلة، رجاء افتح مشكلة - - - Connection to room lost. Try to reconnect. - فقد الاتصال مع الغرفة. حاول إعادة الاتصال. - - - You have been kicked by the room host. - طردت من قبل مستضيف الغرفة. - - - IP address is already in use. Please choose another. - عنوان IP مستخدم مسبقا. رجاء اختر غيره. - - - You do not have enough permission to perform this action. - ليست لديك الصلاحية الكافية لتنفيذ هذا الفعل. - - - The user you are trying to kick/ban could not be found. -They may have left the room. - المستخدم الذي تحاول طرده/حظره غير موجود. -قد يكون ترك الغرفة. - - - No valid network interface is selected. -Please go to Configure -> System -> Network and make a selection. - لم يتم تحديد واجهة شبكة صالحة. -يرجى الانتقال إلى التكوين -> النظام -> الشبكة وتحديد الاختيار. - Game already running @@ -8149,7 +8416,7 @@ Please go to Configure -> System -> Network and make a selection. Joining a room when the game is already running is discouraged and can cause the room feature not to work correctly. Proceed anyway? - لا يُنصح بالانضمام إلى غرفة عندما تكون اللعبة قيد التشغيل بالفعل وقد يؤدي ذلك إلى عدم عمل ميزة الغرفة بشكل صحيح. + يُمنع الانضمام إلى غرفة عندما تكون اللعبة قيد التشغيل بالفعل، وقد يتسبب ذلك في عدم عمل ميزة الغرفة بشكل صحيح. المتابعة على أية حال؟ @@ -8160,7 +8427,7 @@ Proceed anyway? You are about to close the room. Any network connections will be closed. - أنت على وشك إغلاق الغرفة. أي اتصال سيتم غلقه. + أنت على وشك إغلاق الغرفة. سيتم إغلاق جميع اتصالات الشبكة. @@ -8170,14 +8437,136 @@ Proceed anyway? You are about to leave the room. Any network connections will be closed. - أنت على وشك إغلاق الغرفة. أي اتصال سيتم غلقه. + أنت على وشك مغادرة الغرفة. سيتم إغلاق جميع اتصالات الشبكة. - NetworkMessage::ErrorManager + NewUserDialog - Error - خطأ + + + New User + مستخدم جديد + + + + Change Avatar + تغيير الصورة الرمزية + + + + Set Image + تعيين الصورة + + + + UUID + معرف فريد عالمي + + + + Eden + إيدن + + + + Username + اسم المستخدم + + + + UUID must be 32 hex characters (0-9, A-F) + يجب أن يكون UUID مكونًا من 32 حرفًا سداسيًا عشريًا (0-9، A-F) + + + + Generate + إنشاء + + + + Select User Image + اختر صورة المستخدم + + + + Image Formats (*.jpg *.jpeg *.png *.bmp) + تنسيقات الصور (*.jpg *.jpeg *.png *.bmp) + + + + No firmware available + لا يوجد فيرموير متوفر + + + + Please install the firmware to use firmware avatars. + يرجى تثبيت الفيرموير لاستخدام صور الرمزية للفيرموير. + + + + + Error loading archive + خطأ في تحميل الأرشيف + + + + Archive is not available. Please install/reinstall firmware. + الأرشيف غير متوفر. يُرجى تثبيت/إعادة تثبيت الفيرموير. + + + + Could not locate RomFS. Your file or decryption keys may be corrupted. + تعذر العثور على نظام ملفات ROMFS. قد يكون ملفك أو مفاتيح فك التشفير تالفة. + + + + Error extracting archive + خطأ في استخراج الأرشيف + + + + Could not extract RomFS. Your file or decryption keys may be corrupted. + تعذر استخراج نظام ملفات ROMFS. قد يكون ملفك أو مفاتيح فك التشفير تالفة. + + + + Error finding image directory + خطأ في العثور على مجلد الصور + + + + Failed to find image directory in the archive. + فشل في العثور على مجلد الصور في الأرشيف. + + + + No images found + لم يتم العثور على صور + + + + No avatar images were found in the archive. + لم يتم العثور على صور رمزية في الأرشيف + + + + + All Good + Tooltip + كل شيء جيد + + + + Must be 32 hex characters (0-9, a-f) + Tooltip + يجب أن تتكون من 32 حرفًا سداسيًا عشريًا (0-9، a-f) + + + + Must be between 1 and 32 characters + Tooltip + يجب أن يتكون من 1 إلى 32 حرفًا @@ -8185,7 +8574,7 @@ Proceed anyway? Dialog - + حوار @@ -8204,7 +8593,7 @@ Proceed anyway? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -8213,101 +8602,217 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> + + PerformanceOverlay + + + Form + نموذج + + + + Frametime + زمن الإطار + + + + 0 ms + 0 مللي ثانية + + + + + Min: 0 + الحد الأدنى: 0 + + + + + Max: 0 + الحد الأقصى: 0 + + + + + Avg: 0 + المتوسط: 0 + + + + FPS + معدل الإطارات في الثانية + + + + 0 fps + 0 إطار في الثانية + + + + %1 fps + %1 معدل الإطارات في الثانية + + + + + Avg: %1 + المتوسط: %1 + + + + + Min: %1 + الحد الأدنى: %1 + + + + + Max: %1 + الحد الأقصى: %1 + + + + %1 ms + %1 مللي ثانية + + PlayerControlPreview - + START/PAUSE - + START/PAUSE + + + + ProfileAvatarDialog + + + Select + اختر + + + + Cancel + إلغاء + + + + Background Color + لون الخلفية + + + + Select Firmware Avatar + حدد الصورة الرمزية للفيرموير QObject - - %1 is not playing a game - %1 لا يلعب أي لعبة + + + + Migration + الترحيل - - %1 is playing %2 - %1 يلعب %2 + + Clear Shader Cache + مسح ذاكرة التخزين المؤقتة للتظليل - - Not playing a game - لا يلعب أي لعبة + + Keep Old Data + الاحتفاظ بالبيانات القديمة - - Installed SD Titles - عناوين المثبتة على بطاقة الذاكرة + + Clear Old Data + مسح البيانات القديمة - - Installed NAND Titles - NAND عناوين المثبتة على + + Link Old Directory + رابط المجلد القديم - - System Titles - عناوين النظام + + + + + + + - - Add New Game Directory - إضافة مجلد ألعاب جديد + + + No + لا - - Favorites - المفضلة + + You can manually re-trigger this prompt by deleting the new config directory: +%1 + يمكنك إعادة تشغيل هذه المطالبة يدويًا عن طريق حذف دليل التكوين الجديد: +%1 + + + + Migrating + الترحيل + + + + Migrating, this may take a while... + جارٍ الترحيل، قد يستغرق هذا بعض الوقت... - - + + Shift Shift - - + + Ctrl Ctrl - - + + Alt Alt - - - - + + + + [not set] - [ غير معد ] + [غير محدد] Hat %1 %2 - + Hat %1 %2 - - - - - - - - + + + + + + + + Axis %1%2 محور %1%2 @@ -8317,359 +8822,383 @@ p, li { white-space: pre-wrap; } زر %1 - - - - - - + + + + + + [unknown] [غير معروف] - - - + + + Left يسار - - - + + + Right يمين - - - + + + Down تحت - - - + + + Up فوق - - + + Z Z - - + + R R - - + + L L - - + + A A - - + + B B - - + + X X - - + + Y Y - - + + Start Start - - + + L1 L1 - - + + L2 L2 - - + + L3 L3 - - + + R1 R1 - - + + R2 R2 - - + + R3 R3 - - + + Circle - دائرة + Circle - - + + Cross - إكس + Cross - - + + Square - مربع + Square - - + + Triangle - مثلث + Triangle - - + + Share - مشاركة + Share - - + + Options - خيارات + Options - - + + [undefined] [غير معرف] - + %1%2 %1%2 - - + + [invalid] [غير صالح] - - + + %1%2Hat %3 - + %1%2Hat %3 - - - + + + %1%2Axis %3 %1%2محور %3 - - + + %1%2Axis %3,%4,%5 %1%2محور %3,%4,%5 - - + + %1%2Motion %3 %1%2حركة %3 - - + + %1%2Button %3 %1%2زر %3 - - + + [unused] [غير مستخدم] - + ZR ZR - + ZL ZL - + SR SR - + SL SL - + Stick L العصا اليسرى - + Stick R العصا اليمنى - + Plus - زائد + Plus - + Minus - ناقص + Minus - - + + Home - المنزل + Home - + Capture - تصوير + Capture - + Touch اللمس - + Wheel Indicates the mouse wheel العجلة - + Backward - الخلف + إلى الخلف - + Forward - الأمام + إلى الأمام - + Task مهمة - + Extra إضافي - + %1%2%3%4 %1%2%3%4 - - + + %1%2%3Hat %4 - + %1%2%3Hat %4 - - + + %1%2%3Axis %4 %1%2%3محور %4 - - + + %1%2%3Button %4 %1%2%3زر %4 - - - - Migration - + + Not playing a game + لا يلعب أي لعبة - - - - - + + %1 is not playing a game + %1 لا يلعب أي لعبة - - - No - + + %1 is playing %2 + %1 يلعب %2 - - You can manually re-trigger this prompt by deleting the new config directory: -%1 - + + Play Time: %1 + زمن اللعب: %1 - - Migrating - + + Never Played + لم تُلعب قط - - Migrating, this may take a while... - + + Version: %1 + الإصدار: %1 + + + + Version: 1.0.0 + الإصدار: 1.0.0 + + + + Installed SD Titles + عناوين المثبتة على بطاقة الذاكرة + + + + Installed NAND Titles + عناوين المثبتة على الذاكرة الداخلية + + + + System Titles + عناوين النظام + + + + Add New Game Directory + إضافة مجلد ألعاب جديد + + + + Favorites + المفضلة @@ -8687,7 +9216,7 @@ p, li { white-space: pre-wrap; } Series - السلسلة + سلسلة @@ -8760,31 +9289,831 @@ p, li { white-space: pre-wrap; } مسار الملف - + No game data present - لا يوجد بيانات لعبة + لا توجد بيانات للعبة - + The following amiibo data will be formatted: :بيانات أمبيو التالية سيتم تهيئتها - + The following game data will removed: :بيانات الألعاب التالية سيتم إزالتها - + Set nickname and owner: تعيين الاسم المستعار والمالك - + Do you wish to restore this amiibo? هل ترغب في إستعادة أميبو؟ + + QtCommon::Content + + + Game Requires Firmware + تتطلب اللعبة الفيرموير + + + + The game you are trying to launch requires firmware to boot or to get past the opening menu. Please <a href='https://yuzu-mirror.github.io/help/quickstart'>dump and install firmware</a>, or press "OK" to launch anyways. + اللعبة التي تحاول تشغيلها تتطلب فيرموير للتشغيل أو لتجاوز قائمة الفتح. يُرجى <a href='https://yuzu-mirror.github.io/help/quickstart'>تفريغ فيرموير وتثبيتها</a>، أو اضغط "حسنًا" للعب على أي حال + + + + Installing Firmware... + تثبيت الفيرموير... + + + + + + + + Cancel + إلغاء + + + + Firmware Install Failed + فشل تثبيت الفيرموير + + + + Firmware Install Succeeded + تم تثبيت الفيرموير بنجاح + + + + Firmware integrity verification failed! + فشل التحقق من سلامة الفيرموير! + + + + + Verification failed for the following files: + +%1 + فشل التحقق من الملفات التالية: + +%1 + + + + + Verifying integrity... + جارٍ التحقق من السلامة... + + + + + Integrity verification succeeded! + تم التحقق من السلامة بنجاح! + + + + + The operation completed successfully. + اكتملت العملية بنجاح. + + + + + Integrity verification failed! + فشل التحقق من السلامة! + + + + File contents may be corrupt or missing. + قد تكون محتويات الملف تالفة أو مفقودة. + + + + Integrity verification couldn't be performed + تعذر إجراء التحقق من السلامة + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity. + تم إلغاء تثبيت الفيرموير، قد يكون الفيرموير في حالة سيئة أو تآلف. تعذر التحقق من صحة محتويات الملف. + + + + Select Dumped Keys Location + حدد موقع المفاتيح المفرغة + + + + Decryption Keys install succeeded + تم تثبيت مفاتيح فك التشفير بنجاح + + + + Decryption Keys install failed + فشل تثبيت مفاتيح فك التشفير + + + + Orphaned Profiles Detected! + تم الكشف عن ملفات تعريف مهملة! + + + + UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br> + قد تحدث أمور سيئة غير متوقعة إذا لم تقرأ هذا<br>!لقد اكتشف إيدن مجلدات الحفظ التالية بدون ملف تعريف مرفق:<br>%1<br><br>ملفات التعريف التالية صالحة:<br>%2<br><br>انقر على ”موافق“ لفتح مجلد الحفظ وإصلاح ملفات التعريف الخاصة بك.<br>تلميح: انسخ محتويات المجلد الأكبر أو آخر مجلد تم تعديله إلى مكان آخر، واحذف جميع ملفات التعريف اليتيمة، وانقل المحتويات المنسوخة إلى ملف التعريف الصحيح.<br><br>هل ما زلت تشعر بالارتباك؟ انظر إلى <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>صفحة المساعدة</a>.<br> + + + + Really clear data? + مسح البيانات بالفعل؟ + + + + Important data may be lost! + قد يتم فقدان بيانات مهمة! + + + + Are you REALLY sure? + هل أنت متأكد حقًا؟ + + + + Once deleted, your data will NOT come back! +Only do this if you're 100% sure you want to delete this data. + بمجرد حذفها، لن تتمكن من استعادة بياناتك! +قم بذلك فقط إذا كنت متأكدًا بنسبة 100٪ أنك تريد حذف هذه البيانات. + + + + Clearing... + إزالة... + + + + Select Export Location + حدد موقع التصدير + + + + %1.zip + %1.zip + + + + + Zipped Archives (*.zip) + Zipped Archives (*.zip) + + + + Exporting data. This may take a while... + تصدير البيانات. قد يستغرق هذا بعض الوقت... + + + + Exporting + التصدير + + + + Exported Successfully + تم التصدير بنجاح + + + + Data was exported successfully. + تم تصدير البيانات بنجاح. + + + + Export Cancelled + تم إلغاء التصدير + + + + Export was cancelled by the user. + تم إلغاء التصدير من قبل المستخدم. + + + + Export Failed + فشل التصدير + + + + Ensure you have write permissions on the targeted directory and try again. + تأكد من أن لديك أذونات الكتابة على المجلد المحدد وحاول مرة أخرى. + + + + Select Import Location + حدد موقع الاستيراد + + + + Import Warning + تحذير الاستيراد + + + + All previous data in this directory will be deleted. Are you sure you wish to proceed? + سيتم حذف جميع البيانات السابقة في هذا المجلد. هل أنت متأكد من رغبتك في المتابعة؟ + + + + Importing data. This may take a while... + استيراد البيانات. قد يستغرق هذا بعض الوقت... + + + + Importing + استيراد + + + + Imported Successfully + تم الاستيراد بنجاح + + + + Data was imported successfully. + تم استيراد البيانات بنجاح. + + + + Import Cancelled + تم إلغاء الاستيراد + + + + Import was cancelled by the user. + تم إلغاء الاستيراد من قبل المستخدم. + + + + Import Failed + فشل الاستيراد + + + + Ensure you have read permissions on the targeted directory and try again. + تأكد من أن لديك أذونات قراءة على المجلد المحدد وحاول مرة أخرى. + + + + QtCommon::FS + + + Linked Save Data + بيانات الحفظ المرتبطة + + + + Save data has been linked. + تم ربط بيانات الحفظ. + + + + Failed to link save data + فشل ربط بيانات الحفظ + + + + Could not link directory: + %1 +To: + %2 + تعذر ربط المجلد: + %1 +To: + %2 + + + + Already Linked + تم الربط بالفعل + + + + This title is already linked to Ryujinx. Would you like to unlink it? + هل تريد إلغاء الارتباط؟ Ryujinxهذا العنوان مرتبط بالفعل بـ + + + + Failed to unlink old directory + فشل إلغاء ربط المجلد القديم + + + + + OS returned error: %1 + أعاد نظام التشغيل خطأ: %1 + + + + Failed to copy save data + فشل نسخ بيانات الحفظ + + + + Unlink Successful + إلغاء الارتباط تم بنجاح + + + + Successfully unlinked Ryujinx save data. Save data has been kept intact. + بنجاح تم الاحتفاظ ببيانات الحفظ سليمة Ryujinx تم فصل بيانات حفظ + + + + Could not find Ryujinx installation + Ryujinx تعذر العثور على تثبيت + + + + Could not find a valid Ryujinx installation. This may typically occur if you are using Ryujinx in portable mode. + +Would you like to manually select a portable folder to use? + صالح قد يحدث هذا عادةً إذا كنت تستخدمه في الوضع المحمول Ryujinx تعذر العثور على تثبيت.هل ترغب في تحديد مجلد محمول يدويًا لاستخدامه؟ + + + + Ryujinx Portable Location + المحمول Ryujinx موقع + + + + Not a valid Ryujinx directory + غير صالح Ryujinx مجلد + + + + The specified directory does not contain valid Ryujinx data. + صالحة Ryujinx المجلد المحدد لا يحتوي على بيانات + + + + + Could not find Ryujinx save data + Ryujinx تعذر العثور على بيانات حفظ + + + + QtCommon::Game + + + Error Removing Contents + خطأ في إزالة المحتويات + + + + Error Removing Update + خطأ في إزالة التحديث + + + + Error Removing DLC + خطأ في إزالة المحتوى القابل للتنزيل + + + + + + + + + Successfully Removed + تم الإزالة بنجاح + + + + Successfully removed the installed base game. + تمت إزالة اللعبة الأساسية المثبتة بنجاح. + + + + The base game is not installed in the NAND and cannot be removed. + اللعبة الأساسية غير مثبتة في ذاكرة الداخلية ولا يمكن إزالتها. + + + + Successfully removed the installed update. + تمت إزالة التحديث المثبت بنجاح. + + + + There is no update installed for this title. + لا يوجد تحديث مثبت لهذا العنوان. + + + + There are no DLCs installed for this title. + لا يوجد محتوى قابل للتنزيل مثبت لهذا العنوان. + + + + Successfully removed %1 installed DLC. + تمت إزالة المحتوى القابل للتنزيل المثبت %1 بنجاح. + + + + + Error Removing Transferable Shader Cache + Transferable Shader حدث خطأ أثناء إزالة ذاكرة + + + + + A shader cache for this title does not exist. + لا يوجد ذاكرة تخزين مؤقتة للتظليل لهذا العنوان. + + + + Successfully removed the transferable shader cache. + تم إزالة ذاكرة التخزين المؤقتة للتظليل القابلة للنقل بنجاح. + + + + Failed to remove the transferable shader cache. + فشل في إزالة ذاكرة التخزين المؤقتة للتظليل القابلة للنقل. + + + + Error Removing Vulkan Driver Pipeline Cache + Vulkan حدث خطأ أثناء إزالة ذاكرة التخزين المؤقتة لخط أنابيب برنامج تشغيل + + + + Failed to remove the driver pipeline cache. + فشل في إزالة ذاكرة التخزين المؤقتة لخط أنابيب برنامج التشغيل. + + + + + Error Removing Transferable Shader Caches + Transferable Shader حدث خطأ أثناء إزالة ذاكرة + + + + Successfully removed the transferable shader caches. + تم إزالة ذاكرة التخزين المؤقتة للتظليل القابلة للنقل بنجاح. + + + + Failed to remove the transferable shader cache directory. + فشل في إزالة مجلد ذاكرة التخزين المؤقتة للتظليل القابل للتحويل. + + + + + Error Removing Custom Configuration + خطأ في إزالة التهيئة المخصصة + + + + A custom configuration for this title does not exist. + لا يوجد إعدادات مخصص لهذا العنوان. + + + + Successfully removed the custom game configuration. + تمت إزالة إعدادات اللعبة المخصص بنجاح. + + + + Failed to remove the custom game configuration. + فشل إزالة إعدادات اللعبة المخصص. + + + + Reset Metadata Cache + إعادة تعيين ذاكرة التخزين المؤقتة للبيانات الوصفية + + + + The metadata cache is already empty. + ذاكرة التخزين المؤقتة للبيانات الوصفية فارغة بالفعل. + + + + The operation completed successfully. + اكتملت العملية بنجاح. + + + + The metadata cache couldn't be deleted. It might be in use or non-existent. + تعذر حذف ذاكرة التخزين المؤقتة للبيانات الوصفية. قد تكون قيد الاستخدام أو غير موجودة. + + + + Create Shortcut + إنشاء اختصار + + + + Do you want to launch the game in fullscreen? + هل تريد تشغيل اللعبة في وضع ملء الشاشة؟ + + + + Shortcut Created + تم إنشاء الاختصار + + + + Successfully created a shortcut to %1 + تم إنشاء اختصار بنجاح إلى %1 + + + + Shortcut may be Volatile! + قد يكون الاختصار متقلبًا! + + + + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? + سيؤدي هذا إلى إنشاء اختصار لصورة التطبيق الحالية. قد لا يعمل هذا بشكل جيد إذا قمت بالتحديث. هل تريد المتابعة؟ + + + + Failed to Create Shortcut + فشل في إنشاء اختصار + + + + Failed to create a shortcut to %1 + فشل إنشاء اختصار إلى %1 + + + + Create Icon + إنشاء أيقونة + + + + Cannot create icon file. Path "%1" does not exist and cannot be created. + لا يمكن إنشاء ملف الرمز. المسار ”%1“ غير موجود ولا يمكن إنشاؤه. + + + + No firmware available + لا يوجد فيرموير متوفر + + + + Please install firmware to use the home menu. + يرجى تثبيت الفيرموير لاستخدام القائمة الرئيسية. + + + + Home Menu Applet + القائمة الرئيسية + + + + Home Menu is not available. Please reinstall firmware. + القائمة الرئيسية غير متوفرة. يرجى إعادة تثبيت الفيرموير. + + + + QtCommon::Mod + + + Mod Name + اسم التعديل + + + + What should this mod be called? + ما الاسم المناسب لهذا التعديل؟ + + + + RomFS + RomFS + + + + ExeFS/Patch + ExeFS/التصحيح + + + + Cheat + الغش + + + + Mod Type + نوع التعديل + + + + Could not detect mod type automatically. Please manually specify the type of mod you downloaded. + +Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods. + تعذر الكشف عن نوع التعديل تلقائيًا. يرجى تحديد نوع التعديل الذي قمت بتنزيله يدويًا. + + عادةً ما تكون تعديلات (.pchtxt) ولكن التصحيحات .RomFS معظم التعديلات هي ExeFS. + + + + + Mod Extract Failed + فشل استخراج التعديل + + + + Failed to create temporary directory %1 + %1 فشل إنشاء مجلد المؤقت + + + + Zip file %1 is empty + الملف المضغوط 1% فارغ + + + + QtCommon::Path + + + Error Opening Shader Cache + خطأ في فتح ذاكرة التخزين المؤقتة للتظليل + + + + Failed to create or open shader cache for this title, ensure your app data directory has write permissions. + فشل إنشاء أو فتح ذاكرة التخزين المؤقتة للتظليل لهذا العنوان، تأكد من أن دليل بيانات التطبيق لديك يحتوي على أذونات الكتابة. + + + + QtCommon::StringLookup + + + Contains game save data. DO NOT REMOVE UNLESS YOU KNOW WHAT YOU'RE DOING! + يحتوي على بيانات حفظ اللعبة. لا تحذفه إلا إذا كنت تعرف ما تفعله! + + + + Contains Vulkan and OpenGL pipeline caches. Generally safe to remove. + يمكن إزالته بأمان بشكل عام Vulkan و OpenGL يحتوي على ذاكرات التخزين المؤقتة لخطوط أنابيب + + + + Contains updates and DLC for games. + يحتوي على تحديثات ومحتوى قابل للتنزيل للألعاب. + + + + Contains firmware and applet data. + يحتوي على بيانات الفيرموير والتطبيقات. + + + + Contains game mods, patches, and cheats. + يحتوي على تعديلات اللعبة والتصحيحات والغش. + + + + Decryption Keys were successfully installed + تم تثبيت مفاتيح فك التشفير بنجاح + + + + Unable to read key directory, aborting + تعذر قراءة مجلد المفاتيح، جارٍ الإلغاء + + + + One or more keys failed to copy. + فشل نسخ مفتاح واحد أو أكثر. + + + + Verify your keys file has a .keys extension and try again. + وحاول مرة أخرى keys تأكد من أن ملف المفاتيح لديك يحتوي على امتداد + + + + Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. + تعذّر تهيئة مفاتيح فك التشفير. تأكد من تحديث أدوات التفريغ لديك، ثم أعد تفريغ المفاتيح. + + + + Successfully installed firmware version %1 + تم تثبيت إصدار الفيرموير %1 بنجاح + + + + Unable to locate potential firmware NCA files + المحتملة للفيرموير NCA تعذر تحديد موقع ملفات + + + + Failed to delete one or more firmware files. + فشل في حذف ملف واحد أو أكثر من ملفات الفيرموير. + + + + One or more firmware files failed to copy into NAND. + فشل نسخ ملف واحد أو أكثر من ملفات الفيرموير إلى الذاكرة الداخلية + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. Restart Eden or re-install firmware. + تم إلغاء تثبيت الفيرموير، فقد يكون في حالة سيئة أو تالفًا. أعد تشغيل إيدن أو أعد تثبيت الفيرموير. + + + + Firmware missing. Firmware is required to run certain games and use the Home Menu. + الفيرموير مفقود. الفيرموير مطلوب لتشغيل بعض الألعاب واستخدام القائمة الرئيسية. + + + + Firmware reported as present, but was unable to be read. Check for decryption keys and redump firmware if necessary. + تم التحقق من وجود الفيرموير، ولكن تعذر قراءته. تحقق من مفاتيح فك التشفير، وقم بتفريغ الفيرموير إذا لزم الأمر. + + + + Eden has detected user data for the following emulators: + اكتشف إيدن بيانات المستخدم للمحاكيات التالية: + + + + Would you like to migrate your data for use in Eden? +Select the corresponding button to migrate data from that emulator. +This may take a while. + هل ترغب في نقل بياناتك لاستخدامها في إيدن؟ +حدد الزر المقابل لنقل البيانات من ذلك المحاكي. +قد يستغرق هذا بعض الوقت. + + + + Clearing shader cache is recommended for all users. +Do not uncheck unless you know what you're doing. + يوصى جميع المستخدمين بمسح ذاكرة التخزين المؤقتة للتظليل. +لا تقم بإلغاء تحديد الخيار إلا إذا كنت تعرف ما تفعله. + + + + Keeps the old data directory. This is recommended if you aren't +space-constrained and want to keep separate data for the old emulator. + يحتفظ بدليل البيانات القديم. يُنصح بهذا إذا + لم تكن لديك مساحة كافية وترغب في الاحتفاظ ببيانات منفصلة للمحاكي القديم. + + + + Deletes the old data directory. +This is recommended on devices with space constraints. + يحذف مجلد البيانات القديم. + يُنصح بهذا على الأجهزة ذات المساحة المحدودة. + + + + Creates a filesystem link between the old directory and Eden directory. +This is recommended if you want to share data between emulators. + يُنشئ رابط نظام ملفات بين المجلد القديم ومجلد إيدن. +يُنصح بهذا إذا كنت ترغب في مشاركة البيانات بين المحاكيات. + + + + Ryujinx title database does not exist. + غير موجودة Ryujinx قاعدة بيانات عناوين + + + + Invalid header on Ryujinx title database. + Ryujinx رأس غير صالح في قاعدة بيانات عناوين + + + + Invalid magic header on Ryujinx title database. + Ryujinx رأس سحري غير صالح في قاعدة بيانات عناوين + + + + Invalid byte alignment on Ryujinx title database. + Ryujinx محاذاة بايت غير صالحة في قاعدة بيانات عناوين + + + + No items found in Ryujinx title database. + Ryujinx لم يتم العثور على أي عناصر في قاعدة بيانات عناوين + + + + Title %1 not found in Ryujinx title database. + Ryujinx العنوان %1 غير موجود في قاعدة بيانات عناوين + + QtControllerSelectorDialog @@ -8821,7 +10150,7 @@ p, li { white-space: pre-wrap; } - + Pro Controller Pro Controller @@ -8834,7 +10163,7 @@ p, li { white-space: pre-wrap; } - + Dual Joycons جوي كون ثنائي @@ -8847,9 +10176,9 @@ p, li { white-space: pre-wrap; } - + Left Joycon - جوي كون يسار + جوي كون اليسرى @@ -8860,9 +10189,9 @@ p, li { white-space: pre-wrap; } - + Right Joycon - جوي كون يمين + جوي كون اليمنى @@ -8874,7 +10203,7 @@ p, li { white-space: pre-wrap; } Use Current Config - استخدم التكوين الحالي + استخدام الإعدادات الحالية @@ -8889,7 +10218,7 @@ p, li { white-space: pre-wrap; } - + Handheld محمول @@ -8921,12 +10250,12 @@ p, li { white-space: pre-wrap; } Console Mode - وضع الوحدة + وضع وحدة التحكم Docked - مركب بالمنصة + الإرساء @@ -8937,7 +10266,7 @@ p, li { white-space: pre-wrap; } Configure - تعديل + الإعدادات @@ -8952,12 +10281,12 @@ p, li { white-space: pre-wrap; } Create - انشاء + إنشاء Controllers - ذراع التحكم + اذرع التحكم @@ -9010,32 +10339,32 @@ p, li { white-space: pre-wrap; } لا توجد اذرع تحكم كافية - + GameCube Controller - ذراع تحكم GameCube + GameCube ذراع تحكم - + Poke Ball Plus Poke Ball Plus - + NES Controller ذراع تحكم NES - + SNES Controller ذراع تحكم SNES - + N64 Controller ذراع تحكم N64 - + Sega Genesis Sega Genesis @@ -9043,27 +10372,28 @@ p, li { white-space: pre-wrap; } QtErrorDisplay - - - + + + Error Code: %1-%2 (0x%3) رمز خطأ: %1-%2 (0x%3) - + An error has occurred. Please try again or contact the developer of the software. حدث خطأ. يرجى المحاولة مرة أخرى أو الاتصال بمطور البرنامج. - + An error occurred on %1 at %2. Please try again or contact the developer of the software. - + حدث خطأ في %1 في %2. +يرجى المحاولة مرة أخرى أو الاتصال بمطور البرنامج. - + An error has occurred. %1 @@ -9079,7 +10409,7 @@ Please try again or contact the developer of the software. QtProfileSelectionDialog - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -9087,30 +10417,30 @@ Please try again or contact the developer of the software. %2 - + Users المستخدمين Profile Creator - منشئ الملف الشخصي + منشئ ملف التعريف Profile Selector - محدد الملف الشخصي + محدد ملف التعريف Profile Icon Editor - محرر أيقونة الملف الشخصي + تعديل أيقونة ملف التعريف Profile Nickname Editor - محرر الاسم المستعار للملف الشخصي + محرر الاسم المستعار للملف التعريف @@ -9120,7 +10450,7 @@ Please try again or contact the developer of the software. Who is using Nintendo eShop? - ؟Nintendo eShop من يستخدم + ؟Nintendo eShop من يستخدم @@ -9130,7 +10460,7 @@ Please try again or contact the developer of the software. Who is posting? - من ينشر؟ + من يقوم بالنشر؟ @@ -9150,17 +10480,17 @@ Please try again or contact the developer of the software. Which user will be transferred to another console? - من هو المستخدم الذي سيتم نقله إلى وحدة تحكم أخرى؟ + أي مستخدم سيتم نقله إلى وحدة تحكم أخرى؟ Send save data for which user? - إرسال حفظ البيانات لأي مستخدم؟ + إرسال بيانات الحفظ لأي مستخدم؟ Select a user: - :اختر مستخدم + حدد مستخدمًا: @@ -9173,14 +10503,14 @@ Please try again or contact the developer of the software. Enter Text - ادخل نص + أدخل النص <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -9189,163 +10519,93 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - - + + OK موافق - + Cancel إلغاء + + RyujinxDialog + + + Ryujinx Link + Ryujinx ربط بـ + + + + Linking save data to Ryujinx lets both Ryujinx and Eden reference the same save files for your games. + +By selecting "From Eden", previous save data stored in Ryujinx will be deleted, and vice versa for "From Ryujinx". + يتيح إيدن الرجوع إلى نفس ملفات الحفظ لألعابك Ryujinx ربط بيانات الحفظ بـ + +والعكس صحيح Ryujinx عند اختيار ”من إيدن“، سيتم حذف البيانات المحفوظة سابقًا في + + + + From Eden + من إيدن + + + + From Ryujinx + Ryujinx من + + + + Cancel + إلغاء + + + + Failed to link save data + فشل ربط بيانات الحفظ + + + + OS returned error: %1 + أعاد نظام التشغيل خطأ: %1 + + SequenceDialog Enter a hotkey - + أدخل مفتاح الاختصار - WaitTreeCallstack + SetPlayTimeDialog - - Call stack - - - - - WaitTreeSynchronizationObject - - - [%1] %2 - [%1] %2 + + Set Play Time Data + تعيين بيانات زمن التشغيل - - waited by no thread - - - - - WaitTreeThread - - - runnable - قابل للتشغيل + + Hours: + :ساعات - - paused - متوقف مؤقتا + + Minutes: + :دقائق - - sleeping - نائم + + Seconds: + :ثواني - - waiting for IPC reply - - - - - waiting for objects - في انتظار العناصر - - - - waiting for condition variable - - - - - waiting for address arbiter - - - - - waiting for suspend resume - - - - - waiting - ينتظر - - - - initialized - مهيئ - - - - terminated - تم إنهاؤه - - - - unknown - غير معروف - - - - PC = 0x%1 LR = 0x%2 - PC = 0x%1 LR = 0x%2 - - - - ideal - خامل - - - - core %1 - النواة %1 - - - - processor = %1 - معالج = %1 - - - - affinity mask = %1 - - - - - thread id = %1 - معرف الخيط = %1 - - - - priority = %1(current) / %2(normal) - الأولوية = %1(الحالي) / %2(الطبيعي) - - - - last running ticks = %1 - - - - - WaitTreeThreadList - - - waited by thread - - - - - WaitTreeWidget - - - &Wait Tree - + + Total play time reached maximum. + وصل إجمالي زمن التشغيل إلى الحد الأقصى. diff --git a/dist/languages/ca.ts b/dist/languages/ca.ts index c67c2d6f24..74a8c99ef9 100644 --- a/dist/languages/ca.ts +++ b/dist/languages/ca.ts @@ -1,25 +1,15 @@ - - - + AboutDialog - - About yuzu - Sobre yuzu - - - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - - About eden - + About Eden + Sobre Eden - <html><head/><body><p><span style=" font-size:28pt;">eden</span></p></body></html> - + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> @@ -34,70 +24,50 @@ p, li { white-space: pre-wrap; } hr { height: 1px; border-width: 0; } li.unchecked::marker { content: "\2610"; } li.checked::marker { content: "\2612"; } -</style></head><body style=" font-family:'Adwaita Sans'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> - +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> + - <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">This software should not be used to play games you have not legally obtained.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu és un emulador experimental de codi obert per la Nintendo Switch sota llicència GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Aquest software no hauria de ser utilitzat per a jugar videojocs que no has obtingut legalment.</span></p></body></html> - - - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Pàgina web</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Codi Font</span></a>|<a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contribuïdors</span></a>|<a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Llicència</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Lloc web</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Codi font</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Col·laboradors</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Llicència</span></a></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. eden is not affiliated with Nintendo in any way.</span></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; és una marca registrada de Nintendo. yuzu no està afiliat a Nintendo de cap manera.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. Eden is not affiliated with Nintendo in any way.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; és una marca registrada de Nintendo. Eden no està afiliada a Nintendo de cap manera.</span></p></body></html> CalibrationConfigurationDialog - + Communicating with the server... Comunicant-se amb el servidor... - + Cancel - Cancel·la + Cancel·lar - + Touch the top left corner <br>of your touchpad. Premi la cantonada superior esquerra<br>del seu panell tàctil. - + Now touch the bottom right corner <br>of your touchpad. Ara premi la cantonada inferior dreta <br>del seu panell tàctil. - + Configuration completed! Configuració completada! - + OK D'acord @@ -120,82 +90,82 @@ p, li { white-space: pre-wrap; } Enviar missatge - + Members Membres - + %1 has joined %1 s'ha unit - + %1 has left - %1 ha marxat + %1 s'ha marxat - + %1 has been kicked %1 ha sigut expulsat - + %1 has been banned - %1 ha sigut banejat + %1 ha sigut vetat - + %1 has been unbanned - %1 ha sigut desbanejat + %1 ha sigut desvetat - + View Profile - Veure perfil + Veure el perfil - - + + Block Player Bloquejar jugador - + When you block a player, you will no longer receive chat messages from them.<br><br>Are you sure you would like to block %1? - Quan bloquejes a un jugador, no seràs capaç de rebre missatges de xat d'ell.<br><br> Estàs segur que vols bloquejar %1? + Quan bloquejes a un jugador, no seràs capaç de rebre missatges del xat d'ell.<br><br> Està segur que vol bloquejar a %1? - + Kick Expulsar - + Ban - Ban + Vetar - + Kick Player Expulsar jugador - + Are you sure you would like to <b>kick</b> %1? - Estàs segur que vols expulsar a %1? + Està segur que vol <b>expulsar</b> a %1? + + + + Ban Player + Vetar jugador - Ban Player - Banejar jugador - - - Are you sure you would like to <b>kick and ban</b> %1? This would ban both their forum username and their IP address. - Estàs segur que vols expulsar i banejar a %1? Aixó banejaria tant el seu nom d'usuari del forum com la seva adreça IP. + Està segur de que vol expulsar i vetar a %1? Aixó vetará tant el seu nom d'usuari del forum com la seva adreça IP. @@ -218,23 +188,23 @@ This would ban both their forum username and their IP address. Leave Room - Abandonar sala + Abandonar la sala ClientRoomWindow - + Connected Connectat - + Disconnected Desconnectat - + %1 - %2 (%3/%4 members) - connected %1 - %2 (/%3/%4 membres) - connectat @@ -244,7 +214,7 @@ This would ban both their forum username and their IP address. Report Compatibility - Informeu sobre la compatibilitat + Informar sobre la compatibilitat @@ -255,16 +225,12 @@ This would ban both their forum username and their IP address. Report Game Compatibility - Informeu sobre la compatibilitat del joc - - - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of yuzu you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected yuzu account</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Si escolliu presentar un cas de prova a la </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">llista de compatibilitat de Yuzu</span></a><span style=" font-size:10pt;">, la informació següent es recollirà i es mostrarà al web:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Informació del maquinari (CPU / GPU / Sistema operatiu)</li> <li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Quina versió de yuzu està utilitzant?</li> <li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">El compte de yuzu connectat</li></ul></body></html> + Informar sobre la compatibilitat del joc <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">eden Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of eden you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected eden account</li></ul></body></html> - + @@ -274,7 +240,7 @@ This would ban both their forum username and their IP address. Yes The game starts to output video or audio - Si El joc comença a produïr video o audio + Sí El joc comença a produïr video o audio @@ -284,12 +250,12 @@ This would ban both their forum username and their IP address. Yes The game gets past the intro/menu and into gameplay - Sí El joc supera la introducció/menú i entra en la part jugable. + Sí El joc supera la introducció/menú i entra en la part jugable. No The game crashes or freezes while loading or using the menu - No El joc pot fallar o es bloqueja mentre es carrega o s'utilitza el menú + No El joc falla o es bloqueja mentre es carrega o s'utilitza el menú @@ -299,12 +265,12 @@ This would ban both their forum username and their IP address. Yes The game works without crashes - Sí El joc funciona sense errors + Sí El joc funciona sense errors No The game crashes or freezes during gameplay - No El joc pot fallar o es pot bloquejar durant la part jugable. + No El joc falla o es bloqueja durant la part jugable. @@ -314,12 +280,12 @@ This would ban both their forum username and their IP address. Yes The game can be finished without any workarounds - Sí El joc es pot acabar sense ninguna configuració extra especifica . + Sí El joc es pot acabar sense ninguna configuració extra especifica No The game can't progress past a certain area - No El joc no pot avançar més enllà d'una zona determinada + No El joc no pot avançar més enllà d'una zona determinada @@ -329,17 +295,17 @@ This would ban both their forum username and their IP address. Major The game has major graphical errors - Important El joc té errors gràfics importants + Major El joc té errors gràfics importants Minor The game has minor graphical errors - Menys important El joc té errors gràfics menors + Menor El joc té errors gràfics menors None Everything is rendered as it looks on the Nintendo Switch - Cap Tot es renderitzat com es veu a la Nintendo Switch + Cap Tot es renderitzat com es veu a la Nintendo Switch @@ -349,17 +315,17 @@ This would ban both their forum username and their IP address. Major The game has major audio errors - Important El joc té errors d'àudio majors + Major El joc té errors greus d'àudio Minor The game has minor audio errors - Menys important El joc té errors d'àudio menors + Menor El joc té errors lleus d'àudio None Audio is played perfectly - Cap L'àudio és reproduit perfectament + Cap L'àudio es reprodueix perfectament @@ -372,22 +338,22 @@ This would ban both their forum username and their IP address. Gràcies per el vostre enviament. - + Submitting Enviant - + Communication error Error de comunicació - + An error occurred while sending the Testcase S'ha produït un error mentre s'enviava el Cas de Prova - + Next Següent @@ -395,1525 +361,1865 @@ This would ban both their forum username and their IP address. ConfigurationShared - + % % - + Amiibo editor - + Editor d'Amiibo - + Controller configuration - + Configuració del comandament - + Data erase - + - + Error Error - + Net connect - + - + Player select - + - + Software keyboard - + - + Mii Edit - + Editor de Mii - + Online web - + Web en línia - + Shop - + Botiga - + Photo viewer - + Àlbum - + Offline web - + Web fora de línia - + Login share - + - + Wifi web auth - + - + My page - + La meva pàgina - + + Enable Overlay Applet + + + + + Enables Horizon's built-in overlay applet. Press and hold the home button for 1 second to show it. + + + + Output Engine: Motor de sortida: - + Output Device: - Dispositiu de Sortida: + Dispositiu de sortida: - + Input Device: - Dispositiu d'Entrada: + Dispositiu d'entrada: - + Mute audio Silenciar àudio - + Volume: Volum: - + Mute audio when in background Silenciar l'àudio quan estigui en segon plà - + Multicore CPU Emulation Emulació de CPU multinucli - - This option increases CPU emulation thread use from 1 to the Switch’s maximum of 4. -This is mainly a debug option and shouldn’t be disabled. - + + This option increases CPU emulation thread use from 1 to the maximum of 4. +This is mainly a debug option and shouldn't be disabled. + - + Memory Layout - + - - Increases the amount of emulated RAM from the stock 4GB of the retail Switch to the developer kit's 8/6GB. -It’s doesn’t improve stability or performance and is intended to let big texture mods fit in emulated RAM. -Enabling it will increase memory use. It is not recommended to enable unless a specific game with a texture mod needs it. - + + Increases the amount of emulated RAM. +Doesn't affect performance/stability but may allow HD texture mods to load. + - + Limit Speed Percent Limitar percentatge de velocitat - - Controls the game's maximum rendering speed, but it’s up to each game if it runs faster or not. + + Controls the game's maximum rendering speed, but it's up to each game if it runs faster or not. 200% for a 30 FPS game is 60 FPS, and for a 60 FPS game it will be 120 FPS. Disabling it means unlocking the framerate to the maximum your PC can reach. - + - + + Turbo Speed + Velocitat turbo + + + + When the Turbo Speed hotkey is pressed, the speed will be limited to this percentage. + + + + + Slow Speed + Velocitat lenta + + + + When the Slow Speed hotkey is pressed, the speed will be limited to this percentage. + + + + Synchronize Core Speed - + Sincronitzar la velocitat dels nuclis - - Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). -Compatibility varies by game; many (especially older ones) may not respond well. + + Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). Can help reduce stuttering at lower framerates. - + - + Accuracy: Precisió: - - This setting controls the accuracy of the emulated CPU. -Don't change this unless you know what you are doing. - + + Change the accuracy of the emulated CPU (for debugging only). + - - + + Backend: - + Motor: - - Fast CPU Time - + + CPU Overclock + Overclock de la CPU - + Overclocks the emulated CPU to remove some FPS limiters. Weaker CPUs may see reduced performance, and certain games may behave improperly. Use Boost (1700MHz) to run at the Switch's highest native clock, or Fast (2000MHz) to run at 2x clock. - + - + + Custom CPU Ticks + Ticks del CPU personalitzats + + + + Set a custom value of CPU ticks. Higher values can increase performance, but may cause deadlocks. A range of 77-21000 is recommended. + + + + + Enable Host MMU Emulation (fastmem) + + + + + This optimization speeds up memory accesses by the guest program. +Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU. +Disabling this forces all memory accesses to use Software MMU Emulation. + + + + Unfuse FMA (improve performance on CPUs without FMA) Desactivar FMA (millora el rendiment en CPUs sense FMA) - + This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support. - + - + Faster FRSQRTE and FRECPE FRSQRTE i FRECPE més ràpid - + This option improves the speed of some approximate floating-point functions by using less accurate native approximations. Aquest paràmetre millora la velocitat d'algunes funcions de coma flotant, amb l'ús d'aproximacions natives menys precises. - + Faster ASIMD instructions (32 bits only) Instruccions ASIMD més ràpides (només 32 bits) - + This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes. - + - + Inaccurate NaN handling Gestió imprecisa NaN - + This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions. - + - + Disable address space checks Desactiva les comprovacions d'espai d'adreces - - This option improves speed by eliminating a safety check before every memory read/write in guest. -Disabling it may allow a game to read/write the emulator's memory. - + + This option improves speed by eliminating a safety check before every memory operation. +Disabling it may allow arbitrary code execution. + - + Ignore global monitor Ignorar monitorització global - + 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. - + - + API: API: - - Switches between the available graphics APIs. -Vulkan is recommended in most cases. - + + Changes the output graphics API. +Vulkan is recommended. + - + Device: Dispositiu: - - This setting selects the GPU to use with the Vulkan backend. - + + This setting selects the GPU to use (Vulkan only). + - - Shader Backend: - Suport de shaders: - - - - The shader backend to use for the OpenGL renderer. -GLSL is the fastest in performance and the best in rendering accuracy. -GLASM is a deprecated NVIDIA-only backend that offers much better shader building performance at the cost of FPS and rendering accuracy. -SPIR-V compiles the fastest, but yields poor results on most GPU drivers. - - - - + Resolution: Resolució: - - Forces the game to render at a different resolution. -Higher resolutions require much more VRAM and bandwidth. -Options lower than 1X can cause rendering issues. - + + Forces to render at a different resolution. +Higher resolutions require more VRAM and bandwidth. +Options lower than 1X can cause artifacts. + - + Window Adapting Filter: Filtre d'adaptació de finestra: - + FSR Sharpness: - + Nitidesa FSR: - - Determines how sharpened the image will look while using FSR’s dynamic contrast. - + + Determines how sharpened the image will look using FSR's dynamic contrast. + - + Anti-Aliasing Method: - Mètode d'anti-aliasing + Mètode de suavitzat de vores - + The anti-aliasing method to use. SMAA offers the best quality. -FXAA has a lower performance impact and can produce a better and more stable picture under very low resolutions. - +FXAA can produce a more stable picture in lower resolutions. + - + Fullscreen Mode: Mode pantalla completa: - + The method used to render the window in fullscreen. Borderless offers the best compatibility with the on-screen keyboard that some games request for input. Exclusive fullscreen may offer better performance and better Freesync/Gsync support. - + - + Aspect Ratio: Relació d'aspecte: - - Stretches the game to fit the specified aspect ratio. -Switch games only support 16:9, so custom game mods are required to get other ratios. + + Stretches the renderer to fit the specified aspect ratio. +Most games only support 16:9, so modifications are required to get other ratios. Also controls the aspect ratio of captured screenshots. - + - - Use disk pipeline cache - Utilitzar cache de shaders de canonada + + Use persistent pipeline cache + - + Allows saving shaders to storage for faster loading on following game boots. Disabling it is only intended for debugging. - + - - Optimize SPIRV output shader - + + Optimize SPIRV output + Optimitzar la sortida de SPIRV - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. This feature is experimental. - + - - Use asynchronous GPU emulation - Utilitzar emulació asíncrona de GPU - - - - Uses an extra CPU thread for rendering. -This option should always remain enabled. - - - - + NVDEC emulation: Emulació NVDEC: - + Specifies how videos should be decoded. It can either use the CPU or the GPU for decoding, or perform no decoding at all (black screen on videos). In most cases, GPU decoding provides the best performance. - + - + ASTC Decoding Method: - + - + This option controls how ASTC textures should be decoded. -CPU: Use the CPU for decoding, slowest but safest method. -GPU: Use the GPU's compute shaders to decode ASTC textures, recommended for most games and users. -CPU Asynchronously: Use the CPU to decode ASTC textures as they arrive. Completely eliminates ASTC decoding -stuttering at the cost of rendering issues while the texture is being decoded. - +CPU: Use the CPU for decoding. +GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). +CPU Asynchronously: Use the CPU to decode ASTC textures on demand. EliminatesASTC decoding +stuttering but may present artifacts. + - + ASTC Recompression Method: - + - - Almost all desktop and laptop dedicated GPUs lack support for ASTC textures, forcing the emulator to decompress to an intermediate format any card supports, RGBA8. -This option recompresses RGBA8 to either the BC1 or BC3 format, saving VRAM but negatively affecting image quality. - + + Most GPUs lack support for ASTC textures and must decompress to anintermediate format: RGBA8. +BC1/BC3: The intermediate format will be recompressed to BC1 or BC3 format, + saving VRAM but degrading image quality. + - + + Frame Pacing Mode (Vulkan only) + + + + + Controls how the emulator manages frame pacing to reduce stuttering and make the frame rate smoother and more consistent. + + + + VRAM Usage Mode: - + - - Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. Has no effect on integrated graphics. Aggressive mode may severely impact the performance of other applications such as recording software. - + + Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. +Aggressive mode may impact performance of other applications such as recording software. + - + + Skip CPU Inner Invalidation + + + + + Skips certain cache invalidations during memory updates, reducing CPU usage and improving latency. This may cause soft-crashes. + + + + VSync Mode: - + Mode de sincronització vertical: - + FIFO (VSync) does not drop frames or exhibit tearing but is limited by the screen refresh rate. -FIFO Relaxed is similar to FIFO but allows tearing as it recovers from a slow down. +FIFO Relaxed 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. - +Immediate (no synchronization) presents whatever is available and can exhibit tearing. + - + + Sync Memory Operations + + + + + Ensures data consistency between compute and memory operations. +This option fixes issues in games, but may degrade performance. +Unreal Engine 4 games often see the most significant changes thereof. + + + + Enable asynchronous presentation (Vulkan only) - + - + Slightly improves performance by moving presentation to a separate CPU thread. - + - + Force maximum clocks (Vulkan only) - + - + Runs work in the background while waiting for graphics commands to keep the GPU from lowering its clock speed. - + - + Anisotropic Filtering: Filtrat anisotròpic: - + Controls the quality of texture rendering at oblique angles. -It’s a light setting and safe to set at 16x on most GPUs. - +Safe to set at 16x on most GPUs. + - - Accuracy Level: - Nivell de precisió: + + GPU Mode: + Mode de la GPU: - - GPU emulation accuracy. -Most games render fine with Normal, but High is still required for some. -Particles tend to only render correctly with High accuracy. -Extreme should only be used for debugging. -This option can be changed while playing. -Some games may require booting on high to render properly. - + + Controls the GPU emulation mode. +Most games render fine with Fast or Balanced modes, but Accurate is still required for some. +Particles tend to only render correctly with Accurate mode. + - - Use asynchronous shader building (Hack) - Utilitzar la construcció de shaders asíncrona (Hack) + + DMA Accuracy: + Precisió DMA: - - Enables asynchronous shader compilation, which may reduce shader stutter. -This feature is experimental. - + + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. + - Use Fast GPU Time (Hack) - Utilitzar temps ràpid a la GPU (Hack) + + Enable asynchronous shader compilation + - Enables Fast GPU Time. This option will force most games to run at their highest native resolution. - Habilita el temps ràpid de la GPU. Aquesta opció obligarà a la majoria dels jocs a executar-se a la seva resolució nativa més alta. + + May reduce shader stutter. + - + + Fast GPU Time + + + + + Overclocks the emulated GPU to increase dynamic resolution and render distance. +Use 256 for maximal performance and 512 for maximal graphics fidelity. + + + + + GPU Unswizzle + + + + + Accelerates BCn 3D texture decoding using GPU compute. +Disable if experiencing crashes or graphical glitches. + + + + + GPU Unswizzle Max Texture Size + + + + + Sets the maximum size (MiB) for GPU-based texture unswizzling. +While the GPU is faster for medium and large textures, the CPU may be more efficient for very small ones. +Adjust this to find the balance between GPU acceleration and CPU overhead. + + + + + GPU Unswizzle Stream Size + + + + + Sets the maximum amount of texture data (in MiB) processed per frame. +Higher values can reduce stutter during texture loading but may impact frame consistency. + + + + + GPU Unswizzle Chunk Size + + + + + Determines the number of depth slices processed in a single dispatch. +Increasing this can improve throughput on high-end GPUs but may cause TDR or driver timeouts on weaker hardware. + + + + Use Vulkan pipeline cache - + - + Enables GPU vendor-specific pipeline cache. This option can improve shader loading time significantly in cases where the Vulkan driver does not store pipeline cache files internally. - + - + Enable Compute Pipelines (Intel Vulkan Only) - + - - Enable compute pipelines, required by some games. -This setting only exists for Intel proprietary drivers, and may crash if enabled. + + 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. - + - + Enable Reactive Flushing - + - + Uses reactive flushing instead of predictive flushing, allowing more accurate memory syncing. - + - + Sync to framerate of video playback - + - + Run the game at normal speed during video playback, even when the framerate is unlocked. - + - + Barrier feedback loops - + - + Improves rendering of transparency effects in specific games. - + - + + Enable buffer history + + + + + Enables access to previous buffer states. +This option may improve rendering quality and performance consistency in some games. + + + + + Fix bloom effects + + + + + Removes bloom in Burnout. + + + + + Enable Legacy Rescale Pass + + + + + May fix rescale issues in some games by relying on behavior from the previous implementation. +Legacy behavior workaround that fixes line artifacts on AMD and Intel GPUs, and grey texture flicker on Nvidia GPUs in Luigis Mansion 3. + + + + + Extended Dynamic State + + + + + Controls the number of features that can be used in Extended Dynamic State. +Higher states allow for more features and can increase performance, but may cause additional graphical issues. + + + + + Vertex Input Dynamic State + + + + + Enables vertex input dynamic state feature for better quality and performance. + + + + + Sample Shading + + + + + Allows the fragment shader to execute per sample in a multi-sampled fragment instead of once per fragment. Improves graphics quality at the cost of performance. +Higher values improve quality but degrade performance. + + + + RNG Seed Llavor de GNA - + Controls the seed of the random number generator. -Mainly used for speedrunning purposes. - +Mainly used for speedrunning. + - + Device Name - Nom del Dispositiu + Nom del dispositiu - - The name of the emulated Switch. - + + The name of the console. + - + Custom RTC Date: - + - - This option allows to change the emulated clock of the Switch. + + This option allows to change the clock of the console. Can be used to manipulate time in games. - + - + + The number of seconds from the current unix time + + + + Language: - + Idioma: - - Note: this can be overridden when region setting is auto-select - Nota: això pot anul·lar-se quan la configuració de regió es selecciona automàticament + + This option can be overridden when region setting is auto-select + - + Region: Regió: - - The region of the emulated Switch. - + + The region of the console. + - + Time Zone: Zona horària: - - The time zone of the emulated Switch. - + + The time zone of the console. + - + Sound Output Mode: - + - + Console Mode: - + Mode de la consola - - Selects if the console is emulated in Docked or Handheld mode. + + Selects if the console is in Docked or Handheld mode. Games will change their resolution, details and supported controllers and depending on this setting. Setting to Handheld can help improve performance for low end systems. - + - - Prompt for user on game boot - Sol·licitar l'usuari en l'arrencada del joc + + Unit Serial + - - Pause emulation when in background - Pausa l'emulació quan la finestra està en segon pla + + Battery Serial + - - Fast GPU Time (Hack) - + + Debug knobs + - - Overclocks the emulated GPU to increase dynamic resolution and render distance. -Use 128 for maximal performance and 512 for maximal graphics fidelity. - + + Prompt for user profile on boot + - - Extended Dynamic State - + + Useful if multiple people use the same PC. + - - Enables the VkExtendedDynamicState* extensions. -Higher dynamic states will generally improve performance, but may cause issues on certain games or devices. - + + Pause when not in focus + - - Provoking Vertex - + + Pauses emulation when focusing on other windows. + - - Improves lighting and vertex handling in certain games. -Only Vulkan 1.0+ devices support this extension. - - - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - - Ask to select a user profile on each boot, useful if multiple people use eden on the same PC. - - - - - This setting pauses eden when focusing other windows. - - - - + Confirm before stopping emulation - + - - This setting overrides game prompts asking to confirm stopping the game. + + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - + - + Hide mouse on inactivity Ocultar el cursor del ratolí en cas d'inactivitat - - This setting hides the mouse after 2.5s of inactivity. - + + Hides the mouse after 2.5s of inactivity. + - + Disable controller applet - + - - Forcibly disables the use of the controller applet by guests. -When a guest attempts to open the controller applet, it is immediately closed. - + + Forcibly disables the use of the controller applet in emulated programs. +When a program attempts to open the controller applet, it is immediately closed. + - + Check for updates - + - + Whether or not to check for updates upon startup. - + - + Enable Gamemode - Activa el mode Joc + Activa el mode joc - + + Force X11 as Graphics Backend + + + + Custom frontend - + - + Real applet - + - + Never - + Mai - + On Load - + - + Always - + Sempre - + CPU CPU - + GPU - + GPU - + CPU Asynchronous - + - + Uncompressed (Best quality) - + - + BC1 (Low quality) - + - + BC3 (Medium quality) - + - - Conservative - - - - - Aggressive - - - - - OpenGL - - - - - Vulkan - - - - - Null - - - - - GLSL - - - - - GLASM (Assembly Shaders, NVIDIA Only) - GLASM (Assembly Shaders, només NVIDIA) - - - - SPIR-V (Experimental, AMD/Mesa Only) - - - - - Normal - - - - - High - - - - - Extreme - - - - + + Auto Auto - + + 30 FPS + 30 FPS + + + + 60 FPS + 60 FPS + + + + 90 FPS + 90 FPS + + + + 120 FPS + 120 FPS + + + + Conservative + Conservador + + + + Aggressive + Agressiu + + + + Vulkan + Vulkan + + + + OpenGL GLSL + OpenGL GLSL + + + + OpenGL GLASM (Assembly Shaders, NVIDIA Only) + OpenGL GLASM (Ensamblat d'ombrejadors, només NVIDIA) + + + + OpenGL SPIR-V (Experimental, AMD/Mesa Only) + OpenGL SPIR-V (Experimental, només AMD/Mesa) + + + + Null + Nul + + + + Fast + Ràpid + + + + Balanced + Equilibrat + + + + Accurate Precís - - Unsafe - Insegur - - - - Paranoid (disables most optimizations) - Paranoic (desactiva la majoria d'optimitzacions) - - - - Dynarmic - - - - - NCE - - - - - Borderless Windowed - Finestra sense vores - - - - Exclusive Fullscreen - Pantalla completa exclusiva - - - - No Video Output - Sense sortida de vídeo - - - - CPU Video Decoding - Descodificació de vídeo a la CPU - - - - GPU Video Decoding (Default) - Descodificació de vídeo a la GPU (Valor Predeterminat) - - - - 0.25X (180p/270p) [EXPERIMENTAL] - - - - - 0.5X (360p/540p) [EXPERIMENTAL] - - - - - 0.75X (540p/810p) [EXPERIMENTAL] - 0.75X (540p/810p) [EXPERIMENTAL] - - - - 1X (720p/1080p) - 1X (720p/1080p) - - - - 1.5X (1080p/1620p) [EXPERIMENTAL] - - - - - 2X (1440p/2160p) - 2X (1440p/2160p) - - - - 3X (2160p/3240p) - 3X (2160p/3240p) - - - - 4X (2880p/4320p) - 4X (2880p/4320p) - - - - 5X (3600p/5400p) - 5X (3600p/5400p) - - - - 6X (4320p/6480p) - 6X (4320p/6480p) - - - - 7X (5040p/7560p) - - - - - 8X (5760p/8640p) - - - - - Nearest Neighbor - Veí més proper - - - - Bilinear - Bilineal - - - - Bicubic - Bicúbic - - - - Gaussian - Gaussià - - - - ScaleForce - ScaleForce - - - - AMD FidelityFX™️ Super Resolution - - - - - Area - - - - - None - Cap - - - - FXAA - FXAA - - - - SMAA - - - - - Default (16:9) - Valor predeterminat (16:9) - - - - Force 4:3 - Forçar 4:3 - - - - Force 21:9 - Forçar 21:9 - - - - Force 16:10 - - - - - Stretch to Window - Estirar a la finestra - - - - Automatic - Automàtic - - - + + Default Valor predeterminat - + + Unsafe (fast) + Insegur (ràpid) + + + + Safe (stable) + Segur (estable) + + + + Unsafe + Insegur + + + + Paranoid (disables most optimizations) + Paranoic (desactiva la majoria d'optimitzacions) + + + + Debugging + Depuració + + + + Dynarmic + Dynarmic + + + + NCE + NCE + + + + Borderless Windowed + Finestra sense vores + + + + Exclusive Fullscreen + Pantalla completa exclusiva + + + + No Video Output + Sense sortida de vídeo + + + + CPU Video Decoding + Descodificació de vídeo a la CPU + + + + GPU Video Decoding (Default) + Descodificació de vídeo a la GPU (Valor predeterminat) + + + + 0.25X (180p/270p) [EXPERIMENTAL] + 0.25X (180p/270p) [EXPERIMENTAL] + + + + 0.5X (360p/540p) [EXPERIMENTAL] + 0.5X (360p/540p) [EXPERIMENTAL] + + + + 0.75X (540p/810p) [EXPERIMENTAL] + 0.75X (540p/810p) [EXPERIMENTAL] + + + + 1X (720p/1080p) + 1X (720p/1080p) + + + + 1.25X (900p/1350p) [EXPERIMENTAL] + 1.25X (900p/1350p) [EXPERIMENTAL] + + + + 1.5X (1080p/1620p) [EXPERIMENTAL] + 1.5X (1080p/1620p) [EXPERIMENTAL] + + + + 2X (1440p/2160p) + 2X (1440p/2160p) + + + + 3X (2160p/3240p) + 3X (2160p/3240p) + + + + 4X (2880p/4320p) + 4X (2880p/4320p) + + + + 5X (3600p/5400p) + 5X (3600p/5400p) + + + + 6X (4320p/6480p) + 6X (4320p/6480p) + + + + 7X (5040p/7560p) + 7X (5040p/7560p) + + + + 8X (5760p/8640p) + 8X (5760p/8640p) + + + + Nearest Neighbor + Veí més proper + + + + Bilinear + Bilineal + + + + Bicubic + Bicúbic + + + + Gaussian + Gaussià + + + + Lanczos + Lanczos + + + + ScaleForce + ScaleForce + + + + AMD FidelityFX Super Resolution + Super resolució AMD FidelityFX + + + + Area + Àrea + + + + MMPX + MMPX + + + + Zero-Tangent + Tangència zero + + + + B-Spline + B-Spline + + + + Mitchell + Mitchell + + + + Spline-1 + Spline-1 + + + + + None + Cap + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Default (16:9) + Valor predeterminat (16:9) + + + + Force 4:3 + Forçar 4:3 + + + + Force 21:9 + Forçar 21:9 + + + + Force 16:10 + + + + + Stretch to Window + Estirar a la finestra + + + + Automatic + Automàtic + + + 2x 2x - + 4x 4x - + 8x 8x - + 16x 16x - + + 32x + 32x + + + + 64x + 64x + + + Japanese (日本語) Japonès (日本語) - + American English - + Anglès americà - + French (français) Francès (français) - + German (Deutsch) Alemany (Deutsch) - + Italian (italiano) Italià (italiano) - + Spanish (español) Castellà (español) - + Chinese Xinès - + Korean (한국어) Coreà (한국어) - + Dutch (Nederlands) Holandès (Nederlands) - + Portuguese (português) Portuguès (português) - + Russian (Русский) Rus (Русский) - + Taiwanese Taiwanès - + British English Anglès britànic - + Canadian French Francès canadenc - + Latin American Spanish Espanyol llatinoamericà - + Simplified Chinese Xinès simplificat - + Traditional Chinese (正體中文) Xinès tradicional (正體中文) - + Brazilian Portuguese (português do Brasil) Portuguès brasiler (português do Brasil) - - + + Polish (polska) + Polonès (polska) + + + + Thai (แบบไทย) + Tailandès (แบบไทย) + + + + Japan Japó - + USA EUA - + Europe Europa - + Australia Austràlia - + China Xina - + Korea Corea - + Taiwan Taiwan - + Auto (%1) Auto select time zone Auto (%1) - + Default (%1) Default time zone Per defecte (%1) - + CET CET - + CST6CDT CST6CDT - + Cuba Cuba - + EET EET - + Egypt Egipte - + Eire Eire - + EST EST - + EST5EDT EST5EDT - + GB GB - + GB-Eire GB-Eire - + GMT GMT - + GMT+0 GMT+0 - + GMT-0 GMT-0 - + GMT0 GMT0 - + Greenwich Greenwich - + Hongkong Hong Kong - + HST HST - + Iceland Islàndia - + Iran Iran - + Israel Isreal - + Jamaica Jamaica - + Kwajalein Kwajalein - + Libya Líbia - + MET MET - + MST MST - + MST7MDT MST7MDT - + Navajo Navajo - + NZ NZ - + NZ-CHAT NZ-CHAT - + Poland Polònia - + Portugal Portugal - + PRC PRC - + PST8PDT PST8PDT - + ROC ROC - + ROK ROK - + Singapore Singapur - + Turkey Turquia - + UCT UCT - + Universal Universal - + UTC UTC - + W-SU W-SU - + WET WET - + Zulu Zulu - + Mono Mono - + Stereo Estèreo - + Surround Envoltant - + 4GB DRAM (Default) - + 4GB DRAM (Insegur) - + 6GB DRAM (Unsafe) - + 6GB DRAM (Insegur) - + 8GB DRAM - + 8GB DRAM - + 10GB DRAM (Unsafe) - + 10GB DRAM (Insegur) - + 12GB DRAM (Unsafe) - + 12GB DRAM (Insegur) - - Low (128) - - - - - Medium (256) - - - - - High (512) - - - - + Docked - Acoblada + Sobretaula - + Handheld Portàtil - + + + Off + + + + Boost (1700MHz) - + - + Fast (2000MHz) - + - + Always ask (Default) - + - + Only if game specifies not to stop Tan sols si el joc especifica no parar - + Never ask - + No preguntar mai + + + + + Medium (256) + + + + + + High (512) + + + + + Very Small (16 MB) + + + + + Small (32 MB) + + + + + Normal (128 MB) + + + + + Large (256 MB) + + + + + Very Large (512 MB) + + + + + Very Low (4 MB) + + + + + Low (8 MB) + + + + + Normal (16 MB) + + + + + Medium (32 MB) + + + + + High (64 MB) + + + + + Very Low (32) + + + + + Low (64) + + + + + Normal (128) + + + + + Disabled + + + + + ExtendedDynamicState 1 + + + + + ExtendedDynamicState 2 + + + + + ExtendedDynamicState 3 + + + + + Tree View + + + + + Grid View + @@ -1926,12 +2232,12 @@ When a guest attempts to open the controller applet, it is immediately closed. Applets - + Applets Applet mode preference - + @@ -1986,7 +2292,7 @@ When a guest attempts to open the controller applet, it is immediately closed.Restaurar els valors predeterminats - + Auto Auto @@ -2016,7 +2322,7 @@ When a guest attempts to open the controller applet, it is immediately closed. CPU Backend - + @@ -2173,7 +2479,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all memory accesses to use Software MMU Emulation.</div> @@ -2191,7 +2497,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up exclusive memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all exclusive memory accesses to use Software MMU Emulation.</div> @@ -2225,7 +2531,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up memory accesses by allowing invalid memory accesses to succeed.</div> - <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> + <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> <div style="white-space: nowrap">Aquesta optimització accelera els accessos a memòria permetent els accessos a memòria invàlida.</div> @@ -2265,30 +2571,30 @@ When a guest attempts to open the controller applet, it is immediately closed.Registre - - Open Log Location - Obrir ubicació de l'arxiu del registre - - - + Global Log Filter Filtre de registre global - + When checked, the max size of the log increases from 100 MB to 1 GB Quan està marcat, la mida màxima del registre augmenta de 100 MB a 1 GB - + Enable Extended Logging** Habilitar registre ampliat** - + Show Log in Console Mostra el registre a la consola + + + Open Log Location + Obrir ubicació de l'arxiu del registre + Homebrew @@ -2392,12 +2698,12 @@ When a guest attempts to open the controller applet, it is immediately closed. <html><head/><body><p>When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.</p></body></html> - + Disable Buffer Reorder - + @@ -2425,18 +2731,9 @@ When a guest attempts to open the controller applet, it is immediately closed.Activar tots els tipus de controladors - - Censor username in logs - - - - - **This will be reset automatically when eden closes. - - - - Enable Auto-Stub** - Activar Auto-Stub** + + Enable Auto-Stub + @@ -2445,8 +2742,8 @@ When a guest attempts to open the controller applet, it is immediately closed. - Enable CPU Debugging - Activar depuració de la CPU + Use dev.keys + @@ -2459,43 +2756,74 @@ When a guest attempts to open the controller applet, it is immediately closed.Depuració - - Flush log output on each line - + + Battery Serial: + - - Enable FS Access Log - Activar registre d'accés al FS + + Bitmask for quick development toggles + - + + Set debug knobs (bitmask) + + + + + 16-bit debug knob set for quick development toggles + + + + + (bitmask) + + + + + Debug Knobs: + + + + + Unit Serial: + + + + Enable this to output the latest generated audio command list to the console. Only affects games using the audio renderer. Habilita això per imprimir l'última llista d'ordres d'àudio a la consola. Només afecta els jocs que utilitzin el renderitzador d'àudio. - - Enable Auto-Stub - - - - + Dump Audio Commands To Console** Buidar Ordres d'Àudio a la Consola - + + Flush log output on each line + + + + + Enable FS Access Log + Activar registre d'accés al FS + + + Enable Verbose Reporting Services** Activa els serveis d'informes detallats** - **This will be reset automatically when yuzu closes. - **Això es restablirà automàticament quan es tanqui yuzu. + + Censor username in logs + - - Web applet not compiled - Web applet no compilat + + **This will be reset automatically when Eden closes. + @@ -2537,14 +2865,10 @@ When a guest attempts to open the controller applet, it is immediately closed. ConfigureDialog - - yuzu Configuration - Configuració de yuzu - - eden Configuration - + Eden Configuration + @@ -2552,88 +2876,88 @@ When a guest attempts to open the controller applet, it is immediately closed.Algunes configuracions són disponibles només quan el joc no està corrent. - + Applets - + - - + + Audio Àudio - - + + CPU CPU - + Debug Depuració - + Filesystem Sistema de fitxers - - + + General General - - + + Graphics Gràfics - + GraphicsAdvanced GràficsAvançat - - GraphicsExtensions - + + GraphicsExtra + - + Hotkeys Tecles d'accés ràpid - - + + Controls Controls - + Profiles Perfils - + Network Xarxa - - + + System Sistema - + Game List Llista de jocs - + Web Web @@ -2663,9 +2987,10 @@ When a guest attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2675,107 +3000,183 @@ When a guest attempts to open the controller applet, it is immediately closed.Targeta SD - + + Save Data + + + + Gamecard Cartutx de joc - + Path Ruta - + Inserted Insertat - + Current Game Joc actual - + Patch Manager Administrador de pegats - + Dump Decompressed NSOs Bolcar NSO descomprimides - + Dump ExeFS Bolcar ExeFS - + Mod Load Root Carpeta arrel de càrrega de mods - + Dump Root Carpeta arrel de bolcat - + Caching Cache - + Cache Game List Metadata Metadades de la llista de jocs en cache - - - - + Reset Metadata Cache Reiniciar cache de metadades - + Select Emulated NAND Directory... Seleccioni el directori de NAND emulat... - + Select Emulated SD Directory... Seleccioni el directori de SD emulat... - + + + Select Save Data Directory... + + + + Select Gamecard Path... Seleccioni la ruta del cartutx de joc... - + Select Dump Directory... Seleccioni el directori de bolcat... - + Select Mod Load Directory... Seleccioni el directori de càrrega de mods... - - The metadata cache is already empty. - El cache de metadades ja està buit. + + Save Data Directory + - - The operation completed successfully. - L'operació s'ha completat correctament. + + Choose an action for the save data directory: + - - The metadata cache couldn't be deleted. It might be in use or non-existent. - El cache de metadades no s'ha pogut eliminar. Pot ser que es trobi en ús actualment o ja hagi sigut eliminat. + + Set Custom Path + + + + + Reset to NAND + + + + + Save data exists in both the old and new locations. + +Old: %1 +New: %2 + +Would you like to migrate saves from the old location? +WARNING: This will overwrite any conflicting saves in the new location! + + + + + Would you like to migrate your save data to the new location? + +From: %1 +To: %2 + + + + + Migrate Save Data + + + + + Migrating save data... + + + + + Cancel + Cancel·lar + + + + + Migration Failed + + + + + Failed to create destination directory. + + + + + Failed to migrate save data: +%1 + + + + + Migration Complete + + + + + Save data has been migrated successfully. + +Would you like to delete the old save data? + @@ -2793,28 +3194,54 @@ When a guest attempts to open the controller applet, it is immediately closed. - Linux - + External Content + - + + Add directories to scan for DLCs and Updates without installing to NAND + + + + + Add Directory + + + + + Remove Selected + + + + Reset All Settings Reiniciar tots els paràmetres - yuzu - yuzu + + Eden + Eden - - eden - - - - + This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed? Això restablirà tota la configuració i eliminarà totes les configuracions dels jocs. No eliminarà ni els directoris de jocs, ni els perfils, ni els perfils dels controladors. Procedir? + + + Select External Content Directory... + + + + + Directory Already Added + + + + + This directory is already in the list. + + ConfigureGraphics @@ -2844,33 +3271,33 @@ When a guest attempts to open the controller applet, it is immediately closed.Color de fons: - + % FSR sharpening percentage (e.g. 50%) % - + Off Apagat - + VSync Off Vsync Apagat - + Recommended Recomanat - + On Encés - + VSync On VSync Encés @@ -2888,7 +3315,7 @@ When a guest attempts to open the controller applet, it is immediately closed.Avançat - + Advanced Graphics Settings Paràmetres gràfics avançats @@ -2898,24 +3325,38 @@ When a guest attempts to open the controller applet, it is immediately closed. Form - Formulari + - Extensions - + Extras + - - Vulkan Extension Settings - + + Hacks + - - While it's recommended to use state 3, some games may perform better on lower states. Setting to 0 (disabled) may also break games. -If your GPU is older (i.e. RX570/580 or older), it may not support these features. If this is the case, set the slider to 0 and uncheck all boxes. -These settings are experimental, and may cause black screens. If your games fail to boot or are stuck on a black screen, change these settings around. - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + + + + + % + Sample Shading percentage (e.g. 50%) + + + + + Extended Dynamic State is disabled on macOS due to MoltenVK compatibility issues that cause black screens. + @@ -2946,75 +3387,75 @@ These settings are experimental, and may cause black screens. If your games fail Restaurar els valors predeterminats - + Action Acció - + Hotkey Tecla d'accés ràpid - + Controller Hotkey Tecla d'accés ràpid del controlador - - - + + + Conflicting Key Sequence Seqüència de tecles en conflicte - - + + The entered key sequence is already assigned to: %1 La seqüència de tecles introduïda ja ha estat assignada a: %1 - + [waiting] [esperant] - + Invalid Invàlid - + Invalid hotkey settings Configuracions de dreceres de teclat invalides - + An error occurred. Please report this issue on github. Hi ha hagut un error. Siusplau informi d'aquest problema a github. - + Restore Default Restaurar el valor predeterminat - + Clear Esborrar - + Conflicting Button Sequence Seqüència de botons en conflicte - + The default button sequence is already assigned to: %1 La seqüència de botons per defecte ja està assignada a: %1 - + The default key sequence is already assigned to: %1 La seqüència de tecles predeterminada ja ha estat assignada a: %1 @@ -3290,7 +3731,7 @@ These settings are experimental, and may cause black screens. If your games fail Touchscreen - Pantalla Tàctil + Panell tàctil @@ -3313,7 +3754,7 @@ These settings are experimental, and may cause black screens. If your games fail Ring Controller - + @@ -3334,12 +3775,8 @@ These settings are experimental, and may cause black screens. If your games fail - Requires restarting eden - - - - Requires restarting yuzu - Necessita reiniciar yuzu + Requires restarting Eden + @@ -3489,30 +3926,19 @@ These settings are experimental, and may cause black screens. If your games fail - + Left Stick Palanca esquerra - - - - - - - Up - Amunt - - - - - - - - - - Left - Esquerra + + + + + + + Down + Avall @@ -3526,14 +3952,25 @@ These settings are experimental, and may cause black screens. If your games fail Dreta - - - - - - - Down - Avall + + + + + + + + Left + Esquerra + + + + + + + + + Up + Amunt @@ -3580,14 +4017,6 @@ These settings are experimental, and may cause black screens. If your games fail D-Pad Creueta - - - - - - SL - SL - @@ -3597,59 +4026,55 @@ These settings are experimental, and may cause black screens. If your games fail SR - - - - L - L + + + + + SL + SL - + ZL ZL + + + + + L + L + Minus Menys - - - - Capture - Captura - - + Plus Més - - - Home - Inici + + + + ZR + ZR - - + + R R - - - - - ZR - ZR - Motion 1 @@ -3660,6 +4085,18 @@ These settings are experimental, and may cause black screens. If your games fail Motion 2 Moviment 2 + + + + Capture + Captura + + + + + Home + Inici + Face Buttons @@ -3672,10 +4109,10 @@ These settings are experimental, and may cause black screens. If your games fail X - - - Y - Y + + + B + B @@ -3684,21 +4121,21 @@ These settings are experimental, and may cause black screens. If your games fail A - - - B - B + + + Y + Y - + Right Stick Palanca dreta Mouse panning - + @@ -3706,242 +4143,242 @@ These settings are experimental, and may cause black screens. If your games fail Configurar - - - - + + + + Clear Esborrar - - - - - + + + + + [not set] [no establert] - - - + + + Invert button Botó d'inversió - - + + Toggle button Botó commutador - + Turbo button Botó turbo - - + + Invert axis Invertir eixos - - - + + + Set threshold Configurar llindar - - + + Choose a value between 0% and 100% Esculli un valor entre 0% i 100% - + Toggle axis Activa l'eix - + Set gyro threshold Configurar llindar giroscopi - + Calibrate sensor Calibrar sensor - + Map Analog Stick Configuració de palanca analògica - + After pressing OK, first move your joystick horizontally, and then vertically. To invert the axes, first move your joystick vertically, and then horizontally. Després de prémer D'acord, primer moveu el joystick horitzontalment i després verticalment. Per invertir els eixos, primer moveu el joystick verticalment i després horitzontalment. - + Center axis Centrar eixos - - + + Deadzone: %1% Zona morta: %1% - - + + Modifier Range: %1% Rang del modificador: %1% - - + + Pro Controller Controlador Pro - + Dual Joycons Joycons duals - + Left Joycon Joycon esquerra - + Right Joycon Joycon dret - + Handheld Portàtil - + GameCube Controller Controlador de GameCube - + Poke Ball Plus Poke Ball Plus - + NES Controller Controlador NES - + SNES Controller Controlador SNES - + N64 Controller Controlador N64 - + Sega Genesis Sega Genesis - + Start / Pause Inici / Pausa - + Z Z - + Control Stick Palanca de control - + C-Stick C-Stick - + Shake! Sacseja! - + [waiting] [esperant] - + New Profile Nou perfil - + Enter a profile name: Introdueixi un nom de perfil: - - + + Create Input Profile Crear perfil d'entrada - + The given profile name is not valid! El nom de perfil introduït no és vàlid! - + Failed to create the input profile "%1" Error al crear el perfil d'entrada "%1" - + Delete Input Profile Eliminar perfil d'entrada - + Failed to delete the input profile "%1" Error al eliminar el perfil d'entrada "%1" - + Load Input Profile Carregar perfil d'entrada - + Failed to load the input profile "%1" Error al carregar el perfil d'entrada "%1" - + Save Input Profile Guardar perfil d'entrada - + Failed to save the input profile "%1" Error al guardar el perfil d'entrada "%1" @@ -3964,15 +4401,6 @@ Per invertir els eixos, primer moveu el joystick verticalment i després horitzo Valors predeterminats - - ConfigureLinuxTab - - - - Linux - - - ConfigureMotionTouch @@ -3998,7 +4426,7 @@ Per invertir els eixos, primer moveu el joystick verticalment i després horitzo - + Configure Configuració @@ -4028,111 +4456,93 @@ Per invertir els eixos, primer moveu el joystick verticalment i després horitzo Port: - - Learn More - Més Informació - - - - + + Test Provar - + Add Server Afegir servidor - + Remove Server Eliminar servidor - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Més Informació</span></a> - - - + %1:%2 %1:%2 - yuzu - yuzu + + + + + + + Eden + Eden - - <a href='https://eden-emulator.github.io/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - - - - + Port number has invalid characters El número de port té caràcters invàlids - - - - - - - eden - - - - + Port has to be in range 0 and 65353 El port ha d'estar entre el rang 0 i 65353 - + IP address is not valid l'Adreça IP no és vàlida - + This UDP server already exists Aquest servidor UDP ja existeix - + Unable to add more than 8 servers No és possible afegir més de 8 servidors - + Testing Provant - + Configuring Configurant - + Test Successful Prova exitosa - + Successfully received data from the server. S'han rebut dades des del servidor correctament. - + Test Failed Prova fallida - + Could not receive valid data from the server.<br>Please verify that the server is set up correctly and the address and port are correct. - No s'han pogut rebre dades vàlides des del servidor.<br>Si us plau, verifiqui que el servidor està configurat correctament i que la direcció i el port són correctes.  + No s'han pogut rebre dades vàlides des del servidor.<br>Si us plau, verifiqui que el servidor està configurat correctament i que la direcció i el port són correctes.  - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. La prova del UDP o la configuració de la calibració està en curs.<br>Si us plau, esperi a que acabi el procés. @@ -4142,7 +4552,7 @@ Per invertir els eixos, primer moveu el joystick verticalment i després horitzo Configure mouse panning - + @@ -4217,12 +4627,12 @@ Per invertir els eixos, primer moveu el joystick verticalment i després horitzo Mouse panning works better with a deadzone of 0% and a range of 100%. Current values are %1% and %2% respectively. - + Emulated mouse is enabled. This is incompatible with mouse panning. - + @@ -4232,7 +4642,7 @@ Current values are %1% and %2% respectively. Real mouse input and mouse panning are incompatible. Please disable the emulated mouse in input advanced settings to allow mouse panning. - + @@ -4258,9 +4668,9 @@ Current values are %1% and %2% respectively. Interfície de xarxa - - None - Cap + + Enable Airplane Mode + @@ -4316,49 +4726,54 @@ Current values are %1% and %2% respectively. Algunes configuracions són disponibles només quan el joc no està corrent. - + Add-Ons Complements - + System Sistema - + CPU CPU - + Graphics Gràfics - + Adv. Graphics Gràfics avanç. - - GPU Extensions - + + Ext. Graphics + - + Audio Àudio - + Input Profiles Perfils d'entrada - Linux - + Network + + + + + Applets + Applets @@ -4379,15 +4794,110 @@ Current values are %1% and %2% respectively. Complements - + + Import Mod from ZIP + + + + + Import Mod from Folder + + + + Patch Name Nom del pegat - + Version Versió + + + Mod Install Succeeded + + + + + Successfully installed all mods. + + + + + Mod Install Failed + + + + + Failed to install the following mods: + %1 +Check the log for details. + + + + + Mod Folder + + + + + Zipped Mod Location + + + + + Zipped Archives (*.zip) + + + + + Invalid Selection + + + + + Only mods, cheats, and patches can be deleted. +To delete NAND-installed updates, right-click the game in the game list and click Remove -> Remove Installed Update. + + + + + You are about to delete the following installed mods: + + + + + + +Once deleted, these can NOT be recovered. Are you 100% sure you want to delete them? + + + + + Delete add-on(s)? + + + + + Successfully deleted + + + + + Successfully deleted all selected mods. + + + + + &Delete + + + + + &Open in File Manager + + ConfigureProfileManager @@ -4417,32 +4927,17 @@ Current values are %1% and %2% respectively. Nom d'usuari - - Set Image - Establir imatge - - - + Add Afegir - - Rename - Renombrar - - - - Remove - Eliminar - - - + Profile management is available only when game is not running. La gestió de perfils només està disponible quan el joc no s'està executant. - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -4450,100 +4945,80 @@ Current values are %1% and %2% respectively. %2 - - Enter Username - Introdueixi el nom d'usuari - - - + Users Usuaris - - Enter a username for the new user: - Introdueixi un nom d'usuari per al nou usuari: - - - - Enter a new username: - Introdueixi un nou nom d'usuari: - - - - Select User Image - Seleccioni una imatge d'usuari - - - - JPEG Images (*.jpg *.jpeg) - Imatges JPEG (*.jpg *.jpeg) - - - + Error deleting image Error al eliminar la imatge - + Error occurred attempting to overwrite previous image at: %1. Error al intentar sobreescriure la imatge anterior a: %1. - + Error deleting file Error al eliminar el fitxer - + Unable to delete existing file: %1. No es pot eliminar el fitxer existent: %1. - + Error creating user image directory Error al crear el directori d'imatges de l'usuari - + Unable to create directory %1 for storing user images. No es pot crear el directori %1 per emmagatzemar imatges d’usuari. - - Error copying user image - Error al copiar la imatge de l'usuari + + Error saving user image + - - Unable to copy image from %1 to %2 - No es pot copiar la imatge de %1 a %2 + + Unable to save image to file + - - Error resizing user image - Error al redimensionar la imatge d'usuari + + &Edit + - - Unable to resize image - No es pot redimensionar la imatge + + &Delete + + + + + Edit User + ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. Esborrar aquest usuari? Totes les dades de guardat seran eliminades. - + Confirm Delete Confirmar eliminació - + Name: %1 UUID: %2 Nom: %1 @@ -4555,7 +5030,7 @@ UUID: %2 Configure Ring Controller - + @@ -4577,7 +5052,7 @@ UUID: %2 Push - + @@ -4596,7 +5071,7 @@ UUID: %2 - + Enable Habilita @@ -4607,7 +5082,7 @@ UUID: %2 - + Not connected No connectat @@ -4617,63 +5092,63 @@ UUID: %2 Restaurar els valors predeterminats - + Clear Esborrar - + [not set] [no establert] - + Invert axis Invertir eixos - - + + Deadzone: %1% Zona morta: %1% - + Error enabling ring input - + - + Direct Joycon driver is not enabled - + - + Configuring Configurant - + The current mapped device doesn't support the ring controller - - - - - The current mapped device doesn't have a ring attached - + - The current mapped device is not connected - + The current mapped device doesn't have a ring attached + - + + The current mapped device is not connected + + + + Unexpected driver result %1 Resultat de controlador inesperat %1 - + [waiting] [esperant] @@ -4694,10 +5169,10 @@ UUID: %2 Core - + - + Warning: "%1" is not a valid language for region "%2" Alerta: "%1" no és un llenguatge vàlid per la regió "%2" @@ -4709,14 +5184,10 @@ UUID: %2 TAS &TAS - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the yuzu website.</p></body></html> - <html><head/><body><p>Llegeix l'entrada dels controladors des dels scripts en el mateix format que els scripts TAS-nx.<br/>Per a una explicació més detallada, si us plau, consulti la <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">pàgina d'ajuda</span></a> a la pàgina web de yuzu.</p></body></html> - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the eden website.</p></body></html> - + <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the user handbook.</p></body></html> + @@ -4749,17 +5220,22 @@ UUID: %2 Pausar execució durant les càrregues - + + Show recording dialog + + + + Script Directory Directori d'scripts - + Path Ruta - + ... ... @@ -4767,12 +5243,12 @@ UUID: %2 ConfigureTasDialog - + TAS Configuration Configuració TAS - + Select TAS Load Directory... Selecciona el directori de càrrega TAS... @@ -4876,14 +5352,10 @@ Arrossegui els punts per a canviar la posició, o faci doble clic a les cel·les Configure Touchscreen Configurar pantalla tàctil - - Warning: The settings in this page affect the inner workings of yuzu's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - Advertiment: La configuració d'aquesta pàgina afecta el funcionament intern de la pantalla tàctil emulada de yuzu. Canviar-la pot provocar un comportament no desitjat, com que la pantalla tàctil deixi de funcionar parcialment o no funcioni. Només ha de fer servir aquesta pàgina si sap el que està fent. - - Warning: The settings in this page affect the inner workings of eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - + Warning: The settings in this page affect the inner workings of Eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. + @@ -4914,64 +5386,43 @@ Arrossegui els punts per a canviar la posició, o faci doble clic a les cel·les ConfigureUI - - - + + None Cap - - - Small (32x32) - Petit (32x32) - - Standard (64x64) - Estàndard (64x64) - - - - Large (128x128) - Gran (128x128) - - - - Full Size (256x256) - Tamany complet (256x256) - - - Small (24x24) Petit (24x24) - + Standard (48x48) Estàndard (48x48) - + Large (72x72) Gran (72x72) - + Filename Nom de l'arxiu - + Filetype Tipus d'arxiu - + Title ID ID del títol - + Title Name Nom del títol @@ -5016,7 +5467,7 @@ Arrossegui els punts per a canviar la posició, o faci doble clic a les cel·les Show Compatibility List - + @@ -5026,88 +5477,83 @@ Arrossegui els punts per a canviar la posició, o faci doble clic a les cel·les Show Size Column - + Show File Types Column - + Show Play Time Column - + - Game Icon Size: - Tamany de les icones dels jocs - - - Folder Icon Size: Tamany de les icones de les carpetes - + Row 1 Text: Text de la fila 1: - + Row 2 Text: Text de la fila 2: - + Screenshots Captures de pantalla - + Ask Where To Save Screenshots (Windows Only) Preguntar on guardar les captures de pantalla (només Windows) - + Screenshots Path: Ruta de les captures de pantalla: - + ... ... - + TextLabel - + - + Resolution: Resolució: - + Select Screenshots Path... Seleccioni el directori de les Captures de Pantalla... - + <System> <System> - + English Anglès - + Auto (%1 x %2, %3 x %4) Screenshot width value - + @@ -5202,206 +5648,219 @@ Arrossegui els punts per a canviar la posició, o faci doble clic a les cel·les Web Web - - yuzu Web Service - Servei Web de yuzu - - - By providing your username and token, you agree to allow yuzu to collect additional usage data, which may include user identifying information. - Al proporcionar el seu nom d'usuari i token, dóna el seu consentiment a que yuzu recopili dades d'ús adicionals, que poden incloure informació d'identificació de l'usuari. - - eden Web Service - + Eden Web Service + - - By providing your username and token, you agree to allow eden to collect additional usage data, which may include user identifying information. - - - - - Verify - Verificar - - - - Sign up - Registrar-se - - - + Token: Token: - + Username: Nom d'usuari: - - What is my token? - Quin és el meu token? + + Generate + - + Web Service configuration can only be changed when a public room isn't being hosted. - + - Telemetry - Telemetria - - - Share anonymous usage data with the yuzu team - Compartir dades d'ús anònimes amb l'equip de yuzu - - - Learn more - Saber més - - - Telemetry ID: - ID de telemetria: - - - Regenerate - Regenerar - - - + Discord Presence Presència al Discord - + Show Current Game in your Discord Status Mostrar el joc actual al seu estat de Discord - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Saber més</span></a> - - - - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Registrar-se</span></a> - - - - <a href='https://evilperson1337.notion.site/Hosting-a-Room-Inside-of-Eden-20457c2edaf680108abac6215a79acdb'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - - - - - Warning - - - + - Verification is currently nonfunctional, instead generate a random 48-character string with only lowercase a-z. - - - - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">Quin és el meu token?</span></a> - - - Telemetry ID: 0x%1 - ID de telemetria: 0x%1 - - - Unspecified - Sense especificar - - - Token not verified - Token no verificat - - - Token was not verified. The change to your token has not been saved. - El token no ha sigut verificat. El canvi al seu token no s'ha guardat. - - - - Unverified, please click Verify before saving configuration + All Good Tooltip - + - Verifying... - Comprovant... - - - Verification failed + + Must be between 4-20 characters Tooltip - Verificació fallida + - Verification failed - Verificació fallida - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - Verificació fallida. Comprovi que hagi ingressat el seu token correctament, i que la seva connexió a internet estigui funcionant. + + Must be 48 characters, and lowercase a-z + Tooltip + ControllerDialog - + Controller P1 Controlador J1 - + &Controller P1 &Controlador J1 + + DataDialog + + + Data Manager + + + + + Deleting ANY data is IRREVERSABLE! + + + + + Shaders + + + + + UserNAND + + + + + SysNAND + + + + + Mods + + + + + Saves + + + + + DataWidget + + + Form + + + + + Tooltip + + + + + Open with your system file manager + + + + + Delete all data in this directory. THIS IS 100% IRREVERSABLE! + + + + + Export all data in this directory. This may take a while! + + + + + Import data for this directory. This may take a while, and will delete ALL EXISTING DATA! + + + + + Calculating... + + + + + DepsDialog + + + Eden Dependencies + + + + + <html><head/><body><p><span style=" font-size:28pt;">Eden Dependencies</span></p></body></html> + + + + + <html><head/><body><p>The projects that make Eden possible</p></body></html> + + + + + Dependency + + + + + Version + Versió + + DirectConnect Direct Connect - + Server Address - + <html><head/><body><p>Server address of the host</p></body></html> - + Port - + <html><head/><body><p>Port number the host is listening on</p></body></html> - + Nickname - + Password - + Connect - + @@ -5409,12 +5868,12 @@ Arrossegui els punts per a canviar la posició, o faci doble clic a les cel·les Connecting - + Connect - + @@ -5422,1499 +5881,152 @@ Arrossegui els punts per a canviar la posició, o faci doble clic a les cel·les Username is not valid. Must be 4 to 20 alphanumeric characters. - El nom d'usuari no és vàlid. Hauria de contenir entre 4 i 20 caràcters alfanumèrics. + Room name is not valid. Must be 4 to 20 alphanumeric characters. - + Username is already in use or not valid. Please choose another. - El nom d'usuari ja és en ús o no és vàlid. Si us plau, seleccioni un altre. + IP is not a valid IPv4 address. - + Port must be a number between 0 to 65535. - + You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - + Unable to find an internet connection. Check your internet settings. - + Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - + Unable to connect to the room because it is already full. - + - Creating a room failed. Please retry. Restarting eden might be necessary. - + Creating a room failed. Please retry. Restarting Eden might be necessary. + The host of the room has banned you. Speak with the host to unban you or try a different room. - + - Version mismatch! Please update to the latest version of eden. If the problem persists, contact the room host and ask them to update the server. - + Version mismatch! Please update to the latest version of Eden. If the problem persists, contact the room host and ask them to update the server. + Incorrect password. - Contrasenya incorrecta. + An unknown error occurred. If this error continues to occur, please open an issue - + Connection to room lost. Try to reconnect. - + You have been kicked by the room host. - + IP address is already in use. Please choose another. - + You do not have enough permission to perform this action. - + The user you are trying to kick/ban could not be found. They may have left the room. - + No valid network interface is selected. Please go to Configure -> System -> Network and make a selection. - + Error - Error - - - - GMainWindow - - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Anonymous data is collected</a> to help improve yuzu. <br/><br/>Would you like to share your usage data with us? - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Es recullen dades anònimes</a> per ajudar a millorar yuzu. <br/><br/>Desitja compartir les seves dades d'ús amb nosaltres? - - - Telemetry - Telemetria - - - - Broken Vulkan Installation Detected - - - - - Running a game - TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping - - - - - Loading Web Applet... - Carregant Web applet... - - - - - Disable Web Applet - Desactivar el Web Applet - - - - 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.) - Desactivar l'Applet Web pot provocar comportaments indefinits i només hauria d'utilitzar-se amb Super Mario 3D All-Stars. Estàs segur de que vols desactivar l'Applet Web? -(Això pot ser reactivat als paràmetres Debug.) - - - - The amount of shaders currently being built - La quantitat de shaders que s'estan compilant actualment - - - - The current selected resolution scaling multiplier. - El multiplicador d'escala de resolució seleccionat actualment. - - - - Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. - Velocitat d'emulació actual. Valors superiors o inferiors a 100% indiquen que l'emulació s'està executant més ràpidament o més lentament que a la Switch. - - - - How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. - Quants fotogrames per segon està mostrant el joc actualment. Això variarà d'un joc a un altre i d'una escena a una altra. - - - - 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. - 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. - - - - Unmute - - - - - Mute - Silenciar - - - - Reset Volume - - - - - &Clear Recent Files - &Esborrar arxius recents - - - - &Continue - &Continuar - - - - &Pause - &Pausar - - - - Warning Outdated Game Format - Advertència format del joc desfasat - - - 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.<br><br>For an explanation of the various Switch formats yuzu supports, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - 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'icones, metadades i suport d'actualitzacions.<br><br>Per a obtenir una explicació dels diversos formats de Switch que suporta yuzu,<a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>faci una ullada a la nostra wiki</a>. Aquest missatge no es tornarà a mostrar. - - - - - Error while loading ROM! - Error carregant la ROM! - - - - The ROM format is not supported. - El format de la ROM no està suportat. - - - - An error occurred initializing the video core. - S'ha produït un error inicialitzant el nucli de vídeo. - - - 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: <a href='https://yuzu-emu.org/help/reference/log-files/'>How to Upload the Log File</a>. - 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: <a href='https://yuzu-emu.org/help/reference/log-files/'>Com carregar el fitxer de registre</a>. - - - - Error while loading ROM! %1 - %1 signifies a numeric error code. - Error al carregar la ROM! %1 - - - %1<br>Please follow <a href='https://yuzu-emu.org/help/quickstart/'>the yuzu quickstart guide</a> to redump your files.<br>You can refer to the yuzu wiki</a> or the yuzu Discord</a> for help. - %1 signifies an error string. - %1<br>Si us plau, segueixi <a href='https://yuzu-emu.org/help/quickstart/'>la guia d'inici de yuzu</a> per a bolcar de nou els seus fitxers.<br>Pot consultar la wiki de yuzu wiki</a> o el Discord de yuzu</a> per obtenir ajuda. - - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://eden-emulator.github.io/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - - - - - Game Updates Warning - - - - - The game you are trying to launch is known to have performance or booting issues when updates are applied. Please try increasing the memory layout to 6GB or 8GB if any issues occur.<br><br>Press "OK" to continue launching, or "Cancel" to cancel the launch. - - - - - Don't show again for this game - - - - - 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.<br><br>For an explanation of the various Switch formats eden supports, <a href='https://eden-emulator.github.io/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - - - - - eden 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: <a href='https://eden-emulator.github.io/help/reference/log-files/'>How to Upload the Log File</a>. - - - - - %1<br>Please redump your files or ask on Discord for help. - %1 signifies an error string. - - - - - An unknown error occurred. Please see the log for more details. - S'ha produït un error desconegut. Si us plau, consulti el registre per a més detalls. - - - - (64-bit) - (64-bit) - - - - (32-bit) - (32-bit) - - - - %1 %2 - %1 is the title name. %2 indicates if the title is 64-bit or 32-bit - %1 %2 - - - - Closing software... - S'està tancant el programari - - - - Save Data - Dades de partides guardades - - - - Mod Data - Dades de mods - - - - Error Opening %1 Folder - Error obrint la carpeta %1 - - - - - Folder does not exist! - La carpeta no existeix! - - - - Error Opening Transferable Shader Cache - Error obrint la cache transferible de shaders - - - - Failed to create the shader cache directory for this title. - No s'ha pogut crear el directori de la cache dels shaders per aquest títol. - - - - Error Removing Contents - Error eliminant continguts - - - - Error Removing Update - Error eliminant actualització - - - - Error Removing DLC - Error eliminant DLC - - - - Remove Installed Game Contents? - - - - - Remove Installed Game Update? - - - - - Remove Installed Game DLC? - - - - - Remove Entry - Eliminar entrada - - - - - - - - - Successfully Removed - S'ha eliminat correctament - - - - Successfully removed the installed base game. - S'ha eliminat correctament el joc base instal·lat. - - - - The base game is not installed in the NAND and cannot be removed. - El joc base no està instal·lat a la NAND i no pot ser eliminat. - - - - Successfully removed the installed update. - S'ha eliminat correctament l'actualització instal·lada. - - - - There is no update installed for this title. - No hi ha cap actualització instal·lada per aquest títol. - - - - There are no DLC installed for this title. - No hi ha cap DLC instal·lat per aquest títol. - - - - Successfully removed %1 installed DLC. - S'ha eliminat correctament %1 DLC instal·lat/s. - - - - Delete OpenGL Transferable Shader Cache? - Desitja eliminar la cache transferible de shaders d'OpenGL? - - - - Delete Vulkan Transferable Shader Cache? - Desitja eliminar la cache transferible de shaders de Vulkan? - - - - Delete All Transferable Shader Caches? - Desitja eliminar totes les caches transferibles de shaders? - - - - Remove Custom Game Configuration? - Desitja eliminar la configuració personalitzada del joc? - - - - Remove Cache Storage? - - - - - Remove File - Eliminar arxiu - - - - Remove Play Time Data - - - - - Reset play time? - - - - - - Error Removing Transferable Shader Cache - Error eliminant la cache transferible de shaders - - - - - A shader cache for this title does not exist. - No existeix una cache de shaders per aquest títol. - - - - Successfully removed the transferable shader cache. - S'ha eliminat correctament la cache transferible de shaders. - - - - Failed to remove the transferable shader cache. - No s'ha pogut eliminar la cache transferible de shaders. - - - - Error Removing Vulkan Driver Pipeline Cache - - - - - Failed to remove the driver pipeline cache. - - - - - - Error Removing Transferable Shader Caches - Error al eliminar les caches de shaders transferibles - - - - Successfully removed the transferable shader caches. - Caches de shaders transferibles eliminades correctament. - - - - Failed to remove the transferable shader cache directory. - No s'ha pogut eliminar el directori de caches de shaders transferibles. - - - - - Error Removing Custom Configuration - Error eliminant la configuració personalitzada - - - - A custom configuration for this title does not exist. - No existeix una configuració personalitzada per aquest joc. - - - - Successfully removed the custom game configuration. - S'ha eliminat correctament la configuració personalitzada del joc. - - - - Failed to remove the custom game configuration. - No s'ha pogut eliminar la configuració personalitzada del joc. - - - - - RomFS Extraction Failed! - La extracció de RomFS ha fallat! - - - - There was an error copying the RomFS files or the user cancelled the operation. - S'ha produït un error copiant els arxius RomFS o l'usuari ha cancel·lat la operació. - - - - Full - Completa - - - - Skeleton - Esquelet - - - - Select RomFS Dump Mode - Seleccioni el mode de bolcat de RomFS - - - - Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. - Si us plau, seleccioni la forma en que desitja bolcar la RomFS.<br>Completa copiarà tots els arxius al nou directori mentre que<br>esquelet només crearà l'estructura de directoris. - - - - There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root - 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ó > Configuració > Sistema > Sistema d'arxius > Carpeta arrel de bolcat - - - - Extracting RomFS... - Extraient RomFS... - - - - - - - - Cancel - Cancel·la - - - - RomFS Extraction Succeeded! - Extracció de RomFS completada correctament! - - - - - - The operation completed successfully. - L'operació s'ha completat correctament. - - - - Integrity verification couldn't be performed! - - - - - File contents were not checked for validity. - - - - - - Verifying integrity... - - - - - - Integrity verification succeeded! - - - - - - Integrity verification failed! - - - - - File contents may be corrupt. - - - - - - - - Create Shortcut - - - - - Do you want to launch the game in fullscreen? - - - - - Successfully created a shortcut to %1 - - - - - This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - - - - - Failed to create a shortcut to %1 - - - - - Create Icon - Crear icona - - - - Cannot create icon file. Path "%1" does not exist and cannot be created. - - - - - Error Opening %1 - Error obrint %1 - - - - Select Directory - Seleccionar directori - - - - Properties - Propietats - - - - The game properties could not be loaded. - Les propietats del joc no s'han pogut carregar. - - - - Switch Executable (%1);;All Files (*.*) - %1 is an identifier for the Switch executable file extensions. - Executable de Switch (%1);;Tots els Arxius (*.*) - - - - Load File - Carregar arxiu - - - - Open Extracted ROM Directory - Obrir el directori de la ROM extreta - - - - Invalid Directory Selected - Directori seleccionat invàlid - - - - The directory you have selected does not contain a 'main' file. - El directori que ha seleccionat no conté un arxiu 'main'. - - - - Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - Arxiu de Switch Instal·lable (*.nca *.nsp *.xci);;Arxiu de Continguts Nintendo (*.nca);;Paquet d'enviament Nintendo (*.nsp);;Imatge de Cartutx NX (*.xci) - - - - Install Files - Instal·lar arxius - - - - %n file(s) remaining - - %n arxiu(s) restants - %n arxiu(s) restants - - - - - Installing file "%1"... - Instal·lant arxiu "%1"... - - - - - Install Results - Resultats instal·lació - - - - To avoid possible conflicts, we discourage users from installing base games to the NAND. -Please, only use this feature to install updates and DLC. - 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. - - - - %n file(s) were newly installed - - - %n nou(s) arxiu(s) s'ha(n) instal·lat - - %n nou(s) arxiu(s) s'ha(n) instal·lat - - - - - - %n file(s) were overwritten - - - %n arxiu(s) s'han sobreescrit - - %n arxiu(s) s'han sobreescrit - - - - - - %n file(s) failed to install - - - %n arxiu(s) no s'han instal·lat - - %n arxiu(s) no s'han instal·lat - - - - - - System Application - Aplicació del sistema - - - - System Archive - Arxiu del sistema - - - - System Application Update - Actualització de l'aplicació del sistema - - - - Firmware Package (Type A) - Paquet de firmware (Tipus A) - - - - Firmware Package (Type B) - Paquet de firmware (Tipus B) - - - - Game - Joc - - - - Game Update - Actualització de joc - - - - Game DLC - DLC del joc - - - - Delta Title - Títol delta - - - - Select NCA Install Type... - Seleccioni el tipus d'instal·lació NCA... - - - - Please select the type of title you would like to install this NCA as: -(In most instances, the default 'Game' is fine.) - Seleccioni el tipus de títol que desitja instal·lar aquest NCA com a: -(En la majoria dels casos, el valor predeterminat 'Joc' està bé.) - - - - Failed to Install - Ha fallat la instal·lació - - - - The title type you selected for the NCA is invalid. - El tipus de títol seleccionat per el NCA és invàlid. - - - - File not found - Arxiu no trobat - - - - File "%1" not found - Arxiu "%1" no trobat - - - - OK - D'acord - - - - - Hardware requirements not met - - - - - - Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled. - - - - - Missing yuzu Account - Falta el compte de yuzu - - - - In order to submit a game compatibility test case, you must link your eden account.<br><br/>To link your eden account, go to Emulation &gt; Configuration &gt; Web. - - - - - Install decryption keys and restart eden before attempting to install firmware. - - - - - Firmware installation cancelled, firmware may be in bad state, restart eden or re-install firmware. - - - - - Encryption keys are missing. - - - - - Are you sure you want to close eden? - - - - - - - eden - - - - - The currently running application has requested eden to not exit. - -Would you like to bypass this and exit anyway? - - - - In order to submit a game compatibility test case, you must link your yuzu account.<br><br/>To link your yuzu account, go to Emulation &gt; Configuration &gt; Web. - Per tal d'enviar un cas de prova de compatibilitat de joc, ha de vincular el seu compte de yuzu.<br><br/>Per a vincular el seu compte de yuzu, vagi a Emulació & gt; Configuració & gt; Web. - - - - Error opening URL - Error obrint URL - - - - Unable to open the URL "%1". - No es pot obrir la URL "%1". - - - - TAS Recording - Gravació TAS - - - - Overwrite file of player 1? - Sobreescriure l'arxiu del jugador 1? - - - - Invalid config detected - Configuració invàlida detectada - - - - Handheld controller can't be used on docked mode. Pro controller will be selected. - El controlador del mode portàtil no es pot fer servir en el mode acoblat. Es seleccionarà el controlador Pro en el seu lloc. - - - - - Amiibo - Amiibo - - - - - The current amiibo has been removed - L'amiibo actual ha sigut eliminat - - - - Error Error - - - - The current game is not looking for amiibos - El joc actual no està buscant amiibos - - - - Amiibo File (%1);; All Files (*.*) - Arxiu Amiibo (%1);; Tots els Arxius (*.*) - - - - Load Amiibo - Carregar Amiibo - - - - Error loading Amiibo data - Error al carregar les dades d'Amiibo - - - - The selected file is not a valid amiibo - L'arxiu seleccionat no és un amiibo vàlid - - - - The selected file is already on use - - - - - An unknown error occurred - - - - - - Verification failed for the following files: - -%1 - - - - - Keys not installed - - - - - Select Dumped Firmware Source Location - - - - - Installing Firmware... - - - - - - - - Firmware install failed - - - - - Unable to locate potential firmware NCA files - - - - - Failed to delete one or more firmware file. - - - - - One or more firmware files failed to copy into NAND. - - - - - Firmware integrity verification failed! - - - - - Select Dumped Keys Location - - - - - - - Decryption Keys install failed - - - - - prod.keys is a required decryption key file. - - - - - One or more keys failed to copy. - - - - - Decryption Keys install succeeded - - - - - Decryption Keys were successfully installed - - - - - Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. - - - - - - - - - - - No firmware available - - - - - Please install the firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Controller Menu. - - - - - Controller Applet - Controlador Applet - - - - Controller Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Home Menu. - - - - - - Home Menu Applet - - - - - - Home Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use Starter. - - - - - Starter Applet - - - - - Starter is not available. Please reinstall firmware. - - - - - Please install firmware to use the home menu. - - - - - Capture Screenshot - Captura de pantalla - - - - PNG Image (*.png) - Imatge PNG (*.png) - - - - Update Available - - - - - Update %1 for Eden is available. -Would you like to download it? - - - - - TAS state: Running %1/%2 - Estat TAS: executant %1/%2 - - - - TAS state: Recording %1 - Estat TAS: gravant %1 - - - - TAS state: Idle %1/%2 - Estat TAS: inactiu %1/%2 - - - - TAS State: Invalid - Estat TAS: invàlid - - - - &Stop Running - &Parar l'execució - - - - &Start - &Iniciar - - - - Stop R&ecording - Parar g&ravació - - - - R&ecord - G&ravar - - - - Building: %n shader(s) - - Construint: %n shader(s) - Construint: %n shader(s) - - - - - Scale: %1x - %1 is the resolution scaling factor - Escala: %1x - - - - Speed: %1% / %2% - Velocitat: %1% / %2% - - - - Speed: %1% - Velocitat: %1% - - - Game: %1 FPS (Unlocked) - Joc: %1 FPS (desbloquejat) - - - - Game: %1 FPS - Joc: %1 FPS - - - - Frame: %1 ms - Fotograma: %1 ms - - - - %1 %2 - %1 %2 - - - - - FSR - FSR - - - - NO AA - SENSE AA - - - - VOLUME: MUTE - - - - - VOLUME: %1% - Volume percentage (e.g. 50%) - - - - - Derivation Components Missing - Falten components de derivació - - - - Select RomFS Dump Target - Seleccioni el destinatari per a bolcar el RomFS - - - - Please select which RomFS you would like to dump. - Si us plau, seleccioni quin RomFS desitja bolcar. - - - Are you sure you want to close yuzu? - Està segur de que vol tancar yuzu? - - - yuzu - yuzu - - - - Are you sure you want to stop the emulation? Any unsaved progress will be lost. - Està segur de que vol aturar l'emulació? Qualsevol progrés no guardat es perdrà. - - - The currently running application has requested yuzu to not exit. - -Would you like to bypass this and exit anyway? - L'aplicació que s'està executant actualment ha sol·licitat que yuzu no es tanqui. - -Desitja tancar-lo de totes maneres? - - - - None - Cap - - - - FXAA - FXAA - - - - SMAA - - - - - Nearest - - - - - Bilinear - Bilineal - - - - Bicubic - Bicúbic - - - - Gaussian - Gaussià - - - - ScaleForce - ScaleForce - - - - Area - - - - - Docked - Acoblada - - - - Handheld - Portàtil - - - - Normal - - - - - High - - - - - Extreme - - - - - Vulkan - - - - - OpenGL - - - - - Null - - - - - GLSL - - - - - GLASM - - - - - SPIRV - - GRenderWindow - - + + OpenGL not available! OpenGL no disponible! - + OpenGL shared contexts are not supported. - + - yuzu has not been compiled with OpenGL support. - yuzu no ha estat compilat amb suport per OpenGL. + + Eden has not been compiled with OpenGL support. + - - eden has not been compiled with OpenGL support. - - - - - + + Error while initializing OpenGL! Error al inicialitzar OpenGL! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. La seva GPU no suporta OpenGL, o no té instal·lat els últims controladors gràfics. - + Error while initializing OpenGL 4.6! Error inicialitzant OpenGL 4.6! - + Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 La seva GPU no suporta OpenGL 4.6, o no té instal·lats els últims controladors gràfics.<br><br>GL Renderer:<br>%1 - + Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2 És possible que la seva GPU no suporti una o més extensions necessàries d'OpenGL. Si us plau, asseguris de tenir els últims controladors de la tarjeta gràfica.<br><br>GL Renderer:<br>%1<br><br>Extensions no suportades:<br>%2 @@ -6922,255 +6034,271 @@ Desitja tancar-lo de totes maneres? GameList - + + &Add New Game Directory + + + + Favorite Preferit - + Start Game Iniciar el joc - + Start Game without Custom Configuration Iniciar el joc sense la configuració personalitzada - + Open Save Data Location Obrir la ubicació dels arxius de partides guardades - + Open Mod Data Location Obrir la ubicació dels mods - + Open Transferable Pipeline Cache Obrir cache transferible de shaders de canonada - + + Link to Ryujinx + + + + Remove Eliminar - + Remove Installed Update Eliminar actualització instal·lada - + Remove All Installed DLC Eliminar tots els DLC instal·lats - + Remove Custom Configuration Eliminar configuració personalitzada - - Remove Play Time Data - - - - + Remove Cache Storage - + - + Remove OpenGL Pipeline Cache Eliminar cache de canonada d'OpenGL - + Remove Vulkan Pipeline Cache Eliminar cache de canonada de Vulkan - + Remove All Pipeline Caches Eliminar totes les caches de canonada - + Remove All Installed Contents Eliminar tots els continguts instal·lats - - + + Manage Play Time + + + + + Edit Play Time Data + + + + + Remove Play Time Data + + + + + Dump RomFS Bolcar RomFS - + Dump RomFS to SDMC Bolcar RomFS a SDMC - + Verify Integrity - + - + Copy Title ID to Clipboard Copiar la ID del títol al porta-retalls - + Navigate to GameDB entry Navegar a l'entrada de GameDB - + Create Shortcut - + - + Add to Desktop - + - + Add to Applications Menu - + - + Configure Game - + - Properties - Propietats - - - + Scan Subfolders Escanejar subdirectoris - + Remove Game Directory Eliminar directori de jocs - + ▲ Move Up ▲ Moure amunt - + ▼ Move Down ▼ Move avall - + Open Directory Location Obre ubicació del directori - + Clear Esborrar - + Name Nom - + Compatibility Compatibilitat - + Add-ons Complements - + File type Tipus d'arxiu - + Size Mida - + Play time - + GameListItemCompat - + Ingame - + - + Game starts, but crashes or major glitches prevent it from being completed. - + - + Perfect Perfecte - + Game can be played without issues. - + - + Playable - + - + Game functions with minor graphical or audio glitches and is playable from start to finish. - + - + Intro/Menu Intro / Menú - + Game loads, but is unable to progress past the Start Screen. - + - + Won't Boot No engega - + The game crashes when attempting to startup. El joc es bloqueja al intentar iniciar. - + Not Tested No provat - + The game has not yet been tested. Aquest joc encara no ha estat provat. @@ -7178,7 +6306,7 @@ Desitja tancar-lo de totes maneres? GameListPlaceholder - + Double-click to add a new folder to the game list Faci doble clic per afegir un nou directori a la llista de jocs @@ -7186,20 +6314,17 @@ Desitja tancar-lo de totes maneres? GameListSearchField - + %1 of %n result(s) - - %1 de %n resultat(s) - %1 de %n resultat(s) - + %1 de %n resultat(s)%1 de %n resultat(s) - + Filter: Filtre: - + Enter pattern to filter Introdueixi patró per a filtrar @@ -7219,7 +6344,7 @@ Desitja tancar-lo de totes maneres? Preferred Game - + @@ -7234,17 +6359,17 @@ Desitja tancar-lo de totes maneres? (Leave blank for open game) - + Password - + Port - + @@ -7254,244 +6379,262 @@ Desitja tancar-lo de totes maneres? Load Previous Ban List - + Public - + Unlisted - + Host Room - + HostRoomWindow - + Error Error - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. + + Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid Eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. Debug Message: - + Hotkeys - + Audio Mute/Unmute - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Main Window - + - + Audio Volume Down - + - + Audio Volume Up - + - + Capture Screenshot Captura de pantalla - + Change Adapting Filter - + - + Change Docked Mode - + - - Change GPU Accuracy - + + Change GPU Mode + - + Configure - + - + Configure Current Game - + - + Continue/Pause Emulation - + - + Exit Fullscreen - + - - Exit eden - + + Exit Eden + - + Fullscreen Pantalla Completa - + Load File Carregar arxiu - + Load/Remove Amiibo - + - - Multiplayer Browse Public Game Lobby - + + Browse Public Game Lobby + - - Multiplayer Create Room - + + Create Room + - - Multiplayer Direct Connect to Room - + + Direct Connect to Room + - - Multiplayer Leave Room - + + Leave Room + - - Multiplayer Show Current Room - + + Show Current Room + - + Restart Emulation - + - + Stop Emulation - + - + TAS Record - + - + TAS Reset - + - + TAS Start/Stop - + - + Toggle Filter Bar - + - + Toggle Framerate Limit - + - + + Toggle Turbo Speed + + + + + Toggle Slow Speed + + + + Toggle Mouse Panning - + - + Toggle Renderdoc Capture - + - + Toggle Status Bar - + + + + + Toggle Performance Overlay + InstallDialog - + Please confirm these are the files you wish to install. Si us plau, confirmi que aquests són els arxius que desitja instal·lar. - + Installing an Update or DLC will overwrite the previously installed one. Instal·lar una actualització o DLC sobreescriurà qualsevol prèviament instal·lat. - + Install Instal·lar - + Install Files to NAND Instal·lar arxius a la NAND @@ -7499,8 +6642,8 @@ Debug Message: LimitableInputDialog - - The text can't contain any of the following characters: + + The text can't contain any of the following characters: %1 El text no pot contenir cap dels següents caràcters %1 @@ -7524,22 +6667,22 @@ Debug Message: Temps estimat 5m 4s - + Loading... Carregant... - + Loading Shaders %1 / %2 Carregant shaders %1 / %2 - + Launching... Engegant... - + Estimated Time %1 Temps estimat %1 @@ -7549,83 +6692,83 @@ Debug Message: Public Room Browser - + Nickname - + Filters - + Search - + Games I Own - + Hide Empty Rooms - + Hide Full Rooms - + Refresh Lobby - + - + Password Required to Join - + - + Password: - + - + Players Jugadors - + Room Name Nom de la sala - + Preferred Game - + - + Host - + - + Refreshing - + - + Refresh List - + @@ -7646,362 +6789,1424 @@ Debug Message: &Arxius recents - + + Open &Eden Folders + + + + &Emulation &Emulació - + &View &Veure - + &Reset Window Size &Reiniciar tamany de finestra - + &Debugging &Depuració - + + &Game List Mode + + + + + Game &Icon Size + + + + Reset Window Size to &720p Reiniciar el tamany de la finestra a &720p - + Reset Window Size to 720p Reiniciar el tamany de la finestra a 720p - + Reset Window Size to &900p Reiniciar el tamany de la finestra a &900p - + Reset Window Size to 900p Reiniciar el tamany de la finestra a 900p - + Reset Window Size to &1080p Reiniciar el tamany de la finestra a &1080p - + Reset Window Size to 1080p Reiniciar el tamany de la finestra a 1080p - + &Multiplayer - + - + &Tools &Eines - - &Amiibo - + + Am&iibo + - + + Launch &Applet + + + + &TAS &TAS - + &Create Home Menu Shortcut - + - + + Install &Firmware + + + + &Help &Ajuda - + &Install Files to NAND... &instal·lar arxius a la NAND... - + L&oad File... C&arregar arxiu... - + Load &Folder... Carregar &carpeta... - + E&xit S&ortir - + + &Pause &Pausar - + &Stop &Aturar - + &Verify Installed Contents - + - - &About eden - + + &About Eden + - - Open &eden Folder - - - - - Open Home Menu - - - - - &Discord - - - - - Open &Setup - - - - - &Desktop - - - - - &Application Menu - - - - &About yuzu - &Sobre yuzu - - - + Single &Window Mode Mode una sola &finestra - + Con&figure... Con&figurar... - + Ctrl+, - + - - Display D&ock Widget Headers - Mostrar complements de capçalera del D&ock + + Enable Overlay Display Applet + - + Show &Filter Bar Mostrar la barra de &filtre - + Show &Status Bar Mostrar la barra d'&estat - + Show Status Bar Mostrar barra d'estat - + &Browse Public Game Lobby - + - + &Create Room - + - + &Leave Room - + - + &Direct Connect to Room - + - + &Show Current Room - + - + F&ullscreen P&antalla completa - + &Restart &Reiniciar - + Load/Remove &Amiibo... Carregar/Eliminar &Amiibo... - + &Report Compatibility &Informar de compatibilitat - + Open &Mods Page Obrir la pàgina de &mods - + Open &Quickstart Guide Obre la guia d'&inici ràpid - + &FAQ &Preguntes freqüents - Open &yuzu Folder - Obrir la carpeta de &yuzu - - - + &Capture Screenshot &Captura de pantalla - - Open &Album - + + &Album + - + &Set Nickname and Owner - + - + &Delete Game Data - + - + &Restore Amiibo - + - + &Format Amiibo - + - - Open &Mii Editor - + + &Mii Editor + - + &Configure TAS... &Configurar TAS... - + Configure C&urrent Game... Configurar joc a&ctual... - + + &Start &Iniciar - + &Reset &Reiniciar - + + R&ecord E&nregistrar - + Open &Controller Menu - + - - Install Firmware - + + Install Decryption &Keys + - - Install Decryption Keys - + + &Home Menu + - - - MicroProfileDialog - - &MicroProfile - &MicroPerfil + + &Desktop + + + + + &Application Menu + + + + + &Root Data Folder + + + + + &NAND Folder + + + + + &SDMC Folder + + + + + &Mod Folder + + + + + &Log Folder + + + + + From Folder + + + + + From ZIP + + + + + &Eden Dependencies + + + + + &Data Manager + + + + + &Tree View + + + + + &Grid View + + + + + Game Icon Size + + + + + + + None + Cap + + + + Show Game &Name + + + + + Show &Performance Overlay + + + + + Small (32x32) + Petit (32x32) + + + + Standard (64x64) + + + + + Large (128x128) + + + + + Full Size (256x256) + + + + + Broken Vulkan Installation Detected + + + + + Vulkan initialization failed during boot. + + + + + Running a game + TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping + + + + + Loading Web Applet... + + + + + + Disable Web Applet + + + + + 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.) + + + + + The amount of shaders currently being built + + + + + The current selected resolution scaling multiplier. + + + + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. + + + + + How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. + + + + + 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. + + + + + Unmute + + + + + Mute + + + + + Reset Volume + + + + + &Clear Recent Files + + + + + &Continue + + + + + Warning: Outdated Game Format + + + + + 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.<br>For an explanation of the various Switch formats Eden supports, out our user handbook. This message will not be shown again. + + + + + + Error while loading ROM! + + + + + The ROM format is not supported. + + + + + An error occurred initializing the video core. + + + + + Eden 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: <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>How to Upload the Log File</a>. + + + + + Error while loading ROM! %1 + %1 signifies a numeric error code. + + + + + %1<br>Please redump your files or ask on Discord/Stoat for help. + %1 signifies an error string. + + + + + An unknown error occurred. Please see the log for more details. + + + + + (64-bit) + (64-bit) + + + + (32-bit) + (32-bit) + + + + %1 %2 + %1 is the title name. %2 indicates if the title is 64-bit or 32-bit + + + + + Closing software... + + + + + Save Data + + + + + Mod Data + + + + + Error Opening %1 Folder + + + + + + Folder does not exist! + + + + + Remove Installed Game Contents? + + + + + Remove Installed Game Update? + + + + + Remove Installed Game DLC? + + + + + Remove Entry + + + + + Delete OpenGL Transferable Shader Cache? + + + + + Delete Vulkan Transferable Shader Cache? + + + + + Delete All Transferable Shader Caches? + + + + + Remove Custom Game Configuration? + + + + + Remove Cache Storage? + + + + + Remove File + + + + + Remove Play Time Data + + + + + Reset play time? + + + + + + RomFS Extraction Failed! + + + + + There was an error copying the RomFS files or the user cancelled the operation. + + + + + Full + + + + + Skeleton + + + + + Select RomFS Dump Mode + + + + + Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. + + + + + There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root + + + + + Extracting RomFS... + + + + + + Cancel + Cancel·lar + + + + RomFS Extraction Succeeded! + + + + + The operation completed successfully. + + + + + Error Opening %1 + + + + + Select Directory + + + + + Properties + + + + + The game properties could not be loaded. + + + + + Switch Executable (%1);;All Files (*.*) + %1 is an identifier for the Switch executable file extensions. + + + + + Load File + + + + + Open Extracted ROM Directory + + + + + Invalid Directory Selected + + + + + The directory you have selected does not contain a 'main' file. + + + + + Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) + + + + + Install Files + + + + + %n file(s) remaining + + + + + Installing file "%1"... + + + + + + Install Results + + + + + To avoid possible conflicts, we discourage users from installing base games to the NAND. +Please, only use this feature to install updates and DLC. + + + + + %n file(s) were newly installed + + + + + + %n file(s) were overwritten + + + + + + %n file(s) failed to install + + + + + + System Application + + + + + System Archive + + + + + System Application Update + + + + + Firmware Package (Type A) + + + + + Firmware Package (Type B) + + + + + Game + + + + + Game Update + + + + + Game DLC + + + + + Delta Title + + + + + Select NCA Install Type... + + + + + Please select the type of title you would like to install this NCA as: +(In most instances, the default 'Game' is fine.) + + + + + Failed to Install + + + + + The title type you selected for the NCA is invalid. + + + + + File not found + + + + + File "%1" not found + + + + + OK + + + + + Function Disabled + + + + + Compatibility list reporting is currently disabled. Check back later! + + + + + Error opening URL + + + + + Unable to open the URL "%1". + + + + + TAS Recording + + + + + Overwrite file of player 1? + + + + + Invalid config detected + + + + + Handheld controller can't be used on docked mode. Pro controller will be selected. + + + + + + Amiibo + + + + + + The current amiibo has been removed + + + + + Error + + + + + + The current game is not looking for amiibos + + + + + Amiibo File (%1);; All Files (*.*) + + + + + Load Amiibo + + + + + Error loading Amiibo data + + + + + The selected file is not a valid amiibo + + + + + The selected file is already on use + + + + + An unknown error occurred + + + + + + Keys not installed + + + + + + Install decryption keys and restart Eden before attempting to install firmware. + + + + + Select Dumped Firmware Source Location + + + + + Select Dumped Firmware ZIP + + + + + Zipped Archives (*.zip) + + + + + Firmware cleanup failed + + + + + Failed to clean up extracted firmware cache. +Check write permissions in the system temp directory and try again. +OS reported error: %1 + + + + + No firmware available + + + + + Firmware Corrupted + + + + + Unknown applet + + + + + Applet doesn't map to a known value. + + + + + Record not found + + + + + Applet not found. Please reinstall firmware. + + + + + Capture Screenshot + + + + + PNG Image (*.png) + + + + + Update Available + + + + + Download %1? + + + + + TAS state: Running %1/%2 + + + + + TAS state: Recording %1 + + + + + TAS state: Idle %1/%2 + + + + + TAS State: Invalid + + + + + &Stop Running + + + + + Stop R&ecording + + + + + Building: %n shader(s) + + + + + Scale: %1x + %1 is the resolution scaling factor + Escala: %1x + + + + Speed: %1% / %2% + Velocitat: %1% / %2% + + + + Speed: %1% + Velocitat: %1% + + + + Game: %1 FPS + Joc: %1 FPS + + + + Frame: %1 ms + Fotograma: %1 ms + + + + + FSR + FSR + + + + NO AA + SENSE AA + + + + VOLUME: MUTE + + + + + VOLUME: %1% + Volume percentage (e.g. 50%) + VOLUMEN: %1% + + + + Derivation Components Missing + + + + + Decryption keys are missing. Install them now? + + + + + Wayland Detected! + + + + + Wayland is known to have significant performance issues and mysterious bugs. +It's recommended to use X11 instead. + +Would you like to force it for future launches? + + + + + Use X11 + + + + + Continue with Wayland + + + + + Don't show again + + + + + Restart Required + + + + + Restart Eden to apply the X11 backend. + + + + + Slow + Lent + + + + Turbo + Turbo + + + + Unlocked + + + + + Select RomFS Dump Target + + + + + Please select which RomFS you would like to dump. + + + + + Are you sure you want to close Eden? + + + + + + + Eden + Eden + + + + Are you sure you want to stop the emulation? Any unsaved progress will be lost. + + + + + The currently running application has requested Eden to not exit. + +Would you like to bypass this and exit anyway? + + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Nearest + + + + + Bilinear + Bilineal + + + + Bicubic + Bicúbic + + + + Zero-Tangent + + + + + B-Spline + + + + + Mitchell + + + + + Spline-1 + + + + + Gaussian + Gaussià + + + + Lanczos + Lanczos + + + + ScaleForce + + + + + Area + Àrea + + + + MMPX + + + + + Docked + Sobretaula + + + + Handheld + Portàtil + + + + Fast + + + + + Balanced + + + + + Accurate + + + + + Vulkan + Vulkan + + + + OpenGL GLSL + OpenGL GLSL + + + + OpenGL SPIRV + OpenGL SPIRV + + + + OpenGL GLASM + OpenGL GLASM + + + + Null + Nul MigrationWorker - - Data was migrated successfully. - - - - + Linking the old directory failed. You may need to re-run with administrative privileges on Windows. OS gave error: %1 - + - + + + +Note that your configuration and data will be shared with %1. +If this is not desirable, delete the following files: +%2 +%3 +%4 + + + + If you wish to clean up the files which were left in the old data location, you can do so by deleting the following directory: %1 - + + + + + Data was migrated successfully. + + + + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + @@ -8009,113 +8214,101 @@ If you wish to clean up the files which were left in the old data location, you Moderation - + Ban List - + - + Refreshing - + Unban - + + + + + Subject + - Subject - - - - Type - + - + Forum Username - + - + IP Address - + Adreça IP - + Refresh - + MultiplayerState - + Current connection status - + - + Not Connected. Click here to find a room! - + - + Not Connected - + - + Connected Connectat - + New Messages Received - + - + Error Error - + Failed to update the room information. Please check your Internet connection and try hosting the room again. Debug Message: - + NetworkMessage - - Username is not valid. Must be 4 to 20 alphanumeric characters. - El nom d'usuari no és vàlid. Hauria de contenir entre 4 i 20 caràcters alfanumèrics. - - - Username is already in use or not valid. Please choose another. - El nom d'usuari ja és en ús o no és vàlid. Si us plau, seleccioni un altre. - - - Incorrect password. - Contrasenya incorrecta. - Game already running - + Joining a room when the game is already running is discouraged and can cause the room feature not to work correctly. Proceed anyway? - + @@ -8125,24 +8318,146 @@ Proceed anyway? You are about to close the room. Any network connections will be closed. - + Disconnect - + You are about to leave the room. Any network connections will be closed. - + - NetworkMessage::ErrorManager + NewUserDialog - Error - Error + + + New User + Nou usuari + + + + Change Avatar + + + + + Set Image + + + + + UUID + + + + + Eden + Eden + + + + Username + + + + + UUID must be 32 hex characters (0-9, A-F) + + + + + Generate + + + + + Select User Image + + + + + Image Formats (*.jpg *.jpeg *.png *.bmp) + + + + + No firmware available + + + + + Please install the firmware to use firmware avatars. + + + + + + Error loading archive + + + + + Archive is not available. Please install/reinstall firmware. + + + + + Could not locate RomFS. Your file or decryption keys may be corrupted. + + + + + Error extracting archive + + + + + Could not extract RomFS. Your file or decryption keys may be corrupted. + + + + + Error finding image directory + + + + + Failed to find image directory in the archive. + + + + + No images found + + + + + No avatar images were found in the archive. + + + + + + All Good + Tooltip + + + + + Must be 32 hex characters (0-9, a-f) + Tooltip + + + + + Must be between 1 and 32 characters + Tooltip + @@ -8169,7 +8484,7 @@ Proceed anyway? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -8178,83 +8493,198 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> + + PerformanceOverlay + + + Form + + + + + Frametime + + + + + 0 ms + 0 ms + + + + + Min: 0 + + + + + + Max: 0 + + + + + + Avg: 0 + + + + + FPS + FPS + + + + 0 fps + + + + + %1 fps + + + + + + Avg: %1 + + + + + + Min: %1 + + + + + + Max: %1 + + + + + %1 ms + %1 ms + + PlayerControlPreview - + START/PAUSE INICI/PAUSAR + + ProfileAvatarDialog + + + Select + + + + + Cancel + Cancel·lar + + + + Background Color + + + + + Select Firmware Avatar + + + QObject - - %1 is not playing a game - + + + + Migration + - - %1 is playing %2 - + + Clear Shader Cache + - - Not playing a game - + + Keep Old Data + - - Installed SD Titles - Títols instal·lats a la SD + + Clear Old Data + - - Installed NAND Titles - Títols instal·lats a la NAND + + Link Old Directory + - - System Titles - Títols del sistema + + + + + + + - - Add New Game Directory - Afegir un nou directori de jocs + + + No + No - - Favorites - Preferits + + You can manually re-trigger this prompt by deleting the new config directory: +%1 + + + + + Migrating + + + + + Migrating, this may take a while... + - - + + Shift Shift - - + + Ctrl Ctrl - - + + Alt Alt - - - - + + + + [not set] [no establert] @@ -8264,15 +8694,15 @@ p, li { white-space: pre-wrap; } Rotació %1 %2 - - - - - - - - + + + + + + + + Axis %1%2 Eix %1%2 @@ -8282,359 +8712,383 @@ p, li { white-space: pre-wrap; } Botó %1 - - - - - - + + + + + + [unknown] [desconegut] - - - + + + Left Esquerra - - - + + + Right Dreta - - - + + + Down Avall - - - + + + Up Amunt - - + + Z Z - - + + R R - - + + L L - - + + A A - - + + B B - - + + X X - - + + Y Y - - + + Start Inici - - + + L1 L1 - - + + L2 L2 - - + + L3 L3 - - + + R1 R1 - - + + R2 R2 - - + + R3 R3 - - + + Circle Cercle - - + + Cross Creu - - + + Square Cuadrat - - + + Triangle Triangle - - + + Share Compartir - - + + Options Opcions - - + + [undefined] [indefinit] - + %1%2 %1%2 - - + + [invalid] [invàlid] - - + + %1%2Hat %3 %1%2Rotació %3 - - - + + + %1%2Axis %3 %1%2Eix %3 - - + + %1%2Axis %3,%4,%5 %1%2Eixos %3,%4,%5 - - + + %1%2Motion %3 %1%2Moviment %3 - - + + %1%2Button %3 %1%2Botó %3 - - + + [unused] [sense ús] - + ZR ZR - + ZL ZL - + SR SR - + SL SL - + Stick L - + - + Stick R - + - + Plus Més - + Minus Menys - - + + Home Inici - + Capture Captura - + Touch Tàctil - + Wheel Indicates the mouse wheel Roda - + Backward Enrere - + Forward Endavant - + Task Tasca - + Extra Extra - + %1%2%3%4 - + - - + + %1%2%3Hat %4 - + - - + + %1%2%3Axis %4 - + - - + + %1%2%3Button %4 - + - - - - Migration - + + Not playing a game + - - - - - + + %1 is not playing a game + - - - No - + + %1 is playing %2 + - - You can manually re-trigger this prompt by deleting the new config directory: -%1 - + + Play Time: %1 + - - Migrating - + + Never Played + Mai jugat - - Migrating, this may take a while... - + + Version: %1 + Versió: %1 + + + + Version: 1.0.0 + Versió: 1.0.0 + + + + Installed SD Titles + Títols instal·lats a la SD + + + + Installed NAND Titles + Títols instal·lats a la NAND + + + + System Titles + Títols del sistema + + + + Add New Game Directory + Afegir un nou directori de jocs + + + + Favorites + Preferits @@ -8642,7 +9096,7 @@ p, li { white-space: pre-wrap; } Amiibo Settings - + @@ -8652,12 +9106,12 @@ p, li { white-space: pre-wrap; } Series - + Type - + @@ -8667,17 +9121,17 @@ p, li { white-space: pre-wrap; } Amiibo Data - + Custom Name - + Owner - + Propietari @@ -8687,32 +9141,32 @@ p, li { white-space: pre-wrap; } dd/MM/yyyy - + dd/MM/yyyy Modification Date - + dd/MM/yyyy - + dd/MM/yyyy Game Data - + Game Id - + Mount Amiibo - + @@ -8722,32 +9176,818 @@ p, li { white-space: pre-wrap; } File Path - + - + No game data present - - - - - The following amiibo data will be formatted: - + - The following game data will removed: - + The following amiibo data will be formatted: + - Set nickname and owner: - + The following game data will removed: + + Set nickname and owner: + + + + Do you wish to restore this amiibo? - + + + + + QtCommon::Content + + + Game Requires Firmware + + + + + The game you are trying to launch requires firmware to boot or to get past the opening menu. Please <a href='https://yuzu-mirror.github.io/help/quickstart'>dump and install firmware</a>, or press "OK" to launch anyways. + + + + + Installing Firmware... + + + + + + + + + Cancel + Cancel·lar + + + + Firmware Install Failed + + + + + Firmware Install Succeeded + + + + + Firmware integrity verification failed! + + + + + + Verification failed for the following files: + +%1 + + + + + + Verifying integrity... + + + + + + Integrity verification succeeded! + + + + + + The operation completed successfully. + + + + + + Integrity verification failed! + + + + + File contents may be corrupt or missing. + + + + + Integrity verification couldn't be performed + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity. + + + + + Select Dumped Keys Location + + + + + Decryption Keys install succeeded + + + + + Decryption Keys install failed + + + + + Orphaned Profiles Detected! + + + + + UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br> + + + + + Really clear data? + + + + + Important data may be lost! + + + + + Are you REALLY sure? + + + + + Once deleted, your data will NOT come back! +Only do this if you're 100% sure you want to delete this data. + + + + + Clearing... + + + + + Select Export Location + + + + + %1.zip + %1.zip + + + + + Zipped Archives (*.zip) + + + + + Exporting data. This may take a while... + + + + + Exporting + Exportant + + + + Exported Successfully + + + + + Data was exported successfully. + + + + + Export Cancelled + + + + + Export was cancelled by the user. + + + + + Export Failed + + + + + Ensure you have write permissions on the targeted directory and try again. + + + + + Select Import Location + + + + + Import Warning + + + + + All previous data in this directory will be deleted. Are you sure you wish to proceed? + + + + + Importing data. This may take a while... + + + + + Importing + + + + + Imported Successfully + + + + + Data was imported successfully. + + + + + Import Cancelled + + + + + Import was cancelled by the user. + + + + + Import Failed + + + + + Ensure you have read permissions on the targeted directory and try again. + + + + + QtCommon::FS + + + Linked Save Data + + + + + Save data has been linked. + + + + + Failed to link save data + + + + + Could not link directory: + %1 +To: + %2 + + + + + Already Linked + + + + + This title is already linked to Ryujinx. Would you like to unlink it? + + + + + Failed to unlink old directory + + + + + + OS returned error: %1 + + + + + Failed to copy save data + + + + + Unlink Successful + + + + + Successfully unlinked Ryujinx save data. Save data has been kept intact. + + + + + Could not find Ryujinx installation + + + + + Could not find a valid Ryujinx installation. This may typically occur if you are using Ryujinx in portable mode. + +Would you like to manually select a portable folder to use? + + + + + Ryujinx Portable Location + + + + + Not a valid Ryujinx directory + + + + + The specified directory does not contain valid Ryujinx data. + + + + + + Could not find Ryujinx save data + + + + + QtCommon::Game + + + Error Removing Contents + + + + + Error Removing Update + + + + + Error Removing DLC + + + + + + + + + + Successfully Removed + + + + + Successfully removed the installed base game. + + + + + The base game is not installed in the NAND and cannot be removed. + + + + + Successfully removed the installed update. + + + + + There is no update installed for this title. + + + + + There are no DLCs installed for this title. + + + + + Successfully removed %1 installed DLC. + + + + + + Error Removing Transferable Shader Cache + + + + + + A shader cache for this title does not exist. + + + + + Successfully removed the transferable shader cache. + + + + + Failed to remove the transferable shader cache. + + + + + Error Removing Vulkan Driver Pipeline Cache + + + + + Failed to remove the driver pipeline cache. + + + + + + Error Removing Transferable Shader Caches + + + + + Successfully removed the transferable shader caches. + + + + + Failed to remove the transferable shader cache directory. + + + + + + Error Removing Custom Configuration + + + + + A custom configuration for this title does not exist. + + + + + Successfully removed the custom game configuration. + + + + + Failed to remove the custom game configuration. + + + + + Reset Metadata Cache + + + + + The metadata cache is already empty. + + + + + The operation completed successfully. + + + + + The metadata cache couldn't be deleted. It might be in use or non-existent. + + + + + Create Shortcut + + + + + Do you want to launch the game in fullscreen? + + + + + Shortcut Created + + + + + Successfully created a shortcut to %1 + + + + + Shortcut may be Volatile! + + + + + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? + + + + + Failed to Create Shortcut + + + + + Failed to create a shortcut to %1 + + + + + Create Icon + + + + + Cannot create icon file. Path "%1" does not exist and cannot be created. + + + + + No firmware available + + + + + Please install firmware to use the home menu. + + + + + Home Menu Applet + Applet del menú d'inici + + + + Home Menu is not available. Please reinstall firmware. + + + + + QtCommon::Mod + + + Mod Name + + + + + What should this mod be called? + + + + + RomFS + + + + + ExeFS/Patch + + + + + Cheat + + + + + Mod Type + + + + + Could not detect mod type automatically. Please manually specify the type of mod you downloaded. + +Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods. + + + + + + Mod Extract Failed + + + + + Failed to create temporary directory %1 + + + + + Zip file %1 is empty + + + + + QtCommon::Path + + + Error Opening Shader Cache + + + + + Failed to create or open shader cache for this title, ensure your app data directory has write permissions. + + + + + QtCommon::StringLookup + + + Contains game save data. DO NOT REMOVE UNLESS YOU KNOW WHAT YOU'RE DOING! + + + + + Contains Vulkan and OpenGL pipeline caches. Generally safe to remove. + + + + + Contains updates and DLC for games. + + + + + Contains firmware and applet data. + + + + + Contains game mods, patches, and cheats. + + + + + Decryption Keys were successfully installed + + + + + Unable to read key directory, aborting + + + + + One or more keys failed to copy. + + + + + Verify your keys file has a .keys extension and try again. + + + + + Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. + + + + + Successfully installed firmware version %1 + + + + + Unable to locate potential firmware NCA files + + + + + Failed to delete one or more firmware files. + + + + + One or more firmware files failed to copy into NAND. + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. Restart Eden or re-install firmware. + + + + + Firmware missing. Firmware is required to run certain games and use the Home Menu. + + + + + Firmware reported as present, but was unable to be read. Check for decryption keys and redump firmware if necessary. + + + + + Eden has detected user data for the following emulators: + + + + + Would you like to migrate your data for use in Eden? +Select the corresponding button to migrate data from that emulator. +This may take a while. + + + + + Clearing shader cache is recommended for all users. +Do not uncheck unless you know what you're doing. + + + + + Keeps the old data directory. This is recommended if you aren't +space-constrained and want to keep separate data for the old emulator. + + + + + Deletes the old data directory. +This is recommended on devices with space constraints. + + + + + Creates a filesystem link between the old directory and Eden directory. +This is recommended if you want to share data between emulators. + + + + + Ryujinx title database does not exist. + + + + + Invalid header on Ryujinx title database. + + + + + Invalid magic header on Ryujinx title database. + + + + + Invalid byte alignment on Ryujinx title database. + + + + + No items found in Ryujinx title database. + + + + + Title %1 not found in Ryujinx title database. + @@ -8786,7 +10026,7 @@ p, li { white-space: pre-wrap; } - + Pro Controller Controlador Pro @@ -8799,7 +10039,7 @@ p, li { white-space: pre-wrap; } - + Dual Joycons Joycons duals @@ -8812,7 +10052,7 @@ p, li { white-space: pre-wrap; } - + Left Joycon Joycon esquerra @@ -8825,7 +10065,7 @@ p, li { white-space: pre-wrap; } - + Right Joycon Joycon dret @@ -8854,7 +10094,7 @@ p, li { white-space: pre-wrap; } - + Handheld Portàtil @@ -8972,35 +10212,35 @@ p, li { white-space: pre-wrap; } Not enough controllers - + - + GameCube Controller Controlador de GameCube - + Poke Ball Plus Poke Ball Plus - + NES Controller Controlador NES - + SNES Controller Controlador SNES - + N64 Controller Controlador N64 - + Sega Genesis Sega Genesis @@ -9008,28 +10248,28 @@ p, li { white-space: pre-wrap; } QtErrorDisplay - - - + + + Error Code: %1-%2 (0x%3) Codi d'error: %1-%2 (0x%3) - + An error has occurred. Please try again or contact the developer of the software. S'ha produït un error. Si us plau, intenti-ho de nou o contacti el desenvolupador del programari. - + An error occurred on %1 at %2. Please try again or contact the developer of the software. S'ha produït un error a %1 a les %2. Si us plau, intenti-ho de nou o contacti el desenvolupador del programari. - + An error has occurred. %1 @@ -9045,7 +10285,7 @@ Si us plau, intenti-ho de nou o contacti el desenvolupador del programari. QtProfileSelectionDialog - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -9053,14 +10293,14 @@ Si us plau, intenti-ho de nou o contacti el desenvolupador del programari. - + Users Usuaris Profile Creator - + @@ -9071,32 +10311,32 @@ Si us plau, intenti-ho de nou o contacti el desenvolupador del programari. Profile Icon Editor - + Profile Nickname Editor - + Who will receive the points? - + Who is using Nintendo eShop? - + Who is making this purchase? - + Who is posting? - + @@ -9106,12 +10346,12 @@ Si us plau, intenti-ho de nou o contacti el desenvolupador del programari. Change settings for which user? - + Format data for which user? - + @@ -9121,7 +10361,7 @@ Si us plau, intenti-ho de nou o contacti el desenvolupador del programari. Send save data for which user? - + @@ -9146,7 +10386,7 @@ Si us plau, intenti-ho de nou o contacti el desenvolupador del programari.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -9155,17 +10395,57 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - - + + OK D'acord - + Cancel Cancel·lar + + RyujinxDialog + + + Ryujinx Link + + + + + Linking save data to Ryujinx lets both Ryujinx and Eden reference the same save files for your games. + +By selecting "From Eden", previous save data stored in Ryujinx will be deleted, and vice versa for "From Ryujinx". + + + + + From Eden + + + + + From Ryujinx + + + + + Cancel + Cancel·lar + + + + Failed to link save data + + + + + OS returned error: %1 + + + SequenceDialog @@ -9175,143 +10455,31 @@ p, li { white-space: pre-wrap; } - WaitTreeCallstack + SetPlayTimeDialog - - Call stack - Pila de trucades - - - - WaitTreeSynchronizationObject - - - [%1] %2 - + + Set Play Time Data + - - waited by no thread - esperat per cap fil - - - - WaitTreeThread - - - runnable - executable + + Hours: + Hores: - - paused - pausat + + Minutes: + Minuts: - - sleeping - dormint + + Seconds: + Segons: - - waiting for IPC reply - esperant per resposta IPC - - - - waiting for objects - esperant objectes - - - - waiting for condition variable - esperant variable condicional - - - - waiting for address arbiter - esperant al àrbitre d'adreça - - - - waiting for suspend resume - esperant reanudar la suspensió - - - - waiting - esperant - - - - initialized - inicialitzat - - - - terminated - acabat - - - - unknown - desconegut - - - - PC = 0x%1 LR = 0x%2 - PC = 0x%1 LR = 0x%2 - - - - ideal - ideal - - - - core %1 - nucli %1 - - - - processor = %1 - processador = %1 - - - - affinity mask = %1 - màscara d'afinitat = %1 - - - - thread id = %1 - id fil = %1 - - - - priority = %1(current) / %2(normal) - prioritat = %1(actual) / %2(normal) - - - - last running ticks = %1 - últims ticks consecutius = %1 - - - - WaitTreeThreadList - - - waited by thread - esperat per fil - - - - WaitTreeWidget - - - &Wait Tree - Arbre d'&espera + + Total play time reached maximum. + diff --git a/dist/languages/cs.ts b/dist/languages/cs.ts index 637e095fee..34cf60f078 100644 --- a/dist/languages/cs.ts +++ b/dist/languages/cs.ts @@ -1,25 +1,15 @@ - - - + AboutDialog - - About yuzu - O yuzu - - - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - - About eden - + About Eden + O aplikaci Eden - <html><head/><body><p><span style=" font-size:28pt;">eden</span></p></body></html> - + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> + @@ -34,70 +24,50 @@ p, li { white-space: pre-wrap; } hr { height: 1px; border-width: 0; } li.unchecked::marker { content: "\2610"; } li.checked::marker { content: "\2612"; } -</style></head><body style=" font-family:'Adwaita Sans'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> - +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> + - <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">This software should not be used to play games you have not legally obtained.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Yuzu je experimentální open source emulátor pro konzoli Nintendo Switch licencován pod licencí GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Tento software by neměl být využíván pro hraní her, které nevlastníte.</span></p></body></html> - - - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Webové stránky</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Zdrojový kód</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Přispěvatelé</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licence</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. eden is not affiliated with Nintendo in any way.</span></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; je trademark Nintenda. Yuzu nemá s Nintendem nic společného.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. Eden is not affiliated with Nintendo in any way.</span></p></body></html> + CalibrationConfigurationDialog - + Communicating with the server... Komunikujeme se serverem... - + Cancel Zrušit - + Touch the top left corner <br>of your touchpad. Dotkněte se levého horního rohu <br>vašeho touchpadu. - + Now touch the bottom right corner <br>of your touchpad. Teď se dotkněte dolního pravého rohu <br>vašeho touchpadu. - + Configuration completed! Nastavení dokončeno! - + OK OK @@ -107,7 +77,7 @@ p, li { white-space: pre-wrap; } Room Window - + @@ -120,82 +90,82 @@ p, li { white-space: pre-wrap; } Odeslat Zprávu - + Members - + - + %1 has joined %1 se připojil - + %1 has left - + - + %1 has been kicked %1 byl vyhozen - + %1 has been banned %1 byl zabanován - + %1 has been unbanned %1 byl odbanován - + View Profile Zobrazit Profil - - + + Block Player Zablokovat Hráče - + When you block a player, you will no longer receive chat messages from them.<br><br>Are you sure you would like to block %1? - + - + Kick Vyhodit - + Ban Zabanovat - + Kick Player Vyhodit Hráče - + Are you sure you would like to <b>kick</b> %1? - + - + Ban Player Zabanovat Hráče - + Are you sure you would like to <b>kick and ban</b> %1? This would ban both their forum username and their IP address. - + @@ -203,7 +173,7 @@ This would ban both their forum username and their IP address. Room Window - + @@ -213,7 +183,7 @@ This would ban both their forum username and their IP address. Moderation... - + @@ -224,17 +194,17 @@ This would ban both their forum username and their IP address. ClientRoomWindow - + Connected Připojeno - + Disconnected - + - + %1 - %2 (%3/%4 members) - connected %1 - %2 (%3/%4 členů) - připojeno @@ -257,114 +227,110 @@ This would ban both their forum username and their IP address. Report Game Compatibility Nahlásit kompatibilitu hry. - - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of yuzu you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected yuzu account</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Rozmysli si jestli chceš poslat data do: </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">Listu Kompatibility s yuzu</span></a><span style=" font-size:10pt;">, následující informace budou uloženy a zobrazeny na stránce:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">informace o hardwaru (CPU / GPU / Operační Systém)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Verze yuzu</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Přidružený účet</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">eden Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of eden you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected eden account</li></ul></body></html> - + <html><head/><body><p>Does the game boot?</p></body></html> - + Yes The game starts to output video or audio - + No The game doesn't get past the "Launching..." screen - + Yes The game gets past the intro/menu and into gameplay - + No The game crashes or freezes while loading or using the menu - + <html><head/><body><p>Does the game reach gameplay?</p></body></html> - + Yes The game works without crashes - + No The game crashes or freezes during gameplay - + <html><head/><body><p>Does the game work without crashing, freezing or locking up during gameplay?</p></body></html> - + Yes The game can be finished without any workarounds - + No The game can't progress past a certain area - + <html><head/><body><p>Is the game completely playable from start to finish?</p></body></html> - + Major The game has major graphical errors - + Minor The game has minor graphical errors - + None Everything is rendered as it looks on the Nintendo Switch - + <html><head/><body><p>Does the game have any graphical glitches?</p></body></html> - + Major The game has major audio errors - + Minor The game has minor audio errors - + None Audio is played perfectly - + <html><head/><body><p>Does the game have any audio glitches / missing effects?</p></body></html> - + @@ -372,22 +338,22 @@ This would ban both their forum username and their IP address. Děkujeme za odezvu! - + Submitting Potvrzuji - + Communication error Chyba komunikace - + An error occurred while sending the Testcase Chyba při odesílání testovacího případu - + Next Další @@ -395,1517 +361,1865 @@ This would ban both their forum username and their IP address. ConfigurationShared - + % % - + Amiibo editor - + - + Controller configuration - + - + Data erase - + - + Error - + - + Net connect - + - + Player select - + - + Software keyboard - + - + Mii Edit - + - + Online web - + - + Shop - + - + Photo viewer - + - + Offline web - + - + Login share - + - + Wifi web auth - + - + My page - + - + + Enable Overlay Applet + + + + + Enables Horizon's built-in overlay applet. Press and hold the home button for 1 second to show it. + + + + Output Engine: Výstupní Engine: - + Output Device: Výstupní Zařízení: - + Input Device: Vstupní Zařízení: - + Mute audio Ztlumit zvuk - + Volume: Hlasitost: - + Mute audio when in background Ztlumit zvuk, když je aplikace v pozadí - + Multicore CPU Emulation Vícejádrová emulace CPU - - This option increases CPU emulation thread use from 1 to the Switch’s maximum of 4. -This is mainly a debug option and shouldn’t be disabled. - + + This option increases CPU emulation thread use from 1 to the maximum of 4. +This is mainly a debug option and shouldn't be disabled. + - + Memory Layout Rozložení Paměti - - Increases the amount of emulated RAM from the stock 4GB of the retail Switch to the developer kit's 8/6GB. -It’s doesn’t improve stability or performance and is intended to let big texture mods fit in emulated RAM. -Enabling it will increase memory use. It is not recommended to enable unless a specific game with a texture mod needs it. - + + Increases the amount of emulated RAM. +Doesn't affect performance/stability but may allow HD texture mods to load. + - + Limit Speed Percent Omezení rychlosti v procentech - - Controls the game's maximum rendering speed, but it’s up to each game if it runs faster or not. + + Controls the game's maximum rendering speed, but it's up to each game if it runs faster or not. 200% for a 30 FPS game is 60 FPS, and for a 60 FPS game it will be 120 FPS. Disabling it means unlocking the framerate to the maximum your PC can reach. - + - + + Turbo Speed + + + + + When the Turbo Speed hotkey is pressed, the speed will be limited to this percentage. + + + + + Slow Speed + + + + + When the Slow Speed hotkey is pressed, the speed will be limited to this percentage. + + + + Synchronize Core Speed - + - - Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). -Compatibility varies by game; many (especially older ones) may not respond well. + + Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). Can help reduce stuttering at lower framerates. - + - + Accuracy: Přesnost: - - This setting controls the accuracy of the emulated CPU. -Don't change this unless you know what you are doing. - + + Change the accuracy of the emulated CPU (for debugging only). + - - + + Backend: - + - - Fast CPU Time - + + CPU Overclock + - + Overclocks the emulated CPU to remove some FPS limiters. Weaker CPUs may see reduced performance, and certain games may behave improperly. Use Boost (1700MHz) to run at the Switch's highest native clock, or Fast (2000MHz) to run at 2x clock. - + - + + Custom CPU Ticks + + + + + Set a custom value of CPU ticks. Higher values can increase performance, but may cause deadlocks. A range of 77-21000 is recommended. + + + + + Enable Host MMU Emulation (fastmem) + + + + + This optimization speeds up memory accesses by the guest program. +Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU. +Disabling this forces all memory accesses to use Software MMU Emulation. + + + + Unfuse FMA (improve performance on CPUs without FMA) Rozložit FMA instrukce (zlepší výkon na CPU bez FMA) - + This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support. - + - + Faster FRSQRTE and FRECPE Rychlejší FRSQRTE a FRECPE - + This option improves the speed of some approximate floating-point functions by using less accurate native approximations. - + - + Faster ASIMD instructions (32 bits only) Rychlejší instrukce ASIMD (Pouze 32 bitové) - + This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes. - + - + Inaccurate NaN handling Nepřesné zpracování NaN - + This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions. - + - + Disable address space checks Zakázat kontrolu adres paměti - - This option improves speed by eliminating a safety check before every memory read/write in guest. -Disabling it may allow a game to read/write the emulator's memory. - + + This option improves speed by eliminating a safety check before every memory operation. +Disabling it may allow arbitrary code execution. + - + Ignore global monitor Ignorovat globální hlídač. - + 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. - + - + API: API: - - Switches between the available graphics APIs. -Vulkan is recommended in most cases. - + + Changes the output graphics API. +Vulkan is recommended. + - + Device: Zařízení: - - This setting selects the GPU to use with the Vulkan backend. - + + This setting selects the GPU to use (Vulkan only). + - - Shader Backend: - - - - - The shader backend to use for the OpenGL renderer. -GLSL is the fastest in performance and the best in rendering accuracy. -GLASM is a deprecated NVIDIA-only backend that offers much better shader building performance at the cost of FPS and rendering accuracy. -SPIR-V compiles the fastest, but yields poor results on most GPU drivers. - - - - + Resolution: Rozlišení: - - Forces the game to render at a different resolution. -Higher resolutions require much more VRAM and bandwidth. -Options lower than 1X can cause rendering issues. - + + Forces to render at a different resolution. +Higher resolutions require more VRAM and bandwidth. +Options lower than 1X can cause artifacts. + - + Window Adapting Filter: - + - + FSR Sharpness: - + - - Determines how sharpened the image will look while using FSR’s dynamic contrast. - + + Determines how sharpened the image will look using FSR's dynamic contrast. + - + Anti-Aliasing Method: - + - + The anti-aliasing method to use. SMAA offers the best quality. -FXAA has a lower performance impact and can produce a better and more stable picture under very low resolutions. - +FXAA can produce a more stable picture in lower resolutions. + - + Fullscreen Mode: Režim celé obrazovky: - + The method used to render the window in fullscreen. Borderless offers the best compatibility with the on-screen keyboard that some games request for input. Exclusive fullscreen may offer better performance and better Freesync/Gsync support. - + - + Aspect Ratio: Poměr stran: - - Stretches the game to fit the specified aspect ratio. -Switch games only support 16:9, so custom game mods are required to get other ratios. + + Stretches the renderer to fit the specified aspect ratio. +Most games only support 16:9, so modifications are required to get other ratios. Also controls the aspect ratio of captured screenshots. - + - - Use disk pipeline cache - + + Use persistent pipeline cache + - + Allows saving shaders to storage for faster loading on following game boots. Disabling it is only intended for debugging. - + - - Optimize SPIRV output shader - + + Optimize SPIRV output + - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. This feature is experimental. - + - - Use asynchronous GPU emulation - Použít asynchronní emulaci GPU - - - - Uses an extra CPU thread for rendering. -This option should always remain enabled. - - - - + NVDEC emulation: - + - + Specifies how videos should be decoded. It can either use the CPU or the GPU for decoding, or perform no decoding at all (black screen on videos). In most cases, GPU decoding provides the best performance. - + - + ASTC Decoding Method: - + - + This option controls how ASTC textures should be decoded. -CPU: Use the CPU for decoding, slowest but safest method. -GPU: Use the GPU's compute shaders to decode ASTC textures, recommended for most games and users. -CPU Asynchronously: Use the CPU to decode ASTC textures as they arrive. Completely eliminates ASTC decoding -stuttering at the cost of rendering issues while the texture is being decoded. - +CPU: Use the CPU for decoding. +GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). +CPU Asynchronously: Use the CPU to decode ASTC textures on demand. EliminatesASTC decoding +stuttering but may present artifacts. + - + ASTC Recompression Method: - + - - Almost all desktop and laptop dedicated GPUs lack support for ASTC textures, forcing the emulator to decompress to an intermediate format any card supports, RGBA8. -This option recompresses RGBA8 to either the BC1 or BC3 format, saving VRAM but negatively affecting image quality. - + + Most GPUs lack support for ASTC textures and must decompress to anintermediate format: RGBA8. +BC1/BC3: The intermediate format will be recompressed to BC1 or BC3 format, + saving VRAM but degrading image quality. + - + + Frame Pacing Mode (Vulkan only) + + + + + Controls how the emulator manages frame pacing to reduce stuttering and make the frame rate smoother and more consistent. + + + + VRAM Usage Mode: - + - - Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. Has no effect on integrated graphics. Aggressive mode may severely impact the performance of other applications such as recording software. - + + Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. +Aggressive mode may impact performance of other applications such as recording software. + - + + Skip CPU Inner Invalidation + + + + + Skips certain cache invalidations during memory updates, reducing CPU usage and improving latency. This may cause soft-crashes. + + + + VSync Mode: - + - + FIFO (VSync) does not drop frames or exhibit tearing but is limited by the screen refresh rate. -FIFO Relaxed is similar to FIFO but allows tearing as it recovers from a slow down. +FIFO Relaxed 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. - +Immediate (no synchronization) presents whatever is available and can exhibit tearing. + - + + Sync Memory Operations + + + + + Ensures data consistency between compute and memory operations. +This option fixes issues in games, but may degrade performance. +Unreal Engine 4 games often see the most significant changes thereof. + + + + Enable asynchronous presentation (Vulkan only) - + - + Slightly improves performance by moving presentation to a separate CPU thread. - + - + Force maximum clocks (Vulkan only) - + - + Runs work in the background while waiting for graphics commands to keep the GPU from lowering its clock speed. - + - + Anisotropic Filtering: Anizotropní filtrování: - + Controls the quality of texture rendering at oblique angles. -It’s a light setting and safe to set at 16x on most GPUs. - +Safe to set at 16x on most GPUs. + - - Accuracy Level: - Přesnost: + + GPU Mode: + - - GPU emulation accuracy. -Most games render fine with Normal, but High is still required for some. -Particles tend to only render correctly with High accuracy. -Extreme should only be used for debugging. -This option can be changed while playing. -Some games may require booting on high to render properly. - + + Controls the GPU emulation mode. +Most games render fine with Fast or Balanced modes, but Accurate is still required for some. +Particles tend to only render correctly with Accurate mode. + - - Use asynchronous shader building (Hack) - + + DMA Accuracy: + - - Enables asynchronous shader compilation, which may reduce shader stutter. -This feature is experimental. - + + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. + - + + Enable asynchronous shader compilation + + + + + May reduce shader stutter. + + + + + Fast GPU Time + + + + + Overclocks the emulated GPU to increase dynamic resolution and render distance. +Use 256 for maximal performance and 512 for maximal graphics fidelity. + + + + + GPU Unswizzle + + + + + Accelerates BCn 3D texture decoding using GPU compute. +Disable if experiencing crashes or graphical glitches. + + + + + GPU Unswizzle Max Texture Size + + + + + Sets the maximum size (MiB) for GPU-based texture unswizzling. +While the GPU is faster for medium and large textures, the CPU may be more efficient for very small ones. +Adjust this to find the balance between GPU acceleration and CPU overhead. + + + + + GPU Unswizzle Stream Size + + + + + Sets the maximum amount of texture data (in MiB) processed per frame. +Higher values can reduce stutter during texture loading but may impact frame consistency. + + + + + GPU Unswizzle Chunk Size + + + + + Determines the number of depth slices processed in a single dispatch. +Increasing this can improve throughput on high-end GPUs but may cause TDR or driver timeouts on weaker hardware. + + + + Use Vulkan pipeline cache - + - + Enables GPU vendor-specific pipeline cache. This option can improve shader loading time significantly in cases where the Vulkan driver does not store pipeline cache files internally. - + - + Enable Compute Pipelines (Intel Vulkan Only) - + - - Enable compute pipelines, required by some games. -This setting only exists for Intel proprietary drivers, and may crash if enabled. + + 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. - + - + Enable Reactive Flushing - + - + Uses reactive flushing instead of predictive flushing, allowing more accurate memory syncing. - + - + Sync to framerate of video playback - + - + Run the game at normal speed during video playback, even when the framerate is unlocked. - + - + Barrier feedback loops - + - + Improves rendering of transparency effects in specific games. - + - + + Enable buffer history + + + + + Enables access to previous buffer states. +This option may improve rendering quality and performance consistency in some games. + + + + + Fix bloom effects + + + + + Removes bloom in Burnout. + + + + + Enable Legacy Rescale Pass + + + + + May fix rescale issues in some games by relying on behavior from the previous implementation. +Legacy behavior workaround that fixes line artifacts on AMD and Intel GPUs, and grey texture flicker on Nvidia GPUs in Luigis Mansion 3. + + + + + Extended Dynamic State + + + + + Controls the number of features that can be used in Extended Dynamic State. +Higher states allow for more features and can increase performance, but may cause additional graphical issues. + + + + + Vertex Input Dynamic State + + + + + Enables vertex input dynamic state feature for better quality and performance. + + + + + Sample Shading + + + + + Allows the fragment shader to execute per sample in a multi-sampled fragment instead of once per fragment. Improves graphics quality at the cost of performance. +Higher values improve quality but degrade performance. + + + + RNG Seed RNG Seed - + Controls the seed of the random number generator. -Mainly used for speedrunning purposes. - +Mainly used for speedrunning. + - + Device Name Název Zařízení - - The name of the emulated Switch. - + + The name of the console. + - + Custom RTC Date: - + - - This option allows to change the emulated clock of the Switch. + + This option allows to change the clock of the console. Can be used to manipulate time in games. - + - + + The number of seconds from the current unix time + + + + Language: Jazyk: - - Note: this can be overridden when region setting is auto-select - Pozn.: tohle se může přemazat když se region vybírá automaticky + + This option can be overridden when region setting is auto-select + - + Region: Region: - - The region of the emulated Switch. - + + The region of the console. + - + Time Zone: Časové Pásmo: - - The time zone of the emulated Switch. - + + The time zone of the console. + - + Sound Output Mode: - + - + Console Mode: - + - - Selects if the console is emulated in Docked or Handheld mode. + + Selects if the console is in Docked or Handheld mode. Games will change their resolution, details and supported controllers and depending on this setting. Setting to Handheld can help improve performance for low end systems. - + - - Prompt for user on game boot - Zeptat se na uživatele při spuštění hry + + Unit Serial + - - Pause emulation when in background - Pozastavit emulaci, když je aplikace v pozadí + + Battery Serial + - - Fast GPU Time (Hack) - + + Debug knobs + - - Overclocks the emulated GPU to increase dynamic resolution and render distance. -Use 128 for maximal performance and 512 for maximal graphics fidelity. - + + Prompt for user profile on boot + - - Extended Dynamic State - + + Useful if multiple people use the same PC. + - - Enables the VkExtendedDynamicState* extensions. -Higher dynamic states will generally improve performance, but may cause issues on certain games or devices. - + + Pause when not in focus + - - Provoking Vertex - + + Pauses emulation when focusing on other windows. + - - Improves lighting and vertex handling in certain games. -Only Vulkan 1.0+ devices support this extension. - - - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - - Ask to select a user profile on each boot, useful if multiple people use eden on the same PC. - - - - - This setting pauses eden when focusing other windows. - - - - + Confirm before stopping emulation Potvrzení před zastavením emulace - - This setting overrides game prompts asking to confirm stopping the game. + + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - + - + Hide mouse on inactivity Skrýt myš při neaktivitě - - This setting hides the mouse after 2.5s of inactivity. - + + Hides the mouse after 2.5s of inactivity. + - + Disable controller applet - + - - Forcibly disables the use of the controller applet by guests. -When a guest attempts to open the controller applet, it is immediately closed. - + + Forcibly disables the use of the controller applet in emulated programs. +When a program attempts to open the controller applet, it is immediately closed. + - + Check for updates - + - + Whether or not to check for updates upon startup. - + - + Enable Gamemode - + - + + Force X11 as Graphics Backend + + + + Custom frontend - + - + Real applet - + - + Never - + - + On Load - + - + Always - + - + CPU CPU - + GPU - + - + CPU Asynchronous - + - + Uncompressed (Best quality) - + - + BC1 (Low quality) - + - + BC3 (Medium quality) - + - - Conservative - - - - - Aggressive - - - - - OpenGL - - - - - Vulkan - Vulkan - - - - Null - - - - - GLSL - - - - - GLASM (Assembly Shaders, NVIDIA Only) - - - - - SPIR-V (Experimental, AMD/Mesa Only) - - - - - Normal - Normální - - - - High - Vysoká - - - - Extreme - Extrémní - - - + + Auto Automatické - + + 30 FPS + + + + + 60 FPS + + + + + 90 FPS + + + + + 120 FPS + + + + + Conservative + + + + + Aggressive + + + + + Vulkan + Vulkan + + + + OpenGL GLSL + + + + + OpenGL GLASM (Assembly Shaders, NVIDIA Only) + + + + + OpenGL SPIR-V (Experimental, AMD/Mesa Only) + + + + + Null + + + + + Fast + + + + + Balanced + + + + + Accurate Přesné - - Unsafe - Nebezpečné - - - - Paranoid (disables most optimizations) - Paranoidní (zakáže většinu optimizací) - - - - Dynarmic - - - - - NCE - - - - - Borderless Windowed - Okno bez okrajů - - - - Exclusive Fullscreen - Exkluzivní - - - - No Video Output - - - - - CPU Video Decoding - - - - - GPU Video Decoding (Default) - - - - - 0.25X (180p/270p) [EXPERIMENTAL] - - - - - 0.5X (360p/540p) [EXPERIMENTAL] - - - - - 0.75X (540p/810p) [EXPERIMENTAL] - - - - - 1X (720p/1080p) - 1X (720p/1080p) - - - - 1.5X (1080p/1620p) [EXPERIMENTAL] - - - - - 2X (1440p/2160p) - - - - - 3X (2160p/3240p) - - - - - 4X (2880p/4320p) - - - - - 5X (3600p/5400p) - - - - - 6X (4320p/6480p) - - - - - 7X (5040p/7560p) - - - - - 8X (5760p/8640p) - - - - - Nearest Neighbor - - - - - Bilinear - Bilineární - - - - Bicubic - - - - - Gaussian - - - - - ScaleForce - - - - - AMD FidelityFX™️ Super Resolution - - - - - Area - - - - - None - Žádné - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Default (16:9) - Výchozí (16:9) - - - - Force 4:3 - Vynutit 4:3 - - - - Force 21:9 - Vynutit 21:9 - - - - Force 16:10 - - - - - Stretch to Window - Roztáhnout podle okna - - - - Automatic - - - - + + Default Výchozí - + + Unsafe (fast) + + + + + Safe (stable) + + + + + Unsafe + Nebezpečné + + + + Paranoid (disables most optimizations) + Paranoidní (zakáže většinu optimizací) + + + + Debugging + + + + + Dynarmic + + + + + NCE + + + + + Borderless Windowed + Okno bez okrajů + + + + Exclusive Fullscreen + Exkluzivní + + + + No Video Output + + + + + CPU Video Decoding + + + + + GPU Video Decoding (Default) + + + + + 0.25X (180p/270p) [EXPERIMENTAL] + + + + + 0.5X (360p/540p) [EXPERIMENTAL] + + + + + 0.75X (540p/810p) [EXPERIMENTAL] + + + + + 1X (720p/1080p) + 1X (720p/1080p) + + + + 1.25X (900p/1350p) [EXPERIMENTAL] + + + + + 1.5X (1080p/1620p) [EXPERIMENTAL] + + + + + 2X (1440p/2160p) + + + + + 3X (2160p/3240p) + + + + + 4X (2880p/4320p) + + + + + 5X (3600p/5400p) + + + + + 6X (4320p/6480p) + + + + + 7X (5040p/7560p) + + + + + 8X (5760p/8640p) + + + + + Nearest Neighbor + + + + + Bilinear + Bilineární + + + + Bicubic + + + + + Gaussian + + + + + Lanczos + + + + + ScaleForce + + + + + AMD FidelityFX Super Resolution + + + + + Area + + + + + MMPX + + + + + Zero-Tangent + + + + + B-Spline + + + + + Mitchell + + + + + Spline-1 + + + + + + None + Žádné + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Default (16:9) + Výchozí (16:9) + + + + Force 4:3 + Vynutit 4:3 + + + + Force 21:9 + Vynutit 21:9 + + + + Force 16:10 + + + + + Stretch to Window + Roztáhnout podle okna + + + + Automatic + + + + 2x 2x - + 4x 4x - + 8x 8x - + 16x 16x - + + 32x + + + + + 64x + + + + Japanese (日本語) Japonština (日本語) - + American English - + - + French (français) Francouzština (français) - + German (Deutsch) Nemčina (Deutsch) - + Italian (italiano) Italština (Italiano) - + Spanish (español) Španělština (español) - + Chinese Čínština - + Korean (한국어) Korejština (한국어) - + Dutch (Nederlands) Holandština (Nederlands) - + Portuguese (português) Portugalština (português) - + Russian (Русский) Ruština (Русский) - + Taiwanese Tajwanština - + British English Britská Angličtina - + Canadian French Kanadská Francouzština - + Latin American Spanish Latinsko Americká Španělština - + Simplified Chinese Zjednodušená Čínština - + Traditional Chinese (正體中文) Tradiční Čínština (正體中文) - + Brazilian Portuguese (português do Brasil) Brazilská Portugalština (português do Brasil) - - + + Polish (polska) + + + + + Thai (แบบไทย) + + + + + Japan Japonsko - + USA USA - + Europe Evropa - + Australia Austrálie - + China Čína - + Korea Korea - + Taiwan Taiwan - + Auto (%1) Auto select time zone - + - + Default (%1) Default time zone - + - + CET CET - + CST6CDT CST6CDT - + Cuba Cuba - + EET EET - + Egypt Egypt - + Eire Eire - + EST EST - + EST5EDT EST5EDT - + GB GB - + GB-Eire GB-Eire - + GMT GMT - + GMT+0 GMT+0 - + GMT-0 GMT-0 - + GMT0 GMT0 - + Greenwich Greenwich - + Hongkong Hongkong - + HST HST - + Iceland Island - + Iran Iran - + Israel Israel - + Jamaica Jamajka - + Kwajalein Kwajalein - + Libya Lybie - + MET MET - + MST MST - + MST7MDT MST7MDT - + Navajo Navajo - + NZ NZ - + NZ-CHAT NZ-CHAT - + Poland Polsko - + Portugal Portugalsko - + PRC PRC - + PST8PDT PST8PDT - + ROC ROC - + ROK ROK - + Singapore Singapur - + Turkey Turecko - + UCT UCT - + Universal Univerzální - + UTC UTC - + W-SU W-SU - + WET WET - + Zulu Zulu - + Mono Mono - + Stereo Stereo - + Surround Surround - + 4GB DRAM (Default) - + - + 6GB DRAM (Unsafe) - + - + 8GB DRAM - + - + 10GB DRAM (Unsafe) - + - + 12GB DRAM (Unsafe) - + - - Low (128) - - - - - Medium (256) - - - - - High (512) - - - - + Docked Zadokovaná - + Handheld Příruční - + + + Off + + + + Boost (1700MHz) - + - + Fast (2000MHz) - + - + Always ask (Default) Vždy se zeptat (Výchozí) - + Only if game specifies not to stop - + - + Never ask - + + + + + + Medium (256) + + + + + + High (512) + + + + + Very Small (16 MB) + + + + + Small (32 MB) + + + + + Normal (128 MB) + + + + + Large (256 MB) + + + + + Very Large (512 MB) + + + + + Very Low (4 MB) + + + + + Low (8 MB) + + + + + Normal (16 MB) + + + + + Medium (32 MB) + + + + + High (64 MB) + + + + + Very Low (32) + + + + + Low (64) + + + + + Normal (128) + + + + + Disabled + + + + + ExtendedDynamicState 1 + + + + + ExtendedDynamicState 2 + + + + + ExtendedDynamicState 3 + + + + + Tree View + + + + + Grid View + @@ -1918,12 +2232,12 @@ When a guest attempts to open the controller applet, it is immediately closed. Applets - + Applet mode preference - + @@ -1940,17 +2254,17 @@ When a guest attempts to open the controller applet, it is immediately closed. Configure Infrared Camera - + Select where the image of the emulated camera comes from. It may be a virtual camera or a real camera. - + Camera Image Source: - + @@ -1960,7 +2274,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Preview - + @@ -1970,7 +2284,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Click to preview - + @@ -1978,7 +2292,7 @@ When a guest attempts to open the controller applet, it is immediately closed.Vrátit výchozí nastavení - + Auto Automatické @@ -2008,7 +2322,7 @@ When a guest attempts to open the controller applet, it is immediately closed. CPU Backend - + @@ -2165,12 +2479,12 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all memory accesses to use Software MMU Emulation.</div> <div style="white-space: nowrap">Tato optimizace zrychluje přístup do paměti hře..</div> <div style="white-space: nowrap">Po zapnutí dovoluje hře zapisovat/číst přímo do paměti a dovolue užití hostových MMU's</div> <div style="white-space: nowrap">Vypnutím tohoto bude vše nuceno využít softwarové emulování MMU</div> -  @@ -2181,7 +2495,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up exclusive memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all exclusive memory accesses to use Software MMU Emulation.</div> @@ -2211,14 +2525,14 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up memory accesses by allowing invalid memory accesses to succeed.</div> - <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> + <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> - + Enable fallbacks for invalid memory accesses - + @@ -2249,30 +2563,30 @@ When a guest attempts to open the controller applet, it is immediately closed.Logování - - Open Log Location - Otevřít lokaci s logama - - - + Global Log Filter Centrální log filtr - + When checked, the max size of the log increases from 100 MB to 1 GB Po povolení se zvýší maximální velikost logu z 100 MB na 1 GB. - + Enable Extended Logging** Povolit rozšířené logování - + Show Log in Console Zobrazit log v konzoli + + + Open Log Location + Otevřít lokaci s logama + Homebrew @@ -2296,7 +2610,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Disable Loop safety checks - + @@ -2331,7 +2645,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Enable Renderdoc Hotkey - + @@ -2346,12 +2660,12 @@ When a guest attempts to open the controller applet, it is immediately closed. When checked, it disables the macro HLE functions. Enabling this makes games run slower - + Disable Macro HLE - + @@ -2376,12 +2690,12 @@ When a guest attempts to open the controller applet, it is immediately closed. <html><head/><body><p>When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.</p></body></html> - + Disable Buffer Reorder - + @@ -2391,12 +2705,12 @@ When a guest attempts to open the controller applet, it is immediately closed. 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. - + Perform Startup Vulkan Check - + @@ -2406,17 +2720,12 @@ When a guest attempts to open the controller applet, it is immediately closed. Enable All Controller Types - + - - Censor username in logs - - - - - **This will be reset automatically when eden closes. - + + Enable Auto-Stub + @@ -2425,8 +2734,8 @@ When a guest attempts to open the controller applet, it is immediately closed. - Enable CPU Debugging - + Use dev.keys + @@ -2439,39 +2748,74 @@ When a guest attempts to open the controller applet, it is immediately closed.Ladění - - Flush log output on each line - + + Battery Serial: + - - Enable FS Access Log - + + Bitmask for quick development toggles + - + + Set debug knobs (bitmask) + + + + + 16-bit debug knob set for quick development toggles + + + + + (bitmask) + + + + + Debug Knobs: + + + + + Unit Serial: + + + + Enable this to output the latest generated audio command list to the console. Only affects games using the audio renderer. - + - - Enable Auto-Stub - - - - + Dump Audio Commands To Console** - + - + + Flush log output on each line + + + + + Enable FS Access Log + + + + Enable Verbose Reporting Services** - + - - Web applet not compiled - + + Censor username in logs + + + + + **This will be reset automatically when Eden closes. + @@ -2513,14 +2857,10 @@ When a guest attempts to open the controller applet, it is immediately closed. ConfigureDialog - - yuzu Configuration - Nastavení yuzu. - - eden Configuration - + Eden Configuration + @@ -2528,88 +2868,88 @@ When a guest attempts to open the controller applet, it is immediately closed.Některá nastavení jsou dostupná pouze, pokud hra neběží. - + Applets - + - - + + Audio Zvuk - - + + CPU CPU - + Debug Ladění - + Filesystem Souborový systém - - + + General Obecné - - + + Graphics Grafika - + GraphicsAdvanced GrafickyPokročilé - - GraphicsExtensions - + + GraphicsExtra + - + Hotkeys Zkratky - - + + Controls Ovládání - + Profiles Profily - + Network Síť - - + + System Systém - + Game List Seznam her - + Web Web @@ -2639,9 +2979,10 @@ When a guest attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2651,107 +2992,183 @@ When a guest attempts to open the controller applet, it is immediately closed.SD karta - + + Save Data + + + + Gamecard Gamecard - + Path Cesta - + Inserted Vloženo - + Current Game Současná hra - + Patch Manager Manažer Oprav - + Dump Decompressed NSOs Vysypat dekomprimovaná NSOs - + Dump ExeFS Vysypat ExeFS - + Mod Load Root Mod Load Root - + Dump Root Dump Root - + Caching Ukládání do mezipaměti - + Cache Game List Metadata Mezipaměť seznamu her - - - - + Reset Metadata Cache Resetovat mezipaměť metadat - + Select Emulated NAND Directory... Vyberte emulovanou NAND složku... - + Select Emulated SD Directory... Vyberte emulovanou SD složku... - + + + Select Save Data Directory... + + + + Select Gamecard Path... Vyberte cestu ke Gamecard... - + Select Dump Directory... Vyberte složku pro vysypání... - + Select Mod Load Directory... Vyberte složku pro Mod Load... - - The metadata cache is already empty. - Mezipaměť metadat je již prázdná. + + Save Data Directory + - - The operation completed successfully. - Operace byla úspěšně dokončena. + + Choose an action for the save data directory: + - - The metadata cache couldn't be deleted. It might be in use or non-existent. - Mezipaměť metadat nemohla být odstraněna. Možná je používána nebo neexistuje. + + Set Custom Path + + + + + Reset to NAND + + + + + Save data exists in both the old and new locations. + +Old: %1 +New: %2 + +Would you like to migrate saves from the old location? +WARNING: This will overwrite any conflicting saves in the new location! + + + + + Would you like to migrate your save data to the new location? + +From: %1 +To: %2 + + + + + Migrate Save Data + + + + + Migrating save data... + + + + + Cancel + + + + + + Migration Failed + + + + + Failed to create destination directory. + + + + + Failed to migrate save data: +%1 + + + + + Migration Complete + + + + + Save data has been migrated successfully. + +Would you like to delete the old save data? + @@ -2769,28 +3186,54 @@ When a guest attempts to open the controller applet, it is immediately closed. - Linux - + External Content + - + + Add directories to scan for DLCs and Updates without installing to NAND + + + + + Add Directory + + + + + Remove Selected + + + + Reset All Settings Resetovat všechna nastavení - yuzu - yuzu + + Eden + - - eden - - - - + This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed? Toto vyresetuje všechna nastavení a odstraní konfigurace pro jednotlivé hry. Složky s hrami a profily zůstanou zachovány. Přejete si pokračovat? + + + Select External Content Directory... + + + + + Directory Already Added + + + + + This directory is already in the list. + + ConfigureGraphics @@ -2820,35 +3263,35 @@ When a guest attempts to open the controller applet, it is immediately closed.Barva Pozadí: - + % FSR sharpening percentage (e.g. 50%) % - + Off - + - + VSync Off - + - + Recommended - + - + On - + - + VSync On - + @@ -2864,7 +3307,7 @@ When a guest attempts to open the controller applet, it is immediately closed.Pokročilé - + Advanced Graphics Settings Pokročilé nastavení grafiky @@ -2874,24 +3317,38 @@ When a guest attempts to open the controller applet, it is immediately closed. Form - + - Extensions - + Extras + - - Vulkan Extension Settings - + + Hacks + - - While it's recommended to use state 3, some games may perform better on lower states. Setting to 0 (disabled) may also break games. -If your GPU is older (i.e. RX570/580 or older), it may not support these features. If this is the case, set the slider to 0 and uncheck all boxes. -These settings are experimental, and may cause black screens. If your games fail to boot or are stuck on a black screen, change these settings around. - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + + + + + % + Sample Shading percentage (e.g. 50%) + + + + + Extended Dynamic State is disabled on macOS due to MoltenVK compatibility issues that cause black screens. + @@ -2922,75 +3379,75 @@ These settings are experimental, and may cause black screens. If your games fail Vrátit výchozí nastavení - + Action Akce - + Hotkey Zkratka - + Controller Hotkey - + - - - + + + Conflicting Key Sequence Protichůdné klávesové sekvence - - + + The entered key sequence is already assigned to: %1 Vložená klávesová sekvence je již přiřazena k: %1 - + [waiting] [čekání] - + Invalid - + - + Invalid hotkey settings - + - + An error occurred. Please report this issue on github. Došlo k chybě. Nahlaste prosím tento problém na githubu. - + Restore Default Vrátit výchozí nastavení - + Clear Vyčistit - + Conflicting Button Sequence - + - + The default button sequence is already assigned to: %1 - + - + The default key sequence is already assigned to: %1 Výchozí klávesová sekvence je již přiřazena k: %1 @@ -3251,7 +3708,7 @@ These settings are experimental, and may cause black screens. If your games fail Emulated Devices - + @@ -3289,12 +3746,12 @@ These settings are experimental, and may cause black screens. If your games fail Ring Controller - + Infrared Camera - + @@ -3310,38 +3767,38 @@ These settings are experimental, and may cause black screens. If your games fail - Requires restarting eden - + Requires restarting Eden + Enable XInput 8 player support (disables web applet) - + Enable UDP controllers (not needed for motion) - + Controller navigation - + Enable direct JoyCon driver - + Enable direct Pro Controller driver [EXPERIMENTAL] - + Allows unlimited uses of the same Amiibo in games that would otherwise limit you to one use. - + @@ -3414,7 +3871,7 @@ These settings are experimental, and may cause black screens. If your games fail Use global input configuration - + @@ -3461,30 +3918,19 @@ These settings are experimental, and may cause black screens. If your games fail - + Left Stick Levá Páčka - - - - - - - Up - Nahoru - - - - - - - - - - Left - Doleva + + + + + + + Down + Dolů @@ -3498,14 +3944,25 @@ These settings are experimental, and may cause black screens. If your games fail Doprava - - - - - - - Down - Dolů + + + + + + + + Left + Doleva + + + + + + + + + Up + Nahoru @@ -3552,14 +4009,6 @@ These settings are experimental, and may cause black screens. If your games fail D-Pad D-Pad - - - - - - SL - SL - @@ -3569,59 +4018,55 @@ These settings are experimental, and may cause black screens. If your games fail SR - - - - L - L + + + + + SL + SL - + ZL ZL + + + + + L + L + Minus Minus - - - - Capture - Capture - - + Plus Plus - - - Home - Home + + + + ZR + ZR - - + + R R - - - - - ZR - ZR - Motion 1 @@ -3632,6 +4077,18 @@ These settings are experimental, and may cause black screens. If your games fail Motion 2 Pohyb 2 + + + + Capture + Capture + + + + + Home + Home + Face Buttons @@ -3644,10 +4101,10 @@ These settings are experimental, and may cause black screens. If your games fail X - - - Y - Y + + + B + B @@ -3656,21 +4113,21 @@ These settings are experimental, and may cause black screens. If your games fail A - - - B - B + + + Y + Y - + Right Stick Pravá páčka Mouse panning - + @@ -3678,242 +4135,242 @@ These settings are experimental, and may cause black screens. If your games fail Nastavení - - - - + + + + Clear Vyčistit - - - - - + + + + + [not set] [nenastaveno] - - - + + + Invert button - + - - + + Toggle button Přepnout tlačítko - + Turbo button - + - - + + Invert axis Převrátit osy - - - + + + Set threshold - + - - + + Choose a value between 0% and 100% - + - + Toggle axis - + - + Set gyro threshold - + - + Calibrate sensor - + - + Map Analog Stick Namapovat analogovou páčku - + After pressing OK, first move your joystick horizontally, and then vertically. To invert the axes, first move your joystick vertically, and then horizontally. Po stisknutí OK nejprve posuňte joystick horizontálně, poté vertikálně. Pro převrácení os nejprve posuňte joystick vertikálně, poté horizontálně. - + Center axis - + - - + + Deadzone: %1% Deadzone: %1% - - + + Modifier Range: %1% Rozsah modifikátoru: %1% - - + + Pro Controller Pro Controller - + Dual Joycons Dual Joycons - + Left Joycon Levý Joycon - + Right Joycon Pravý Joycon - + Handheld V rukou - + GameCube Controller Ovladač GameCube - + Poke Ball Plus - + - + NES Controller - + - + SNES Controller - + - + N64 Controller - + - + Sega Genesis - + - + Start / Pause Start / Pause - + Z Z - + Control Stick Control Stick - + C-Stick C-Stick - + Shake! Shake! - + [waiting] [čekání] - + New Profile Nový profil - + Enter a profile name: Zadejte název profilu: - - + + Create Input Profile Vytvořit profil vstupu - + The given profile name is not valid! Zadaný název profilu není platný! - + Failed to create the input profile "%1" Nepodařilo se vytvořit profil vstupu "%1" - + Delete Input Profile Odstranit profil vstupu - + Failed to delete the input profile "%1" Nepodařilo se odstranit profil vstupu "%1" - + Load Input Profile Načíst profil vstupu - + Failed to load the input profile "%1" Nepodařilo se načíst profil vstupu "%1" - + Save Input Profile Uložit profil vstupu - + Failed to save the input profile "%1" Nepodařilo se uložit profil vstupu "%1" @@ -3936,15 +4393,6 @@ Pro převrácení os nejprve posuňte joystick vertikálně, poté horizontáln Výchozí - - ConfigureLinuxTab - - - - Linux - - - ConfigureMotionTouch @@ -3970,14 +4418,14 @@ Pro převrácení os nejprve posuňte joystick vertikálně, poté horizontáln - + Configure Konfigurovat Touch from button profile: - + @@ -4000,111 +4448,93 @@ Pro převrácení os nejprve posuňte joystick vertikálně, poté horizontáln Port: - - Learn More - Dozvědět se více - - - - + + Test Test - + Add Server Přidat server - + Remove Server Odstranit server - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Dozvědět se více</span></a> - - - + %1:%2 %1:%2 - yuzu - yuzu + + + + + + + Eden + - - <a href='https://eden-emulator.github.io/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - - - - + Port number has invalid characters Číslo portu obsahuje neplatné znaky - - - - - - - eden - - - - + Port has to be in range 0 and 65353 Port musí být v rozsahu 0 až 65353 - + IP address is not valid IP adresa není platná - + This UDP server already exists UDP server již existuje - + Unable to add more than 8 servers Není možné přidat více než 8 serverů - + Testing Testování - + Configuring Nastavování - + Test Successful Test byl úspěšný - + Successfully received data from the server. Úspěšně jsme získali data ze serveru. - + Test Failed Test byl neúspěšný - + Could not receive valid data from the server.<br>Please verify that the server is set up correctly and the address and port are correct. Nedostali jsme platná data ze serveru.<br>Prosím zkontrolujte, že váš server je nastaven správně a že adresa a port jsou zadány správně. - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. Probíhá test UDP nebo konfigurace kalibrace.<br>Prosím vyčkejte na dokončení. @@ -4114,7 +4544,7 @@ Pro převrácení os nejprve posuňte joystick vertikálně, poté horizontáln Configure mouse panning - + @@ -4124,17 +4554,17 @@ Pro převrácení os nejprve posuňte joystick vertikálně, poté horizontáln Can be toggled via a hotkey. Default hotkey is Ctrl + F9 - + Sensitivity - + Horizontal - + @@ -4148,37 +4578,37 @@ Pro převrácení os nejprve posuňte joystick vertikálně, poté horizontáln Vertical - + Deadzone counterweight - + Counteracts a game's built-in deadzone - + Deadzone - + Stick decay - + Strength - + Minimum - + @@ -4189,22 +4619,22 @@ Pro převrácení os nejprve posuňte joystick vertikálně, poté horizontáln Mouse panning works better with a deadzone of 0% and a range of 100%. Current values are %1% and %2% respectively. - + Emulated mouse is enabled. This is incompatible with mouse panning. - + Emulated mouse is enabled - + Real mouse input and mouse panning are incompatible. Please disable the emulated mouse in input advanced settings to allow mouse panning. - + @@ -4230,9 +4660,9 @@ Current values are %1% and %2% respectively. Síťové Rozhraní - - None - Žádné + + Enable Airplane Mode + @@ -4288,49 +4718,54 @@ Current values are %1% and %2% respectively. Některá nastavení jsou dostupná pouze, pokud hra neběží. - + Add-Ons Doplňky - + System Systém - + CPU CPU - + Graphics Grafika - + Adv. Graphics Pokroč. grafika - - GPU Extensions - + + Ext. Graphics + - + Audio Zvuk - + Input Profiles Profily Vstupu - Linux - + Network + + + + + Applets + @@ -4351,15 +4786,110 @@ Current values are %1% and %2% respectively. Doplňky - + + Import Mod from ZIP + + + + + Import Mod from Folder + + + + Patch Name Název opravy - + Version Verze + + + Mod Install Succeeded + + + + + Successfully installed all mods. + + + + + Mod Install Failed + + + + + Failed to install the following mods: + %1 +Check the log for details. + + + + + Mod Folder + + + + + Zipped Mod Location + + + + + Zipped Archives (*.zip) + + + + + Invalid Selection + + + + + Only mods, cheats, and patches can be deleted. +To delete NAND-installed updates, right-click the game in the game list and click Remove -> Remove Installed Update. + + + + + You are about to delete the following installed mods: + + + + + + +Once deleted, these can NOT be recovered. Are you 100% sure you want to delete them? + + + + + Delete add-on(s)? + + + + + Successfully deleted + + + + + Successfully deleted all selected mods. + + + + + &Delete + + + + + &Open in File Manager + + ConfigureProfileManager @@ -4389,32 +4919,17 @@ Current values are %1% and %2% respectively. Přezdívka - - Set Image - Nastavit obrázek - - - + Add Přidat - - Rename - Přejmenovat - - - - Remove - Odebrat - - - + Profile management is available only when game is not running. Spravování profilů je k dispozici, pouze když neběží žádná hra. - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -4422,103 +4937,83 @@ Current values are %1% and %2% respectively. %2 - - Enter Username - Zadejte přezdívku - - - + Users Uživatelé - - Enter a username for the new user: - Zadejte přezdívku pro nového uživatele: - - - - Enter a new username: - Zadejte novou přezdívku: - - - - Select User Image - Vyberte obrázek uživatele - - - - JPEG Images (*.jpg *.jpeg) - Obrázek JPEG (*.jpg *.jpeg) - - - + Error deleting image Chyba při odstraňování obrázku - + Error occurred attempting to overwrite previous image at: %1. Chyba při přepisování předchozího obrázku na: %1 - + Error deleting file Chyba při odstraňování souboru - + Unable to delete existing file: %1. Nelze odstranit existující soubor: %1. - + Error creating user image directory Chyba při vytváření složky s obrázkem uživatele - + Unable to create directory %1 for storing user images. Nelze vytvořit složku %1 pro ukládání obrázků uživatele. - - Error copying user image - Chyba při kopírování obrázku uživatele + + Error saving user image + - - Unable to copy image from %1 to %2 - Nelze zkopírovat obrázek z %1 do %2 + + Unable to save image to file + - - Error resizing user image - + + &Edit + - - Unable to resize image - + + &Delete + + + + + Edit User + ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. Odstranit tohoto uživatele? Všechna jeho uložená data budou smazána. - + Confirm Delete Potvrdit smazání - + Name: %1 UUID: %2 - + @@ -4526,29 +5021,29 @@ UUID: %2 Configure Ring Controller - + 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. - + Virtual Ring Sensor Parameters - + Pull - + Push - + @@ -4558,29 +5053,29 @@ UUID: %2 Direct Joycon Driver - + Enable Ring Input - + - + Enable - + Ring Sensor Value - + - + Not connected - + @@ -4588,63 +5083,63 @@ UUID: %2 Vrátit výchozí nastavení - + Clear Vymazat - + [not set] [nenastaveno] - + Invert axis Převrátit osy - - + + Deadzone: %1% Deadzone: %1% - + Error enabling ring input - + - + Direct Joycon driver is not enabled - + - + Configuring Nastavování - + The current mapped device doesn't support the ring controller - - - - - The current mapped device doesn't have a ring attached - + + The current mapped device doesn't have a ring attached + + + + The current mapped device is not connected - + - + Unexpected driver result %1 - + - + [waiting] [čekání] @@ -4665,12 +5160,12 @@ UUID: %2 Core - + - + Warning: "%1" is not a valid language for region "%2" - + @@ -4678,22 +5173,22 @@ UUID: %2 TAS - + - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the eden website.</p></body></html> - + <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the user handbook.</p></body></html> + To check which hotkeys control the playback/recording, please refer to the Hotkey settings (Configure -> General -> Hotkeys). - + WARNING: This is an experimental feature.<br/>It will not play back scripts frame perfectly with the current, imperfect syncing method. - + @@ -4703,30 +5198,35 @@ UUID: %2 Enable TAS features - + Loop script - + Pause execution during loads - + - + + Show recording dialog + + + + Script Directory - + - + Path Cesta - + ... ... @@ -4734,14 +5234,14 @@ UUID: %2 ConfigureTasDialog - + TAS Configuration - + - + Select TAS Load Directory... - + @@ -4843,14 +5343,10 @@ Táhněte body pro změnu pozice nebo dvojitě klikněte na buňky tabulky pro z Configure Touchscreen Nastavení dotykového displeje - - Warning: The settings in this page affect the inner workings of yuzu's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - Varování: Nastavení na této stránce ovlivňuje vnitřní nastavení emulovaného displeje. Změna by mohla zapříčinit divné chování, jako dotykový displej částečně nebo úplně znefunkčnit. Táto stránka by měla být použita pouze pokud víš co děláš. - - Warning: The settings in this page affect the inner workings of eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - + Warning: The settings in this page affect the inner workings of Eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. + @@ -4881,64 +5377,43 @@ Táhněte body pro změnu pozice nebo dvojitě klikněte na buňky tabulky pro z ConfigureUI - - - + + None Žádné - - - Small (32x32) - Malý (32x32) - - Standard (64x64) - Standartní (64x64) - - - - Large (128x128) - Velký (128x128) - - - - Full Size (256x256) - Plná Velikost (256x256) - - - Small (24x24) Malý (24x24) - + Standard (48x48) Standartní (48x48) - + Large (72x72) Velký (72x72) - + Filename Název souboru - + Filetype Typ souboru - + Title ID ID Titulu - + Title Name Název Titulu @@ -5007,74 +5482,69 @@ Táhněte body pro změnu pozice nebo dvojitě klikněte na buňky tabulky pro z - Game Icon Size: - + Folder Icon Size: + - Folder Icon Size: - - - - Row 1 Text: Text řádku 1: - + Row 2 Text: Text řádku 2: - + Screenshots Snímek obrazovky - + Ask Where To Save Screenshots (Windows Only) Zeptat se, kam uložit snímek obrazovky (pouze Windows) - + Screenshots Path: Cesta snímků obrazovky: - + ... ... - + TextLabel - + - + Resolution: Rozlišení: - + Select Screenshots Path... Vyberte cestu ke snímkům obrazovky... - + <System> <System> - + English Angličtina - + Auto (%1 x %2, %3 x %4) Screenshot width value - + @@ -5169,170 +5639,178 @@ Táhněte body pro změnu pozice nebo dvojitě klikněte na buňky tabulky pro z Web Web - - yuzu Web Service - yuzu Web Service - - - By providing your username and token, you agree to allow yuzu to collect additional usage data, which may include user identifying information. - Poskytnutím jména a tokenu, souhlasíte s povolením yuzu získávat další data, která mohou obsahovat uživatelsky identifikovatelné informace. - - eden Web Service - + Eden Web Service + - - By providing your username and token, you agree to allow eden to collect additional usage data, which may include user identifying information. - - - - - Verify - Ověřit - - - - Sign up - Zaregistrovat - - - + Token: Token: - + Username: Jméno: - - What is my token? - Co je to ten token: + + Generate + - + Web Service configuration can only be changed when a public room isn't being hosted. - + - Telemetry - Telemetry - - - Share anonymous usage data with the yuzu team - Sdílet anonymní data o použití s teamem yuzu - - - Learn more - Zjistit více - - - Telemetry ID: - Telemetry ID: - - - Regenerate - Přegenerovat - - - + Discord Presence Podoba na Discordu - + Show Current Game in your Discord Status Zobrazovat Aktuální hru v Discordu - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Zjistit více</a> - - - - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Zaregistrovat</span></a> - - - - <a href='https://evilperson1337.notion.site/Hosting-a-Room-Inside-of-Eden-20457c2edaf680108abac6215a79acdb'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - - - - - Warning - - - + - Verification is currently nonfunctional, instead generate a random 48-character string with only lowercase a-z. - - - - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">Co je to ten token?</span></a> - - - Telemetry ID: 0x%1 - Telemetry ID: 0x%1 - - - Unspecified - Nespecifikovaný - - - Token not verified - Token není ověřen - - - Token was not verified. The change to your token has not been saved. - Token nebyl ověřen. Změna k vašemu tokenu nebyla uložena. - - - - Unverified, please click Verify before saving configuration + All Good Tooltip - Neověřeno, klikni prosím na Ověřit před uložením konfigurace + - Verifying... - Ověřuji... - - - Verified + + Must be between 4-20 characters Tooltip - Ověřeno + - Verification failed + + Must be 48 characters, and lowercase a-z Tooltip - Ověřování selhalo - - - Verification failed - Ověřování selhalo - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - Ověřování selhalo. Zkontrolujte, zda jste zadali token správně a že vaše připojení k internetu funguje v pořádku. + ControllerDialog - + Controller P1 Ovladač P1 - + &Controller P1 &Ovladač P1 + + DataDialog + + + Data Manager + + + + + Deleting ANY data is IRREVERSABLE! + + + + + Shaders + + + + + UserNAND + + + + + SysNAND + + + + + Mods + + + + + Saves + + + + + DataWidget + + + Form + + + + + Tooltip + + + + + Open with your system file manager + + + + + Delete all data in this directory. THIS IS 100% IRREVERSABLE! + + + + + Export all data in this directory. This may take a while! + + + + + Import data for this directory. This may take a while, and will delete ALL EXISTING DATA! + + + + + Calculating... + + + + + DepsDialog + + + Eden Dependencies + + + + + <html><head/><body><p><span style=" font-size:28pt;">Eden Dependencies</span></p></body></html> + + + + + <html><head/><body><p>The projects that make Eden possible</p></body></html> + + + + + Dependency + + + + + Version + + + DirectConnect @@ -5348,7 +5826,7 @@ Táhněte body pro změnu pozice nebo dvojitě klikněte na buňky tabulky pro z <html><head/><body><p>Server address of the host</p></body></html> - + @@ -5358,7 +5836,7 @@ Táhněte body pro změnu pozice nebo dvojitě klikněte na buňky tabulky pro z <html><head/><body><p>Port number the host is listening on</p></body></html> - + @@ -5373,7 +5851,7 @@ Táhněte body pro změnu pozice nebo dvojitě klikněte na buňky tabulky pro z Connect - + @@ -5386,7 +5864,7 @@ Táhněte body pro změnu pozice nebo dvojitě klikněte na buňky tabulky pro z Connect - + @@ -5394,1490 +5872,152 @@ Táhněte body pro změnu pozice nebo dvojitě klikněte na buňky tabulky pro z Username is not valid. Must be 4 to 20 alphanumeric characters. - Přezdívka není validní. Musí obsahovat 4 až 20 alfanumerických znaků. + Room name is not valid. Must be 4 to 20 alphanumeric characters. - Název místnosti není validní. Musí obsahovat 4 až 20 alfanumerických znaků. + Username is already in use or not valid. Please choose another. - + IP is not a valid IPv4 address. - + Port must be a number between 0 to 65535. - Port musí být číslo mezi 0 a 65535. + You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - + Unable to find an internet connection. Check your internet settings. - + Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - + Unable to connect to the room because it is already full. - + - Creating a room failed. Please retry. Restarting eden might be necessary. - + Creating a room failed. Please retry. Restarting Eden might be necessary. + The host of the room has banned you. Speak with the host to unban you or try a different room. - + - Version mismatch! Please update to the latest version of eden. If the problem persists, contact the room host and ask them to update the server. - + Version mismatch! Please update to the latest version of Eden. If the problem persists, contact the room host and ask them to update the server. + Incorrect password. - + An unknown error occurred. If this error continues to occur, please open an issue - + Connection to room lost. Try to reconnect. - + You have been kicked by the room host. - + IP address is already in use. Please choose another. - + You do not have enough permission to perform this action. - + The user you are trying to kick/ban could not be found. They may have left the room. - + No valid network interface is selected. Please go to Configure -> System -> Network and make a selection. - Není vybráno žádné validní síťové rozhraní. -Jděte prosím do Nastavení -> Systém -> Síť a některé vyberte. + Error - - - - - GMainWindow - - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Anonymous data is collected</a> to help improve yuzu. <br/><br/>Would you like to share your usage data with us? - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Anonymní data jsou sbírána</a> pro vylepšení yuzu. <br/><br/>Chcete s námi sdílet anonymní data? - - - Telemetry - Telemetry - - - - Broken Vulkan Installation Detected - - - - - Running a game - TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping - - - - - Loading Web Applet... - Načítání Web Appletu... - - - - - Disable Web Applet - Zakázat Web Applet - - - - 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.) - - - - - The amount of shaders currently being built - Počet aktuálně sestavovaných shaderů - - - - The current selected resolution scaling multiplier. - - - - - Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. - Aktuální emulační rychlost. Hodnoty vyšší než 100% indikují, že emulace běží rychleji nebo pomaleji než na Switchi. - - - - How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. - Kolik snímků za sekundu aktuálně hra zobrazuje. Tohle závisí na hře od hry a scény od scény. - - - - 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. - Č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. - - - - Unmute - Vypnout ztlumení - - - - Mute - Ztlumit - - - - Reset Volume - - - - - &Clear Recent Files - &Vymazat poslední soubory - - - - &Continue - &Pokračovat - - - - &Pause - &Pauza - - - - Warning Outdated Game Format - Varování Zastaralý Formát Hry - - - 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.<br><br>For an explanation of the various Switch formats yuzu supports, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - 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ů.<br><br>Pro vysvětlení všech možných podporovaných typů, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>zkoukni naší wiki</a>. Tato zpráva se nebude znova zobrazovat. - - - - - Error while loading ROM! - Chyba při načítání ROM! - - - - The ROM format is not supported. - Tento formát ROM není podporován. - - - - An error occurred initializing the video core. - Nastala chyba při inicializaci jádra videa. - - - - Error while loading ROM! %1 - %1 signifies a numeric error code. - Chyba při načítání ROM! %1 - - - %1<br>Please follow <a href='https://yuzu-emu.org/help/quickstart/'>the yuzu quickstart guide</a> to redump your files.<br>You can refer to the yuzu wiki</a> or the yuzu Discord</a> for help. - %1 signifies an error string. - %1<br>Pro extrakci souborů postupujte podle <a href='https://yuzu-emu.org/help/quickstart/'>rychlého průvodce yuzu</a>. Nápovědu naleznete na <br>wiki</a> nebo na Discordu</a>. - - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://eden-emulator.github.io/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - - - - - Game Updates Warning - - - - - The game you are trying to launch is known to have performance or booting issues when updates are applied. Please try increasing the memory layout to 6GB or 8GB if any issues occur.<br><br>Press "OK" to continue launching, or "Cancel" to cancel the launch. - - - - - Don't show again for this game - - - - - 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.<br><br>For an explanation of the various Switch formats eden supports, <a href='https://eden-emulator.github.io/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - - - - - eden 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: <a href='https://eden-emulator.github.io/help/reference/log-files/'>How to Upload the Log File</a>. - - - - - %1<br>Please redump your files or ask on Discord for help. - %1 signifies an error string. - - - - - An unknown error occurred. Please see the log for more details. - Nastala chyba. Koukni do logu. - - - - (64-bit) - (64-bit) - - - - (32-bit) - (32-bit) - - - - %1 %2 - %1 is the title name. %2 indicates if the title is 64-bit or 32-bit - %1 %2 - - - - Closing software... - Ukončování softwaru... - - - - Save Data - Uložit data - - - - Mod Data - Módovat Data - - - - Error Opening %1 Folder - Chyba otevírání složky %1 - - - - - Folder does not exist! - Složka neexistuje! - - - - Error Opening Transferable Shader Cache - Chyba při otevírání přenositelné mezipaměti shaderů - - - - Failed to create the shader cache directory for this title. - - - - - Error Removing Contents - - - - - Error Removing Update - - - - - Error Removing DLC - - - - - Remove Installed Game Contents? - - - - - Remove Installed Game Update? - - - - - Remove Installed Game DLC? - - - - - Remove Entry - Odebrat položku - - - - - - - - - Successfully Removed - Úspěšně odebráno - - - - Successfully removed the installed base game. - Úspěšně odebrán nainstalovaný základ hry. - - - - The base game is not installed in the NAND and cannot be removed. - Základ hry není nainstalovaný na NAND a nemůže být odstraněn. - - - - Successfully removed the installed update. - Úspěšně odebrána nainstalovaná aktualizace. - - - - There is no update installed for this title. - Není nainstalovaná žádná aktualizace pro tento titul. - - - - There are no DLC installed for this title. - Není nainstalované žádné DLC pro tento titul. - - - - Successfully removed %1 installed DLC. - Úspěšně odstraněno %1 nainstalovaných DLC. - - - - Delete OpenGL Transferable Shader Cache? - - - - - Delete Vulkan Transferable Shader Cache? - - - - - Delete All Transferable Shader Caches? - - - - - Remove Custom Game Configuration? - Odstranit vlastní konfiguraci hry? - - - - Remove Cache Storage? - - - - - Remove File - Odstranit soubor - - - - Remove Play Time Data - Odstranit data o době hraní - - - - Reset play time? - Resetovat dobu hraní? - - - - - Error Removing Transferable Shader Cache - Chyba při odstraňování přenositelné mezipaměti shaderů - - - - - A shader cache for this title does not exist. - Mezipaměť shaderů pro tento titul neexistuje. - - - - Successfully removed the transferable shader cache. - Přenositelná mezipaměť shaderů úspěšně odstraněna - - - - Failed to remove the transferable shader cache. - Nepodařilo se odstranit přenositelnou mezipaměť shaderů - - - - Error Removing Vulkan Driver Pipeline Cache - - - - - Failed to remove the driver pipeline cache. - - - - - - Error Removing Transferable Shader Caches - - - - - Successfully removed the transferable shader caches. - - - - - Failed to remove the transferable shader cache directory. - - - - - - Error Removing Custom Configuration - Chyba při odstraňování vlastní konfigurace hry - - - - A custom configuration for this title does not exist. - Vlastní konfigurace hry pro tento titul neexistuje. - - - - Successfully removed the custom game configuration. - Úspěšně odstraněna vlastní konfigurace hry. - - - - Failed to remove the custom game configuration. - Nepodařilo se odstranit vlastní konfiguraci hry. - - - - - RomFS Extraction Failed! - Extrakce RomFS se nepovedla! - - - - There was an error copying the RomFS files or the user cancelled the operation. - Nastala chyba při kopírování RomFS souborů, nebo uživatel operaci zrušil. - - - - Full - Plný - - - - Skeleton - Kostra - - - - Select RomFS Dump Mode - Vyber RomFS Dump Mode - - - - Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. - Vyber jak by si chtěl RomFS vypsat.<br>Plné zkopíruje úplně všechno, ale<br>kostra zkopíruje jen strukturu složky. - - - - There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root - - - - - Extracting RomFS... - Extrahuji RomFS... - - - - - - - - Cancel - Zrušit - - - - RomFS Extraction Succeeded! - Extrakce RomFS se povedla! - - - - - - The operation completed successfully. - Operace byla dokončena úspěšně. - - - - Integrity verification couldn't be performed! - - - - - File contents were not checked for validity. - - - - - - Verifying integrity... - Ověřování integrity... - - - - - Integrity verification succeeded! - - - - - - Integrity verification failed! - - - - - File contents may be corrupt. - - - - - - - - Create Shortcut - Vytvořit Zástupce - - - - Do you want to launch the game in fullscreen? - - - - - Successfully created a shortcut to %1 - Úspěšně vytvořen zástupce do %1 - - - - This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - - - - - Failed to create a shortcut to %1 - Nepodařilo se vytvořit zástupce do %1 - - - - Create Icon - Vytvořit Ikonu - - - - Cannot create icon file. Path "%1" does not exist and cannot be created. - - - - - Error Opening %1 - Chyba při otevírání %1 - - - - Select Directory - Vybraná Složka - - - - Properties - Vlastnosti - - - - The game properties could not be loaded. - Herní vlastnosti nemohly být načteny. - - - - Switch Executable (%1);;All Files (*.*) - %1 is an identifier for the Switch executable file extensions. - Switch Executable (%1);;Všechny soubory (*.*) - - - - Load File - Načíst soubor - - - - Open Extracted ROM Directory - Otevřít složku s extrahovanou ROM - - - - Invalid Directory Selected - Vybraná složka je neplatná - - - - The directory you have selected does not contain a 'main' file. - Složka kterou jste vybrali neobsahuje soubor "main" - - - - Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - Instalovatelný soubor pro Switch (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - - - - Install Files - Instalovat Soubory - - - - %n file(s) remaining - - - - - - - - - Installing file "%1"... - Instalování souboru "%1"... - - - - - Install Results - Výsledek instalace - - - - To avoid possible conflicts, we discourage users from installing base games to the NAND. -Please, only use this feature to install updates and DLC. - 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. - - - - %n file(s) were newly installed - - - - - - - - - - %n file(s) were overwritten - - - - - - - - - - %n file(s) failed to install - - - - - - - - - - System Application - Systémová Aplikace - - - - System Archive - Systémový archív - - - - System Application Update - Systémový Update Aplikace - - - - Firmware Package (Type A) - Firmware-ový baliček (Typu A) - - - - Firmware Package (Type B) - Firmware-ový baliček (Typu B) - - - - Game - Hra - - - - Game Update - Update Hry - - - - Game DLC - Herní DLC - - - - Delta Title - Delta Title - - - - Select NCA Install Type... - Vyberte typ instalace NCA... - - - - Please select the type of title you would like to install this NCA as: -(In most instances, the default 'Game' is fine.) - Vyberte typ title-u, který chcete nainstalovat tenhle NCA jako: -(Většinou základní "game" stačí.) - - - - Failed to Install - Chyba v instalaci - - - - The title type you selected for the NCA is invalid. - Tento typ pro tento NCA není platný. - - - - File not found - Soubor nenalezen - - - - File "%1" not found - Soubor "%1" nenalezen - - - - OK - OK - - - - - Hardware requirements not met - - - - - - Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled. - - - - - Missing yuzu Account - Chybí účet yuzu - - - - In order to submit a game compatibility test case, you must link your eden account.<br><br/>To link your eden account, go to Emulation &gt; Configuration &gt; Web. - - - - - Install decryption keys and restart eden before attempting to install firmware. - - - - - Firmware installation cancelled, firmware may be in bad state, restart eden or re-install firmware. - - - - - Encryption keys are missing. - - - - - Are you sure you want to close eden? - - - - - - - eden - - - - - The currently running application has requested eden to not exit. - -Would you like to bypass this and exit anyway? - - - - In order to submit a game compatibility test case, you must link your yuzu account.<br><br/>To link your yuzu account, go to Emulation &gt; Configuration &gt; Web. - Pro přidání recenze kompatibility je třeba mít účet yuzu<br><br/>Pro nalinkování yuzu účtu jdi do Emulace &gt; Konfigurace &gt; Web. - - - - Error opening URL - Chyba při otevírání URL - - - - Unable to open the URL "%1". - Nelze otevřít URL "%1". - - - - TAS Recording - - - - - Overwrite file of player 1? - - - - - Invalid config detected - Zjištěno neplatné nastavení - - - - Handheld controller can't be used on docked mode. Pro controller will be selected. - Ruční ovladač nelze používat v dokovacím režimu. Bude vybrán ovladač Pro Controller. - - - - - Amiibo - - - - - - The current amiibo has been removed - - - - - Error - - - - - - The current game is not looking for amiibos - - - - - Amiibo File (%1);; All Files (*.*) - Soubor Amiibo (%1);; Všechny Soubory (*.*) - - - - Load Amiibo - Načíst Amiibo - - - - Error loading Amiibo data - Chyba načítání Amiiba - - - - The selected file is not a valid amiibo - - - - - The selected file is already on use - - - - - An unknown error occurred - - - - - - Verification failed for the following files: - -%1 - - - - - Keys not installed - - - - - Select Dumped Firmware Source Location - - - - - Installing Firmware... - - - - - - - - Firmware install failed - - - - - Unable to locate potential firmware NCA files - - - - - Failed to delete one or more firmware file. - - - - - One or more firmware files failed to copy into NAND. - - - - - Firmware integrity verification failed! - - - - - Select Dumped Keys Location - - - - - - - Decryption Keys install failed - - - - - prod.keys is a required decryption key file. - - - - - One or more keys failed to copy. - - - - - Decryption Keys install succeeded - - - - - Decryption Keys were successfully installed - - - - - Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. - - - - - - - - - - - No firmware available - Není k dispozici žádný firmware - - - - Please install the firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Controller Menu. - - - - - Controller Applet - Applet ovladače - - - - Controller Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Home Menu. - - - - - - Home Menu Applet - - - - - - Home Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use Starter. - - - - - Starter Applet - - - - - Starter is not available. Please reinstall firmware. - - - - - Please install firmware to use the home menu. - - - - - Capture Screenshot - Pořídit Snímek Obrazovky - - - - PNG Image (*.png) - PNG Image (*.png) - - - - Update Available - - - - - Update %1 for Eden is available. -Would you like to download it? - - - - - TAS state: Running %1/%2 - - - - - TAS state: Recording %1 - - - - - TAS state: Idle %1/%2 - - - - - TAS State: Invalid - - - - - &Stop Running - - - - - &Start - &Start - - - - Stop R&ecording - - - - - R&ecord - - - - - Building: %n shader(s) - - Budování: %n shader - Budování: %n shadery - Budování: %n shaderů - - - - - Scale: %1x - %1 is the resolution scaling factor - Měřítko: %1x - - - - Speed: %1% / %2% - Rychlost: %1% / %2% - - - - Speed: %1% - Rychlost: %1% - - - - Game: %1 FPS - Hra: %1 FPS - - - - Frame: %1 ms - Frame: %1 ms - - - - %1 %2 - %1 %2 - - - - - FSR - - - - - NO AA - ŽÁDNÝ AA - - - - VOLUME: MUTE - HLASITOST: ZTLUMENO - - - - VOLUME: %1% - Volume percentage (e.g. 50%) - HLASITOST: %1% - - - - Derivation Components Missing - Chybé odvozené komponenty - - - - Select RomFS Dump Target - Vyberte Cíl vypsaní RomFS - - - - Please select which RomFS you would like to dump. - Vyberte, kterou RomFS chcete vypsat. - - - Are you sure you want to close yuzu? - Jste si jist, že chcete zavřít yuzu? - - - yuzu - yuzu - - - - Are you sure you want to stop the emulation? Any unsaved progress will be lost. - Jste si jist, že chcete ukončit emulaci? Jakýkolic neuložený postup bude ztracen. - - - The currently running application has requested yuzu to not exit. - -Would you like to bypass this and exit anyway? - Aktuálně běžící aplikace zakázala ukončení emulace. - -Opravdu si přejete ukončit tuto aplikaci? - - - - None - Žádné - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Nearest - - - - - Bilinear - Bilineární - - - - Bicubic - - - - - Gaussian - - - - - ScaleForce - - - - - Area - - - - - Docked - Zadokovaná - - - - Handheld - Příruční - - - - Normal - Normální - - - - High - Vysoká - - - - Extreme - Extrémní - - - - Vulkan - Vulkan - - - - OpenGL - - - - - Null - - - - - GLSL - - - - - GLASM - - - - - SPIRV - + GRenderWindow - - + + OpenGL not available! OpenGL není k dispozici! - + OpenGL shared contexts are not supported. - + - yuzu has not been compiled with OpenGL support. - yuzu nebylo sestaveno s OpenGL podporou. + + Eden has not been compiled with OpenGL support. + - - eden has not been compiled with OpenGL support. - - - - - + + Error while initializing OpenGL! Chyba při inicializaci OpenGL! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. Vaše grafická karta pravděpodobně nepodporuje OpenGL nebo nejsou nainstalovány nejnovější ovladače. - + Error while initializing OpenGL 4.6! Chyba při inicializaci OpenGL 4.6! - + Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 Vaše grafická karta pravděpodobně nepodporuje OpenGL 4.6 nebo nejsou nainstalovány nejnovější ovladače.<br><br>GL Renderer:<br>%1 - + Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2 Vaše grafická karta pravděpodobně nepodporuje jedno nebo více rozšíření OpenGL. Ujistěte se prosím, že jsou nainstalovány nejnovější ovladače.<br><br>GL Renderer:<br>%1<br><br>Nepodporované rozšíření:<br>%2 @@ -6885,192 +6025,208 @@ Opravdu si přejete ukončit tuto aplikaci? GameList - + + &Add New Game Directory + + + + Favorite Oblíbené - + Start Game Spustit hru - + Start Game without Custom Configuration Spustit hru bez vlastní konfigurace - + Open Save Data Location Otevřít Lokaci Savů - + Open Mod Data Location Otevřít Lokaci Modifikací - + Open Transferable Pipeline Cache - + - + + Link to Ryujinx + + + + Remove Odstranit - + Remove Installed Update Odstranit nainstalovanou aktualizaci - + Remove All Installed DLC Odstranit všechny nainstalované DLC - + Remove Custom Configuration Odstranit vlastní konfiguraci hry - - Remove Play Time Data - Odstranit data o době hraní - - - + Remove Cache Storage - + - + Remove OpenGL Pipeline Cache - + - + Remove Vulkan Pipeline Cache - + - + Remove All Pipeline Caches - + - + Remove All Installed Contents Odstranit všechen nainstalovaný obsah - - + + Manage Play Time + + + + + Edit Play Time Data + + + + + Remove Play Time Data + Odstranit data o době hraní + + + + Dump RomFS Vypsat RomFS - + Dump RomFS to SDMC - + - + Verify Integrity Ověřit Integritu - + Copy Title ID to Clipboard Zkopírovat ID Titulu do schránky - + Navigate to GameDB entry Navigovat do GameDB - + Create Shortcut Vytvořit Zástupce - + Add to Desktop - + - + Add to Applications Menu - + - + Configure Game - + - Properties - Vlastnosti - - - + Scan Subfolders Prohledat podsložky - + Remove Game Directory Odstranit složku se hrou - + ▲ Move Up ▲ Posunout nahoru - + ▼ Move Down ▼ Posunout dolů - + Open Directory Location Otevřít umístění složky - + Clear Vymazat - + Name Název - + Compatibility Kompatibilita - + Add-ons Modifkace - + File type Typ-Souboru - + Size Velikost - + Play time Doba hraní @@ -7078,62 +6234,62 @@ Opravdu si přejete ukončit tuto aplikaci? GameListItemCompat - + Ingame - + - + Game starts, but crashes or major glitches prevent it from being completed. - + - + Perfect Perfektní - + Game can be played without issues. Hra může být hrána bez problémů. - + Playable Hratelné - + Game functions with minor graphical or audio glitches and is playable from start to finish. Hra funguje s drobnými grafickými nebo zvukovými chybami a je hratelná od začátku do konce. - + Intro/Menu Intro/Menu - + Game loads, but is unable to progress past the Start Screen. - + - + Won't Boot Nebootuje - + The game crashes when attempting to startup. Hra crashuje při startu. - + Not Tested Netestováno - + The game has not yet been tested. Hra ještě nebyla testována @@ -7141,7 +6297,7 @@ Opravdu si přejete ukončit tuto aplikaci? GameListPlaceholder - + Double-click to add a new folder to the game list Dvojitým kliknutím přidáte novou složku do seznamu her @@ -7149,21 +6305,17 @@ Opravdu si přejete ukončit tuto aplikaci? GameListSearchField - + %1 of %n result(s) - - - - - + - + Filter: Filtr: - + Enter pattern to filter Zadejte filtr @@ -7218,7 +6370,7 @@ Opravdu si přejete ukončit tuto aplikaci? Load Previous Ban List - + @@ -7228,238 +6380,252 @@ Opravdu si přejete ukončit tuto aplikaci? Unlisted - + Host Room - + HostRoomWindow - + Error - + - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. + + Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid Eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. Debug Message: - + Hotkeys - + Audio Mute/Unmute - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Main Window - + - + Audio Volume Down - + - + Audio Volume Up - + - + Capture Screenshot Pořídit Snímek Obrazovky - + Change Adapting Filter - + - + Change Docked Mode - + - - Change GPU Accuracy - Změnit Přesnost GPU + + Change GPU Mode + - + Configure - + - + Configure Current Game - + - + Continue/Pause Emulation - + - + Exit Fullscreen Opustit Režim Celé Obrazovky - Exit yuzu - Ukončit yuzu + + Exit Eden + - - Exit eden - - - - + Fullscreen Celá Obrazovka - + Load File Načíst soubor - + Load/Remove Amiibo - + - - Multiplayer Browse Public Game Lobby - + + Browse Public Game Lobby + - - Multiplayer Create Room - + + Create Room + - - Multiplayer Direct Connect to Room - + + Direct Connect to Room + - - Multiplayer Leave Room - + + Leave Room + - - Multiplayer Show Current Room - + + Show Current Room + - + Restart Emulation - + - + Stop Emulation - + - + TAS Record - + - + TAS Reset - + - + TAS Start/Stop - + - + Toggle Filter Bar - + - + Toggle Framerate Limit - + - + + Toggle Turbo Speed + + + + + Toggle Slow Speed + + + + Toggle Mouse Panning - + - + Toggle Renderdoc Capture - + - + Toggle Status Bar - + + + + + Toggle Performance Overlay + InstallDialog - + Please confirm these are the files you wish to install. Potvrďte, že se jedná o soubory, které chcete nainstalovat. - + Installing an Update or DLC will overwrite the previously installed one. Instalací aktualizace nebo DLC se přepíše dříve nainstalovaná aktualizace nebo DLC. - + Install Nainstalovat - + Install Files to NAND Instalovat soubory na NAND @@ -7467,10 +6633,10 @@ Debug Message: LimitableInputDialog - - The text can't contain any of the following characters: + + The text can't contain any of the following characters: %1 - + @@ -7491,22 +6657,22 @@ Debug Message: Odhadovaný čas 5m 4s - + Loading... Načítání... - + Loading Shaders %1 / %2 Načítání shaderů %1 / %2 - + Launching... Spouštění... - + Estimated Time %1 Odhadovaný čas %1 @@ -7527,7 +6693,7 @@ Debug Message: Filters - + @@ -7537,60 +6703,60 @@ Debug Message: Games I Own - + Hide Empty Rooms - + Hide Full Rooms - + Refresh Lobby - + - + Password Required to Join - + - + Password: - + - + Players Hráči - + Room Name Název Místnosti - + Preferred Game Preferovaná hra - + Host - + - + Refreshing - + - + Refresh List Obnovit Seznam @@ -7613,362 +6779,1424 @@ Debug Message: &Nedávné soubory - + + Open &Eden Folders + + + + &Emulation &Emulace - + &View &Pohled - + &Reset Window Size &Resetovat Velikost Okna - + &Debugging &Ladění - + + &Game List Mode + + + + + Game &Icon Size + + + + Reset Window Size to &720p Nastavit velikost okna na &720p - + Reset Window Size to 720p Nastavit velikost okna na 720p - + Reset Window Size to &900p Resetovat Velikost Okna na &900p - + Reset Window Size to 900p Resetovat Velikost Okna na 900p - + Reset Window Size to &1080p Nastavit velikost okna na &1080p - + Reset Window Size to 1080p Nastavit velikost okna na 1080p - + &Multiplayer - + - + &Tools &Nástroje - - &Amiibo - + + Am&iibo + - + + Launch &Applet + + + + &TAS - + - + &Create Home Menu Shortcut - + - + + Install &Firmware + + + + &Help &Pomoc - + &Install Files to NAND... &Instalovat soubory na NAND... - + L&oad File... Načís&t soubor... - + Load &Folder... Načíst sl&ožku... - + E&xit E&xit - + + &Pause &Pauza - + &Stop &Stop - + &Verify Installed Contents &Ověřit Nainstalovaný Obsah - - &About eden - + + &About Eden + - - Open &eden Folder - - - - - Open Home Menu - - - - - &Discord - - - - - Open &Setup - - - - - &Desktop - - - - - &Application Menu - - - - &About yuzu - O &aplikaci yuzu - - - + Single &Window Mode &Režim jednoho okna - + Con&figure... &Nastavení - + Ctrl+, - + - - Display D&ock Widget Headers - Zobrazit záhlaví widgetů d&oku + + Enable Overlay Display Applet + - + Show &Filter Bar Zobrazit &filtrovací panel - + Show &Status Bar Zobrazit &stavový řádek - + Show Status Bar Zobrazit Staus Bar - + &Browse Public Game Lobby - + - + &Create Room &Vytvořit Místnost - + &Leave Room &Opustit Místnost - + &Direct Connect to Room - + - + &Show Current Room - + - + F&ullscreen &Celá obrazovka - + &Restart &Restartovat - + Load/Remove &Amiibo... - + - + &Report Compatibility &Nahlásit kompatibilitu - + Open &Mods Page Otevřít stránku s &modifikacemi - + Open &Quickstart Guide Otevřít &rychlého průvodce - + &FAQ Často &kladené otázky - Open &yuzu Folder - Otevřít složku s &yuzu - - - + &Capture Screenshot Za&chytit snímek obrazovky - - Open &Album - Otevřít &Album + + &Album + - + &Set Nickname and Owner &Nastavit Přezdívku a Vlastníka - + &Delete Game Data &Odstranit Herní Data - + &Restore Amiibo &Obnovit Amiibo - + &Format Amiibo - + - - Open &Mii Editor - Otevřít &Mii Editor + + &Mii Editor + - + &Configure TAS... - + - + Configure C&urrent Game... Nastavení současné hry - + + &Start &Start - + &Reset &Resetovat - + + R&ecord - + - + Open &Controller Menu Otevřít &Menu Ovladače - - Install Firmware - + + Install Decryption &Keys + - - Install Decryption Keys - + + &Home Menu + - - - MicroProfileDialog - - &MicroProfile - &MicroProfile + + &Desktop + + + + + &Application Menu + + + + + &Root Data Folder + + + + + &NAND Folder + + + + + &SDMC Folder + + + + + &Mod Folder + + + + + &Log Folder + + + + + From Folder + + + + + From ZIP + + + + + &Eden Dependencies + + + + + &Data Manager + + + + + &Tree View + + + + + &Grid View + + + + + Game Icon Size + + + + + + + None + + + + + Show Game &Name + + + + + Show &Performance Overlay + + + + + Small (32x32) + + + + + Standard (64x64) + + + + + Large (128x128) + + + + + Full Size (256x256) + + + + + Broken Vulkan Installation Detected + + + + + Vulkan initialization failed during boot. + + + + + Running a game + TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping + + + + + Loading Web Applet... + + + + + + Disable Web Applet + + + + + 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.) + + + + + The amount of shaders currently being built + + + + + The current selected resolution scaling multiplier. + + + + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. + + + + + How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. + + + + + 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. + + + + + Unmute + + + + + Mute + + + + + Reset Volume + + + + + &Clear Recent Files + + + + + &Continue + + + + + Warning: Outdated Game Format + + + + + 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.<br>For an explanation of the various Switch formats Eden supports, out our user handbook. This message will not be shown again. + + + + + + Error while loading ROM! + + + + + The ROM format is not supported. + + + + + An error occurred initializing the video core. + + + + + Eden 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: <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>How to Upload the Log File</a>. + + + + + Error while loading ROM! %1 + %1 signifies a numeric error code. + + + + + %1<br>Please redump your files or ask on Discord/Stoat for help. + %1 signifies an error string. + + + + + An unknown error occurred. Please see the log for more details. + + + + + (64-bit) + + + + + (32-bit) + + + + + %1 %2 + %1 is the title name. %2 indicates if the title is 64-bit or 32-bit + + + + + Closing software... + + + + + Save Data + + + + + Mod Data + + + + + Error Opening %1 Folder + + + + + + Folder does not exist! + + + + + Remove Installed Game Contents? + + + + + Remove Installed Game Update? + + + + + Remove Installed Game DLC? + + + + + Remove Entry + + + + + Delete OpenGL Transferable Shader Cache? + + + + + Delete Vulkan Transferable Shader Cache? + + + + + Delete All Transferable Shader Caches? + + + + + Remove Custom Game Configuration? + + + + + Remove Cache Storage? + + + + + Remove File + + + + + Remove Play Time Data + + + + + Reset play time? + + + + + + RomFS Extraction Failed! + + + + + There was an error copying the RomFS files or the user cancelled the operation. + + + + + Full + + + + + Skeleton + + + + + Select RomFS Dump Mode + + + + + Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. + + + + + There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root + + + + + Extracting RomFS... + + + + + + Cancel + + + + + RomFS Extraction Succeeded! + + + + + The operation completed successfully. + + + + + Error Opening %1 + + + + + Select Directory + + + + + Properties + + + + + The game properties could not be loaded. + + + + + Switch Executable (%1);;All Files (*.*) + %1 is an identifier for the Switch executable file extensions. + + + + + Load File + + + + + Open Extracted ROM Directory + + + + + Invalid Directory Selected + + + + + The directory you have selected does not contain a 'main' file. + + + + + Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) + + + + + Install Files + + + + + %n file(s) remaining + + + + + Installing file "%1"... + + + + + + Install Results + + + + + To avoid possible conflicts, we discourage users from installing base games to the NAND. +Please, only use this feature to install updates and DLC. + + + + + %n file(s) were newly installed + + + + + + %n file(s) were overwritten + + + + + + %n file(s) failed to install + + + + + + System Application + + + + + System Archive + + + + + System Application Update + + + + + Firmware Package (Type A) + + + + + Firmware Package (Type B) + + + + + Game + + + + + Game Update + + + + + Game DLC + + + + + Delta Title + + + + + Select NCA Install Type... + + + + + Please select the type of title you would like to install this NCA as: +(In most instances, the default 'Game' is fine.) + + + + + Failed to Install + + + + + The title type you selected for the NCA is invalid. + + + + + File not found + + + + + File "%1" not found + + + + + OK + + + + + Function Disabled + + + + + Compatibility list reporting is currently disabled. Check back later! + + + + + Error opening URL + + + + + Unable to open the URL "%1". + + + + + TAS Recording + + + + + Overwrite file of player 1? + + + + + Invalid config detected + + + + + Handheld controller can't be used on docked mode. Pro controller will be selected. + + + + + + Amiibo + + + + + + The current amiibo has been removed + + + + + Error + + + + + + The current game is not looking for amiibos + + + + + Amiibo File (%1);; All Files (*.*) + + + + + Load Amiibo + + + + + Error loading Amiibo data + + + + + The selected file is not a valid amiibo + + + + + The selected file is already on use + + + + + An unknown error occurred + + + + + + Keys not installed + + + + + + Install decryption keys and restart Eden before attempting to install firmware. + + + + + Select Dumped Firmware Source Location + + + + + Select Dumped Firmware ZIP + + + + + Zipped Archives (*.zip) + + + + + Firmware cleanup failed + + + + + Failed to clean up extracted firmware cache. +Check write permissions in the system temp directory and try again. +OS reported error: %1 + + + + + No firmware available + + + + + Firmware Corrupted + + + + + Unknown applet + + + + + Applet doesn't map to a known value. + + + + + Record not found + + + + + Applet not found. Please reinstall firmware. + + + + + Capture Screenshot + + + + + PNG Image (*.png) + + + + + Update Available + + + + + Download %1? + + + + + TAS state: Running %1/%2 + + + + + TAS state: Recording %1 + + + + + TAS state: Idle %1/%2 + + + + + TAS State: Invalid + + + + + &Stop Running + + + + + Stop R&ecording + + + + + Building: %n shader(s) + + + + + Scale: %1x + %1 is the resolution scaling factor + + + + + Speed: %1% / %2% + + + + + Speed: %1% + + + + + Game: %1 FPS + + + + + Frame: %1 ms + + + + + + FSR + + + + + NO AA + + + + + VOLUME: MUTE + + + + + VOLUME: %1% + Volume percentage (e.g. 50%) + + + + + Derivation Components Missing + + + + + Decryption keys are missing. Install them now? + + + + + Wayland Detected! + + + + + Wayland is known to have significant performance issues and mysterious bugs. +It's recommended to use X11 instead. + +Would you like to force it for future launches? + + + + + Use X11 + + + + + Continue with Wayland + + + + + Don't show again + + + + + Restart Required + + + + + Restart Eden to apply the X11 backend. + + + + + Slow + + + + + Turbo + + + + + Unlocked + + + + + Select RomFS Dump Target + + + + + Please select which RomFS you would like to dump. + + + + + Are you sure you want to close Eden? + + + + + + + Eden + + + + + Are you sure you want to stop the emulation? Any unsaved progress will be lost. + + + + + The currently running application has requested Eden to not exit. + +Would you like to bypass this and exit anyway? + + + + + FXAA + + + + + SMAA + + + + + Nearest + + + + + Bilinear + + + + + Bicubic + + + + + Zero-Tangent + + + + + B-Spline + + + + + Mitchell + + + + + Spline-1 + + + + + Gaussian + + + + + Lanczos + + + + + ScaleForce + + + + + Area + + + + + MMPX + + + + + Docked + + + + + Handheld + + + + + Fast + + + + + Balanced + + + + + Accurate + + + + + Vulkan + + + + + OpenGL GLSL + + + + + OpenGL SPIRV + + + + + OpenGL GLASM + + + + + Null + MigrationWorker - - Data was migrated successfully. - - - - + Linking the old directory failed. You may need to re-run with administrative privileges on Windows. OS gave error: %1 - + - + + + +Note that your configuration and data will be shared with %1. +If this is not desirable, delete the following files: +%2 +%3 +%4 + + + + If you wish to clean up the files which were left in the old data location, you can do so by deleting the following directory: %1 - + + + + + Data was migrated successfully. + + + + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + @@ -7976,119 +8204,101 @@ If you wish to clean up the files which were left in the old data location, you Moderation - + Ban List - + - + Refreshing - + Unban - + + + + + Subject + - Subject - - - - Type - + - + Forum Username - + - + IP Address - + - + Refresh - + MultiplayerState - + Current connection status - + - + Not Connected. Click here to find a room! Nepřipojeno. Klikni zde pro nalezení místnosti! - + Not Connected Nepřipojeno - + Connected Připojeno - + New Messages Received - + + + + + Error + - Error - - - - Failed to update the room information. Please check your Internet connection and try hosting the room again. Debug Message: - + NetworkMessage - - Username is not valid. Must be 4 to 20 alphanumeric characters. - Přezdívka není validní. Musí obsahovat 4 až 20 alfanumerických znaků. - - - Room name is not valid. Must be 4 to 20 alphanumeric characters. - Název místnosti není validní. Musí obsahovat 4 až 20 alfanumerických znaků. - - - Port must be a number between 0 to 65535. - Port musí být číslo mezi 0 a 65535. - - - No valid network interface is selected. -Please go to Configure -> System -> Network and make a selection. - Není vybráno žádné validní síťové rozhraní. -Jděte prosím do Nastavení -> Systém -> Síť a některé vyberte. - Game already running - + Joining a room when the game is already running is discouraged and can cause the room feature not to work correctly. Proceed anyway? - + @@ -8098,17 +8308,146 @@ Proceed anyway? You are about to close the room. Any network connections will be closed. - + Disconnect - + You are about to leave the room. Any network connections will be closed. - + + + + + NewUserDialog + + + + New User + + + + + Change Avatar + + + + + Set Image + + + + + UUID + + + + + Eden + + + + + Username + + + + + UUID must be 32 hex characters (0-9, A-F) + + + + + Generate + + + + + Select User Image + + + + + Image Formats (*.jpg *.jpeg *.png *.bmp) + + + + + No firmware available + + + + + Please install the firmware to use firmware avatars. + + + + + + Error loading archive + + + + + Archive is not available. Please install/reinstall firmware. + + + + + Could not locate RomFS. Your file or decryption keys may be corrupted. + + + + + Error extracting archive + + + + + Could not extract RomFS. Your file or decryption keys may be corrupted. + + + + + Error finding image directory + + + + + Failed to find image directory in the archive. + + + + + No images found + + + + + No avatar images were found in the archive. + + + + + + All Good + Tooltip + + + + + Must be 32 hex characters (0-9, a-f) + Tooltip + + + + + Must be between 1 and 32 characters + Tooltip + @@ -8135,7 +8474,7 @@ Proceed anyway? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -8144,83 +8483,196 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> + + PerformanceOverlay + + + Form + + + + + Frametime + + + + + 0 ms + + + + + + Min: 0 + + + + + + Max: 0 + + + + + + Avg: 0 + + + + + FPS + + + + + 0 fps + + + + + %1 fps + + + + + + Avg: %1 + + + + + + Min: %1 + + + + + + Max: %1 + + + + + %1 ms + + + PlayerControlPreview - + START/PAUSE START/PAUSE + + ProfileAvatarDialog + + + Select + + + + + Cancel + + + + + Background Color + + + + + Select Firmware Avatar + + + QObject - - %1 is not playing a game - %1 nehraje hru + + + + Migration + - - %1 is playing %2 - %1 hraje %2 + + Clear Shader Cache + - - Not playing a game - Nehraje hru + + Keep Old Data + - - Installed SD Titles - Nainstalované SD tituly + + Clear Old Data + - - Installed NAND Titles - Nainstalované NAND tituly + + Link Old Directory + - - System Titles - Systémové tituly + + + + + - - Add New Game Directory - Přidat novou složku s hrami + + + No + - - Favorites - Oblíbené + + You can manually re-trigger this prompt by deleting the new config directory: +%1 + + + + + Migrating + + + + + Migrating, this may take a while... + - - + + Shift Shift - - + + Ctrl Ctrl - - + + Alt Alt - - - - + + + + [not set] [Nenastaveno] @@ -8230,15 +8682,15 @@ p, li { white-space: pre-wrap; } Poziční klobouček %1 %2 - - - - - - - - + + + + + + + + Axis %1%2 Osa %1%2 @@ -8248,359 +8700,383 @@ p, li { white-space: pre-wrap; } Tlačítko %1 - - - - - - + + + + + + [unknown] [Neznámá] - - - + + + Left Doleva - - - + + + Right Doprava - - - + + + Down Dolů - - - + + + Up Nahoru - - + + Z Z - - + + R R - - + + L L - - + + A A - - + + B B - - + + X X - - + + Y Y - - + + Start Start - - + + L1 - + - - + + L2 - + - - + + L3 - + - - + + R1 - + - - + + R2 - + - - + + R3 - + - - + + Circle - + - - + + Cross - + - - + + Square - + - - + + Triangle - + - - + + Share - + - - + + Options - + - - + + [undefined] - + - + %1%2 %1%2 - - + + [invalid] - + - - - %1%2Hat %3 - - - - - + + %1%2Hat %3 + + + + - %1%2Axis %3 - - - - - - %1%2Axis %3,%4,%5 - - - - - - %1%2Motion %3 - - - - - %1%2Button %3 - + + %1%2Axis %3 + - - + + + %1%2Axis %3,%4,%5 + + + + + + %1%2Motion %3 + + + + + + %1%2Button %3 + + + + + [unused] [nepoužito] - + ZR ZR - + ZL ZL - + SR SR - + SL SL - + Stick L - + - + Stick R - + - + Plus Plus - + Minus Minus - - + + Home Home - + Capture Capture - + Touch Dotyk - + Wheel Indicates the mouse wheel - + - + Backward - + - + Forward - + - + Task - + - + Extra - + - + %1%2%3%4 - + - - + + %1%2%3Hat %4 - + - - + + %1%2%3Axis %4 - + - - + + %1%2%3Button %4 - + - - - - Migration - + + Not playing a game + Nehraje hru - - - - - + + %1 is not playing a game + %1 nehraje hru - - - No - + + %1 is playing %2 + %1 hraje %2 - - You can manually re-trigger this prompt by deleting the new config directory: -%1 - + + Play Time: %1 + - - Migrating - + + Never Played + - - Migrating, this may take a while... - + + Version: %1 + + + + + Version: 1.0.0 + + + + + Installed SD Titles + Nainstalované SD tituly + + + + Installed NAND Titles + Nainstalované NAND tituly + + + + System Titles + Systémové tituly + + + + Add New Game Directory + Přidat novou složku s hrami + + + + Favorites + Oblíbené @@ -8608,22 +9084,22 @@ p, li { white-space: pre-wrap; } Amiibo Settings - + Amiibo Info - + Series - + Type - + @@ -8633,52 +9109,52 @@ p, li { white-space: pre-wrap; } Amiibo Data - + Custom Name - + Owner - + Creation Date - + dd/MM/yyyy - + Modification Date - + dd/MM/yyyy - + Game Data - + Game Id - + Mount Amiibo - + @@ -8688,34 +9164,820 @@ p, li { white-space: pre-wrap; } File Path - + - + No game data present - - - - - The following amiibo data will be formatted: - + - The following game data will removed: - + The following amiibo data will be formatted: + + The following game data will removed: + + + + Set nickname and owner: Nastavit přezdívku a vlastníka: - + Do you wish to restore this amiibo? Chcete obnovit toto amiibo? + + QtCommon::Content + + + Game Requires Firmware + + + + + The game you are trying to launch requires firmware to boot or to get past the opening menu. Please <a href='https://yuzu-mirror.github.io/help/quickstart'>dump and install firmware</a>, or press "OK" to launch anyways. + + + + + Installing Firmware... + + + + + + + + + Cancel + + + + + Firmware Install Failed + + + + + Firmware Install Succeeded + + + + + Firmware integrity verification failed! + + + + + + Verification failed for the following files: + +%1 + + + + + + Verifying integrity... + + + + + + Integrity verification succeeded! + + + + + + The operation completed successfully. + + + + + + Integrity verification failed! + + + + + File contents may be corrupt or missing. + + + + + Integrity verification couldn't be performed + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity. + + + + + Select Dumped Keys Location + + + + + Decryption Keys install succeeded + + + + + Decryption Keys install failed + + + + + Orphaned Profiles Detected! + + + + + UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br> + + + + + Really clear data? + + + + + Important data may be lost! + + + + + Are you REALLY sure? + + + + + Once deleted, your data will NOT come back! +Only do this if you're 100% sure you want to delete this data. + + + + + Clearing... + + + + + Select Export Location + + + + + %1.zip + + + + + + Zipped Archives (*.zip) + + + + + Exporting data. This may take a while... + + + + + Exporting + + + + + Exported Successfully + + + + + Data was exported successfully. + + + + + Export Cancelled + + + + + Export was cancelled by the user. + + + + + Export Failed + + + + + Ensure you have write permissions on the targeted directory and try again. + + + + + Select Import Location + + + + + Import Warning + + + + + All previous data in this directory will be deleted. Are you sure you wish to proceed? + + + + + Importing data. This may take a while... + + + + + Importing + + + + + Imported Successfully + + + + + Data was imported successfully. + + + + + Import Cancelled + + + + + Import was cancelled by the user. + + + + + Import Failed + + + + + Ensure you have read permissions on the targeted directory and try again. + + + + + QtCommon::FS + + + Linked Save Data + + + + + Save data has been linked. + + + + + Failed to link save data + + + + + Could not link directory: + %1 +To: + %2 + + + + + Already Linked + + + + + This title is already linked to Ryujinx. Would you like to unlink it? + + + + + Failed to unlink old directory + + + + + + OS returned error: %1 + + + + + Failed to copy save data + + + + + Unlink Successful + + + + + Successfully unlinked Ryujinx save data. Save data has been kept intact. + + + + + Could not find Ryujinx installation + + + + + Could not find a valid Ryujinx installation. This may typically occur if you are using Ryujinx in portable mode. + +Would you like to manually select a portable folder to use? + + + + + Ryujinx Portable Location + + + + + Not a valid Ryujinx directory + + + + + The specified directory does not contain valid Ryujinx data. + + + + + + Could not find Ryujinx save data + + + + + QtCommon::Game + + + Error Removing Contents + + + + + Error Removing Update + + + + + Error Removing DLC + + + + + + + + + + Successfully Removed + + + + + Successfully removed the installed base game. + + + + + The base game is not installed in the NAND and cannot be removed. + + + + + Successfully removed the installed update. + + + + + There is no update installed for this title. + + + + + There are no DLCs installed for this title. + + + + + Successfully removed %1 installed DLC. + + + + + + Error Removing Transferable Shader Cache + + + + + + A shader cache for this title does not exist. + + + + + Successfully removed the transferable shader cache. + + + + + Failed to remove the transferable shader cache. + + + + + Error Removing Vulkan Driver Pipeline Cache + + + + + Failed to remove the driver pipeline cache. + + + + + + Error Removing Transferable Shader Caches + + + + + Successfully removed the transferable shader caches. + + + + + Failed to remove the transferable shader cache directory. + + + + + + Error Removing Custom Configuration + + + + + A custom configuration for this title does not exist. + + + + + Successfully removed the custom game configuration. + + + + + Failed to remove the custom game configuration. + + + + + Reset Metadata Cache + + + + + The metadata cache is already empty. + + + + + The operation completed successfully. + + + + + The metadata cache couldn't be deleted. It might be in use or non-existent. + + + + + Create Shortcut + + + + + Do you want to launch the game in fullscreen? + + + + + Shortcut Created + + + + + Successfully created a shortcut to %1 + + + + + Shortcut may be Volatile! + + + + + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? + + + + + Failed to Create Shortcut + + + + + Failed to create a shortcut to %1 + + + + + Create Icon + + + + + Cannot create icon file. Path "%1" does not exist and cannot be created. + + + + + No firmware available + + + + + Please install firmware to use the home menu. + + + + + Home Menu Applet + + + + + Home Menu is not available. Please reinstall firmware. + + + + + QtCommon::Mod + + + Mod Name + + + + + What should this mod be called? + + + + + RomFS + + + + + ExeFS/Patch + + + + + Cheat + + + + + Mod Type + + + + + Could not detect mod type automatically. Please manually specify the type of mod you downloaded. + +Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods. + + + + + + Mod Extract Failed + + + + + Failed to create temporary directory %1 + + + + + Zip file %1 is empty + + + + + QtCommon::Path + + + Error Opening Shader Cache + + + + + Failed to create or open shader cache for this title, ensure your app data directory has write permissions. + + + + + QtCommon::StringLookup + + + Contains game save data. DO NOT REMOVE UNLESS YOU KNOW WHAT YOU'RE DOING! + + + + + Contains Vulkan and OpenGL pipeline caches. Generally safe to remove. + + + + + Contains updates and DLC for games. + + + + + Contains firmware and applet data. + + + + + Contains game mods, patches, and cheats. + + + + + Decryption Keys were successfully installed + + + + + Unable to read key directory, aborting + + + + + One or more keys failed to copy. + + + + + Verify your keys file has a .keys extension and try again. + + + + + Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. + + + + + Successfully installed firmware version %1 + + + + + Unable to locate potential firmware NCA files + + + + + Failed to delete one or more firmware files. + + + + + One or more firmware files failed to copy into NAND. + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. Restart Eden or re-install firmware. + + + + + Firmware missing. Firmware is required to run certain games and use the Home Menu. + + + + + Firmware reported as present, but was unable to be read. Check for decryption keys and redump firmware if necessary. + + + + + Eden has detected user data for the following emulators: + + + + + Would you like to migrate your data for use in Eden? +Select the corresponding button to migrate data from that emulator. +This may take a while. + + + + + Clearing shader cache is recommended for all users. +Do not uncheck unless you know what you're doing. + + + + + Keeps the old data directory. This is recommended if you aren't +space-constrained and want to keep separate data for the old emulator. + + + + + Deletes the old data directory. +This is recommended on devices with space constraints. + + + + + Creates a filesystem link between the old directory and Eden directory. +This is recommended if you want to share data between emulators. + + + + + Ryujinx title database does not exist. + + + + + Invalid header on Ryujinx title database. + + + + + Invalid magic header on Ryujinx title database. + + + + + Invalid byte alignment on Ryujinx title database. + + + + + No items found in Ryujinx title database. + + + + + Title %1 not found in Ryujinx title database. + + + QtControllerSelectorDialog @@ -8752,7 +10014,7 @@ p, li { white-space: pre-wrap; } - + Pro Controller Pro Controller @@ -8765,7 +10027,7 @@ p, li { white-space: pre-wrap; } - + Dual Joycons Oba Joycony @@ -8778,7 +10040,7 @@ p, li { white-space: pre-wrap; } - + Left Joycon Levý Joycon @@ -8791,7 +10053,7 @@ p, li { white-space: pre-wrap; } - + Right Joycon Pravý Joycon @@ -8820,7 +10082,7 @@ p, li { white-space: pre-wrap; } - + Handheld Handheld @@ -8938,64 +10200,64 @@ p, li { white-space: pre-wrap; } Not enough controllers - + - + GameCube Controller Ovladač GameCube - + Poke Ball Plus - + - + NES Controller - + - + SNES Controller - + - + N64 Controller - + - + Sega Genesis - + QtErrorDisplay - - - + + + Error Code: %1-%2 (0x%3) Kód chyby: %1-%2 (0x%3) - + An error has occurred. Please try again or contact the developer of the software. Došlo k chybě. Zkuste to prosím znovu nebo kontaktujte vývojáře softwaru. - + An error occurred on %1 at %2. Please try again or contact the developer of the software. V %1 na %2 došlo k chybě. Zkuste to prosím znovu nebo kontaktujte vývojáře softwaru. - + An error has occurred. %1 @@ -9011,7 +10273,7 @@ Zkuste to prosím znovu nebo kontaktujte vývojáře softwaru. QtProfileSelectionDialog - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -9019,14 +10281,14 @@ Zkuste to prosím znovu nebo kontaktujte vývojáře softwaru. %2 - + Users Uživatelé Profile Creator - + @@ -9037,57 +10299,57 @@ Zkuste to prosím znovu nebo kontaktujte vývojáře softwaru. Profile Icon Editor - + Profile Nickname Editor - + Who will receive the points? - + Who is using Nintendo eShop? - + Who is making this purchase? - + Who is posting? - + Select a user to link to a Nintendo Account. - + Change settings for which user? - + Format data for which user? - + Which user will be transferred to another console? - + Send save data for which user? - + @@ -9112,7 +10374,7 @@ Zkuste to prosím znovu nebo kontaktujte vývojáře softwaru. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -9121,17 +10383,57 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - - + + OK OK - + Cancel Storno + + RyujinxDialog + + + Ryujinx Link + + + + + Linking save data to Ryujinx lets both Ryujinx and Eden reference the same save files for your games. + +By selecting "From Eden", previous save data stored in Ryujinx will be deleted, and vice versa for "From Ryujinx". + + + + + From Eden + + + + + From Ryujinx + + + + + Cancel + + + + + Failed to link save data + + + + + OS returned error: %1 + + + SequenceDialog @@ -9141,143 +10443,31 @@ p, li { white-space: pre-wrap; } - WaitTreeCallstack + SetPlayTimeDialog - - Call stack - Call stack - - - - WaitTreeSynchronizationObject - - - [%1] %2 - + + Set Play Time Data + - - waited by no thread - čekání bez přiřazeného vlákna - - - - WaitTreeThread - - - runnable - spustitelné + + Hours: + - - paused - pauznuto + + Minutes: + - - sleeping - spící + + Seconds: + - - waiting for IPC reply - čekání na odpověd IPC - - - - waiting for objects - waiting for objects - - - - waiting for condition variable - čekání na proměnnou podmínky - - - - waiting for address arbiter - waiting for address arbiter - - - - waiting for suspend resume - čekání na obnovení pozastavení - - - - waiting - čekání - - - - initialized - inicializováno - - - - terminated - ukončeno - - - - unknown - neznámý - - - - PC = 0x%1 LR = 0x%2 - PC = 0x%1 LR = 0x%2 - - - - ideal - ideální - - - - core %1 - jádro %1 - - - - processor = %1 - procesor = %1 - - - - affinity mask = %1 - affinity mask = %1 - - - - thread id = %1 - id vlákna = %1 - - - - priority = %1(current) / %2(normal) - priorita = %1(aktuální) / %2(normální) - - - - last running ticks = %1 - last running ticks = %1 - - - - WaitTreeThreadList - - - waited by thread - waited by thread - - - - WaitTreeWidget - - - &Wait Tree - Ř&etězec čekání + + Total play time reached maximum. + diff --git a/dist/languages/da.ts b/dist/languages/da.ts index 49cd8e6546..939c641541 100644 --- a/dist/languages/da.ts +++ b/dist/languages/da.ts @@ -1,25 +1,15 @@ - - - + AboutDialog - - About yuzu - Om yuzu - - - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - - About eden - + About Eden + - <html><head/><body><p><span style=" font-size:28pt;">eden</span></p></body></html> - + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> + @@ -34,70 +24,50 @@ p, li { white-space: pre-wrap; } hr { height: 1px; border-width: 0; } li.unchecked::marker { content: "\2610"; } li.checked::marker { content: "\2612"; } -</style></head><body style=" font-family:'Adwaita Sans'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> - +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> + - <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">This software should not be used to play games you have not legally obtained.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Yuzu er en eksperimentel åben emulator til Nintendo Switch, under GPLv3.0+ licensen.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Denne programvare bør ikke bruges til, at spille spil, du ikke har anskaffet på lovlig vis.</span></p></body></html> - - - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://yuzu-emu.org/">Netsted<span style=" text-decoration: underline; color:#039be5;"></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Kildekode</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Bidragsydere</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licens</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. eden is not affiliated with Nintendo in any way.</span></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; er et varemærke tilhørende Nintendo. Yuzu er ikke tilknyttet Nintendo på nogen måde.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. Eden is not affiliated with Nintendo in any way.</span></p></body></html> + CalibrationConfigurationDialog - + Communicating with the server... Kommunikerer med serveren... - + Cancel Afbryd - + Touch the top left corner <br>of your touchpad. Rør det øverste venstre hjørne <br> af din pegeplade. - + Now touch the bottom right corner <br>of your touchpad. Rør nu det nederste højre hjørne <br> af din pegeplade. - + Configuration completed! Konfiguration fuldført! - + OK OK @@ -120,78 +90,78 @@ p, li { white-space: pre-wrap; } Send Besked - + Members Medlemmer - + %1 has joined %1 har tilsluttet sig - + %1 has left %1 er gået - + %1 has been kicked %1 har fået sparket - + %1 has been banned %1 er blevet bandlyst - + %1 has been unbanned %1 er ikke længere bandlyst - + View Profile Vis Profil - - + + Block Player Blokér Spiller - + When you block a player, you will no longer receive chat messages from them.<br><br>Are you sure you would like to block %1? Når du blokerer en spiller, vil du ikke længere modtage chat-beskeder fra vedkommende.<br><br>Er du sikker på, at du vil blokere %1? - + Kick Giv Sparket - + Ban Lys i Band - + Kick Player Giv Spiller Sparket - + Are you sure you would like to <b>kick</b> %1? Er du sikker på, at du vil give %1 <b>sparket?</b> - + Ban Player Lys Spiller i Band - + Are you sure you would like to <b>kick and ban</b> %1? This would ban both their forum username and their IP address. @@ -226,17 +196,17 @@ Dette vil bandlyse både vedkommendes forum-brugernavn og IP-adresse. ClientRoomWindow - + Connected Tilsluttet - + Disconnected Frakoblet - + %1 - %2 (%3/%4 members) - connected %1 - %2 (%3/%4 medlemmer) - forbundet @@ -259,114 +229,110 @@ Dette vil bandlyse både vedkommendes forum-brugernavn og IP-adresse.Report Game Compatibility Rapportér Spilkompatibilitet - - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of yuzu you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected yuzu account</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Skulle du vælge, at indsende en test-sag til </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu-Kompatibilitetslisten</span></a><span style=" font-size:10pt;">, vil de følgende oplysninger blive indsamlede og vist på siden:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Information om Maskinel (CPU / GPU / Operativsystem)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hvilket version af yuzu du kører med</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Den forbundne yuzu-konto</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">eden Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of eden you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected eden account</li></ul></body></html> - + <html><head/><body><p>Does the game boot?</p></body></html> - + Yes The game starts to output video or audio - + No The game doesn't get past the "Launching..." screen - + Yes The game gets past the intro/menu and into gameplay - + No The game crashes or freezes while loading or using the menu - + <html><head/><body><p>Does the game reach gameplay?</p></body></html> - + Yes The game works without crashes - + No The game crashes or freezes during gameplay - + <html><head/><body><p>Does the game work without crashing, freezing or locking up during gameplay?</p></body></html> - + Yes The game can be finished without any workarounds - + No The game can't progress past a certain area - + <html><head/><body><p>Is the game completely playable from start to finish?</p></body></html> - + Major The game has major graphical errors - + Minor The game has minor graphical errors - + None Everything is rendered as it looks on the Nintendo Switch - + <html><head/><body><p>Does the game have any graphical glitches?</p></body></html> - + Major The game has major audio errors - + Minor The game has minor audio errors - + None Audio is played perfectly - + <html><head/><body><p>Does the game have any audio glitches / missing effects?</p></body></html> - + @@ -374,22 +340,22 @@ Dette vil bandlyse både vedkommendes forum-brugernavn og IP-adresse.Tak for din indsendelse! - + Submitting Sender - + Communication error Kommunikationsfejl - + An error occurred while sending the Testcase Der skete en fejl under indsendelse af Test-sagen - + Next Næste @@ -397,1525 +363,1865 @@ Dette vil bandlyse både vedkommendes forum-brugernavn og IP-adresse. ConfigurationShared - + % % - + Amiibo editor - + - + Controller configuration - + - + Data erase - + - + Error - + - + Net connect - + - + Player select - + - + Software keyboard - + - + Mii Edit - + - + Online web - + - + Shop - + - + Photo viewer - + - + Offline web - + - + Login share - + - + Wifi web auth - + - + My page - + - + + Enable Overlay Applet + + + + + Enables Horizon's built-in overlay applet. Press and hold the home button for 1 second to show it. + + + + Output Engine: Udgangsmotor: - + Output Device: - + - + Input Device: - + - + Mute audio - + - + Volume: Lydstyrke: - + Mute audio when in background Gør lydløs, når i baggrunden - + Multicore CPU Emulation Flerkerne-CPU-Emulering - - This option increases CPU emulation thread use from 1 to the Switch’s maximum of 4. -This is mainly a debug option and shouldn’t be disabled. - + + This option increases CPU emulation thread use from 1 to the maximum of 4. +This is mainly a debug option and shouldn't be disabled. + - + Memory Layout - + - - Increases the amount of emulated RAM from the stock 4GB of the retail Switch to the developer kit's 8/6GB. -It’s doesn’t improve stability or performance and is intended to let big texture mods fit in emulated RAM. -Enabling it will increase memory use. It is not recommended to enable unless a specific game with a texture mod needs it. - + + Increases the amount of emulated RAM. +Doesn't affect performance/stability but may allow HD texture mods to load. + - + Limit Speed Percent Begræns Hastighedsprocent - - Controls the game's maximum rendering speed, but it’s up to each game if it runs faster or not. + + Controls the game's maximum rendering speed, but it's up to each game if it runs faster or not. 200% for a 30 FPS game is 60 FPS, and for a 60 FPS game it will be 120 FPS. Disabling it means unlocking the framerate to the maximum your PC can reach. - + - + + Turbo Speed + + + + + When the Turbo Speed hotkey is pressed, the speed will be limited to this percentage. + + + + + Slow Speed + + + + + When the Slow Speed hotkey is pressed, the speed will be limited to this percentage. + + + + Synchronize Core Speed - + - - Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). -Compatibility varies by game; many (especially older ones) may not respond well. + + Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). Can help reduce stuttering at lower framerates. - + - + Accuracy: Nøjagtighed - - This setting controls the accuracy of the emulated CPU. -Don't change this unless you know what you are doing. - + + Change the accuracy of the emulated CPU (for debugging only). + - - + + Backend: - + - - Fast CPU Time - + + CPU Overclock + - + Overclocks the emulated CPU to remove some FPS limiters. Weaker CPUs may see reduced performance, and certain games may behave improperly. Use Boost (1700MHz) to run at the Switch's highest native clock, or Fast (2000MHz) to run at 2x clock. - + - + + Custom CPU Ticks + + + + + Set a custom value of CPU ticks. Higher values can increase performance, but may cause deadlocks. A range of 77-21000 is recommended. + + + + + Enable Host MMU Emulation (fastmem) + + + + + This optimization speeds up memory accesses by the guest program. +Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU. +Disabling this forces all memory accesses to use Software MMU Emulation. + + + + Unfuse FMA (improve performance on CPUs without FMA) Adskil FMA (forbedr ydeevne på CPUer uden FMA) - + This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support. - + - + Faster FRSQRTE and FRECPE Hurtigere FRSQRTE og FRECPE - + This option improves the speed of some approximate floating-point functions by using less accurate native approximations. - + - + Faster ASIMD instructions (32 bits only) Hurtigere ASIMD-instrukser (kun 32-bit) - + This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes. - + - + Inaccurate NaN handling Unøjagtig NaN-håndtering - + This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions. - + - + Disable address space checks Deaktivér adresseplads-kontrol - - This option improves speed by eliminating a safety check before every memory read/write in guest. -Disabling it may allow a game to read/write the emulator's memory. - + + This option improves speed by eliminating a safety check before every memory operation. +Disabling it may allow arbitrary code execution. + - + Ignore global monitor Ignorér global overvågning - + 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. - + - + API: API: - - Switches between the available graphics APIs. -Vulkan is recommended in most cases. - + + Changes the output graphics API. +Vulkan is recommended. + - + Device: Enhed: - - This setting selects the GPU to use with the Vulkan backend. - + + This setting selects the GPU to use (Vulkan only). + - - Shader Backend: - Shader-Bagende: - - - - The shader backend to use for the OpenGL renderer. -GLSL is the fastest in performance and the best in rendering accuracy. -GLASM is a deprecated NVIDIA-only backend that offers much better shader building performance at the cost of FPS and rendering accuracy. -SPIR-V compiles the fastest, but yields poor results on most GPU drivers. - - - - + Resolution: Opløsning: - - Forces the game to render at a different resolution. -Higher resolutions require much more VRAM and bandwidth. -Options lower than 1X can cause rendering issues. - + + Forces to render at a different resolution. +Higher resolutions require more VRAM and bandwidth. +Options lower than 1X can cause artifacts. + - + Window Adapting Filter: Vinduestilpassende Filter: - + FSR Sharpness: - + - - Determines how sharpened the image will look while using FSR’s dynamic contrast. - + + Determines how sharpened the image will look using FSR's dynamic contrast. + - + Anti-Aliasing Method: Anti-Aliaseringsmetode: - + The anti-aliasing method to use. SMAA offers the best quality. -FXAA has a lower performance impact and can produce a better and more stable picture under very low resolutions. - +FXAA can produce a more stable picture in lower resolutions. + - + Fullscreen Mode: Fuldskærmstilstand: - + The method used to render the window in fullscreen. Borderless offers the best compatibility with the on-screen keyboard that some games request for input. Exclusive fullscreen may offer better performance and better Freesync/Gsync support. - + - + Aspect Ratio: Skærmformat: - - Stretches the game to fit the specified aspect ratio. -Switch games only support 16:9, so custom game mods are required to get other ratios. + + Stretches the renderer to fit the specified aspect ratio. +Most games only support 16:9, so modifications are required to get other ratios. Also controls the aspect ratio of captured screenshots. - + - - Use disk pipeline cache - Brug disk-rørlinje-mellemlager + + Use persistent pipeline cache + - + Allows saving shaders to storage for faster loading on following game boots. Disabling it is only intended for debugging. - + - - Optimize SPIRV output shader - + + Optimize SPIRV output + - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. This feature is experimental. - + - - Use asynchronous GPU emulation - Brug asynkron GPU-emulering - - - - Uses an extra CPU thread for rendering. -This option should always remain enabled. - - - - + NVDEC emulation: NVDEC-emulering: - + Specifies how videos should be decoded. It can either use the CPU or the GPU for decoding, or perform no decoding at all (black screen on videos). In most cases, GPU decoding provides the best performance. - + - + ASTC Decoding Method: - + - + This option controls how ASTC textures should be decoded. -CPU: Use the CPU for decoding, slowest but safest method. -GPU: Use the GPU's compute shaders to decode ASTC textures, recommended for most games and users. -CPU Asynchronously: Use the CPU to decode ASTC textures as they arrive. Completely eliminates ASTC decoding -stuttering at the cost of rendering issues while the texture is being decoded. - +CPU: Use the CPU for decoding. +GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). +CPU Asynchronously: Use the CPU to decode ASTC textures on demand. EliminatesASTC decoding +stuttering but may present artifacts. + - + ASTC Recompression Method: - + - - Almost all desktop and laptop dedicated GPUs lack support for ASTC textures, forcing the emulator to decompress to an intermediate format any card supports, RGBA8. -This option recompresses RGBA8 to either the BC1 or BC3 format, saving VRAM but negatively affecting image quality. - + + Most GPUs lack support for ASTC textures and must decompress to anintermediate format: RGBA8. +BC1/BC3: The intermediate format will be recompressed to BC1 or BC3 format, + saving VRAM but degrading image quality. + - + + Frame Pacing Mode (Vulkan only) + + + + + Controls how the emulator manages frame pacing to reduce stuttering and make the frame rate smoother and more consistent. + + + + VRAM Usage Mode: - + - - Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. Has no effect on integrated graphics. Aggressive mode may severely impact the performance of other applications such as recording software. - + + Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. +Aggressive mode may impact performance of other applications such as recording software. + - + + Skip CPU Inner Invalidation + + + + + Skips certain cache invalidations during memory updates, reducing CPU usage and improving latency. This may cause soft-crashes. + + + + VSync Mode: - + - + FIFO (VSync) does not drop frames or exhibit tearing but is limited by the screen refresh rate. -FIFO Relaxed is similar to FIFO but allows tearing as it recovers from a slow down. +FIFO Relaxed 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. - +Immediate (no synchronization) presents whatever is available and can exhibit tearing. + - + + Sync Memory Operations + + + + + Ensures data consistency between compute and memory operations. +This option fixes issues in games, but may degrade performance. +Unreal Engine 4 games often see the most significant changes thereof. + + + + Enable asynchronous presentation (Vulkan only) - + - + Slightly improves performance by moving presentation to a separate CPU thread. - + - + Force maximum clocks (Vulkan only) - + - + Runs work in the background while waiting for graphics commands to keep the GPU from lowering its clock speed. - + - + Anisotropic Filtering: Anisotropisk Filtrering: - + Controls the quality of texture rendering at oblique angles. -It’s a light setting and safe to set at 16x on most GPUs. - +Safe to set at 16x on most GPUs. + - - Accuracy Level: - Nøjagtighedsniveau + + GPU Mode: + - - GPU emulation accuracy. -Most games render fine with Normal, but High is still required for some. -Particles tend to only render correctly with High accuracy. -Extreme should only be used for debugging. -This option can be changed while playing. -Some games may require booting on high to render properly. - + + Controls the GPU emulation mode. +Most games render fine with Fast or Balanced modes, but Accurate is still required for some. +Particles tend to only render correctly with Accurate mode. + - - Use asynchronous shader building (Hack) - Brug asynkron shader-opbygning (Hack) + + DMA Accuracy: + - - Enables asynchronous shader compilation, which may reduce shader stutter. -This feature is experimental. - + + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. + - Use Fast GPU Time (Hack) - Brug Hurtig GPU-Tid (Hack) + + Enable asynchronous shader compilation + - Enables Fast GPU Time. This option will force most games to run at their highest native resolution. - Aktiverer Hurtig GPU-Tid. Denne valgmulighed vil tvinge de fleste spil, til at køre i deres højeste indbyggede opløsning. + + May reduce shader stutter. + - + + Fast GPU Time + + + + + Overclocks the emulated GPU to increase dynamic resolution and render distance. +Use 256 for maximal performance and 512 for maximal graphics fidelity. + + + + + GPU Unswizzle + + + + + Accelerates BCn 3D texture decoding using GPU compute. +Disable if experiencing crashes or graphical glitches. + + + + + GPU Unswizzle Max Texture Size + + + + + Sets the maximum size (MiB) for GPU-based texture unswizzling. +While the GPU is faster for medium and large textures, the CPU may be more efficient for very small ones. +Adjust this to find the balance between GPU acceleration and CPU overhead. + + + + + GPU Unswizzle Stream Size + + + + + Sets the maximum amount of texture data (in MiB) processed per frame. +Higher values can reduce stutter during texture loading but may impact frame consistency. + + + + + GPU Unswizzle Chunk Size + + + + + Determines the number of depth slices processed in a single dispatch. +Increasing this can improve throughput on high-end GPUs but may cause TDR or driver timeouts on weaker hardware. + + + + Use Vulkan pipeline cache - + - + Enables GPU vendor-specific pipeline cache. This option can improve shader loading time significantly in cases where the Vulkan driver does not store pipeline cache files internally. - + - + Enable Compute Pipelines (Intel Vulkan Only) - + - - Enable compute pipelines, required by some games. -This setting only exists for Intel proprietary drivers, and may crash if enabled. + + 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. - + - + Enable Reactive Flushing - + - + Uses reactive flushing instead of predictive flushing, allowing more accurate memory syncing. - + - + Sync to framerate of video playback - + - + Run the game at normal speed during video playback, even when the framerate is unlocked. - + - + Barrier feedback loops - + - + Improves rendering of transparency effects in specific games. - + - + + Enable buffer history + + + + + Enables access to previous buffer states. +This option may improve rendering quality and performance consistency in some games. + + + + + Fix bloom effects + + + + + Removes bloom in Burnout. + + + + + Enable Legacy Rescale Pass + + + + + May fix rescale issues in some games by relying on behavior from the previous implementation. +Legacy behavior workaround that fixes line artifacts on AMD and Intel GPUs, and grey texture flicker on Nvidia GPUs in Luigis Mansion 3. + + + + + Extended Dynamic State + + + + + Controls the number of features that can be used in Extended Dynamic State. +Higher states allow for more features and can increase performance, but may cause additional graphical issues. + + + + + Vertex Input Dynamic State + + + + + Enables vertex input dynamic state feature for better quality and performance. + + + + + Sample Shading + + + + + Allows the fragment shader to execute per sample in a multi-sampled fragment instead of once per fragment. Improves graphics quality at the cost of performance. +Higher values improve quality but degrade performance. + + + + RNG Seed RNG-Seed - + Controls the seed of the random number generator. -Mainly used for speedrunning purposes. - +Mainly used for speedrunning. + - + Device Name - + - - The name of the emulated Switch. - + + The name of the console. + - + Custom RTC Date: - + - - This option allows to change the emulated clock of the Switch. + + This option allows to change the clock of the console. Can be used to manipulate time in games. - + - + + The number of seconds from the current unix time + + + + Language: - + - - Note: this can be overridden when region setting is auto-select - Bemærk: Dette kan overskrives, når regionsindstillinger er sat til automatisk valg + + This option can be overridden when region setting is auto-select + - + Region: Region - - The region of the emulated Switch. - + + The region of the console. + - + Time Zone: Tidszone - - The time zone of the emulated Switch. - + + The time zone of the console. + - + Sound Output Mode: - + - + Console Mode: - + - - Selects if the console is emulated in Docked or Handheld mode. + + Selects if the console is in Docked or Handheld mode. Games will change their resolution, details and supported controllers and depending on this setting. Setting to Handheld can help improve performance for low end systems. - + - - Prompt for user on game boot - Spørg efter bruger, ved opstart af spil + + Unit Serial + - - Pause emulation when in background - Sæt emulering på pause, når i baggrund + + Battery Serial + - - Fast GPU Time (Hack) - + + Debug knobs + - - Overclocks the emulated GPU to increase dynamic resolution and render distance. -Use 128 for maximal performance and 512 for maximal graphics fidelity. - + + Prompt for user profile on boot + - - Extended Dynamic State - + + Useful if multiple people use the same PC. + - - Enables the VkExtendedDynamicState* extensions. -Higher dynamic states will generally improve performance, but may cause issues on certain games or devices. - + + Pause when not in focus + - - Provoking Vertex - + + Pauses emulation when focusing on other windows. + - - Improves lighting and vertex handling in certain games. -Only Vulkan 1.0+ devices support this extension. - - - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - - Ask to select a user profile on each boot, useful if multiple people use eden on the same PC. - - - - - This setting pauses eden when focusing other windows. - - - - + Confirm before stopping emulation - + - - This setting overrides game prompts asking to confirm stopping the game. + + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - + - + Hide mouse on inactivity Skjul mus ved inaktivitet - - This setting hides the mouse after 2.5s of inactivity. - + + Hides the mouse after 2.5s of inactivity. + - + Disable controller applet - + - - Forcibly disables the use of the controller applet by guests. -When a guest attempts to open the controller applet, it is immediately closed. - + + Forcibly disables the use of the controller applet in emulated programs. +When a program attempts to open the controller applet, it is immediately closed. + - + Check for updates - + - + Whether or not to check for updates upon startup. - + - + Enable Gamemode - + - + + Force X11 as Graphics Backend + + + + Custom frontend - + - + Real applet - + - + Never - + - + On Load - + - + Always - + - + CPU CPU - + GPU - + - + CPU Asynchronous - + - + Uncompressed (Best quality) - + - + BC1 (Low quality) - + - + BC3 (Medium quality) - + - - Conservative - - - - - Aggressive - - - - - OpenGL - - - - - Vulkan - - - - - Null - - - - - GLSL - - - - - GLASM (Assembly Shaders, NVIDIA Only) - GLASM (Assembly-Shadere, kun NVIDIA) - - - - SPIR-V (Experimental, AMD/Mesa Only) - - - - - Normal - - - - - High - - - - - Extreme - - - - + + Auto Automatisk - + + 30 FPS + + + + + 60 FPS + + + + + 90 FPS + + + + + 120 FPS + + + + + Conservative + + + + + Aggressive + + + + + Vulkan + + + + + OpenGL GLSL + + + + + OpenGL GLASM (Assembly Shaders, NVIDIA Only) + + + + + OpenGL SPIR-V (Experimental, AMD/Mesa Only) + + + + + Null + + + + + Fast + + + + + Balanced + + + + + Accurate Nøjagtig - - Unsafe - Usikker - - - - Paranoid (disables most optimizations) - Paranoid (deaktiverer de fleste optimeringer) - - - - Dynarmic - - - - - NCE - - - - - Borderless Windowed - Uindrammet Vindue - - - - Exclusive Fullscreen - Eksklusiv Fuld Skærm - - - - No Video Output - Ingen Video-Output - - - - CPU Video Decoding - CPU-Video Afkodning - - - - GPU Video Decoding (Default) - GPU-Video Afkodning (Standard) - - - - 0.25X (180p/270p) [EXPERIMENTAL] - - - - - 0.5X (360p/540p) [EXPERIMENTAL] - - - - - 0.75X (540p/810p) [EXPERIMENTAL] - 0,75X (540p/810p) [EKSPERIMENTEL] - - - - 1X (720p/1080p) - 1X (720p/1080p) - - - - 1.5X (1080p/1620p) [EXPERIMENTAL] - - - - - 2X (1440p/2160p) - 2X (1440p/2160p) - - - - 3X (2160p/3240p) - 3X (2160p/3240p) - - - - 4X (2880p/4320p) - 4X (2880p/4320p) - - - - 5X (3600p/5400p) - 5X (3600p/5400p) - - - - 6X (4320p/6480p) - 6X (4320p/6480p) - - - - 7X (5040p/7560p) - - - - - 8X (5760p/8640p) - - - - - Nearest Neighbor - Nærmeste Nabo - - - - Bilinear - Bilineær - - - - Bicubic - Bikubisk - - - - Gaussian - Gausisk - - - - ScaleForce - ScaleForce - - - - AMD FidelityFX™️ Super Resolution - - - - - Area - - - - - None - Ingen - - - - FXAA - FXAA - - - - SMAA - - - - - Default (16:9) - Standard (16:9) - - - - Force 4:3 - Tving 4:3 - - - - Force 21:9 - Tving 21:9 - - - - Force 16:10 - - - - - Stretch to Window - Stræk til Vindue - - - - Automatic - - - - + + Default Standard - + + Unsafe (fast) + + + + + Safe (stable) + + + + + Unsafe + Usikker + + + + Paranoid (disables most optimizations) + Paranoid (deaktiverer de fleste optimeringer) + + + + Debugging + + + + + Dynarmic + + + + + NCE + + + + + Borderless Windowed + Uindrammet Vindue + + + + Exclusive Fullscreen + Eksklusiv Fuld Skærm + + + + No Video Output + Ingen Video-Output + + + + CPU Video Decoding + CPU-Video Afkodning + + + + GPU Video Decoding (Default) + GPU-Video Afkodning (Standard) + + + + 0.25X (180p/270p) [EXPERIMENTAL] + + + + + 0.5X (360p/540p) [EXPERIMENTAL] + + + + + 0.75X (540p/810p) [EXPERIMENTAL] + 0,75X (540p/810p) [EKSPERIMENTEL] + + + + 1X (720p/1080p) + 1X (720p/1080p) + + + + 1.25X (900p/1350p) [EXPERIMENTAL] + + + + + 1.5X (1080p/1620p) [EXPERIMENTAL] + + + + + 2X (1440p/2160p) + 2X (1440p/2160p) + + + + 3X (2160p/3240p) + 3X (2160p/3240p) + + + + 4X (2880p/4320p) + 4X (2880p/4320p) + + + + 5X (3600p/5400p) + 5X (3600p/5400p) + + + + 6X (4320p/6480p) + 6X (4320p/6480p) + + + + 7X (5040p/7560p) + + + + + 8X (5760p/8640p) + + + + + Nearest Neighbor + Nærmeste Nabo + + + + Bilinear + Bilineær + + + + Bicubic + Bikubisk + + + + Gaussian + Gausisk + + + + Lanczos + + + + + ScaleForce + ScaleForce + + + + AMD FidelityFX Super Resolution + + + + + Area + + + + + MMPX + + + + + Zero-Tangent + + + + + B-Spline + + + + + Mitchell + + + + + Spline-1 + + + + + + None + Ingen + + + + FXAA + FXAA + + + + SMAA + + + + + Default (16:9) + Standard (16:9) + + + + Force 4:3 + Tving 4:3 + + + + Force 21:9 + Tving 21:9 + + + + Force 16:10 + + + + + Stretch to Window + Stræk til Vindue + + + + Automatic + + + + 2x - + - + 4x - + - + 8x - + - + 16x - + - + + 32x + + + + + 64x + + + + Japanese (日本語) Japansk (日本語) - + American English - + - + French (français) Fransk (français) - + German (Deutsch) Tysk (Deutsch) - + Italian (italiano) Italiensk (italiano) - + Spanish (español) Spansk (español) - + Chinese Kinesisk - + Korean (한국어) Koreansk (한국어) - + Dutch (Nederlands) Hollandsk (Nederlands) - + Portuguese (português) Portugisisk (português) - + Russian (Русский) Russisk (Русский) - + Taiwanese Taiwanesisk - + British English Britisk Engelsk - + Canadian French Candadisk Fransk - + Latin American Spanish Latinamerikansk Spansk - + Simplified Chinese Forenklet Kinesisk - + Traditional Chinese (正體中文) Traditionelt Kinesisk (正體中文) - + Brazilian Portuguese (português do Brasil) Braziliansk Portugisisk (português do Brasil) - - + + Polish (polska) + + + + + Thai (แบบไทย) + + + + + Japan Japan - + USA USA - + Europe Europa - + Australia Australien - + China Kina - + Korea Korea - + Taiwan Taiwan - + Auto (%1) Auto select time zone - + - + Default (%1) Default time zone - + - + CET CET - + CST6CDT CST6CDT - + Cuba Cuba - + EET EET - + Egypt Ægypten - + Eire Eire - + EST EST - + EST5EDT EST5EDT - + GB GB - + GB-Eire GB-Eire - + GMT GMT - + GMT+0 GMT+0 - + GMT-0 GMT-0 - + GMT0 GMT0 - + Greenwich Greenwich - + Hongkong Hongkong - + HST HST - + Iceland Island - + Iran Iran - + Israel Israel - + Jamaica Jamaica - + Kwajalein Kwajalein - + Libya Libyen - + MET MET - + MST MST - + MST7MDT MST7MDT - + Navajo Navajo - + NZ NZ - + NZ-CHAT NZ-CHAT - + Poland Polen - + Portugal Portugal - + PRC PRC - + PST8PDT PST8PDT - + ROC ROC - + ROK ROK - + Singapore Singapore - + Turkey Tyrkiet - + UCT UCT - + Universal Universel - + UTC UTC - + W-SU W-SU - + WET WET - + Zulu Zulu - + Mono Mono - + Stereo Stereo - + Surround Surround - + 4GB DRAM (Default) - + - + 6GB DRAM (Unsafe) - + - + 8GB DRAM - + - + 10GB DRAM (Unsafe) - + - + 12GB DRAM (Unsafe) - + - - Low (128) - - - - - Medium (256) - - - - - High (512) - - - - + Docked Dokket - + Handheld Håndholdt - + + + Off + + + + Boost (1700MHz) - + - + Fast (2000MHz) - + - + Always ask (Default) - + - + Only if game specifies not to stop - + - + Never ask - + + + + + + Medium (256) + + + + + + High (512) + + + + + Very Small (16 MB) + + + + + Small (32 MB) + + + + + Normal (128 MB) + + + + + Large (256 MB) + + + + + Very Large (512 MB) + + + + + Very Low (4 MB) + + + + + Low (8 MB) + + + + + Normal (16 MB) + + + + + Medium (32 MB) + + + + + High (64 MB) + + + + + Very Low (32) + + + + + Low (64) + + + + + Normal (128) + + + + + Disabled + + + + + ExtendedDynamicState 1 + + + + + ExtendedDynamicState 2 + + + + + ExtendedDynamicState 3 + + + + + Tree View + + + + + Grid View + @@ -1928,12 +2234,12 @@ When a guest attempts to open the controller applet, it is immediately closed. Applets - + Applet mode preference - + @@ -1988,7 +2294,7 @@ When a guest attempts to open the controller applet, it is immediately closed.Gendan Standarder - + Auto Automatisk @@ -2018,7 +2324,7 @@ When a guest attempts to open the controller applet, it is immediately closed. CPU Backend - + @@ -2175,7 +2481,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all memory accesses to use Software MMU Emulation.</div> @@ -2193,7 +2499,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up exclusive memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all exclusive memory accesses to use Software MMU Emulation.</div> @@ -2227,14 +2533,14 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up memory accesses by allowing invalid memory accesses to succeed.</div> - <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> + <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> - + Enable fallbacks for invalid memory accesses - + @@ -2265,30 +2571,30 @@ When a guest attempts to open the controller applet, it is immediately closed.Logføring - - Open Log Location - Åbn Logplacering - - - + Global Log Filter Globalt Logfilter - + When checked, the max size of the log increases from 100 MB to 1 GB Når valgt, øges loggens maksimale størrelse fra 100 MB til 1 GB - + Enable Extended Logging** Aktivér Udvidet Logning** - + Show Log in Console Vis Log i Konsol + + + Open Log Location + Åbn Logplacering + Homebrew @@ -2347,7 +2653,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Enable Renderdoc Hotkey - + @@ -2362,12 +2668,12 @@ When a guest attempts to open the controller applet, it is immediately closed. When checked, it disables the macro HLE functions. Enabling this makes games run slower - + Disable Macro HLE - + @@ -2392,12 +2698,12 @@ When a guest attempts to open the controller applet, it is immediately closed. <html><head/><body><p>When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.</p></body></html> - + Disable Buffer Reorder - + @@ -2425,18 +2731,9 @@ When a guest attempts to open the controller applet, it is immediately closed.Aktivér Alle Kontrolenhedstyper - - Censor username in logs - - - - - **This will be reset automatically when eden closes. - - - - Enable Auto-Stub** - Aktivér Automatisk Stub** + + Enable Auto-Stub + @@ -2445,8 +2742,8 @@ When a guest attempts to open the controller applet, it is immediately closed. - Enable CPU Debugging - Aktivér CPU-Fejlfinding + Use dev.keys + @@ -2459,43 +2756,74 @@ When a guest attempts to open the controller applet, it is immediately closed.Fejlfinding - - Flush log output on each line - + + Battery Serial: + - - Enable FS Access Log - Aktivér FS-Tilgangslog + + Bitmask for quick development toggles + - + + Set debug knobs (bitmask) + + + + + 16-bit debug knob set for quick development toggles + + + + + (bitmask) + + + + + Debug Knobs: + + + + + Unit Serial: + + + + Enable this to output the latest generated audio command list to the console. Only affects games using the audio renderer. Aktivér dette, for at udgyde den senest genererede lyd-kommandoliste til konsollen. Påvirker kun spil, som gør brug af lyd-renderingen. - - Enable Auto-Stub - - - - + Dump Audio Commands To Console** Dump Lydkommandoer Til Konsol** - + + Flush log output on each line + + + + + Enable FS Access Log + Aktivér FS-Tilgangslog + + + Enable Verbose Reporting Services** Aktivér Vitterlig Rapporteringstjeneste - **This will be reset automatically when yuzu closes. - **Dette vil automatisk blive nulstillet, når yuzu lukkes. + + Censor username in logs + - - Web applet not compiled - Net-applet ikke kompileret + + **This will be reset automatically when Eden closes. + @@ -2537,103 +2865,99 @@ When a guest attempts to open the controller applet, it is immediately closed. ConfigureDialog - - yuzu Configuration - yuzu Konfiguration - - eden Configuration - + Eden Configuration + Some settings are only available when a game is not running. - + - + Applets - + - - + + Audio Lyd - - + + CPU CPU - + Debug Fejlfind - + Filesystem Filsystem - - + + General Generelt - - + + Graphics Grafik - + GraphicsAdvanced GrafikAvanceret - - GraphicsExtensions - + + GraphicsExtra + - + Hotkeys Genvejstaster - - + + Controls Styring - + Profiles Profiler - + Network Netværk - - + + System System - + Game List Spilliste - + Web Net @@ -2663,9 +2987,10 @@ When a guest attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2675,107 +3000,183 @@ When a guest attempts to open the controller applet, it is immediately closed.SD-Kort - + + Save Data + + + + Gamecard Spilkort - + Path Sti - + Inserted Indsat - + Current Game Aktuelle Spil - + Patch Manager Lappehåndtering - + Dump Decompressed NSOs Nedfæld Ukomprimerede NSOer - + Dump ExeFS Nedfæld ExeFS - + Mod Load Root Mod-Indlæsning Rod - + Dump Root Nedfæld Rod - + Caching Mellemlagring - + Cache Game List Metadata Mellemlagr Spilliste-Metadata - - - - + Reset Metadata Cache Nulstil Metadata-Mellemlager - + Select Emulated NAND Directory... Vælg Emuleret NAND-Mappe... - + Select Emulated SD Directory... Vælg Emuleret SD-Mappe... - + + + Select Save Data Directory... + + + + Select Gamecard Path... Vælg Spilkort-Sti... - + Select Dump Directory... Vælg Nedfældningsmappe... - + Select Mod Load Directory... Vælg Mod-Indlæsningsmappe... - - The metadata cache is already empty. - Metadata-mellemlageret er allerede tomt. + + Save Data Directory + - - The operation completed successfully. - Fuldførelse af opgaven lykkedes. + + Choose an action for the save data directory: + - - The metadata cache couldn't be deleted. It might be in use or non-existent. - Metadata-mellemlageret kunne ikke slettes. Det kan være i brug eller ikke-eksisterende. + + Set Custom Path + + + + + Reset to NAND + + + + + Save data exists in both the old and new locations. + +Old: %1 +New: %2 + +Would you like to migrate saves from the old location? +WARNING: This will overwrite any conflicting saves in the new location! + + + + + Would you like to migrate your save data to the new location? + +From: %1 +To: %2 + + + + + Migrate Save Data + + + + + Migrating save data... + + + + + Cancel + + + + + + Migration Failed + + + + + Failed to create destination directory. + + + + + Failed to migrate save data: +%1 + + + + + Migration Complete + + + + + Save data has been migrated successfully. + +Would you like to delete the old save data? + @@ -2793,28 +3194,54 @@ When a guest attempts to open the controller applet, it is immediately closed. - Linux - + External Content + - + + Add directories to scan for DLCs and Updates without installing to NAND + + + + + Add Directory + + + + + Remove Selected + + + + Reset All Settings Nulstil Alle Indstillinger - yuzu - yuzu + + Eden + - - eden - - - - + This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed? dette nulstiller alle indstillinger og fjerner alle pr-spil-konfigurationer. Dette vil ikke slette spilmapper, -profiler, eller input-profiler. Fortsæt? + + + Select External Content Directory... + + + + + Directory Already Added + + + + + This directory is already in the list. + + ConfigureGraphics @@ -2844,35 +3271,35 @@ When a guest attempts to open the controller applet, it is immediately closed.Baggrundsfarve: - + % FSR sharpening percentage (e.g. 50%) % - + Off - + - + VSync Off - + - + Recommended - + - + On - + - + VSync On - + @@ -2888,7 +3315,7 @@ When a guest attempts to open the controller applet, it is immediately closed.Avanceret - + Advanced Graphics Settings Avancerede Grafikindstillinger @@ -2898,24 +3325,38 @@ When a guest attempts to open the controller applet, it is immediately closed. Form - Formular + - Extensions - + Extras + - - Vulkan Extension Settings - + + Hacks + - - While it's recommended to use state 3, some games may perform better on lower states. Setting to 0 (disabled) may also break games. -If your GPU is older (i.e. RX570/580 or older), it may not support these features. If this is the case, set the slider to 0 and uncheck all boxes. -These settings are experimental, and may cause black screens. If your games fail to boot or are stuck on a black screen, change these settings around. - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + + + + + % + Sample Shading percentage (e.g. 50%) + + + + + Extended Dynamic State is disabled on macOS due to MoltenVK compatibility issues that cause black screens. + @@ -2946,75 +3387,75 @@ These settings are experimental, and may cause black screens. If your games fail Gendan Standarder - + Action Handling - + Hotkey Genvejstast - + Controller Hotkey - + - - - + + + Conflicting Key Sequence Modstridende Tastesekvens - - + + The entered key sequence is already assigned to: %1 Den indtastede tastesekvens er allerede tilegnet: %1 - + [waiting] [venter] - + Invalid - + - + Invalid hotkey settings - + - + An error occurred. Please report this issue on github. - + - + Restore Default Gendan Standard - + Clear Ryd - + Conflicting Button Sequence - + - + The default button sequence is already assigned to: %1 - + - + The default key sequence is already assigned to: %1 Standard-tastesekvensen er allerede tilegnet: %1 @@ -3275,7 +3716,7 @@ These settings are experimental, and may cause black screens. If your games fail Emulated Devices - + @@ -3313,12 +3754,12 @@ These settings are experimental, and may cause black screens. If your games fail Ring Controller - + Infrared Camera - + @@ -3334,12 +3775,8 @@ These settings are experimental, and may cause black screens. If your games fail - Requires restarting eden - - - - Requires restarting yuzu - Kræver genstart af yuzu + Requires restarting Eden + @@ -3349,32 +3786,32 @@ These settings are experimental, and may cause black screens. If your games fail Enable UDP controllers (not needed for motion) - + Controller navigation - + Enable direct JoyCon driver - + Enable direct Pro Controller driver [EXPERIMENTAL] - + Allows unlimited uses of the same Amiibo in games that would otherwise limit you to one use. - + Use random Amiibo ID - + @@ -3397,57 +3834,57 @@ These settings are experimental, and may cause black screens. If your games fail Input Profiles - + Player 1 Profile - + Player 2 Profile - + Player 3 Profile - + Player 4 Profile - + Player 5 Profile - + Player 6 Profile - + Player 7 Profile - + Player 8 Profile - + Use global input configuration - + Player %1 profile - + @@ -3489,30 +3926,19 @@ These settings are experimental, and may cause black screens. If your games fail - + Left Stick Venstre Styrepind - - - - - - - Up - Op - - - - - - - - - - Left - Venstre + + + + + + + Down + ed @@ -3526,14 +3952,25 @@ These settings are experimental, and may cause black screens. If your games fail Højre - - - - - - - Down - ed + + + + + + + + Left + Venstre + + + + + + + + + Up + Op @@ -3580,14 +4017,6 @@ These settings are experimental, and may cause black screens. If your games fail D-Pad Retningskryds - - - - - - SL - SL - @@ -3597,59 +4026,55 @@ These settings are experimental, and may cause black screens. If your games fail SR - - - - L - L + + + + + SL + SL - + ZL ZL + + + + + L + L + Minus Minus - - - - Capture - Optag - - + Plus Plus - - - Home - Hjem + + + + ZR + ZR - - + + R R - - - - - ZR - ZR - Motion 1 @@ -3660,6 +4085,18 @@ These settings are experimental, and may cause black screens. If your games fail Motion 2 Bevægelse 2 + + + + Capture + Optag + + + + + Home + Hjem + Face Buttons @@ -3672,10 +4109,10 @@ These settings are experimental, and may cause black screens. If your games fail X - - - Y - Y + + + B + B @@ -3684,21 +4121,21 @@ These settings are experimental, and may cause black screens. If your games fail A - - - B - B + + + Y + Y - + Right Stick Højre Styrepind Mouse panning - + @@ -3706,242 +4143,242 @@ These settings are experimental, and may cause black screens. If your games fail Konfigurér - - - - + + + + Clear Ryd - - - - - + + + + + [not set] [ikke indstillet] - - - + + + Invert button - + - - + + Toggle button Funktionsskifteknap - + Turbo button - + - - + + Invert axis Omvend akser - - - + + + Set threshold Angiv tærskel - - + + Choose a value between 0% and 100% Vælg en værdi imellem 0% og 100% - + Toggle axis - + - + Set gyro threshold - + - + Calibrate sensor - + - + Map Analog Stick Tilsted Analog Pind - + After pressing OK, first move your joystick horizontally, and then vertically. To invert the axes, first move your joystick vertically, and then horizontally. Bevæg, efter tryk på OK, først din styrepind vandret og så lodret. Bevæg, for at omvende akserne, først din styrepind lodret og så vandret. - + Center axis - + - - + + Deadzone: %1% Dødzone: %1% - - + + Modifier Range: %1% Forandringsrækkevidde: %1% - - + + Pro Controller Pro-Styringsenhed - + Dual Joycons Dobbelt-Joycon - + Left Joycon Venstre Joycon - + Right Joycon Højre Joycon - + Handheld Håndholdt - + GameCube Controller GameCube-Styringsenhed - + Poke Ball Plus - + - + NES Controller - + - + SNES Controller - + - + N64 Controller - + - + Sega Genesis - + - + Start / Pause Start / Pause - + Z Z - + Control Stick Styrepind - + C-Stick C-Pind - + Shake! Ryst! - + [waiting] [venter] - + New Profile Ny Profil - + Enter a profile name: Indtast et profilnavn: - - + + Create Input Profile Opret Input-Profil - + The given profile name is not valid! Det angivne profilnavn er ikke gyldigt! - + Failed to create the input profile "%1" Oprettelse af input-profil "%1" mislykkedes - + Delete Input Profile Slet Input-Profil - + Failed to delete the input profile "%1" Sletning af input-profil "%1" mislykkedes - + Load Input Profile Indlæs Input-Profil - + Failed to load the input profile "%1" Indlæsning af input-profil "%1" mislykkedes - + Save Input Profile Gem Input-Profil - + Failed to save the input profile "%1" Lagring af input-profil "%1" mislykkedes @@ -3964,15 +4401,6 @@ Bevæg, for at omvende akserne, først din styrepind lodret og så vandret.Standarder - - ConfigureLinuxTab - - - - Linux - - - ConfigureMotionTouch @@ -3998,14 +4426,14 @@ Bevæg, for at omvende akserne, først din styrepind lodret og så vandret. - + Configure Konfigurér Touch from button profile: - + @@ -4028,111 +4456,93 @@ Bevæg, for at omvende akserne, først din styrepind lodret og så vandret.Port: - - Learn More - Find Ud Af Mere - - - - + + Test Afprøv - + Add Server Tilføj Server - + Remove Server Fjernserver - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Find Ud Af Mere</span></a> - - - + %1:%2 %1:%2 - yuzu - yuzu + + + + + + + Eden + - - <a href='https://eden-emulator.github.io/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - - - - + Port number has invalid characters Portnummer indeholder ugyldige tegn - - - - - - - eden - - - - + Port has to be in range 0 and 65353 Port skal være imellem 0 and 65353 - + IP address is not valid IP-adresse er ikke gyldig - + This UDP server already exists Denne UDP-server eksisterer allerede - + Unable to add more than 8 servers Ude af stand til, at tilføje mere end 8 servere - + Testing Afprøvning - + Configuring Konfigurér - + Test Successful Afprøvning Lykkedes - + Successfully received data from the server. Modtagelse af data fra serveren lykkedes. - + Test Failed Afprøvning Mislykkedes - + Could not receive valid data from the server.<br>Please verify that the server is set up correctly and the address and port are correct. Kunne ikke modtage gyldig data fra serveren.<br>Bekræft venligst, at serveren er opsat korrekt, og at adressen og porten er korrekte. - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. UDP-Afprøvnings- eller -kalibreringskonfiguration er i gang.<br>vent venligst på, at de bliver færdige. @@ -4142,7 +4552,7 @@ Bevæg, for at omvende akserne, først din styrepind lodret og så vandret. Configure mouse panning - + @@ -4152,17 +4562,17 @@ Bevæg, for at omvende akserne, først din styrepind lodret og så vandret. Can be toggled via a hotkey. Default hotkey is Ctrl + F9 - + Sensitivity - + Horizontal - + @@ -4176,37 +4586,37 @@ Bevæg, for at omvende akserne, først din styrepind lodret og så vandret. Vertical - + Deadzone counterweight - + Counteracts a game's built-in deadzone - + Deadzone - + Stick decay - + Strength - + Minimum - + @@ -4217,22 +4627,22 @@ Bevæg, for at omvende akserne, først din styrepind lodret og så vandret. Mouse panning works better with a deadzone of 0% and a range of 100%. Current values are %1% and %2% respectively. - + Emulated mouse is enabled. This is incompatible with mouse panning. - + Emulated mouse is enabled - + Real mouse input and mouse panning are incompatible. Please disable the emulated mouse in input advanced settings to allow mouse panning. - + @@ -4258,9 +4668,9 @@ Current values are %1% and %2% respectively. Netværksgrænseflade - - None - Ingen + + Enable Airplane Mode + @@ -4313,52 +4723,57 @@ Current values are %1% and %2% respectively. Some settings are only available when a game is not running. - + - + Add-Ons Tilføjelser - + System System - + CPU CPU - + Graphics Grafik - + Adv. Graphics - + - - GPU Extensions - + + Ext. Graphics + - + Audio Lyd - + Input Profiles - + - Linux - + Network + + + + + Applets + @@ -4379,15 +4794,110 @@ Current values are %1% and %2% respectively. Tilføjelser - + + Import Mod from ZIP + + + + + Import Mod from Folder + + + + Patch Name Lap-Navn - + Version Version + + + Mod Install Succeeded + + + + + Successfully installed all mods. + + + + + Mod Install Failed + + + + + Failed to install the following mods: + %1 +Check the log for details. + + + + + Mod Folder + + + + + Zipped Mod Location + + + + + Zipped Archives (*.zip) + + + + + Invalid Selection + + + + + Only mods, cheats, and patches can be deleted. +To delete NAND-installed updates, right-click the game in the game list and click Remove -> Remove Installed Update. + + + + + You are about to delete the following installed mods: + + + + + + +Once deleted, these can NOT be recovered. Are you 100% sure you want to delete them? + + + + + Delete add-on(s)? + + + + + Successfully deleted + + + + + Successfully deleted all selected mods. + + + + + &Delete + + + + + &Open in File Manager + + ConfigureProfileManager @@ -4417,32 +4927,17 @@ Current values are %1% and %2% respectively. Brugernavn - - Set Image - Angiv Billede - - - + Add Tilføj - - Rename - Omdøb - - - - Remove - Fjern - - - + Profile management is available only when game is not running. Profilhåndtering er kun tilgængelig, når spil ikke kører. - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -4450,103 +4945,83 @@ Current values are %1% and %2% respectively. %2 - - Enter Username - Indtast Brugernavn - - - + Users Brugere - - Enter a username for the new user: - Indtast et brugernavn for den nye bruger: - - - - Enter a new username: - Indtast et nyt brugernavn: - - - - Select User Image - Vælg Brugerbillede - - - - JPEG Images (*.jpg *.jpeg) - JPEG-Billeder (*.jpg *.jpeg) - - - + Error deleting image Fejl ved sletning af billede - + Error occurred attempting to overwrite previous image at: %1. Der skete en fejl, ved forsøg på at overskrive forrige billede på: %1. - + Error deleting file Fejl ved sletning af fil - + Unable to delete existing file: %1. Kan ikke slette eksisterende fil: %1. - + Error creating user image directory Fejl ved oprettelse af brugerbillede-mappe - + Unable to create directory %1 for storing user images. Ude af stand til, at oprette mappe %1, til lagring af brugerbilleder. - - Error copying user image - Fejl ved kopiering af brugerbillede + + Error saving user image + - - Unable to copy image from %1 to %2 - Ude af stand til, at kopiere billede fra %1 til %2 + + Unable to save image to file + - - Error resizing user image - + + &Edit + - - Unable to resize image - + + &Delete + + + + + Edit User + ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. - + - + Confirm Delete Bekræft Slet - + Name: %1 UUID: %2 - + @@ -4554,29 +5029,29 @@ UUID: %2 Configure Ring Controller - + 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. - + Virtual Ring Sensor Parameters - + Pull - + Push - + @@ -4586,29 +5061,29 @@ UUID: %2 Direct Joycon Driver - + Enable Ring Input - + - + Enable - + Ring Sensor Value - + - + Not connected - + @@ -4616,63 +5091,63 @@ UUID: %2 Gendan Standarder - + Clear Ryd - + [not set] [ikke indstillet] - + Invert axis Omvend akser - - + + Deadzone: %1% Dødzone: %1% - + Error enabling ring input - + - + Direct Joycon driver is not enabled - + - + Configuring Konfigurér - + The current mapped device doesn't support the ring controller - - - - - The current mapped device doesn't have a ring attached - + + The current mapped device doesn't have a ring attached + + + + The current mapped device is not connected - + - + Unexpected driver result %1 - + - + [waiting] [venter] @@ -4693,12 +5168,12 @@ UUID: %2 Core - + - + Warning: "%1" is not a valid language for region "%2" - + @@ -4708,14 +5183,10 @@ UUID: %2 TAS TAS - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the yuzu website.</p></body></html> - <html><head/><body><p>Læser styringsenheds input fra skrift, i samme format som TAS-nx skrifter.<br/>Konsultér venligst <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">hjælp-siden</span></a>, for en mere detaljeret forklaring, på yuzu-hjemmesiden.</p></body></html> - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the eden website.</p></body></html> - + <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the user handbook.</p></body></html> + @@ -4748,17 +5219,22 @@ UUID: %2 Sæt eksekvering på pause under indlæsninger - + + Show recording dialog + + + + Script Directory Skriftmappe - + Path Sti - + ... ... @@ -4766,12 +5242,12 @@ UUID: %2 ConfigureTasDialog - + TAS Configuration TAS-Konfiguration - + Select TAS Load Directory... Vælg TAS-Indlæsningsmappe... @@ -4875,14 +5351,10 @@ Træk punkter, for at skifte position, eller dobbeltklik i tabelceller, for at r Configure Touchscreen Konfigurér Berøringsfølsom Skærm - - Warning: The settings in this page affect the inner workings of yuzu's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - Advarsel: Indstillingerne på denne side påvirker yuzus emulerede berøringsskærms indre funktionalitet. Ændring af dem kan resultere i uønsket opførsel, så som at berøringsskærmen delvist eller helt stopper med at virke. Du bør kun bruge denne side, hvis du ved hvad du laver. - - Warning: The settings in this page affect the inner workings of eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - + Warning: The settings in this page affect the inner workings of Eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. + @@ -4913,64 +5385,43 @@ Træk punkter, for at skifte position, eller dobbeltklik i tabelceller, for at r ConfigureUI - - - + + None Ingen - - - Small (32x32) - Lille (32x32) - - Standard (64x64) - Standard (64x64) - - - - Large (128x128) - Stor (128x128) - - - - Full Size (256x256) - Fuld Størrelse (256x256) - - - Small (24x24) Lille (24x24) - + Standard (48x48) Standard (48x48) - + Large (72x72) Stor (72x72) - + Filename Filnavn - + Filetype Filtype - + Title ID Titel-ID - + Title Name Titelnavn @@ -5015,7 +5466,7 @@ Træk punkter, for at skifte position, eller dobbeltklik i tabelceller, for at r Show Compatibility List - + @@ -5025,88 +5476,83 @@ Træk punkter, for at skifte position, eller dobbeltklik i tabelceller, for at r Show Size Column - + Show File Types Column - + Show Play Time Column - + - Game Icon Size: - Spil-Ikonstørrelse: - - - Folder Icon Size: Mappe-Ikonstørrelse: - + Row 1 Text: Række 1-Tekst: - + Row 2 Text: Række 2-Tekst: - + Screenshots Skærmbilleder - + Ask Where To Save Screenshots (Windows Only) Spørg Hvor Skærmbilleder Skal Gemmes (Kun Windows) - + Screenshots Path: Skærmbilledsti: - + ... ... - + TextLabel - + - + Resolution: Opløsning: - + Select Screenshots Path... Vælg Skærmbilledsti... - + <System> <System> - + English Engelsk - + Auto (%1 x %2, %3 x %4) Screenshot width value - + @@ -5119,7 +5565,7 @@ Træk punkter, for at skifte position, eller dobbeltklik i tabelceller, for at r Press any controller button to vibrate the controller. - + @@ -5201,206 +5647,219 @@ Træk punkter, for at skifte position, eller dobbeltklik i tabelceller, for at r Web Net - - yuzu Web Service - yuzu-Nettjeneste - - - By providing your username and token, you agree to allow yuzu to collect additional usage data, which may include user identifying information. - Ved at give dit brugernavn og token, accepterer du, at tillade yuzu, at indsamle yderligere brugsdata, hvilket kan inkludere brugeridentificerende oplysninger. - - eden Web Service - + Eden Web Service + - - By providing your username and token, you agree to allow eden to collect additional usage data, which may include user identifying information. - - - - - Verify - Bekræft - - - - Sign up - Tilmeld dig - - - + Token: Token: - + Username: Brugernavn: - - What is my token? - Hvad er mit token? + + Generate + - + Web Service configuration can only be changed when a public room isn't being hosted. - + - Telemetry - Telemetri - - - Share anonymous usage data with the yuzu team - Del anonyme brugsdata med holdet bag yuzu - - - Learn more - Find ud af mere - - - Telemetry ID: - Telemetri-ID: - - - Regenerate - Regenerér - - - + Discord Presence Tilstedeværelse på Discord - + Show Current Game in your Discord Status Vis Aktuelt Spil i din Discord-Status - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Find ud af mere</span></a> - - - - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Tilmeld dig</span></a> - - - - <a href='https://evilperson1337.notion.site/Hosting-a-Room-Inside-of-Eden-20457c2edaf680108abac6215a79acdb'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - - - - - Warning - - - + - Verification is currently nonfunctional, instead generate a random 48-character string with only lowercase a-z. - - - - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">Hvad er mit token?</span></a> - - - Telemetry ID: 0x%1 - Telemetri-ID: 0x%1 - - - Unspecified - Uspecificeret - - - Token not verified - Token ikke bekræftet - - - Token was not verified. The change to your token has not been saved. - Token blev ikke bekræftet. Ændringen af dit token er ikke blevet gemt. - - - - Unverified, please click Verify before saving configuration + All Good Tooltip - + - Verifying... - Bekræfter... - - - Verification failed + + Must be between 4-20 characters Tooltip - Bekræftelse mislykkedes + - Verification failed - Bekræftelse mislykkedes - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - Bekræftelse mislykkedes. Kontrollér at du har indtastet dit token korrekt, og at din internetforbindelse virker. + + Must be 48 characters, and lowercase a-z + Tooltip + ControllerDialog - + Controller P1 Styringsenhed P1 - + &Controller P1 &Styringsenhed P1 + + DataDialog + + + Data Manager + + + + + Deleting ANY data is IRREVERSABLE! + + + + + Shaders + + + + + UserNAND + + + + + SysNAND + + + + + Mods + + + + + Saves + + + + + DataWidget + + + Form + + + + + Tooltip + + + + + Open with your system file manager + + + + + Delete all data in this directory. THIS IS 100% IRREVERSABLE! + + + + + Export all data in this directory. This may take a while! + + + + + Import data for this directory. This may take a while, and will delete ALL EXISTING DATA! + + + + + Calculating... + + + + + DepsDialog + + + Eden Dependencies + + + + + <html><head/><body><p><span style=" font-size:28pt;">Eden Dependencies</span></p></body></html> + + + + + <html><head/><body><p>The projects that make Eden possible</p></body></html> + + + + + Dependency + + + + + Version + + + DirectConnect Direct Connect - + Server Address - + <html><head/><body><p>Server address of the host</p></body></html> - + Port - + <html><head/><body><p>Port number the host is listening on</p></body></html> - + Nickname - + Password - + Connect - + @@ -5408,12 +5867,12 @@ Træk punkter, for at skifte position, eller dobbeltklik i tabelceller, for at r Connecting - + Connect - + @@ -5421,1713 +5880,424 @@ Træk punkter, for at skifte position, eller dobbeltklik i tabelceller, for at r Username is not valid. Must be 4 to 20 alphanumeric characters. - + Room name is not valid. Must be 4 to 20 alphanumeric characters. - + Username is already in use or not valid. Please choose another. - + IP is not a valid IPv4 address. - + Port must be a number between 0 to 65535. - + You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - + Unable to find an internet connection. Check your internet settings. - + Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - + Unable to connect to the room because it is already full. - + - Creating a room failed. Please retry. Restarting eden might be necessary. - + Creating a room failed. Please retry. Restarting Eden might be necessary. + The host of the room has banned you. Speak with the host to unban you or try a different room. - + - Version mismatch! Please update to the latest version of eden. If the problem persists, contact the room host and ask them to update the server. - + Version mismatch! Please update to the latest version of Eden. If the problem persists, contact the room host and ask them to update the server. + Incorrect password. - + An unknown error occurred. If this error continues to occur, please open an issue - + Connection to room lost. Try to reconnect. - + You have been kicked by the room host. - + IP address is already in use. Please choose another. - + You do not have enough permission to perform this action. - + The user you are trying to kick/ban could not be found. They may have left the room. - + No valid network interface is selected. Please go to Configure -> System -> Network and make a selection. - + Error - - - - - GMainWindow - - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Anonymous data is collected</a> to help improve yuzu. <br/><br/>Would you like to share your usage data with us? - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Anonym data indsamles</a>, for at hjælp med, at forbedre yuzu. <br/><br/>Kunne du tænke dig, at dele dine brugsdata med os? - - - Telemetry - Telemetri - - - - Broken Vulkan Installation Detected - - - - - Running a game - TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping - - - - - Loading Web Applet... - Indlæser Net-Applet... - - - - - Disable Web Applet - Deaktivér Net-Applet - - - - 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.) - - - - - The amount of shaders currently being built - - - - - The current selected resolution scaling multiplier. - - - - - Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. - Aktuel emuleringshastighed. Værdier højere eller lavere end 100% indikerer, at emulering kører hurtigere eller langsommere end en Switch. - - - - How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. - - - - - 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. - - - - - Unmute - - - - - Mute - - - - - Reset Volume - - - - - &Clear Recent Files - - - - - &Continue - - - - - &Pause - - - - - Warning Outdated Game Format - Advarsel, Forældet Spilformat - - - - - Error while loading ROM! - Fejl under indlæsning af ROM! - - - - The ROM format is not supported. - ROM-formatet understøttes ikke. - - - - An error occurred initializing the video core. - Der skete en fejl under initialisering af video-kerne. - - - - Error while loading ROM! %1 - %1 signifies a numeric error code. - - - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://eden-emulator.github.io/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - - - - - Game Updates Warning - - - - - The game you are trying to launch is known to have performance or booting issues when updates are applied. Please try increasing the memory layout to 6GB or 8GB if any issues occur.<br><br>Press "OK" to continue launching, or "Cancel" to cancel the launch. - - - - - Don't show again for this game - - - - - 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.<br><br>For an explanation of the various Switch formats eden supports, <a href='https://eden-emulator.github.io/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - - - - - eden 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: <a href='https://eden-emulator.github.io/help/reference/log-files/'>How to Upload the Log File</a>. - - - - - %1<br>Please redump your files or ask on Discord for help. - %1 signifies an error string. - - - - - An unknown error occurred. Please see the log for more details. - - - - - (64-bit) - - - - - (32-bit) - - - - - %1 %2 - %1 is the title name. %2 indicates if the title is 64-bit or 32-bit - - - - - Closing software... - - - - - Save Data - - - - - Mod Data - - - - - Error Opening %1 Folder - Fejl ved Åbning af %1 Mappe - - - - - Folder does not exist! - Mappe eksisterer ikke! - - - - Error Opening Transferable Shader Cache - - - - - Failed to create the shader cache directory for this title. - - - - - Error Removing Contents - - - - - Error Removing Update - - - - - Error Removing DLC - - - - - Remove Installed Game Contents? - - - - - Remove Installed Game Update? - - - - - Remove Installed Game DLC? - - - - - Remove Entry - - - - - - - - - - Successfully Removed - - - - - Successfully removed the installed base game. - - - - - The base game is not installed in the NAND and cannot be removed. - - - - - Successfully removed the installed update. - - - - - There is no update installed for this title. - - - - - There are no DLC installed for this title. - - - - - Successfully removed %1 installed DLC. - - - - - Delete OpenGL Transferable Shader Cache? - - - - - Delete Vulkan Transferable Shader Cache? - - - - - Delete All Transferable Shader Caches? - - - - - Remove Custom Game Configuration? - - - - - Remove Cache Storage? - - - - - Remove File - - - - - Remove Play Time Data - - - - - Reset play time? - - - - - - Error Removing Transferable Shader Cache - - - - - - A shader cache for this title does not exist. - - - - - Successfully removed the transferable shader cache. - - - - - Failed to remove the transferable shader cache. - - - - - Error Removing Vulkan Driver Pipeline Cache - - - - - Failed to remove the driver pipeline cache. - - - - - - Error Removing Transferable Shader Caches - - - - - Successfully removed the transferable shader caches. - - - - - Failed to remove the transferable shader cache directory. - - - - - - Error Removing Custom Configuration - - - - - A custom configuration for this title does not exist. - - - - - Successfully removed the custom game configuration. - - - - - Failed to remove the custom game configuration. - - - - - - RomFS Extraction Failed! - RomFS-Udpakning Mislykkedes! - - - - There was an error copying the RomFS files or the user cancelled the operation. - Der skete en fejl ved kopiering af RomFS-filerne, eller brugeren afbrød opgaven. - - - - Full - Fuld - - - - Skeleton - Skelet - - - - Select RomFS Dump Mode - Vælg RomFS-Nedfældelsestilstand - - - - Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. - - - - - There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root - - - - - Extracting RomFS... - Udpakker RomFS... - - - - - - - - Cancel - Afbryd - - - - RomFS Extraction Succeeded! - RomFS-Udpakning Lykkedes! - - - - - - The operation completed successfully. - Fuldførelse af opgaven lykkedes. - - - - Integrity verification couldn't be performed! - - - - - File contents were not checked for validity. - - - - - - Verifying integrity... - - - - - - Integrity verification succeeded! - - - - - - Integrity verification failed! - - - - - File contents may be corrupt. - - - - - - - - Create Shortcut - - - - - Do you want to launch the game in fullscreen? - - - - - Successfully created a shortcut to %1 - - - - - This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - - - - - Failed to create a shortcut to %1 - - - - - Create Icon - - - - - Cannot create icon file. Path "%1" does not exist and cannot be created. - - - - - Error Opening %1 - Fejl ved Åbning af %1 - - - - Select Directory - Vælg Mappe - - - - Properties - Egenskaber - - - - The game properties could not be loaded. - Spil-egenskaberne kunne ikke indlæses. - - - - Switch Executable (%1);;All Files (*.*) - %1 is an identifier for the Switch executable file extensions. - Switch-Eksekverbar (%1);;Alle filer (*.*) - - - - Load File - Indlæs Fil - - - - Open Extracted ROM Directory - Åbn Udpakket ROM-Mappe - - - - Invalid Directory Selected - Ugyldig Mappe Valgt - - - - The directory you have selected does not contain a 'main' file. - - - - - Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - - - - - Install Files - - - - - %n file(s) remaining - - - - - - - - Installing file "%1"... - Installér fil "%1"... - - - - - Install Results - - - - - To avoid possible conflicts, we discourage users from installing base games to the NAND. -Please, only use this feature to install updates and DLC. - - - - - %n file(s) were newly installed - - - - - - - - - %n file(s) were overwritten - - - - - - - - - %n file(s) failed to install - - - - - - - - - System Application - Systemapplikation - - - - System Archive - Systemarkiv - - - - System Application Update - Systemapplikationsopdatering - - - - Firmware Package (Type A) - Firmwarepakke (Type A) - - - - Firmware Package (Type B) - Firmwarepakke (Type B) - - - - Game - Spil - - - - Game Update - Spilopdatering - - - - Game DLC - Spiludvidelse - - - - Delta Title - Delta-Titel - - - - Select NCA Install Type... - Vælg NCA-Installationstype... - - - - Please select the type of title you would like to install this NCA as: -(In most instances, the default 'Game' is fine.) - - - - - Failed to Install - Installation mislykkedes - - - - The title type you selected for the NCA is invalid. - - - - - File not found - Fil ikke fundet - - - - File "%1" not found - Fil "%1" ikke fundet - - - - OK - OK - - - - - Hardware requirements not met - - - - - - Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled. - - - - - Missing yuzu Account - Manglende yuzu-Konto - - - - In order to submit a game compatibility test case, you must link your eden account.<br><br/>To link your eden account, go to Emulation &gt; Configuration &gt; Web. - - - - - Install decryption keys and restart eden before attempting to install firmware. - - - - - Firmware installation cancelled, firmware may be in bad state, restart eden or re-install firmware. - - - - - Encryption keys are missing. - - - - - Are you sure you want to close eden? - - - - - - - eden - - - - - The currently running application has requested eden to not exit. - -Would you like to bypass this and exit anyway? - - - - - Error opening URL - - - - - Unable to open the URL "%1". - - - - - TAS Recording - - - - - Overwrite file of player 1? - - - - - Invalid config detected - - - - - Handheld controller can't be used on docked mode. Pro controller will be selected. - - - - - - Amiibo - - - - - - The current amiibo has been removed - - - - - Error - - - - - - The current game is not looking for amiibos - - - - - Amiibo File (%1);; All Files (*.*) - Amiibo-Fil (%1);; Alle Filer (*.*) - - - - Load Amiibo - Indlæs Amiibo - - - - Error loading Amiibo data - Fejl ved indlæsning af Amiibo-data - - - - The selected file is not a valid amiibo - - - - - The selected file is already on use - - - - - An unknown error occurred - - - - - - Verification failed for the following files: - -%1 - - - - - Keys not installed - - - - - Select Dumped Firmware Source Location - - - - - Installing Firmware... - - - - - - - - Firmware install failed - - - - - Unable to locate potential firmware NCA files - - - - - Failed to delete one or more firmware file. - - - - - One or more firmware files failed to copy into NAND. - - - - - Firmware integrity verification failed! - - - - - Select Dumped Keys Location - - - - - - - Decryption Keys install failed - - - - - prod.keys is a required decryption key file. - - - - - One or more keys failed to copy. - - - - - Decryption Keys install succeeded - - - - - Decryption Keys were successfully installed - - - - - Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. - - - - - - - - - - - No firmware available - - - - - Please install the firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Controller Menu. - - - - - Controller Applet - - - - - Controller Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Home Menu. - - - - - - Home Menu Applet - - - - - - Home Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use Starter. - - - - - Starter Applet - - - - - Starter is not available. Please reinstall firmware. - - - - - Please install firmware to use the home menu. - - - - - Capture Screenshot - Optag Skærmbillede - - - - PNG Image (*.png) - PNG-Billede (*.png) - - - - Update Available - - - - - Update %1 for Eden is available. -Would you like to download it? - - - - - TAS state: Running %1/%2 - - - - - TAS state: Recording %1 - - - - - TAS state: Idle %1/%2 - - - - - TAS State: Invalid - - - - - &Stop Running - - - - - &Start - - - - - Stop R&ecording - - - - - R&ecord - - - - - Building: %n shader(s) - - - - - - - - Scale: %1x - %1 is the resolution scaling factor - - - - - Speed: %1% / %2% - Hastighed: %1% / %2% - - - - Speed: %1% - Hastighed: %1% - - - - Game: %1 FPS - Spil: %1 FPS - - - - Frame: %1 ms - Billede: %1 ms - - - - %1 %2 - - - - - - FSR - - - - - NO AA - - - - - VOLUME: MUTE - - - - - VOLUME: %1% - Volume percentage (e.g. 50%) - - - - - Derivation Components Missing - - - - - Select RomFS Dump Target - - - - - Please select which RomFS you would like to dump. - - - - Are you sure you want to close yuzu? - Er du sikker på, at du vil lukke yuzu? - - - yuzu - yuzu - - - - Are you sure you want to stop the emulation? Any unsaved progress will be lost. - Er du sikker på, at du vil stoppe emulereingen? Enhver ulagret data, vil gå tabt. - - - - None - Ingen - - - - FXAA - FXAA - - - - SMAA - - - - - Nearest - - - - - Bilinear - Bilineær - - - - Bicubic - Bikubisk - - - - Gaussian - Gausisk - - - - ScaleForce - ScaleForce - - - - Area - - - - - Docked - Dokket - - - - Handheld - Håndholdt - - - - Normal - - - - - High - - - - - Extreme - - - - - Vulkan - - - - - OpenGL - - - - - Null - - - - - GLSL - - - - - GLASM - - - - - SPIRV - + GRenderWindow - - + + OpenGL not available! - + - + OpenGL shared contexts are not supported. - + - - eden has not been compiled with OpenGL support. - + + Eden has not been compiled with OpenGL support. + - - + + Error while initializing OpenGL! - + - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. - + - + Error while initializing OpenGL 4.6! - + - + Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 - + - + Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2 - + GameList - + + &Add New Game Directory + + + + Favorite - + - + Start Game - + - + Start Game without Custom Configuration - + - + Open Save Data Location Åbn Gemt Data-Placering - + Open Mod Data Location Åbn Mod-Data-Placering - + Open Transferable Pipeline Cache - + - + + Link to Ryujinx + + + + Remove Fjern - + Remove Installed Update - + - + Remove All Installed DLC - + - + Remove Custom Configuration - + - - Remove Play Time Data - - - - + Remove Cache Storage - + - + Remove OpenGL Pipeline Cache - + - + Remove Vulkan Pipeline Cache - + - + Remove All Pipeline Caches - + - + Remove All Installed Contents - + - - + + Manage Play Time + + + + + Edit Play Time Data + + + + + Remove Play Time Data + + + + + Dump RomFS - + - + Dump RomFS to SDMC - + - + Verify Integrity - + - + Copy Title ID to Clipboard Kopiér Titel-ID til Udklipsholder - + Navigate to GameDB entry - + - + Create Shortcut - + - + Add to Desktop - + - + Add to Applications Menu - + - + Configure Game - + - Properties - Egenskaber - - - + Scan Subfolders - + - + Remove Game Directory - + - + ▲ Move Up - + - + ▼ Move Down - + - + Open Directory Location - + - + Clear Ryd - + Name Navn - + Compatibility Kompatibilitet - + Add-ons Tilføjelser - + File type Filtype - + Size Størrelse - + Play time - + GameListItemCompat - + Ingame - + - + Game starts, but crashes or major glitches prevent it from being completed. - + - + Perfect Perfekt - + Game can be played without issues. - + - + Playable - + - + Game functions with minor graphical or audio glitches and is playable from start to finish. - + - + Intro/Menu Intro/Menu - + Game loads, but is unable to progress past the Start Screen. - + - + Won't Boot Starter Ikke Op - + The game crashes when attempting to startup. - + - + Not Tested Ikke Afprøvet - + The game has not yet been tested. Spillet er endnu ikke blevet afprøvet. @@ -7135,30 +6305,27 @@ Would you like to download it? GameListPlaceholder - + Double-click to add a new folder to the game list - + GameListSearchField - + %1 of %n result(s) - - - - + - + Filter: Filter: - + Enter pattern to filter - + @@ -7166,22 +6333,22 @@ Would you like to download it? Create Room - + Room Name - + Preferred Game - + Max Players - + @@ -7191,17 +6358,17 @@ Would you like to download it? (Leave blank for open game) - + Password - + Port - + @@ -7211,255 +6378,273 @@ Would you like to download it? Load Previous Ban List - + Public - + Unlisted - + Host Room - + HostRoomWindow - + Error - + - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. + + Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid Eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. Debug Message: - + Hotkeys - + Audio Mute/Unmute - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Main Window - + - + Audio Volume Down - + - + Audio Volume Up - + - + Capture Screenshot Optag Skærmbillede - + Change Adapting Filter - + - + Change Docked Mode - + - - Change GPU Accuracy - + + Change GPU Mode + - + Configure - Konfigurér + - + Configure Current Game - + - + Continue/Pause Emulation - + - + Exit Fullscreen - + - - Exit eden - + + Exit Eden + - + Fullscreen Fuldskærm - + Load File Indlæs Fil - + Load/Remove Amiibo - + - - Multiplayer Browse Public Game Lobby - + + Browse Public Game Lobby + - - Multiplayer Create Room - + + Create Room + - - Multiplayer Direct Connect to Room - + + Direct Connect to Room + - - Multiplayer Leave Room - + + Leave Room + - - Multiplayer Show Current Room - + + Show Current Room + - + Restart Emulation - + - + Stop Emulation - + - + TAS Record - + - + TAS Reset - + - + TAS Start/Stop - + - + Toggle Filter Bar - + - + Toggle Framerate Limit - + - + + Toggle Turbo Speed + + + + + Toggle Slow Speed + + + + Toggle Mouse Panning - + - + Toggle Renderdoc Capture - + - + Toggle Status Bar - + + + + + Toggle Performance Overlay + InstallDialog - - - Please confirm these are the files you wish to install. - - - Installing an Update or DLC will overwrite the previously installed one. - + Please confirm these are the files you wish to install. + - + + Installing an Update or DLC will overwrite the previously installed one. + + + + Install Installér - + Install Files to NAND - + LimitableInputDialog - - The text can't contain any of the following characters: + + The text can't contain any of the following characters: %1 - + @@ -7467,12 +6652,12 @@ Debug Message: Loading Shaders 387 / 1628 - + Loading Shaders %v out of %m - + @@ -7480,22 +6665,22 @@ Debug Message: Estimeret Tid 5m 4s - + Loading... Indlæser... - + Loading Shaders %1 / %2 Indlæser Shadere %1 / %2 - + Launching... Starter... - + Estimated Time %1 Estimeret Tid %1 @@ -7505,83 +6690,83 @@ Debug Message: Public Room Browser - + Nickname - + Filters - + Search - + Games I Own - + Hide Empty Rooms - + Hide Full Rooms - + Refresh Lobby - + - + Password Required to Join - + - + Password: - + - + Players Spillere - + Room Name - + + + + + Preferred Game + - Preferred Game - - - - Host - + - + Refreshing - + - + Refresh List - + @@ -7599,357 +6784,1427 @@ Debug Message: &Recent Files - + - + + Open &Eden Folders + + + + &Emulation &Emulering - + &View - - - - - &Reset Window Size - - - - - &Debugging - + + &Reset Window Size + + + + + &Debugging + + + + + &Game List Mode + + + + + Game &Icon Size + + + + Reset Window Size to &720p - + - + Reset Window Size to 720p - + - + Reset Window Size to &900p - + - + Reset Window Size to 900p - + - + Reset Window Size to &1080p - + - + Reset Window Size to 1080p - + - + &Multiplayer - + - + &Tools - + - - &Amiibo - + + Am&iibo + - + + Launch &Applet + + + + &TAS - + - + &Create Home Menu Shortcut - + - + + Install &Firmware + + + + &Help &Hjælp - + &Install Files to NAND... - + - + L&oad File... - - - - - Load &Folder... - - - - - E&xit - - - - - &Pause - - - - - &Stop - - - - - &Verify Installed Contents - - - - - &About eden - - - - - Open &eden Folder - - - - - Open Home Menu - - - - - &Discord - - - - - Open &Setup - - - - - &Desktop - - - - - &Application Menu - + - Single &Window Mode - + Load &Folder... + + E&xit + + + + + + &Pause + + + + + &Stop + + + + + &Verify Installed Contents + + + + + &About Eden + + + + + Single &Window Mode + + + + Con&figure... - + - + Ctrl+, - + - - Display D&ock Widget Headers - + + Enable Overlay Display Applet + - + Show &Filter Bar - + - + Show &Status Bar - + - + Show Status Bar Vis Statuslinje - + &Browse Public Game Lobby - + - + &Create Room - + - + &Leave Room - + - + &Direct Connect to Room - + - + &Show Current Room - + - + F&ullscreen - + - + &Restart - - - - - Load/Remove &Amiibo... - - - - - &Report Compatibility - - - - - Open &Mods Page - - - - - Open &Quickstart Guide - - - - - &FAQ - + + Load/Remove &Amiibo... + + + + + &Report Compatibility + + + + + Open &Mods Page + + + + + Open &Quickstart Guide + + + + + &FAQ + + + + &Capture Screenshot - + - - Open &Album - + + &Album + - + &Set Nickname and Owner - + - + &Delete Game Data - + - + &Restore Amiibo - + - + &Format Amiibo - + - - Open &Mii Editor - + + &Mii Editor + - + &Configure TAS... - + - + Configure C&urrent Game... - + - + + &Start - + - + &Reset - + - + + R&ecord - + - + Open &Controller Menu - + - - Install Firmware - + + Install Decryption &Keys + - - Install Decryption Keys - + + &Home Menu + - - - MicroProfileDialog - - &MicroProfile - + + &Desktop + + + + + &Application Menu + + + + + &Root Data Folder + + + + + &NAND Folder + + + + + &SDMC Folder + + + + + &Mod Folder + + + + + &Log Folder + + + + + From Folder + + + + + From ZIP + + + + + &Eden Dependencies + + + + + &Data Manager + + + + + &Tree View + + + + + &Grid View + + + + + Game Icon Size + + + + + + + None + + + + + Show Game &Name + + + + + Show &Performance Overlay + + + + + Small (32x32) + + + + + Standard (64x64) + + + + + Large (128x128) + + + + + Full Size (256x256) + + + + + Broken Vulkan Installation Detected + + + + + Vulkan initialization failed during boot. + + + + + Running a game + TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping + + + + + Loading Web Applet... + + + + + + Disable Web Applet + + + + + 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.) + + + + + The amount of shaders currently being built + + + + + The current selected resolution scaling multiplier. + + + + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. + + + + + How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. + + + + + 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. + + + + + Unmute + + + + + Mute + + + + + Reset Volume + + + + + &Clear Recent Files + + + + + &Continue + + + + + Warning: Outdated Game Format + + + + + 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.<br>For an explanation of the various Switch formats Eden supports, out our user handbook. This message will not be shown again. + + + + + + Error while loading ROM! + + + + + The ROM format is not supported. + + + + + An error occurred initializing the video core. + + + + + Eden 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: <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>How to Upload the Log File</a>. + + + + + Error while loading ROM! %1 + %1 signifies a numeric error code. + + + + + %1<br>Please redump your files or ask on Discord/Stoat for help. + %1 signifies an error string. + + + + + An unknown error occurred. Please see the log for more details. + + + + + (64-bit) + + + + + (32-bit) + + + + + %1 %2 + %1 is the title name. %2 indicates if the title is 64-bit or 32-bit + + + + + Closing software... + + + + + Save Data + + + + + Mod Data + + + + + Error Opening %1 Folder + + + + + + Folder does not exist! + + + + + Remove Installed Game Contents? + + + + + Remove Installed Game Update? + + + + + Remove Installed Game DLC? + + + + + Remove Entry + + + + + Delete OpenGL Transferable Shader Cache? + + + + + Delete Vulkan Transferable Shader Cache? + + + + + Delete All Transferable Shader Caches? + + + + + Remove Custom Game Configuration? + + + + + Remove Cache Storage? + + + + + Remove File + + + + + Remove Play Time Data + + + + + Reset play time? + + + + + + RomFS Extraction Failed! + + + + + There was an error copying the RomFS files or the user cancelled the operation. + + + + + Full + + + + + Skeleton + + + + + Select RomFS Dump Mode + + + + + Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. + + + + + There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root + + + + + Extracting RomFS... + + + + + + Cancel + + + + + RomFS Extraction Succeeded! + + + + + The operation completed successfully. + + + + + Error Opening %1 + + + + + Select Directory + + + + + Properties + + + + + The game properties could not be loaded. + + + + + Switch Executable (%1);;All Files (*.*) + %1 is an identifier for the Switch executable file extensions. + + + + + Load File + + + + + Open Extracted ROM Directory + + + + + Invalid Directory Selected + + + + + The directory you have selected does not contain a 'main' file. + + + + + Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) + + + + + Install Files + + + + + %n file(s) remaining + + + + + Installing file "%1"... + + + + + + Install Results + + + + + To avoid possible conflicts, we discourage users from installing base games to the NAND. +Please, only use this feature to install updates and DLC. + + + + + %n file(s) were newly installed + + + + + + %n file(s) were overwritten + + + + + + %n file(s) failed to install + + + + + + System Application + + + + + System Archive + + + + + System Application Update + + + + + Firmware Package (Type A) + + + + + Firmware Package (Type B) + + + + + Game + + + + + Game Update + + + + + Game DLC + + + + + Delta Title + + + + + Select NCA Install Type... + + + + + Please select the type of title you would like to install this NCA as: +(In most instances, the default 'Game' is fine.) + + + + + Failed to Install + + + + + The title type you selected for the NCA is invalid. + + + + + File not found + + + + + File "%1" not found + + + + + OK + + + + + Function Disabled + + + + + Compatibility list reporting is currently disabled. Check back later! + + + + + Error opening URL + + + + + Unable to open the URL "%1". + + + + + TAS Recording + + + + + Overwrite file of player 1? + + + + + Invalid config detected + + + + + Handheld controller can't be used on docked mode. Pro controller will be selected. + + + + + + Amiibo + + + + + + The current amiibo has been removed + + + + + Error + + + + + + The current game is not looking for amiibos + + + + + Amiibo File (%1);; All Files (*.*) + + + + + Load Amiibo + + + + + Error loading Amiibo data + + + + + The selected file is not a valid amiibo + + + + + The selected file is already on use + + + + + An unknown error occurred + + + + + + Keys not installed + + + + + + Install decryption keys and restart Eden before attempting to install firmware. + + + + + Select Dumped Firmware Source Location + + + + + Select Dumped Firmware ZIP + + + + + Zipped Archives (*.zip) + + + + + Firmware cleanup failed + + + + + Failed to clean up extracted firmware cache. +Check write permissions in the system temp directory and try again. +OS reported error: %1 + + + + + No firmware available + + + + + Firmware Corrupted + + + + + Unknown applet + + + + + Applet doesn't map to a known value. + + + + + Record not found + + + + + Applet not found. Please reinstall firmware. + + + + + Capture Screenshot + + + + + PNG Image (*.png) + + + + + Update Available + + + + + Download %1? + + + + + TAS state: Running %1/%2 + + + + + TAS state: Recording %1 + + + + + TAS state: Idle %1/%2 + + + + + TAS State: Invalid + + + + + &Stop Running + + + + + Stop R&ecording + + + + + Building: %n shader(s) + + + + + Scale: %1x + %1 is the resolution scaling factor + + + + + Speed: %1% / %2% + + + + + Speed: %1% + + + + + Game: %1 FPS + + + + + Frame: %1 ms + + + + + + FSR + + + + + NO AA + + + + + VOLUME: MUTE + + + + + VOLUME: %1% + Volume percentage (e.g. 50%) + + + + + Derivation Components Missing + + + + + Decryption keys are missing. Install them now? + + + + + Wayland Detected! + + + + + Wayland is known to have significant performance issues and mysterious bugs. +It's recommended to use X11 instead. + +Would you like to force it for future launches? + + + + + Use X11 + + + + + Continue with Wayland + + + + + Don't show again + + + + + Restart Required + + + + + Restart Eden to apply the X11 backend. + + + + + Slow + + + + + Turbo + + + + + Unlocked + + + + + Select RomFS Dump Target + + + + + Please select which RomFS you would like to dump. + + + + + Are you sure you want to close Eden? + + + + + + + Eden + + + + + Are you sure you want to stop the emulation? Any unsaved progress will be lost. + + + + + The currently running application has requested Eden to not exit. + +Would you like to bypass this and exit anyway? + + + + + FXAA + + + + + SMAA + + + + + Nearest + + + + + Bilinear + + + + + Bicubic + + + + + Zero-Tangent + + + + + B-Spline + + + + + Mitchell + + + + + Spline-1 + + + + + Gaussian + + + + + Lanczos + + + + + ScaleForce + + + + + Area + + + + + MMPX + + + + + Docked + + + + + Handheld + + + + + Fast + + + + + Balanced + + + + + Accurate + + + + + Vulkan + + + + + OpenGL GLSL + + + + + OpenGL SPIRV + + + + + OpenGL GLASM + + + + + Null + MigrationWorker - - Data was migrated successfully. - - - - + Linking the old directory failed. You may need to re-run with administrative privileges on Windows. OS gave error: %1 - + - + + + +Note that your configuration and data will be shared with %1. +If this is not desirable, delete the following files: +%2 +%3 +%4 + + + + If you wish to clean up the files which were left in the old data location, you can do so by deleting the following directory: %1 - + + + + + Data was migrated successfully. + + + + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + @@ -7957,87 +8212,87 @@ If you wish to clean up the files which were left in the old data location, you Moderation - + Ban List - + - + Refreshing - + Unban - + + + + + Subject + - Subject - - - - Type - + - + Forum Username - + - + IP Address - + - + Refresh - + MultiplayerState - + Current connection status - + - + Not Connected. Click here to find a room! - + - + Not Connected - + - + Connected Tilsluttet - + New Messages Received - + + + + + Error + - Error - - - - Failed to update the room information. Please check your Internet connection and try hosting the room again. Debug Message: - + @@ -8045,13 +8300,13 @@ Debug Message: Game already running - + Joining a room when the game is already running is discouraged and can cause the room feature not to work correctly. Proceed anyway? - + @@ -8061,17 +8316,146 @@ Proceed anyway? You are about to close the room. Any network connections will be closed. - + Disconnect - + You are about to leave the room. Any network connections will be closed. - + + + + + NewUserDialog + + + + New User + + + + + Change Avatar + + + + + Set Image + + + + + UUID + + + + + Eden + + + + + Username + + + + + UUID must be 32 hex characters (0-9, A-F) + + + + + Generate + + + + + Select User Image + + + + + Image Formats (*.jpg *.jpeg *.png *.bmp) + + + + + No firmware available + + + + + Please install the firmware to use firmware avatars. + + + + + + Error loading archive + + + + + Archive is not available. Please install/reinstall firmware. + + + + + Could not locate RomFS. Your file or decryption keys may be corrupted. + + + + + Error extracting archive + + + + + Could not extract RomFS. Your file or decryption keys may be corrupted. + + + + + Error finding image directory + + + + + Failed to find image directory in the archive. + + + + + No images found + + + + + No avatar images were found in the archive. + + + + + + All Good + Tooltip + + + + + Must be 32 hex characters (0-9, a-f) + Tooltip + + + + + Must be between 1 and 32 characters + Tooltip + @@ -8098,106 +8482,219 @@ Proceed anyway? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - + + + + + PerformanceOverlay + + + Form + + + + + Frametime + + + + + 0 ms + + + + + + Min: 0 + + + + + + Max: 0 + + + + + + Avg: 0 + + + + + FPS + + + + + 0 fps + + + + + %1 fps + + + + + + Avg: %1 + + + + + + Min: %1 + + + + + + Max: %1 + + + + + %1 ms + PlayerControlPreview - + START/PAUSE - + + + + + ProfileAvatarDialog + + + Select + + + + + Cancel + + + + + Background Color + + + + + Select Firmware Avatar + QObject - - %1 is not playing a game - + + + + Migration + - - %1 is playing %2 - + + Clear Shader Cache + - - Not playing a game - + + Keep Old Data + - - Installed SD Titles - Installerede SD-Titler + + Clear Old Data + - - Installed NAND Titles - Installerede NAND-Titler + + Link Old Directory + - - System Titles - Systemtitler + + + + + - - Add New Game Directory - Tilføj Ny Spilmappe + + + No + - - Favorites - + + You can manually re-trigger this prompt by deleting the new config directory: +%1 + + + + + Migrating + + + + + Migrating, this may take a while... + - - + + Shift Skift - - + + Ctrl Ctrl - - + + Alt Alt - - - - + + + + [not set] [ikke indstillet] Hat %1 %2 - + - - - - - - - - + + + + + + + + Axis %1%2 Akse %1%2 @@ -8207,359 +8704,383 @@ p, li { white-space: pre-wrap; } Knap %1 - - - - - - + + + + + + [unknown] [ukendt] - - - + + + Left Venstre - - - + + + Right Højre - - - + + + Down ed - - - + + + Up Op - - + + Z Z - - + + R R - - + + L L - - + + A A - - + + B B - - + + X X - - + + Y Y - - + + Start Start - - + + L1 - + - - + + L2 - + - - + + L3 - + - - + + R1 - + - - + + R2 - + - - + + R3 - + - - + + Circle - + - - + + Cross - + - - + + Square - + - - + + Triangle - + - - + + Share - + - - + + Options - + - - + + [undefined] - + - + %1%2 - + - - + + [invalid] - + - - - %1%2Hat %3 - - - - - + + %1%2Hat %3 + + + + - %1%2Axis %3 - - - - - - %1%2Axis %3,%4,%5 - - - - - - %1%2Motion %3 - - - - - %1%2Button %3 - + + %1%2Axis %3 + - - + + + %1%2Axis %3,%4,%5 + + + + + + %1%2Motion %3 + + + + + + %1%2Button %3 + + + + + [unused] [ubrugt] - + ZR ZR - + ZL ZL - + SR SR - + SL SL - + Stick L - + - + Stick R - + - + Plus Plus - + Minus Minus - - + + Home Hjem - + Capture Optag - + Touch Berøring - + Wheel Indicates the mouse wheel - + - + Backward - + - + Forward - + - + Task - + - + Extra - + - + %1%2%3%4 - + - - + + %1%2%3Hat %4 - + - - + + %1%2%3Axis %4 - + - - + + %1%2%3Button %4 - + - - - - Migration - + + Not playing a game + - - - - - + + %1 is not playing a game + - - - No - + + %1 is playing %2 + - - You can manually re-trigger this prompt by deleting the new config directory: -%1 - + + Play Time: %1 + - - Migrating - + + Never Played + - - Migrating, this may take a while... - + + Version: %1 + + + + + Version: 1.0.0 + + + + + Installed SD Titles + Installerede SD-Titler + + + + Installed NAND Titles + Installerede NAND-Titler + + + + System Titles + Systemtitler + + + + Add New Game Directory + Tilføj Ny Spilmappe + + + + Favorites + @@ -8567,22 +9088,22 @@ p, li { white-space: pre-wrap; } Amiibo Settings - + Amiibo Info - + Series - + Type - + @@ -8592,52 +9113,52 @@ p, li { white-space: pre-wrap; } Amiibo Data - + Custom Name - + Owner - + Creation Date - + dd/MM/yyyy - + Modification Date - + dd/MM/yyyy - + Game Data - + Game Id - + Mount Amiibo - + @@ -8647,32 +9168,818 @@ p, li { white-space: pre-wrap; } File Path - + - + No game data present - - - - - The following amiibo data will be formatted: - + - The following game data will removed: - + The following amiibo data will be formatted: + - Set nickname and owner: - + The following game data will removed: + + Set nickname and owner: + + + + Do you wish to restore this amiibo? - + + + + + QtCommon::Content + + + Game Requires Firmware + + + + + The game you are trying to launch requires firmware to boot or to get past the opening menu. Please <a href='https://yuzu-mirror.github.io/help/quickstart'>dump and install firmware</a>, or press "OK" to launch anyways. + + + + + Installing Firmware... + + + + + + + + + Cancel + + + + + Firmware Install Failed + + + + + Firmware Install Succeeded + + + + + Firmware integrity verification failed! + + + + + + Verification failed for the following files: + +%1 + + + + + + Verifying integrity... + + + + + + Integrity verification succeeded! + + + + + + The operation completed successfully. + + + + + + Integrity verification failed! + + + + + File contents may be corrupt or missing. + + + + + Integrity verification couldn't be performed + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity. + + + + + Select Dumped Keys Location + + + + + Decryption Keys install succeeded + + + + + Decryption Keys install failed + + + + + Orphaned Profiles Detected! + + + + + UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br> + + + + + Really clear data? + + + + + Important data may be lost! + + + + + Are you REALLY sure? + + + + + Once deleted, your data will NOT come back! +Only do this if you're 100% sure you want to delete this data. + + + + + Clearing... + + + + + Select Export Location + + + + + %1.zip + + + + + + Zipped Archives (*.zip) + + + + + Exporting data. This may take a while... + + + + + Exporting + + + + + Exported Successfully + + + + + Data was exported successfully. + + + + + Export Cancelled + + + + + Export was cancelled by the user. + + + + + Export Failed + + + + + Ensure you have write permissions on the targeted directory and try again. + + + + + Select Import Location + + + + + Import Warning + + + + + All previous data in this directory will be deleted. Are you sure you wish to proceed? + + + + + Importing data. This may take a while... + + + + + Importing + + + + + Imported Successfully + + + + + Data was imported successfully. + + + + + Import Cancelled + + + + + Import was cancelled by the user. + + + + + Import Failed + + + + + Ensure you have read permissions on the targeted directory and try again. + + + + + QtCommon::FS + + + Linked Save Data + + + + + Save data has been linked. + + + + + Failed to link save data + + + + + Could not link directory: + %1 +To: + %2 + + + + + Already Linked + + + + + This title is already linked to Ryujinx. Would you like to unlink it? + + + + + Failed to unlink old directory + + + + + + OS returned error: %1 + + + + + Failed to copy save data + + + + + Unlink Successful + + + + + Successfully unlinked Ryujinx save data. Save data has been kept intact. + + + + + Could not find Ryujinx installation + + + + + Could not find a valid Ryujinx installation. This may typically occur if you are using Ryujinx in portable mode. + +Would you like to manually select a portable folder to use? + + + + + Ryujinx Portable Location + + + + + Not a valid Ryujinx directory + + + + + The specified directory does not contain valid Ryujinx data. + + + + + + Could not find Ryujinx save data + + + + + QtCommon::Game + + + Error Removing Contents + + + + + Error Removing Update + + + + + Error Removing DLC + + + + + + + + + + Successfully Removed + + + + + Successfully removed the installed base game. + + + + + The base game is not installed in the NAND and cannot be removed. + + + + + Successfully removed the installed update. + + + + + There is no update installed for this title. + + + + + There are no DLCs installed for this title. + + + + + Successfully removed %1 installed DLC. + + + + + + Error Removing Transferable Shader Cache + + + + + + A shader cache for this title does not exist. + + + + + Successfully removed the transferable shader cache. + + + + + Failed to remove the transferable shader cache. + + + + + Error Removing Vulkan Driver Pipeline Cache + + + + + Failed to remove the driver pipeline cache. + + + + + + Error Removing Transferable Shader Caches + + + + + Successfully removed the transferable shader caches. + + + + + Failed to remove the transferable shader cache directory. + + + + + + Error Removing Custom Configuration + + + + + A custom configuration for this title does not exist. + + + + + Successfully removed the custom game configuration. + + + + + Failed to remove the custom game configuration. + + + + + Reset Metadata Cache + + + + + The metadata cache is already empty. + + + + + The operation completed successfully. + + + + + The metadata cache couldn't be deleted. It might be in use or non-existent. + + + + + Create Shortcut + + + + + Do you want to launch the game in fullscreen? + + + + + Shortcut Created + + + + + Successfully created a shortcut to %1 + + + + + Shortcut may be Volatile! + + + + + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? + + + + + Failed to Create Shortcut + + + + + Failed to create a shortcut to %1 + + + + + Create Icon + + + + + Cannot create icon file. Path "%1" does not exist and cannot be created. + + + + + No firmware available + + + + + Please install firmware to use the home menu. + + + + + Home Menu Applet + + + + + Home Menu is not available. Please reinstall firmware. + + + + + QtCommon::Mod + + + Mod Name + + + + + What should this mod be called? + + + + + RomFS + + + + + ExeFS/Patch + + + + + Cheat + + + + + Mod Type + + + + + Could not detect mod type automatically. Please manually specify the type of mod you downloaded. + +Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods. + + + + + + Mod Extract Failed + + + + + Failed to create temporary directory %1 + + + + + Zip file %1 is empty + + + + + QtCommon::Path + + + Error Opening Shader Cache + + + + + Failed to create or open shader cache for this title, ensure your app data directory has write permissions. + + + + + QtCommon::StringLookup + + + Contains game save data. DO NOT REMOVE UNLESS YOU KNOW WHAT YOU'RE DOING! + + + + + Contains Vulkan and OpenGL pipeline caches. Generally safe to remove. + + + + + Contains updates and DLC for games. + + + + + Contains firmware and applet data. + + + + + Contains game mods, patches, and cheats. + + + + + Decryption Keys were successfully installed + + + + + Unable to read key directory, aborting + + + + + One or more keys failed to copy. + + + + + Verify your keys file has a .keys extension and try again. + + + + + Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. + + + + + Successfully installed firmware version %1 + + + + + Unable to locate potential firmware NCA files + + + + + Failed to delete one or more firmware files. + + + + + One or more firmware files failed to copy into NAND. + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. Restart Eden or re-install firmware. + + + + + Firmware missing. Firmware is required to run certain games and use the Home Menu. + + + + + Firmware reported as present, but was unable to be read. Check for decryption keys and redump firmware if necessary. + + + + + Eden has detected user data for the following emulators: + + + + + Would you like to migrate your data for use in Eden? +Select the corresponding button to migrate data from that emulator. +This may take a while. + + + + + Clearing shader cache is recommended for all users. +Do not uncheck unless you know what you're doing. + + + + + Keeps the old data directory. This is recommended if you aren't +space-constrained and want to keep separate data for the old emulator. + + + + + Deletes the old data directory. +This is recommended on devices with space constraints. + + + + + Creates a filesystem link between the old directory and Eden directory. +This is recommended if you want to share data between emulators. + + + + + Ryujinx title database does not exist. + + + + + Invalid header on Ryujinx title database. + + + + + Invalid magic header on Ryujinx title database. + + + + + Invalid byte alignment on Ryujinx title database. + + + + + No items found in Ryujinx title database. + + + + + Title %1 not found in Ryujinx title database. + @@ -8680,27 +9987,27 @@ p, li { white-space: pre-wrap; } Controller Applet - + Supported Controller Types: - + Players: - + 1 - 8 - + P4 - + @@ -8711,7 +10018,7 @@ p, li { white-space: pre-wrap; } - + Pro Controller Pro-Styringsenhed @@ -8724,7 +10031,7 @@ p, li { white-space: pre-wrap; } - + Dual Joycons Dobbelt-Joycon @@ -8737,7 +10044,7 @@ p, li { white-space: pre-wrap; } - + Left Joycon Venstre Joycon @@ -8750,7 +10057,7 @@ p, li { white-space: pre-wrap; } - + Right Joycon Højre Joycon @@ -8764,49 +10071,49 @@ p, li { white-space: pre-wrap; } Use Current Config - + P2 - + P1 - + - + Handheld Håndholdt P3 - + P7 - + P8 - + P5 - + P6 - + @@ -8842,7 +10149,7 @@ p, li { white-space: pre-wrap; } Create - + @@ -8897,74 +10204,74 @@ p, li { white-space: pre-wrap; } Not enough controllers - + - + GameCube Controller GameCube-Styringsenhed - + Poke Ball Plus - + - + NES Controller - + - + SNES Controller - + - + N64 Controller - + - + Sega Genesis - + QtErrorDisplay - - - + + + Error Code: %1-%2 (0x%3) - + - + An error has occurred. Please try again or contact the developer of the software. - + - + An error occurred on %1 at %2. Please try again or contact the developer of the software. - + - + An error has occurred. %1 %2 - + QtProfileSelectionDialog - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -8972,14 +10279,14 @@ Please try again or contact the developer of the software. %2 - + Users Brugere Profile Creator - + @@ -8990,57 +10297,57 @@ Please try again or contact the developer of the software. Profile Icon Editor - + Profile Nickname Editor - + Who will receive the points? - + Who is using Nintendo eShop? - + Who is making this purchase? - + Who is posting? - + Select a user to link to a Nintendo Account. - + Change settings for which user? - + Format data for which user? - + Which user will be transferred to another console? - + Send save data for which user? - + @@ -9058,175 +10365,103 @@ Please try again or contact the developer of the software. Enter Text - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - + - - + + OK OK - + Cancel Afbryd + + RyujinxDialog + + + Ryujinx Link + + + + + Linking save data to Ryujinx lets both Ryujinx and Eden reference the same save files for your games. + +By selecting "From Eden", previous save data stored in Ryujinx will be deleted, and vice versa for "From Ryujinx". + + + + + From Eden + + + + + From Ryujinx + + + + + Cancel + + + + + Failed to link save data + + + + + OS returned error: %1 + + + SequenceDialog Enter a hotkey - + - WaitTreeCallstack + SetPlayTimeDialog - - Call stack - - - - - WaitTreeSynchronizationObject - - - [%1] %2 - + + Set Play Time Data + - - waited by no thread - ventet af ingen tråde - - - - WaitTreeThread - - - runnable - + + Hours: + - - paused - sat på pause + + Minutes: + - - sleeping - slumrer + + Seconds: + - - waiting for IPC reply - venter på IPC-svar - - - - waiting for objects - venter på objekter - - - - waiting for condition variable - - - - - waiting for address arbiter - - - - - waiting for suspend resume - - - - - waiting - - - - - initialized - - - - - terminated - - - - - unknown - - - - - PC = 0x%1 LR = 0x%2 - PC = 0x%1 LR = 0x%2 - - - - ideal - idéel - - - - core %1 - kerne %1 - - - - processor = %1 - processor = %1 - - - - affinity mask = %1 - - - - - thread id = %1 - tråd-id = %1 - - - - priority = %1(current) / %2(normal) - prioritet = %1(aktuel) / %2(normal) - - - - last running ticks = %1 - - - - - WaitTreeThreadList - - - waited by thread - ventet af tråd - - - - WaitTreeWidget - - - &Wait Tree - + + Total play time reached maximum. + diff --git a/dist/languages/de.ts b/dist/languages/de.ts index 538994902d..bed5d5e94d 100644 --- a/dist/languages/de.ts +++ b/dist/languages/de.ts @@ -1,25 +1,15 @@ - - - + AboutDialog - - About yuzu - Über yuzu - - - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - - About eden - + About Eden + Über Eden - <html><head/><body><p><span style=" font-size:28pt;">eden</span></p></body></html> - + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> @@ -34,70 +24,50 @@ p, li { white-space: pre-wrap; } hr { height: 1px; border-width: 0; } li.unchecked::marker { content: "\2610"; } li.checked::marker { content: "\2612"; } -</style></head><body style=" font-family:'Adwaita Sans'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> - +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> + - <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">This software should not be used to play games you have not legally obtained.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu ist ein experimenteller, quelloffener Emulator für Nintendo Switch, lizensiert unter GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Diese Software sollte nicht dazu verwendet werden, Spiele zu spielen, die du nicht legal erhalten hast.</span></p></body></html> - - - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Webseite</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Quellcode</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Mitwirkende</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Lizenz</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. eden is not affiliated with Nintendo in any way.</span></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; ist ein Warenzeichen von Nintendo. yuzu ist in keiner Weise mit Nintendo verbunden.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. Eden is not affiliated with Nintendo in any way.</span></p></body></html> + CalibrationConfigurationDialog - + Communicating with the server... Verbindung mit dem Server wird hergestellt... - + Cancel Abbrechen - + Touch the top left corner <br>of your touchpad. Tippe auf die obere linke Ecke <br>deines Touchpads. - + Now touch the bottom right corner <br>of your touchpad. Tippe nun auf die untere rechte Ecke <br>deines Touchpads. - + Configuration completed! Konfiguration abgeschlossen! - + OK OK @@ -120,78 +90,78 @@ p, li { white-space: pre-wrap; } Nachricht senden - + Members Mitglieder - + %1 has joined %1 ist beigetreten - + %1 has left %1 ist gegangen - + %1 has been kicked %1 wurde gekickt - + %1 has been banned %1 wurde gebannt - + %1 has been unbanned %1 wurde entbannt - + View Profile Profil ansehen - - + + Block Player Spieler blockieren - + When you block a player, you will no longer receive chat messages from them.<br><br>Are you sure you would like to block %1? Wenn du einen Spieler blockierst, wirst du keine Chatnachricht mehr von Ihm erhalten. <br><br> Bist du sicher mit der Blockierung von %1? - + Kick Kicken - + Ban Bannen - + Kick Player Spieler kicken - + Are you sure you would like to <b>kick</b> %1? Bist du sicher, dass du %1? <b>kicken</b> möchtest? - + Ban Player Spieler bannen - + Are you sure you would like to <b>kick and ban</b> %1? This would ban both their forum username and their IP address. @@ -225,17 +195,17 @@ Dies würde deren Forum-Benutzernamen und deren IP-Adresse sperren. ClientRoomWindow - + Connected Verbunden - + Disconnected Verbindung getrennt - + %1 - %2 (%3/%4 members) - connected %1 - %2 (%3/%4 Mitglieder) - verbunden @@ -258,14 +228,10 @@ Dies würde deren Forum-Benutzernamen und deren IP-Adresse sperren.Report Game Compatibility Kompatibilität des Spiels melden - - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of yuzu you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected yuzu account</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Solltest du einen Bericht zur </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu-Kompatibilitätsliste</span></a><span style=" font-size:10pt;"> beitragen wollen, werden die folgenden Informationen gesammelt und auf der yuzu-Webseite dargestellt:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware-Informationen (CPU / GPU / Betriebssystem)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Welche yuzu-Version du benutzt</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Den verbundenen yuzu-Account</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">eden Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of eden you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected eden account</li></ul></body></html> - + @@ -330,7 +296,7 @@ Dies würde deren Forum-Benutzernamen und deren IP-Adresse sperren. Major The game has major graphical errors - Schwerwiegend  Das Spiel hat schwerwiegende graphische Fehler + Schwerwiegend  Das Spiel hat schwerwiegende graphische Fehler @@ -340,7 +306,7 @@ Dies würde deren Forum-Benutzernamen und deren IP-Adresse sperren. None Everything is rendered as it looks on the Nintendo Switch - Keine  Alles wird genau so gerendert wie es auf der Nintendo Switch aussieht + Keine  Alles wird genau so gerendert wie es auf der Nintendo Switch aussieht @@ -373,22 +339,22 @@ Dies würde deren Forum-Benutzernamen und deren IP-Adresse sperren.Vielen Dank für deinen Beitrag! - + Submitting Absenden - + Communication error Kommunikationsfehler - + An error occurred while sending the Testcase Beim Senden des Berichtes ist ein Fehler aufgetreten. - + Next Weiter @@ -396,1535 +362,1876 @@ Dies würde deren Forum-Benutzernamen und deren IP-Adresse sperren. ConfigurationShared - + % % - + Amiibo editor - + Amiibo Editor - + Controller configuration - + Controllerkonfiguration - + Data erase - + - + Error Fehler - + Net connect - + - + Player select - + - + Software keyboard Software-Tastatur - + Mii Edit - + - + Online web - + - + Shop - + - + Photo viewer - + - + Offline web - + - + Login share - + - + Wifi web auth - + - + My page - + - + + Enable Overlay Applet + + + + + Enables Horizon's built-in overlay applet. Press and hold the home button for 1 second to show it. + + + + Output Engine: Ausgabe-Engine: - + Output Device: Ausgabegerät: - + Input Device: Eingabegerät: - + Mute audio Audio stummschalten - + Volume: Lautstärke: - + Mute audio when in background Audio im Hintergrund stummschalten - + Multicore CPU Emulation Multicore-CPU-Emulation - - This option increases CPU emulation thread use from 1 to the Switch’s maximum of 4. -This is mainly a debug option and shouldn’t be disabled. - + + This option increases CPU emulation thread use from 1 to the maximum of 4. +This is mainly a debug option and shouldn't be disabled. + Diese Option erhöht die Anzahl der genutzten CPU Threads von 1 auf ein Maximum von 4. +Dies ist vor allem eine Debug-Option und sollte nicht deaktiviert werden. - + Memory Layout Speicher-Layout - - Increases the amount of emulated RAM from the stock 4GB of the retail Switch to the developer kit's 8/6GB. -It’s doesn’t improve stability or performance and is intended to let big texture mods fit in emulated RAM. -Enabling it will increase memory use. It is not recommended to enable unless a specific game with a texture mod needs it. - + + Increases the amount of emulated RAM. +Doesn't affect performance/stability but may allow HD texture mods to load. + - + Limit Speed Percent Geschwindigkeit auf % festlegen - - Controls the game's maximum rendering speed, but it’s up to each game if it runs faster or not. + + Controls the game's maximum rendering speed, but it's up to each game if it runs faster or not. 200% for a 30 FPS game is 60 FPS, and for a 60 FPS game it will be 120 FPS. Disabling it means unlocking the framerate to the maximum your PC can reach. - + Kontrolliert die Wiederholrate des Spiels, obwohl jedes Spiel selber entscheiden kann ob es schneller läuft oder nicht. +200% für ein 30 FPS Spiel wären 60 FPS, und für ein 60 FPS +Spiel wären es 120 FPS. +Deaktivieren bedeutet das keine Wiederholratenbegrenzung stattfindet. - + + Turbo Speed + Turbo Geschwindigkeit + + + + When the Turbo Speed hotkey is pressed, the speed will be limited to this percentage. + Falls der Turbo Knopf gedrückt wird, die Geschwindigkeit wird limitiert auf diese Prozentzahl. + + + + Slow Speed + Langsame Geschwindigkeit + + + + When the Slow Speed hotkey is pressed, the speed will be limited to this percentage. + Falls der Langsam Knopf gedrückt wird, die Geschwindigkeit wird limitiert auf diese Prozentzahl. + + + Synchronize Core Speed - + Synchronisiere Kern Geschwindigkeit - - Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). -Compatibility varies by game; many (especially older ones) may not respond well. + + Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). Can help reduce stuttering at lower framerates. - + - + Accuracy: Genauigkeit der Emulation: - - This setting controls the accuracy of the emulated CPU. -Don't change this unless you know what you are doing. - + + Change the accuracy of the emulated CPU (for debugging only). + Ändere die Genauigkeit der emulierten CPU (ausschließlich für debugging). - - + + Backend: Backend: - - Fast CPU Time - + + CPU Overclock + CPU Übertaktung - + Overclocks the emulated CPU to remove some FPS limiters. Weaker CPUs may see reduced performance, and certain games may behave improperly. Use Boost (1700MHz) to run at the Switch's highest native clock, or Fast (2000MHz) to run at 2x clock. - + Zwingt die emulierte CPU, mit höherer Taktrate zu laufen, wodurch bestimmte FPS-Begrenzungen reduziert werden. Schwächere CPUs haben vielleicht reduzierte Leistung, und manche Spiele haben vielleicht Probleme. +Verwende Boost (1700MHz), um mit der höchsten nativen Taktrate der Switch zu laufen, oder Fast (2000MHz), um mit der doppelten Taktrate zu laufen. - + + Custom CPU Ticks + + + + + Set a custom value of CPU ticks. Higher values can increase performance, but may cause deadlocks. A range of 77-21000 is recommended. + + + + + Enable Host MMU Emulation (fastmem) + Host-MMU-Emulation aktivieren (fastmem) + + + + This optimization speeds up memory accesses by the guest program. +Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU. +Disabling this forces all memory accesses to use Software MMU Emulation. + Diese Optimierung beschleunigt Speicherzugriffe durch das Gastprogramm. Wenn aktiviert, erfolgen Speicherlese- und -schreibvorgänge des Gastes direkt im Speicher und nutzen die MMU des Hosts. Das Deaktivieren erzwingt die Verwendung der Software-MMU-Emulation für alle Speicherzugriffe. + + + Unfuse FMA (improve performance on CPUs without FMA) Unfuse FMA (erhöht Leistung auf CPUs ohne FMA) - + This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support. Diese Option verbessert die Geschwindigkeit, indem die Genauigkeit von "Fused-Multiply-Add"-Anweisungen auf CPUs ohne native FMA-Unterstützung reduziert wird. - + Faster FRSQRTE and FRECPE Schnelleres FRSQRTE und FRECPE - + This option improves the speed of some approximate floating-point functions by using less accurate native approximations. Diese Option verbessert die Geschwindigkeit einiger ungenauen Fließkomma-Funktionen, indem weniger genaue native Annäherungen benutzt werden. - + Faster ASIMD instructions (32 bits only) Schnellere ASIMD-Instruktionen (nur 32-Bit) - + This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes. Diese Option verbessert die Geschwindigkeit von 32-Bit-ASIMD-Fließkomma-Funktionen, indem diese mit inkorrekten Rundungsmodi ausgeführt werden. - + Inaccurate NaN handling Ungenaue NaN-Verarbeitung - + This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions. - + - + Disable address space checks Adressraumprüfungen deaktivieren - - This option improves speed by eliminating a safety check before every memory read/write in guest. -Disabling it may allow a game to read/write the emulator's memory. - + + This option improves speed by eliminating a safety check before every memory operation. +Disabling it may allow arbitrary code execution. + - + Ignore global monitor Globalen Monitor ignorieren - + 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. - + - + API: API: - - Switches between the available graphics APIs. -Vulkan is recommended in most cases. - + + Changes the output graphics API. +Vulkan is recommended. + - + Device: Gerät: - - This setting selects the GPU to use with the Vulkan backend. - + + This setting selects the GPU to use (Vulkan only). + Diese Einstellung wählt aus welche Grafikkarte benutzt werden soll (Nur Vulkan). - - Shader Backend: - Shader-Backend: - - - - The shader backend to use for the OpenGL renderer. -GLSL is the fastest in performance and the best in rendering accuracy. -GLASM is a deprecated NVIDIA-only backend that offers much better shader building performance at the cost of FPS and rendering accuracy. -SPIR-V compiles the fastest, but yields poor results on most GPU drivers. - - - - + Resolution: Auflösung: - - Forces the game to render at a different resolution. -Higher resolutions require much more VRAM and bandwidth. -Options lower than 1X can cause rendering issues. - + + Forces to render at a different resolution. +Higher resolutions require more VRAM and bandwidth. +Options lower than 1X can cause artifacts. + - + Window Adapting Filter: Bildschirmanpassungsfilter: - + FSR Sharpness: FSR-Schärfe - - Determines how sharpened the image will look while using FSR’s dynamic contrast. - + + Determines how sharpened the image will look using FSR's dynamic contrast. + - + Anti-Aliasing Method: Kantenglättungs-Methode: - + The anti-aliasing method to use. SMAA offers the best quality. -FXAA has a lower performance impact and can produce a better and more stable picture under very low resolutions. - +FXAA can produce a more stable picture in lower resolutions. + - + Fullscreen Mode: Vollbild-Modus: - + The method used to render the window in fullscreen. Borderless offers the best compatibility with the on-screen keyboard that some games request for input. Exclusive fullscreen may offer better performance and better Freesync/Gsync support. - + - + Aspect Ratio: Seitenverhältnis: - - Stretches the game to fit the specified aspect ratio. -Switch games only support 16:9, so custom game mods are required to get other ratios. + + Stretches the renderer to fit the specified aspect ratio. +Most games only support 16:9, so modifications are required to get other ratios. Also controls the aspect ratio of captured screenshots. - + - - Use disk pipeline cache - Disk-Pipeline-Cache verwenden + + Use persistent pipeline cache + - + Allows saving shaders to storage for faster loading on following game boots. Disabling it is only intended for debugging. - + - - Optimize SPIRV output shader - + + Optimize SPIRV output + Optimiere SPIRV-Ausgabe - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. This feature is experimental. - + - - Use asynchronous GPU emulation - Asynchrone GPU-Emulation verwenden - - - - Uses an extra CPU thread for rendering. -This option should always remain enabled. - - - - + NVDEC emulation: NVDEC-Emulation: - + Specifies how videos should be decoded. It can either use the CPU or the GPU for decoding, or perform no decoding at all (black screen on videos). In most cases, GPU decoding provides the best performance. - + - + ASTC Decoding Method: ASTC-Dekodier-Methode: - + This option controls how ASTC textures should be decoded. -CPU: Use the CPU for decoding, slowest but safest method. -GPU: Use the GPU's compute shaders to decode ASTC textures, recommended for most games and users. -CPU Asynchronously: Use the CPU to decode ASTC textures as they arrive. Completely eliminates ASTC decoding -stuttering at the cost of rendering issues while the texture is being decoded. - +CPU: Use the CPU for decoding. +GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). +CPU Asynchronously: Use the CPU to decode ASTC textures on demand. EliminatesASTC decoding +stuttering but may present artifacts. + - + ASTC Recompression Method: ASTC-Rekompression-Methode: - - Almost all desktop and laptop dedicated GPUs lack support for ASTC textures, forcing the emulator to decompress to an intermediate format any card supports, RGBA8. -This option recompresses RGBA8 to either the BC1 or BC3 format, saving VRAM but negatively affecting image quality. - + + Most GPUs lack support for ASTC textures and must decompress to anintermediate format: RGBA8. +BC1/BC3: The intermediate format will be recompressed to BC1 or BC3 format, + saving VRAM but degrading image quality. + - + + Frame Pacing Mode (Vulkan only) + + + + + Controls how the emulator manages frame pacing to reduce stuttering and make the frame rate smoother and more consistent. + + + + VRAM Usage Mode: - + VRAM-Nutzungs Modus: - - Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. Has no effect on integrated graphics. Aggressive mode may severely impact the performance of other applications such as recording software. - + + Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. +Aggressive mode may impact performance of other applications such as recording software. + - + + Skip CPU Inner Invalidation + CPU-interne Invalidierung überspringen + + + + Skips certain cache invalidations during memory updates, reducing CPU usage and improving latency. This may cause soft-crashes. + Überspringt bestimmte Cache-Invalidierungen auf CPU-Seite während Speicherupdates, reduziert die CPU-Auslastung und verbessert die Leistung. Dies verursacht vielleicht Abstürze. + + + VSync Mode: VSync-Modus: - + FIFO (VSync) does not drop frames or exhibit tearing but is limited by the screen refresh rate. -FIFO Relaxed is similar to FIFO but allows tearing as it recovers from a slow down. +FIFO Relaxed 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. - FIFO (VSync) lässt keine Bilder fallen und zeigt kein Tearing, ist aber durch die Bildwiederholfrequenz begrenzt. -FIFO Relaxed ist ähnlich wie FIFO, lässt aber Tearing zu, wenn es sich von einer Verlangsamung erholt. -Mailbox kann eine geringere Latenz als FIFO haben und zeigt kein Tearing, kann aber Bilder fallen lassen. -Immediate (keine Synchronisierung) zeigt direkt, was verfügbar ist und kann Tearing zeigen. +Immediate (no synchronization) presents whatever is available and can exhibit tearing. + - + + Sync Memory Operations + Speicheroperationen synchronisieren + + + + Ensures data consistency between compute and memory operations. +This option fixes issues in games, but may degrade performance. +Unreal Engine 4 games often see the most significant changes thereof. + + + + Enable asynchronous presentation (Vulkan only) Aktiviere asynchrone Präsentation (Nur Vulkan) - + Slightly improves performance by moving presentation to a separate CPU thread. - + - + Force maximum clocks (Vulkan only) Erzwinge Maximale Taktrate (Vulkan only) - + Runs work in the background while waiting for graphics commands to keep the GPU from lowering its clock speed. Lässt im Hintergrund die GPU Aufgaben erledigen während diese auf Grafikbefehle wartet, damit diese nicht herunter taktet. - + Anisotropic Filtering: Anisotrope Filterung: - + Controls the quality of texture rendering at oblique angles. -It’s a light setting and safe to set at 16x on most GPUs. - +Safe to set at 16x on most GPUs. + - - Accuracy Level: - Genauigkeit der Emulation: + + GPU Mode: + GPU-Modus: - - GPU emulation accuracy. -Most games render fine with Normal, but High is still required for some. -Particles tend to only render correctly with High accuracy. -Extreme should only be used for debugging. -This option can be changed while playing. -Some games may require booting on high to render properly. - + + Controls the GPU emulation mode. +Most games render fine with Fast or Balanced modes, but Accurate is still required for some. +Particles tend to only render correctly with Accurate mode. + Steuert den GPU-Emulationsmodus. Die meisten Spiele werden im Modus Schnell oder Ausgeglichen gut gerendert, für einige ist jedoch weiterhin der Modus Akkurat erforderlich. Partikel werden in der Regel nur im Modus Akkurat korrekt gerendert. - - Use asynchronous shader building (Hack) - Aktiviere asynchrones Shader-Kompilieren. (Hack) + + DMA Accuracy: + DMA-Genauigkeit: - - Enables asynchronous shader compilation, which may reduce shader stutter. -This feature is experimental. - + + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. + - Use Fast GPU Time (Hack) - Verwende Schnelle GPU-Zeit (Hack) + + Enable asynchronous shader compilation + Aktiviere asynchrones Shader-Kompilieren - Enables Fast GPU Time. This option will force most games to run at their highest native resolution. - Aktiviert Schnelle GPU-Zeit. Diese Option zwingt die meisten Spiele dazu, mit ihrer höchsten nativen Auflösung zu laufen. + + May reduce shader stutter. + Reduziert vielleicht Shader stottern. - + + Fast GPU Time + Schnelle GPU-Zeit + + + + Overclocks the emulated GPU to increase dynamic resolution and render distance. +Use 256 for maximal performance and 512 for maximal graphics fidelity. + + + + + GPU Unswizzle + GPU-Unswizzle + + + + Accelerates BCn 3D texture decoding using GPU compute. +Disable if experiencing crashes or graphical glitches. + + + + + GPU Unswizzle Max Texture Size + GPU-Unswizzle max. Texturgröße + + + + Sets the maximum size (MiB) for GPU-based texture unswizzling. +While the GPU is faster for medium and large textures, the CPU may be more efficient for very small ones. +Adjust this to find the balance between GPU acceleration and CPU overhead. + Legt die maximale Größe (MB) für GPU-basiertes Textur-Unswizzling fest. +Während die GPU für mittelgroße und große Texturen schneller ist, kann die CPU bei sehr kleinen Texturen effizienter sein. +Passen Sie diesen Wert an, um das Gleichgewicht zwischen GPU-Beschleunigung und CPU-Overhead zu finden. + + + + GPU Unswizzle Stream Size + GPU-Unswizzle-Streamgröße + + + + Sets the maximum amount of texture data (in MiB) processed per frame. +Higher values can reduce stutter during texture loading but may impact frame consistency. + + + + + GPU Unswizzle Chunk Size + GPU-Unswizzle Chunk-Größe + + + + Determines the number of depth slices processed in a single dispatch. +Increasing this can improve throughput on high-end GPUs but may cause TDR or driver timeouts on weaker hardware. + + + + Use Vulkan pipeline cache Vulkan-Pipeline-Cache verwenden - + Enables GPU vendor-specific pipeline cache. This option can improve shader loading time significantly in cases where the Vulkan driver does not store pipeline cache files internally. - + - + Enable Compute Pipelines (Intel Vulkan Only) Aktiviere Compute-Pipelines (Nur Intel Vulkan) - - Enable compute pipelines, required by some games. -This setting only exists for Intel proprietary drivers, and may crash if enabled. + + 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. - Aktiviere Compute-Pipelines, die für einige Spiele erforderlich sind. -Diese Einstellung existiert nur für proprietäre Intel-Treiber, und kann zu Abstürzen führen. -Compute-Pipelines sind für alle anderen Treiber immer aktiviert. + Wird von einigen Spielen benötigt. +Diese Einstellung ist nur für proprietäre Intel-Treiber und kann bei Aktivierung zu Abstürzen führen. +Bei allen anderen Treibern sind Compute-Pipelines immer aktiviert - + Enable Reactive Flushing Aktiviere Reactives Flushing - + Uses reactive flushing instead of predictive flushing, allowing more accurate memory syncing. Benutzt Reactive-Flushing anstatt Predictive-Flushing, welches akkurateres Speicher-Synchronisieren erlaubt. - + Sync to framerate of video playback Synchronisiere mit Bildrate von Video-Wiedergaben - + Run the game at normal speed during video playback, even when the framerate is unlocked. Lasse das Spiel in der normalen Geschwindigkeit abspielen, trotz freigeschalteter Bildrate (FPS) - + Barrier feedback loops Barrier-Feedback-Loops - + Improves rendering of transparency effects in specific games. Verbessert das Rendering von Transparenzeffekten in bestimmten Spielen. - + + Enable buffer history + Aktiviere Puffer Verlauf + + + + Enables access to previous buffer states. +This option may improve rendering quality and performance consistency in some games. + + + + + Fix bloom effects + Behebt Boomeffekte + + + + Removes bloom in Burnout. + Entfernt Bloom in Burnout. + + + + Enable Legacy Rescale Pass + + + + + May fix rescale issues in some games by relying on behavior from the previous implementation. +Legacy behavior workaround that fixes line artifacts on AMD and Intel GPUs, and grey texture flicker on Nvidia GPUs in Luigis Mansion 3. + + + + + Extended Dynamic State + + + + + Controls the number of features that can be used in Extended Dynamic State. +Higher states allow for more features and can increase performance, but may cause additional graphical issues. + + + + + Vertex Input Dynamic State + + + + + Enables vertex input dynamic state feature for better quality and performance. + + + + + Sample Shading + + + + + Allows the fragment shader to execute per sample in a multi-sampled fragment instead of once per fragment. Improves graphics quality at the cost of performance. +Higher values improve quality but degrade performance. + + + + RNG Seed RNG-Seed - + Controls the seed of the random number generator. -Mainly used for speedrunning purposes. - +Mainly used for speedrunning. + - + Device Name Gerätename - - The name of the emulated Switch. - + + The name of the console. + Der Name der Konsole. - + Custom RTC Date: - + Benutzerdefinierte Echtzeituhrdatum: - - This option allows to change the emulated clock of the Switch. + + This option allows to change the clock of the console. Can be used to manipulate time in games. - + Diese Option erlaubt die Änderung der Uhr der Konsole. +Kann benutzt werden um Zeit in Spielen zu manipulieren. - + + The number of seconds from the current unix time + + + + Language: Sprache: - - Note: this can be overridden when region setting is auto-select - Anmerkung: Diese Einstellung kann überschrieben werden, falls deine Region auf "auto-select" eingestellt ist. + + This option can be overridden when region setting is auto-select + Diese Einstellung kann überschrieben werden, falls deine Region auf Automatisch eingestellt ist. - + Region: Region: - - The region of the emulated Switch. - + + The region of the console. + Die Region der Konsole. - + Time Zone: Zeitzone: - - The time zone of the emulated Switch. - + + The time zone of the console. + Die Zeitzone der Konsole. - + Sound Output Mode: Tonausgangsmodus: - + Console Mode: Konsolenmodus: - - Selects if the console is emulated in Docked or Handheld mode. + + Selects if the console is in Docked or Handheld mode. Games will change their resolution, details and supported controllers and depending on this setting. Setting to Handheld can help improve performance for low end systems. - + - - Prompt for user on game boot - Beim Spielstart nach Nutzer fragen + + Unit Serial + - - Pause emulation when in background - Emulation im Hintergrund pausieren + + Battery Serial + - - Fast GPU Time (Hack) - + + Debug knobs + - - Overclocks the emulated GPU to increase dynamic resolution and render distance. -Use 128 for maximal performance and 512 for maximal graphics fidelity. - + + Prompt for user profile on boot + Beim Start nach Nutzer fragen - - Extended Dynamic State - + + Useful if multiple people use the same PC. + Nützlich falls mehrere Personen den gleichen Computer benutzen. - - Enables the VkExtendedDynamicState* extensions. -Higher dynamic states will generally improve performance, but may cause issues on certain games or devices. - + + Pause when not in focus + Pausiere falls nicht im Fokus - - Provoking Vertex - + + Pauses emulation when focusing on other windows. + Pausiere Emulation falls andere Fenster im Fokus/Vordergrund sind. - - Improves lighting and vertex handling in certain games. -Only Vulkan 1.0+ devices support this extension. - - - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - - Ask to select a user profile on each boot, useful if multiple people use eden on the same PC. - - - - - This setting pauses eden when focusing other windows. - - - - + Confirm before stopping emulation Vor dem Stoppen der Emulation bestätigen - - This setting overrides game prompts asking to confirm stopping the game. + + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - + - + Hide mouse on inactivity Mauszeiger verstecken - - This setting hides the mouse after 2.5s of inactivity. - + + Hides the mouse after 2.5s of inactivity. + Den Mauszeiger nach 2,5 Sekunden Inaktivität verstecken. - + Disable controller applet Deaktiviere Controller-Applet - - Forcibly disables the use of the controller applet by guests. -When a guest attempts to open the controller applet, it is immediately closed. - + + Forcibly disables the use of the controller applet in emulated programs. +When a program attempts to open the controller applet, it is immediately closed. + - + Check for updates - + Auf Updates überprüfen - + Whether or not to check for updates upon startup. - + Ob nach Updates während des Startens gesucht werden soll. - + Enable Gamemode GameMode aktivieren - + + Force X11 as Graphics Backend + + + + Custom frontend - + Benutzerdefinierte Frontend - + Real applet - + Echtes Applet - + Never - + Niemals - + On Load - + Beim Laden - + Always - + Immer - + CPU CPU - + GPU GPU - + CPU Asynchronous CPU Asynchron - + Uncompressed (Best quality) Unkomprimiert (Beste Qualität) - + BC1 (Low quality) BC1 (Niedrige Qualität) - + BC3 (Medium quality) BC3 (Mittlere Qualität) - - Conservative - - - - - Aggressive - - - - - OpenGL - OpenGL - - - - Vulkan - Vulkan - - - - Null - Null - - - - GLSL - GLSL - - - - GLASM (Assembly Shaders, NVIDIA Only) - GLASM (Assembly Shaders, Nur NVIDIA) - - - - SPIR-V (Experimental, AMD/Mesa Only) - - - - - Normal - Normal - - - - High - Hoch - - - - Extreme - Extrem - - - + + Auto Auto - + + 30 FPS + 30 FPS + + + + 60 FPS + 60 FPS + + + + 90 FPS + 90 FPS + + + + 120 FPS + 120 FPS + + + + Conservative + Konservativ + + + + Aggressive + Aggressiv + + + + Vulkan + Vulkan + + + + OpenGL GLSL + + + + + OpenGL GLASM (Assembly Shaders, NVIDIA Only) + + + + + OpenGL SPIR-V (Experimental, AMD/Mesa Only) + + + + + Null + Null + + + + Fast + Schnell + + + + Balanced + Ausgeglichen + + + + Accurate Akkurat - - Unsafe - Unsicher - - - - Paranoid (disables most optimizations) - Paranoid (deaktiviert die meisten Optimierungen) - - - - Dynarmic - Dynarmic - - - - NCE - NCE - - - - Borderless Windowed - Rahmenloses Fenster - - - - Exclusive Fullscreen - Exklusiver Vollbildmodus - - - - No Video Output - Keine Videoausgabe - - - - CPU Video Decoding - CPU Video Dekodierung - - - - GPU Video Decoding (Default) - GPU Video Dekodierung (Standard) - - - - 0.25X (180p/270p) [EXPERIMENTAL] - - - - - 0.5X (360p/540p) [EXPERIMENTAL] - 0,5X (360p/540p) [EXPERIMENTELL] - - - - 0.75X (540p/810p) [EXPERIMENTAL] - 0,75X (540p/810p) [EXPERIMENTELL] - - - - 1X (720p/1080p) - 1X (720p/1080p) - - - - 1.5X (1080p/1620p) [EXPERIMENTAL] - 1,5X (1080p/1620p) [EXPERIMENTELL] - - - - 2X (1440p/2160p) - 2X (1440p/2160p) - - - - 3X (2160p/3240p) - 3X (2160p/3240p) - - - - 4X (2880p/4320p) - 4X (2880p/4320p) - - - - 5X (3600p/5400p) - 5X (3600p/5400p) - - - - 6X (4320p/6480p) - 6X (4320p/6480p) - - - - 7X (5040p/7560p) - 7X (5040p/7560p) - - - - 8X (5760p/8640p) - 8X (5760p/8640p) - - - - Nearest Neighbor - Nearest-Neighbor - - - - Bilinear - Bilinear - - - - Bicubic - Bikubisch - - - - Gaussian - Gaussian - - - - ScaleForce - ScaleForce - - - - AMD FidelityFX™️ Super Resolution - AMD FidelityFX™️Super Resolution - - - - Area - - - - - None - Keiner - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Default (16:9) - Standard (16:9) - - - - Force 4:3 - Erzwinge 4:3 - - - - Force 21:9 - Erzwinge 21:9 - - - - Force 16:10 - Erzwinge 16:10 - - - - Stretch to Window - Auf Fenster anpassen - - - - Automatic - Automatisch - - - + + Default Standard - + + Unsafe (fast) + Unsicher (schnell) + + + + Safe (stable) + Sicher (stabil) + + + + Unsafe + Unsicher + + + + Paranoid (disables most optimizations) + Paranoid (deaktiviert die meisten Optimierungen) + + + + Debugging + Debugging + + + + Dynarmic + Dynarmic + + + + NCE + NCE + + + + Borderless Windowed + Rahmenloses Fenster + + + + Exclusive Fullscreen + Exklusiver Vollbildmodus + + + + No Video Output + Keine Videoausgabe + + + + CPU Video Decoding + CPU Video Dekodierung + + + + GPU Video Decoding (Default) + GPU Video Dekodierung (Standard) + + + + 0.25X (180p/270p) [EXPERIMENTAL] + 0.25X (180p/270p) [EXPERIMENTELL] + + + + 0.5X (360p/540p) [EXPERIMENTAL] + 0,5X (360p/540p) [EXPERIMENTELL] + + + + 0.75X (540p/810p) [EXPERIMENTAL] + 0,75X (540p/810p) [EXPERIMENTELL] + + + + 1X (720p/1080p) + 1X (720p/1080p) + + + + 1.25X (900p/1350p) [EXPERIMENTAL] + 1.25X (900p/1350p) [EXPERIMENTELL] + + + + 1.5X (1080p/1620p) [EXPERIMENTAL] + 1,5X (1080p/1620p) [EXPERIMENTELL] + + + + 2X (1440p/2160p) + 2X (1440p/2160p) + + + + 3X (2160p/3240p) + 3X (2160p/3240p) + + + + 4X (2880p/4320p) + 4X (2880p/4320p) + + + + 5X (3600p/5400p) + 5X (3600p/5400p) + + + + 6X (4320p/6480p) + 6X (4320p/6480p) + + + + 7X (5040p/7560p) + 7X (5040p/7560p) + + + + 8X (5760p/8640p) + 8X (5760p/8640p) + + + + Nearest Neighbor + Nearest-Neighbor + + + + Bilinear + Bilinear + + + + Bicubic + Bikubisch + + + + Gaussian + Gaussian + + + + Lanczos + + + + + ScaleForce + ScaleForce + + + + AMD FidelityFX Super Resolution + + + + + Area + + + + + MMPX + + + + + Zero-Tangent + + + + + B-Spline + + + + + Mitchell + + + + + Spline-1 + + + + + + None + Keiner + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Default (16:9) + Standard (16:9) + + + + Force 4:3 + Erzwinge 4:3 + + + + Force 21:9 + Erzwinge 21:9 + + + + Force 16:10 + Erzwinge 16:10 + + + + Stretch to Window + Auf Fenster anpassen + + + + Automatic + Automatisch + + + 2x 2x - + 4x 4x - + 8x 8x - + 16x 16x - + + 32x + + + + + 64x + + + + Japanese (日本語) Japanisch (日本語) - + American English Amerikanisches Englisch - + French (français) Französisch (français) - + German (Deutsch) Deutsch (German) - + Italian (italiano) Italienisch (italiano) - + Spanish (español) Spanisch (español) - + Chinese Chinesisch - + Korean (한국어) Koreanisch (한국어) - + Dutch (Nederlands) Niederländisch (Nederlands) - + Portuguese (português) Portugiesisch (português) - + Russian (Русский) Russisch (Русский) - + Taiwanese Taiwanesisch - + British English Britisches Englisch - + Canadian French Kanadisches Französisch - + Latin American Spanish Lateinamerikanisches Spanisch - + Simplified Chinese Vereinfachtes Chinesisch - + Traditional Chinese (正體中文) Traditionelles Chinesisch (正體中文) - + Brazilian Portuguese (português do Brasil) Brasilianisches Portugiesisch (português do Brasil) - - + + Polish (polska) + + + + + Thai (แบบไทย) + + + + + Japan Japan - + USA USA - + Europe Europa - + Australia Australien - + China China - + Korea Korea - + Taiwan Taiwan - + Auto (%1) Auto select time zone Automatisch (%1) - + Default (%1) Default time zone Standard (%1) - + CET CET - + CST6CDT CST6CDT - + Cuba Kuba - + EET EET - + Egypt Ägypten - + Eire Eire - + EST EST - + EST5EDT EST5EDT - + GB GB - + GB-Eire GB-Eire - + GMT GMT - + GMT+0 GMT+0 - + GMT-0 GMT-0 - + GMT0 GMT0 - + Greenwich Greenwich - + Hongkong Hongkong - + HST HST - + Iceland Island - + Iran Iran - + Israel Israel - + Jamaica Jamaika - + Kwajalein Kwajalein - + Libya Libyen - + MET MET - + MST MST - + MST7MDT MST7MDT - + Navajo Navajo - + NZ NZ - + NZ-CHAT NZ-CHAT - + Poland Polen - + Portugal Portugal - + PRC PRC - + PST8PDT PST8PDT - + ROC ROC - + ROK ROK - + Singapore Singapur - + Turkey Türkei - + UCT UCT - + Universal Universal - + UTC UTC - + W-SU W-SU - + WET WET - + Zulu Zulu - + Mono Mono - + Stereo Stereo - + Surround Surround - + 4GB DRAM (Default) 4GB DRAM (Standard) - + 6GB DRAM (Unsafe) 6GB DRAM (Unsicher) - + 8GB DRAM - + 8GB DRAM - + 10GB DRAM (Unsafe) - + 10GB DRAM (Unsicher) - + 12GB DRAM (Unsafe) - + 12GB DRAM (Unsicher) - - Low (128) - - - - - Medium (256) - - - - - High (512) - - - - 8GB DRAM (Unsafe) - 8GB DRAM (Unsicher) - - - + Docked Im Dock - + Handheld Handheld - + + + Off + Aus + + + Boost (1700MHz) - + Boost (1700MHz) - + Fast (2000MHz) - + Schnell (2000MHz) - + Always ask (Default) Immer fragen (Standard) - + Only if game specifies not to stop Nur wenn ein Spiel vorgibt, nicht zu stoppen - + Never ask Niemals fragen + + + + Medium (256) + Mittel (256) + + + + + High (512) + Hoch (512) + + + + Very Small (16 MB) + Sehr klein (16 MB) + + + + Small (32 MB) + Klein (32 MB) + + + + Normal (128 MB) + Normal (128 MB) + + + + Large (256 MB) + Groß (256 MB) + + + + Very Large (512 MB) + Sehr groß (512 MB) + + + + Very Low (4 MB) + Sehr niedrig (4 MB) + + + + Low (8 MB) + Niedrig (8 MB) + + + + Normal (16 MB) + Normal (16 MB) + + + + Medium (32 MB) + Mittel (32 MB) + + + + High (64 MB) + Hoch (64 MB) + + + + Very Low (32) + Sehr niedrig (32) + + + + Low (64) + Niedrig (64) + + + + Normal (128) + Normal (128) + + + + Disabled + Deaktiviert + + + + ExtendedDynamicState 1 + + + + + ExtendedDynamicState 2 + + + + + ExtendedDynamicState 3 + + + + + Tree View + Baum Ansicht + + + + Grid View + Raster Ansicht + ConfigureApplets @@ -1936,12 +2243,12 @@ When a guest attempts to open the controller applet, it is immediately closed. Applets - + Applets Applet mode preference - + @@ -1996,7 +2303,7 @@ When a guest attempts to open the controller applet, it is immediately closed.Standardwerte wiederherstellen - + Auto Auto @@ -2183,7 +2490,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all memory accesses to use Software MMU Emulation.</div> @@ -2199,7 +2506,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up exclusive memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all exclusive memory accesses to use Software MMU Emulation.</div> @@ -2233,7 +2540,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up memory accesses by allowing invalid memory accesses to succeed.</div> - <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> + <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> <div style="white-space: nowrap"> Diese Optimierung beschleunigt die Speicherzugriffe, indem sie ungültige Speicherzugriffe zulässt.</div> @@ -2274,30 +2581,30 @@ When a guest attempts to open the controller applet, it is immediately closed.Logging - - Open Log Location - Log-Verzeichnis öffnen - - - + Global Log Filter Globaler Log-Filter - + When checked, the max size of the log increases from 100 MB to 1 GB Wenn diese Option aktiviert ist, erhöht sich die maximale Größe des Logs von 100 MB auf 1 GB - + Enable Extended Logging** Erweitertes Logging aktivieren** - + Show Log in Console Log in der Konsole zeigen + + + Open Log Location + Log-Verzeichnis öffnen + Homebrew @@ -2434,18 +2741,9 @@ When a guest attempts to open the controller applet, it is immediately closed.Aktiviere alle Arten von Controllern - - Censor username in logs - - - - - **This will be reset automatically when eden closes. - - - - Enable Auto-Stub** - Auto-Stub** aktivieren + + Enable Auto-Stub + @@ -2454,8 +2752,8 @@ When a guest attempts to open the controller applet, it is immediately closed. - Enable CPU Debugging - CPU Debugging aktivieren + Use dev.keys + @@ -2468,43 +2766,74 @@ When a guest attempts to open the controller applet, it is immediately closed.Debugging - - Flush log output on each line - + + Battery Serial: + - - Enable FS Access Log - FS-Zugriffslog aktivieren + + Bitmask for quick development toggles + - + + Set debug knobs (bitmask) + + + + + 16-bit debug knob set for quick development toggles + + + + + (bitmask) + + + + + Debug Knobs: + + + + + Unit Serial: + + + + Enable this to output the latest generated audio command list to the console. Only affects games using the audio renderer. Aktivieren Sie diese Option, um den zuletzt generierten Audio-Log auf der Konsole auszugeben. Betrifft nur Spiele, die den Audio-Renderer verwenden. - - Enable Auto-Stub - - - - + Dump Audio Commands To Console** Audio-Befehle auf die Konsole als Dump abspeichern** - + + Flush log output on each line + + + + + Enable FS Access Log + FS-Zugriffslog aktivieren + + + Enable Verbose Reporting Services** Ausführliche Berichtsdienste aktivieren** - **This will be reset automatically when yuzu closes. - **Dies wird automatisch beim Schließen von yuzu zurückgesetzt. + + Censor username in logs + - - Web applet not compiled - Web-Applet nicht kompiliert + + **This will be reset automatically when Eden closes. + @@ -2546,14 +2875,10 @@ When a guest attempts to open the controller applet, it is immediately closed. ConfigureDialog - - yuzu Configuration - yuzu-Konfiguration - - eden Configuration - + Eden Configuration + Eden Konfiguration @@ -2561,88 +2886,88 @@ When a guest attempts to open the controller applet, it is immediately closed.Einige Einstellungen sind nur verfügbar, wenn kein Spiel aktiv ist. - + Applets - + Applets - - + + Audio Audio - - + + CPU CPU - + Debug Debug - + Filesystem Dateisystem - - + + General Allgemein - - + + Graphics Grafik - + GraphicsAdvanced GraphicsAdvanced - - GraphicsExtensions - + + GraphicsExtra + GrafikExtras - + Hotkeys Hotkeys - - + + Controls Steuerung - + Profiles Nutzer - + Network Netzwerk - - + + System System - + Game List Spieleliste - + Web Web @@ -2672,9 +2997,10 @@ When a guest attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2684,107 +3010,184 @@ When a guest attempts to open the controller applet, it is immediately closed.SD-Karte - + + Save Data + Speicherdaten + + + Gamecard Gamecard - + Path Pfad - + Inserted Eingelegt - + Current Game Aktuelles Spiel - + Patch Manager Patchmanager - + Dump Decompressed NSOs Dekomprimierte NSOs dumpen - + Dump ExeFS ExeFS dumpen - + Mod Load Root Mod-Ladeverzeichnis - + Dump Root Root dumpen - + Caching Caching - + Cache Game List Metadata Metadaten der Spieleliste cachen - - - - + Reset Metadata Cache Metadaten-Cache zurücksetzen - + Select Emulated NAND Directory... Emulierten NAND-Ordner auswählen... - + Select Emulated SD Directory... Emulierten SD-Ordner auswählen... - + + + Select Save Data Directory... + Speicherdatenverzeichnis auswählen... + + + Select Gamecard Path... Gamecard-Pfad auswählen... - + Select Dump Directory... Dump-Verzeichnis auswählen... - + Select Mod Load Directory... Mod-Ladeverzeichnis auswählen... - - The metadata cache is already empty. - Der Metadaten-Cache ist bereits leer. + + Save Data Directory + Speicherdatenverzeichnis - - The operation completed successfully. - Der Vorgang wurde erfolgreich abgeschlossen. + + Choose an action for the save data directory: + - - The metadata cache couldn't be deleted. It might be in use or non-existent. - Der Metadaten-Cache konnte nicht gelöscht werden. Er könnte in Gebrauch oder nicht vorhanden sein. + + Set Custom Path + Lege einen Benutzerdefinierter Pfad fest + + + + Reset to NAND + + + + + Save data exists in both the old and new locations. + +Old: %1 +New: %2 + +Would you like to migrate saves from the old location? +WARNING: This will overwrite any conflicting saves in the new location! + + + + + Would you like to migrate your save data to the new location? + +From: %1 +To: %2 + + + + + Migrate Save Data + Speicherdaten migrieren + + + + Migrating save data... + Speicherdaten werden migriert... + + + + Cancel + Abbrechen + + + + + Migration Failed + Migration ist fehlgeschlagen + + + + Failed to create destination directory. + + + + + Failed to migrate save data: +%1 + Die Migration der Speicherdaten ist fehlgeschlagen: +%1 + + + + Migration Complete + Migration ist abgeschlossen + + + + Save data has been migrated successfully. + +Would you like to delete the old save data? + @@ -2802,28 +3205,54 @@ When a guest attempts to open the controller applet, it is immediately closed. - Linux - Linux + External Content + Externer Inhalt - + + Add directories to scan for DLCs and Updates without installing to NAND + + + + + Add Directory + Füge Verzeichnis hinzu + + + + Remove Selected + Ausgewähltes entfernen + + + Reset All Settings Setze alle Einstellungen zurück - yuzu - yuzu + + Eden + - - eden - - - - + This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed? Hierdurch werden alle Einstellungen zurückgesetzt und alle spielspezifischen Konfigurationen gelöscht. Spiel-Ordner, Profile oder Eingabeprofile werden nicht gelöscht. Fortfahren? + + + Select External Content Directory... + + + + + Directory Already Added + Verzeichnis wurde bereits hinzugefügt + + + + This directory is already in the list. + + ConfigureGraphics @@ -2853,33 +3282,33 @@ When a guest attempts to open the controller applet, it is immediately closed.Hintergrundfarbe: - + % FSR sharpening percentage (e.g. 50%) % - + Off Aus - + VSync Off Vsync Aus - + Recommended Empfohlen - + On An - + VSync On Vsync An @@ -2897,7 +3326,7 @@ When a guest attempts to open the controller applet, it is immediately closed.Erweitert - + Advanced Graphics Settings Erweiterte Grafik-Einstellungen @@ -2907,24 +3336,38 @@ When a guest attempts to open the controller applet, it is immediately closed. Form - Form + Form - Extensions - + Extras + Extras - - Vulkan Extension Settings - + + Hacks + Hacks - - While it's recommended to use state 3, some games may perform better on lower states. Setting to 0 (disabled) may also break games. -If your GPU is older (i.e. RX570/580 or older), it may not support these features. If this is the case, set the slider to 0 and uncheck all boxes. -These settings are experimental, and may cause black screens. If your games fail to boot or are stuck on a black screen, change these settings around. - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + Vulkan Erweiterungen + + + + % + Sample Shading percentage (e.g. 50%) + % + + + + Extended Dynamic State is disabled on macOS due to MoltenVK compatibility issues that cause black screens. + @@ -2955,75 +3398,75 @@ These settings are experimental, and may cause black screens. If your games fail Standardwerte wiederherstellen - + Action Aktion - + Hotkey Hotkey - + Controller Hotkey Controller-Hotkey - - - + + + Conflicting Key Sequence Tastensequenz bereits belegt - - + + The entered key sequence is already assigned to: %1 Die eingegebene Sequenz ist bereits vergeben an: %1 - + [waiting] [wartet] - + Invalid Ungültig - + Invalid hotkey settings Ungültige Hotkey-Einstellungen - + An error occurred. Please report this issue on github. Ein Fehler fand statt. Bitte berichte dieses Problem auf GitHub. - + Restore Default Standardwerte wiederherstellen - + Clear Löschen - + Conflicting Button Sequence Widersprüchliche Tastenfolge - + The default button sequence is already assigned to: %1 Die Standard Tastenfolge ist bereits belegt von: %1 - + The default key sequence is already assigned to: %1 Die Standard-Sequenz ist bereits vergeben an: %1 @@ -3343,12 +3786,8 @@ These settings are experimental, and may cause black screens. If your games fail - Requires restarting eden - - - - Requires restarting yuzu - Erfordet Neustart von yuzu + Requires restarting Eden + Erfordert einen Neustart Edens @@ -3498,30 +3937,19 @@ These settings are experimental, and may cause black screens. If your games fail - + Left Stick Linker Analogstick - - - - - - - Up - Hoch - - - - - - - - - - Left - Links + + + + + + + Down + Runter @@ -3535,14 +3963,25 @@ These settings are experimental, and may cause black screens. If your games fail Rechts - - - - - - - Down - Runter + + + + + + + + Left + Links + + + + + + + + + Up + Hoch @@ -3589,14 +4028,6 @@ These settings are experimental, and may cause black screens. If your games fail D-Pad Steuerkreuz - - - - - - SL - SL - @@ -3606,59 +4037,55 @@ These settings are experimental, and may cause black screens. If your games fail SR - - - - L - L + + + + + SL + SL - + ZL ZL + + + + + L + L + Minus Minus - - - - Capture - Screenshot - - + Plus Plus - - - Home - Home + + + + ZR + ZR - - + + R R - - - - - ZR - ZR - Motion 1 @@ -3669,6 +4096,18 @@ These settings are experimental, and may cause black screens. If your games fail Motion 2 Bewegung 2 + + + + Capture + Screenshot + + + + + Home + Home + Face Buttons @@ -3681,10 +4120,10 @@ These settings are experimental, and may cause black screens. If your games fail X - - - Y - Y + + + B + B @@ -3693,14 +4132,14 @@ These settings are experimental, and may cause black screens. If your games fail A - - - B - B + + + Y + Y - + Right Stick Rechter Analogstick @@ -3715,242 +4154,242 @@ These settings are experimental, and may cause black screens. If your games fail Konfigurieren - - - - + + + + Clear Löschen - - - - - + + + + + [not set] [nicht belegt] - - - + + + Invert button Knopf invertieren - - + + Toggle button Taste umschalten - + Turbo button Turbo Knopf - - + + Invert axis Achsen umkehren - - - + + + Set threshold Schwellwert festlegen - - + + Choose a value between 0% and 100% Wert zwischen 0% und 100% wählen - + Toggle axis Achse umschalten - + Set gyro threshold Gyro-Schwelle einstellen - + Calibrate sensor Kalibriere den Sensor - + Map Analog Stick Analog-Stick festlegen - + After pressing OK, first move your joystick horizontally, and then vertically. To invert the axes, first move your joystick vertically, and then horizontally. Nach dem Drücken von OK den Joystick zuerst horizontal, dann vertikal bewegen. Um die Achsen umzukehren, bewege den Joystick zuerst vertikal und dann horizontal. - + Center axis Achse zentrieren - - + + Deadzone: %1% Deadzone: %1% - - + + Modifier Range: %1% Modifikator-Radius: %1% - - + + Pro Controller Pro Controller - + Dual Joycons Zwei Joycons - + Left Joycon Linker Joycon - + Right Joycon Rechter Joycon - + Handheld Handheld - + GameCube Controller GameCube-Controller - + Poke Ball Plus Poke-Ball Plus - + NES Controller NES Controller - + SNES Controller SNES Controller - + N64 Controller N64 Controller - + Sega Genesis Sega Genesis - + Start / Pause Start / Pause - + Z Z - + Control Stick Analog Stick - + C-Stick C-Stick - + Shake! Schütteln! - + [waiting] [wartet] - + New Profile Neues Profil - + Enter a profile name: Profilnamen eingeben: - - + + Create Input Profile Eingabeprofil erstellen - + The given profile name is not valid! Angegebener Profilname ist nicht gültig! - + Failed to create the input profile "%1" Erstellen des Eingabeprofils "%1" ist fehlgeschlagen - + Delete Input Profile Eingabeprofil löschen - + Failed to delete the input profile "%1" Löschen des Eingabeprofils "%1" ist fehlgeschlagen - + Load Input Profile Eingabeprofil laden - + Failed to load the input profile "%1" Laden des Eingabeprofils "%1" ist fehlgeschlagen - + Save Input Profile Eingabeprofil speichern - + Failed to save the input profile "%1" Speichern des Eingabeprofils "%1" ist fehlgeschlagen @@ -3973,15 +4412,6 @@ Um die Achsen umzukehren, bewege den Joystick zuerst vertikal und dann horizonta Standardwerte - - ConfigureLinuxTab - - - - Linux - Linux - - ConfigureMotionTouch @@ -4007,7 +4437,7 @@ Um die Achsen umzukehren, bewege den Joystick zuerst vertikal und dann horizonta - + Configure Einrichtung @@ -4037,111 +4467,93 @@ Um die Achsen umzukehren, bewege den Joystick zuerst vertikal und dann horizonta Port: - - Learn More - Mehr erfahren - - - - + + Test Testen - + Add Server Server hinzufügen - + Remove Server Server löschen - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Mehr erfahren</span></a> - - - + %1:%2 %1:%2 - yuzu - yuzu + + + + + + + Eden + - - <a href='https://eden-emulator.github.io/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - - - - + Port number has invalid characters Port-Nummer hat ungültige Zeichen - - - - - - - eden - - - - + Port has to be in range 0 and 65353 Port muss zwischen 0 und 65353 liegen - + IP address is not valid IP Adresse ist ungültig - + This UDP server already exists Dieser UDP-Server existiert bereits - + Unable to add more than 8 servers Es können nicht mehr als 8 Server hinzugefügt werden - + Testing Testen - + Configuring Einrichten - + Test Successful Test erfolgreich - + Successfully received data from the server. Daten wurden erfolgreich vom Server empfangen. - + Test Failed Test fehlgeschlagen - + Could not receive valid data from the server.<br>Please verify that the server is set up correctly and the address and port are correct. Konnte keine Daten vom Server empfangen.<br>Prüfe bitte, dass der Server korrekt eingerichtet wurde und dass Adresse und Port korrekt sind. - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. UDP-Test oder Kalibration wird gerade durchgeführt.<br>Bitte warte einen Moment. @@ -4268,9 +4680,9 @@ Aktuell liegen die Werte bei %1% bzw. %2%. Netzwerkinterface - - None - Keiner + + Enable Airplane Mode + Aktiviere Flugmodus @@ -4326,49 +4738,54 @@ Aktuell liegen die Werte bei %1% bzw. %2%. Einige Einstellungen sind nur verfügbar, wenn kein Spiel aktiv ist. - + Add-Ons Add-Ons - + System System - + CPU CPU - + Graphics Grafik - + Adv. Graphics Erw. Grafik - - GPU Extensions - + + Ext. Graphics + - + Audio Audio - + Input Profiles Eingabe-Profile - Linux - Linux + Network + Netzwerk + + + + Applets + @@ -4389,15 +4806,112 @@ Aktuell liegen die Werte bei %1% bzw. %2%. Add-Ons - + + Import Mod from ZIP + Importiere eine Mod aus einer ZIP + + + + Import Mod from Folder + Importiere eine Mod aus einem Ordner + + + Patch Name Patchname - + Version Version + + + Mod Install Succeeded + Mod-Installation erfolgreich + + + + Successfully installed all mods. + Alle Mods wurden erfolgreich installiert. + + + + Mod Install Failed + Mod-Installation fehlgeschlagen + + + + Failed to install the following mods: + %1 +Check the log for details. + Folgende Mods konnten nicht installiert werden: + %1 +Kontrolliere die Logs für Details. + + + + Mod Folder + Mod Ordner + + + + Zipped Mod Location + + + + + Zipped Archives (*.zip) + + + + + Invalid Selection + + + + + Only mods, cheats, and patches can be deleted. +To delete NAND-installed updates, right-click the game in the game list and click Remove -> Remove Installed Update. + + + + + You are about to delete the following installed mods: + + + + + + +Once deleted, these can NOT be recovered. Are you 100% sure you want to delete them? + + + + + Delete add-on(s)? + + + + + Successfully deleted + + + + + Successfully deleted all selected mods. + + + + + &Delete + + + + + &Open in File Manager + + ConfigureProfileManager @@ -4427,32 +4941,17 @@ Aktuell liegen die Werte bei %1% bzw. %2%. Nutzername - - Set Image - Bild wählen - - - + Add Hinzufügen - - Rename - Umbenennen - - - - Remove - Entfernen - - - + Profile management is available only when game is not running. Die Nutzerverwaltung ist nur verfügbar, wenn kein Spiel aktiv ist. - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -4460,100 +4959,80 @@ Aktuell liegen die Werte bei %1% bzw. %2%. %2 - - Enter Username - Nutzername eingeben - - - + Users Nutzer - - Enter a username for the new user: - Gib einen Benutzernamen für den neuen Benutzer ein: - - - - Enter a new username: - Gib einen neuen Nutzernamen ein: - - - - Select User Image - Profilbild wählen - - - - JPEG Images (*.jpg *.jpeg) - JPEG Bilddateien (*.jpg *.jpeg) - - - + Error deleting image Fehler beim Löschen des Bildes - + Error occurred attempting to overwrite previous image at: %1. Fehler beim Überschreiben des vorherigen Bildes bei: %1 - + Error deleting file Fehler beim Löschen der Datei - + Unable to delete existing file: %1. Konnte die bestehende Datei "%1" nicht löschen. - + Error creating user image directory Fehler beim Erstellen des Ordners für die Profilbilder - + Unable to create directory %1 for storing user images. Konnte Ordner "%1" nicht erstellen, um Profilbilder zu speichern. - - Error copying user image - Fehler beim Kopieren des Profilbildes + + Error saving user image + Fehler beim Speichern des Profilbildes - - Unable to copy image from %1 to %2 - Das Bild konnte nicht von "%1" nach "%2" kopiert werden + + Unable to save image to file + Speichern des Bildes als Datei fehlgeschlagen - - Error resizing user image - Fehler bei der Größenänderung des Benutzerbildes + + &Edit + &Bearbeiten - - Unable to resize image - Die Bildgröße kann nicht angepasst werden. + + &Delete + &Löschen + + + + Edit User + Benutzer bearbeiten ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. Diesen Benutzer löschen? Alle Speicherdaten des Benutzers werden gelöscht. - + Confirm Delete Löschen bestätigen - + Name: %1 UUID: %2 Name: %1 @@ -4606,7 +5085,7 @@ UUID: %2 - + Enable Aktiviere @@ -4617,7 +5096,7 @@ UUID: %2 - + Not connected Nicht verbunden @@ -4627,63 +5106,63 @@ UUID: %2 Standardwerte wiederherstellen - + Clear Löschen - + [not set] [nicht belegt] - + Invert axis Achsen umkehren - - + + Deadzone: %1% Deadzone: %1% - + Error enabling ring input Fehler beim Aktivieren des Ring-Inputs - + Direct Joycon driver is not enabled Direkter JoyCon-Treiber ist nicht aktiviert - + Configuring Einrichten - + The current mapped device doesn't support the ring controller Das aktuell zugeordnete Gerät unterstützt den Ringcontroller nicht - + The current mapped device doesn't have a ring attached Das aktuell genutzte Gerät ist nicht mit dem Ring-Con verbunden - + The current mapped device is not connected Das aktuell zugeordnete Gerät ist nicht verbunden - + Unexpected driver result %1 Unerwartetes Treiber Ergebnis %1 - + [waiting] [wartet] @@ -4707,7 +5186,7 @@ UUID: %2 Kern - + Warning: "%1" is not a valid language for region "%2" Achtung: "%1" ist keine valide Sprache für die Region "%2" @@ -4719,14 +5198,10 @@ UUID: %2 TAS TAS - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the yuzu website.</p></body></html> - <html><head/><body><p>Liest Controller-Eingaben von Skripten im gleichen Format wie TAS-nx-Skripte.<br/>Für eine detailliertere Erklärung, konsultiere bitte die <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;"> Hilfe Seite </span></a> auf der yuzu website.</p></body></html> - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the eden website.</p></body></html> - + <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the user handbook.</p></body></html> + @@ -4759,17 +5234,22 @@ UUID: %2 Pausiere Ausführung während des Ladens - + + Show recording dialog + + + + Script Directory Skript-Verzeichnis - + Path Pfad - + ... ... @@ -4777,12 +5257,12 @@ UUID: %2 ConfigureTasDialog - + TAS Configuration TAS-Konfiguration - + Select TAS Load Directory... TAS-Lade-Verzeichnis auswählen... @@ -4886,14 +5366,10 @@ Ziehe die Punkte mit deiner Maus, um ihre Position zu ändern. Doppelklicke auf Configure Touchscreen Touchscreen einrichten: - - Warning: The settings in this page affect the inner workings of yuzu's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - Achtung: Die Einstellungen auf dieser Seite haben Einfluss auf yuzus Touchscreen-Emulation. Sie zu ändern könnte zu unerwünschtem Verhalten, wie zu einem Ausfall des Touchscreens, führen. Du solltest sie nur verändern, falls du weißt, was du tust. - - Warning: The settings in this page affect the inner workings of eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - + Warning: The settings in this page affect the inner workings of Eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. + @@ -4924,64 +5400,43 @@ Ziehe die Punkte mit deiner Maus, um ihre Position zu ändern. Doppelklicke auf ConfigureUI - - - + + None Keiner - - - Small (32x32) - Klein (32x32) - - Standard (64x64) - Standard (64x64) - - - - Large (128x128) - Groß (128x128) - - - - Full Size (256x256) - Volle Größe (256x256) - - - Small (24x24) Klein (24x24) - + Standard (48x48) Standard (48x48) - + Large (72x72) Groß (72x72) - + Filename Dateiname - + Filetype Dateityp - + Title ID Titel ID - + Title Name Spielname @@ -5050,71 +5505,66 @@ Ziehe die Punkte mit deiner Maus, um ihre Position zu ändern. Doppelklicke auf - Game Icon Size: - Spiel-Icon Größe: - - - Folder Icon Size: Ordner-Icon Größe: - + Row 1 Text: Zeile 1 Text: - + Row 2 Text: Zeile 2 Text: - + Screenshots Screenshots - + Ask Where To Save Screenshots (Windows Only) Frage nach, wo Screenshots gespeichert werden sollen (Nur Windows) - + Screenshots Path: Screenshotpfad - + ... ... - + TextLabel TextLabel - + Resolution: Auflösung: - + Select Screenshots Path... Screenshotpfad auswählen... - + <System> <System> - + English Englisch - + Auto (%1 x %2, %3 x %4) Screenshot width value Auto (%1 x %2, %3 x %4) @@ -5212,170 +5662,178 @@ Ziehe die Punkte mit deiner Maus, um ihre Position zu ändern. Doppelklicke auf Web Web - - yuzu Web Service - yuzu Web Service - - - By providing your username and token, you agree to allow yuzu to collect additional usage data, which may include user identifying information. - Mit dem Bereitstellen deines Benutzernamens und Tokens erlaubst du yuzu, zusätzliche Nutzungsdaten zu sammeln. Diese könnten auch Informationen beinhalten, die dich identifizieren könnten. - - eden Web Service - + Eden Web Service + - - By providing your username and token, you agree to allow eden to collect additional usage data, which may include user identifying information. - - - - - Verify - Überprüfen - - - - Sign up - Registrieren - - - + Token: Token: - + Username: Nutzername: - - What is my token? - Was ist mein Token? + + Generate + Generieren - + Web Service configuration can only be changed when a public room isn't being hosted. Die Konfiguration des Webservice kann nur geändert werden, wenn kein öffentlicher Raum gehostet wird. - Telemetry - Telemetrie - - - Share anonymous usage data with the yuzu team - Teile anonyme Nutzungsdaten mit dem yuzu-Team - - - Learn more - Mehr erfahren - - - Telemetry ID: - Telemetrie-ID: - - - Regenerate - Neu generieren - - - + Discord Presence Discord-Präsenz - + Show Current Game in your Discord Status Zeig dein momentanes Spiel in deinem Discord-Status - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Mehr erfahren</span></a> - - - - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Registrieren</span></a> - - - - <a href='https://evilperson1337.notion.site/Hosting-a-Room-Inside-of-Eden-20457c2edaf680108abac6215a79acdb'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - - - - - Warning - - - + - Verification is currently nonfunctional, instead generate a random 48-character string with only lowercase a-z. - - - - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">Was ist mein Token?</span></a> - - - Telemetry ID: 0x%1 - Telemetrie-ID: 0x%1 - - - Unspecified - Nicht spezifiziert - - - Token not verified - Token nicht verifiziert - - - Token was not verified. The change to your token has not been saved. - Token wurde nicht verfiziert. Die Änderungen an deinem Token wurden nicht gespeichert. - - - - Unverified, please click Verify before saving configuration + All Good Tooltip - Nicht verifiziert, vor dem Speichern Verifizieren wählen + Alles gut - Verifying... - Verifizieren... - - - Verified + + Must be between 4-20 characters Tooltip - Verifiziert + Muss 4-20 Zeichen lang sein - Verification failed + + Must be 48 characters, and lowercase a-z Tooltip - Verifizierung fehlgeschlagen - - - Verification failed - Verifizierung fehlgeschlagen - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - Verifizierung fehlgeschlagen. Prüfe ob dein Nutzername und Token richtig eingegeben wurden und ob deine Internetverbindung korrekt funktioniert. + Muss 48 Zeichen lang sein und nur Kleinbuchstaben a-z enthalten ControllerDialog - + Controller P1 Controller P1 - + &Controller P1 &Controller P1 + + DataDialog + + + Data Manager + Datenmanager + + + + Deleting ANY data is IRREVERSABLE! + Das Löschen JEGLICHER Daten ist UNUMKEHRBAR! + + + + Shaders + + + + + UserNAND + + + + + SysNAND + + + + + Mods + Mods + + + + Saves + Speicherstände + + + + DataWidget + + + Form + Form + + + + Tooltip + + + + + Open with your system file manager + Mit deinem System eigenen Dateimanager öffnen + + + + Delete all data in this directory. THIS IS 100% IRREVERSABLE! + + + + + Export all data in this directory. This may take a while! + + + + + Import data for this directory. This may take a while, and will delete ALL EXISTING DATA! + + + + + Calculating... + Berechnen... + + + + DepsDialog + + + Eden Dependencies + Edens Abhängigkeiten + + + + <html><head/><body><p><span style=" font-size:28pt;">Eden Dependencies</span></p></body></html> + <html><head/><body><p><span style=" font-size:28pt;">Eden Abhängigkeiten</span></p></body></html> + + + + <html><head/><body><p>The projects that make Eden possible</p></body></html> + <html><head/><body><p>Die Projekte die Eden möglich machen</p></body></html> + + + + Dependency + Abhängigkeit + + + + Version + Version + + DirectConnect @@ -5437,1511 +5895,152 @@ Ziehe die Punkte mit deiner Maus, um ihre Position zu ändern. Doppelklicke auf Username is not valid. Must be 4 to 20 alphanumeric characters. - Benutzername ist ungültig. Muss aus 4 bis 20 alphanumerischen Zeichen bestehen. + Benutzername ist ungültig. Muss aus 4 bis 20 alphanumerischen Zeichen bestehen. Room name is not valid. Must be 4 to 20 alphanumeric characters. - Raumname ist ungütig. Muss aus 4 bis 20 alphanumerischen Zeichen bestehen. + Raumname ist ungültig. Muss aus 4 bis 20 alphanumerischen Zeichen bestehen. Username is already in use or not valid. Please choose another. - Benutzername wird bereits genutzt oder ist ungültig. Bitte wähle einen anderen. + Benutzername wird bereits genutzt oder ist ungültig. Bitte wähle einen anderen. IP is not a valid IPv4 address. - IP ist keine gültige IPv4-Addresse. + Port must be a number between 0 to 65535. - Port muss eine Zahl zwischen 0 und 65535 sein. + Port muss eine Zahl zwischen 0 und 65535 sein. You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - Es muss ein bevorzugtes Spiel ausgewählt werden um einen Raum zu erstellen. Sollten keine Spiele in der Spieleliste vorhanden sein, kann ein Spielordner mittels des Plus-Symbols in der Spieleliste hinzugefügt werden. + Unable to find an internet connection. Check your internet settings. - Es konnte keine Internetverbindung hergestellt werden. Überprüfe deine Interneteinstellungen. + Es konnte keine Internetverbindung hergestellt werden. Überprüfe deine Netzwerkeinstellungen. Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - Es kann keine Verbindung zum Host hergestellt werden. -Überprüfen Sie, ob die Verbindungseinstellungen korrekt sind. -Wenn Sie immer noch keine Verbindung herstellen können, wenden Sie sich an den Host des Raumes und überprüfen Sie, ob der Host richtig konfiguriert ist und der externe Port weitergeleitet wurde. + Unable to connect to the room because it is already full. - Verbindung zum Raum fehlgeschlagen, da dieser bereits voll ist. + Verbindung zum Raum fehlgeschlagen, da dieser bereits voll ist. - Creating a room failed. Please retry. Restarting eden might be necessary. - + Creating a room failed. Please retry. Restarting Eden might be necessary. + Erstellen eines Raumes ist fehlgeschlagen. Bitte versuche es erneut. Eden neuzustarten ist vielleicht nötig. The host of the room has banned you. Speak with the host to unban you or try a different room. - Der Ersteller des Raumes hat dich gebannt. Wende dich an den Ersteller, um den Bann aufzuheben oder probiere einen anderen Raum aus. + - Version mismatch! Please update to the latest version of eden. If the problem persists, contact the room host and ask them to update the server. - + Version mismatch! Please update to the latest version of Eden. If the problem persists, contact the room host and ask them to update the server. + Incorrect password. - Falsches Passwort. + Falsches Passwort. An unknown error occurred. If this error continues to occur, please open an issue - Ein unbekannter Fehler ist aufgetreten. Sollte der Fehler weiterhin auftreten, erstelle bitte eine Fehlermeldung. + Ein unbekannter Fehler ist aufgetreten. Sollte der Fehler weiterhin auftreten, erstelle bitte eine Fehlermeldung. Connection to room lost. Try to reconnect. - Verbindung zum Raum verloren. Versuche dich erneut zu verbinden. + You have been kicked by the room host. - Sie wurden vom Raum-Ersteller gekickt. + IP address is already in use. Please choose another. - IP-Addresse wird bereits genutzt. Bitte wählen Sie eine andere aus. + IP-Addresse wird bereits genutzt. Bitte wählen Sie eine andere. You do not have enough permission to perform this action. - Du besitzt nicht genug Rechte, um diese Aktion durchzuführen. + Du besitzt nicht genug Rechte, um diese Aktion auszuführen. The user you are trying to kick/ban could not be found. They may have left the room. - Den Benutzer, welchen du bannen/kicken wolltest, konnte nicht gefunden werden. -Eventuell hat dieser den Raum verlassen. + No valid network interface is selected. Please go to Configure -> System -> Network and make a selection. - Es ist keine gültige Netzwerkschnittstelle ausgewählt. -Bitte gehen Sie zu Konfigurieren -> System -> Netzwerk und treffen Sie eine Auswahl. + Error - Fehler - - - - GMainWindow - - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Anonymous data is collected</a> to help improve yuzu. <br/><br/>Would you like to share your usage data with us? - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Anonyme Daten werden gesammelt,</a> um yuzu zu verbessern.<br/><br/>Möchstest du deine Nutzungsdaten mit uns teilen? - - - Telemetry - Telemetrie - - - - Broken Vulkan Installation Detected - Defekte Vulkan-Installation erkannt - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - Vulkan Initialisierung fehlgeschlagen.<br><br>Klicken Sie auf <a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>für Instruktionen zur Problembehebung.</a>. - - - - Running a game - TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping - Spiel wird ausgeführt - - - - Loading Web Applet... - Lade Web-Applet... - - - - - Disable Web Applet - Deaktiviere die Web Applikation - - - - 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.) - 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.) - - - - The amount of shaders currently being built - Wie viele Shader im Moment kompiliert werden - - - - The current selected resolution scaling multiplier. - Der momentan ausgewählte Auflösungsskalierung Multiplikator. - - - - Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. - Derzeitige Emulations-Geschwindigkeit. Werte höher oder niedriger als 100% zeigen, dass die Emulation scheller oder langsamer läuft als auf einer Switch. - - - - How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. - Wie viele Bilder pro Sekunde angezeigt werden variiert von Spiel zu Spiel und von Szene zu Szene. - - - - 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. - 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. - - - - Unmute - Ton aktivieren - - - - Mute - Stummschalten - - - - Reset Volume - Ton zurücksetzen - - - - &Clear Recent Files - &Zuletzt geladene Dateien leeren - - - - &Continue - &Fortsetzen - - - - &Pause - &Pause - - - - Warning Outdated Game Format - Warnung veraltetes Spielformat - - - 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.<br><br>For an explanation of the various Switch formats yuzu supports, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - 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.<br><br><a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>Unser Wiki</a> enthält eine Erklärung der verschiedenen Formate, die yuzu unterstützt. Diese Nachricht wird nicht noch einmal angezeigt. - - - - - Error while loading ROM! - ROM konnte nicht geladen werden! - - - - The ROM format is not supported. - ROM-Format wird nicht unterstützt. - - - - An error occurred initializing the video core. - Beim Initialisieren des Video-Kerns ist ein Fehler aufgetreten. - - - 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: <a href='https://yuzu-emu.org/help/reference/log-files/'>How to Upload the Log File</a>. - 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: <a href='https://yuzu-emu.org/help/reference/log-files/'>Wie wird eine Log Datei hochgeladen?</a>. - - - - Error while loading ROM! %1 - %1 signifies a numeric error code. - ROM konnte nicht geladen werden! %1 - - - %1<br>Please follow <a href='https://yuzu-emu.org/help/quickstart/'>the yuzu quickstart guide</a> to redump your files.<br>You can refer to the yuzu wiki</a> or the yuzu Discord</a> for help. - %1 signifies an error string. - %1<br>Bitte folge der <a href='https://yuzu-emu.org/help/quickstart/'>yuzu-Schnellstart-Anleitung</a> um deine Dateien zu extrahieren.<br>Hilfe findest du im yuzu-Wiki</a> oder dem yuzu-Discord</a>. - - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://eden-emulator.github.io/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - - - - - Game Updates Warning - - - - - The game you are trying to launch is known to have performance or booting issues when updates are applied. Please try increasing the memory layout to 6GB or 8GB if any issues occur.<br><br>Press "OK" to continue launching, or "Cancel" to cancel the launch. - - - - - Don't show again for this game - - - - - 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.<br><br>For an explanation of the various Switch formats eden supports, <a href='https://eden-emulator.github.io/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - - - - - eden 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: <a href='https://eden-emulator.github.io/help/reference/log-files/'>How to Upload the Log File</a>. - - - - - %1<br>Please redump your files or ask on Discord for help. - %1 signifies an error string. - - - - - An unknown error occurred. Please see the log for more details. - Ein unbekannter Fehler ist aufgetreten. Bitte prüfe die Log-Dateien auf mögliche Fehlermeldungen. - - - - (64-bit) - (64-Bit) - - - - (32-bit) - (32-Bit) - - - - %1 %2 - %1 is the title name. %2 indicates if the title is 64-bit or 32-bit - %1 %2 - - - - Closing software... - Schließe Software... - - - - Save Data - Speicherdaten - - - - Mod Data - Mod-Daten - - - - Error Opening %1 Folder - Konnte Verzeichnis %1 nicht öffnen - - - - - Folder does not exist! - Verzeichnis existiert nicht! - - - - Error Opening Transferable Shader Cache - Fehler beim Öffnen des transferierbaren Shader-Caches - - - - Failed to create the shader cache directory for this title. - Fehler beim erstellen des Shader-Cache-Ordner für den ausgewählten Titel. - - - - Error Removing Contents - Fehler beim Entfernen des Inhalts - - - - Error Removing Update - Fehler beim Entfernen des Updates - - - - Error Removing DLC - Fehler beim Entfernen des DLCs - - - - Remove Installed Game Contents? - Installierten Spiele-Content entfernen? - - - - Remove Installed Game Update? - Installierte Spiele-Updates entfernen? - - - - Remove Installed Game DLC? - Installierte Spiele-DLCs entfernen? - - - - Remove Entry - Eintrag entfernen - - - - - - - - - Successfully Removed - Erfolgreich entfernt - - - - Successfully removed the installed base game. - Das Spiel wurde entfernt. - - - - The base game is not installed in the NAND and cannot be removed. - Das Spiel ist nicht im NAND installiert und kann somit nicht entfernt werden. - - - - Successfully removed the installed update. - Das Update wurde entfernt. - - - - There is no update installed for this title. - Es ist kein Update für diesen Titel installiert. - - - - There are no DLC installed for this title. - Es sind keine DLC für diesen Titel installiert. - - - - Successfully removed %1 installed DLC. - %1 DLC entfernt. - - - - Delete OpenGL Transferable Shader Cache? - Transferierbaren OpenGL Shader Cache löschen? - - - - Delete Vulkan Transferable Shader Cache? - Transferierbaren Vulkan Shader Cache löschen? - - - - Delete All Transferable Shader Caches? - Alle transferierbaren Shader Caches löschen? - - - - Remove Custom Game Configuration? - Spiel-Einstellungen entfernen? - - - - Remove Cache Storage? - Cache-Speicher entfernen? - - - - Remove File - Datei entfernen - - - - Remove Play Time Data - Spielzeit-Daten enfernen - - - - Reset play time? - Spielzeit zurücksetzen? - - - - - Error Removing Transferable Shader Cache - Fehler beim Entfernen - - - - - A shader cache for this title does not exist. - Es existiert kein Shader-Cache für diesen Titel. - - - - Successfully removed the transferable shader cache. - Der transferierbare Shader-Cache wurde entfernt. - - - - Failed to remove the transferable shader cache. - Konnte den transferierbaren Shader-Cache nicht entfernen. - - - - Error Removing Vulkan Driver Pipeline Cache - Fehler beim Entfernen des Vulkan-Pipeline-Cache - - - - Failed to remove the driver pipeline cache. - Fehler beim Entfernen des Driver-Pipeline-Cache - - - - - Error Removing Transferable Shader Caches - Fehler beim Entfernen der transferierbaren Shader Caches - - - - Successfully removed the transferable shader caches. - Die übertragbaren Shader-Caches wurden erfolgreich entfernt. - - - - Failed to remove the transferable shader cache directory. - Entfernen des transferierbaren Shader-Cache-Verzeichnisses fehlgeschlagen. - - - - - Error Removing Custom Configuration - Fehler beim Entfernen - - - - A custom configuration for this title does not exist. - Es existieren keine Spiel-Einstellungen für dieses Spiel. - - - - Successfully removed the custom game configuration. - Die Spiel-Einstellungen wurden entfernt. - - - - Failed to remove the custom game configuration. - Die Spiel-Einstellungen konnten nicht entfernt werden. - - - - - RomFS Extraction Failed! - RomFS-Extraktion fehlgeschlagen! - - - - There was an error copying the RomFS files or the user cancelled the operation. - Das RomFS konnte wegen eines Fehlers oder Abbruchs nicht kopiert werden. - - - - Full - Komplett - - - - Skeleton - Nur Ordnerstruktur - - - - Select RomFS Dump Mode - RomFS Extraktions-Modus auswählen - - - - Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. - Bitte wähle, wie das RomFS gespeichert werden soll.<br>"Full" wird alle Dateien des Spiels extrahieren, während <br>"Skeleton" nur die Ordnerstruktur erstellt. - - - - There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root - 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 > Konfiguration > System > Dateisystem > Dump Root) - - - - Extracting RomFS... - RomFS wird extrahiert... - - - - - - - - Cancel - Abbrechen - - - - RomFS Extraction Succeeded! - RomFS wurde extrahiert! - - - - - - The operation completed successfully. - Der Vorgang wurde erfolgreich abgeschlossen. - - - - Integrity verification couldn't be performed! - Integritätsüberprüfung konnte nicht durchgeführt werden! - - - - File contents were not checked for validity. - Datei-Inhalte wurden nicht auf Gültigkeit überprüft. - - - - - Verifying integrity... - Überprüfe Integrität… - - - - - Integrity verification succeeded! - Integritätsüberprüfung erfolgreich! - - - - - Integrity verification failed! - Integritätsüberprüfung fehlgeschlagen! - - - - File contents may be corrupt. - Datei-Inhalte könnten defekt sein. - - - - - - - Create Shortcut - Verknüpfung erstellen - - - - Do you want to launch the game in fullscreen? - Möchtest du das Spiel im Vollbild starten? - - - - Successfully created a shortcut to %1 - Verknüpfung wurde erfolgreich erstellt unter %1 - - - - This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - Dies wird eine Verknüpfung zum aktuellen AppImage erstellen. Dies könnte nicht gut funktionieren falls du aktualisierst. Fortfahren? - - - - Failed to create a shortcut to %1 - Erstellen einer Verknüpfung zu %1 fehlgeschlagen - - - - Create Icon - Icon erstellen - - - - Cannot create icon file. Path "%1" does not exist and cannot be created. - Symboldatei konnte nicht erstellt werden. Der Pfad "%1" existiert nicht oder kann nicht erstellt werden. - - - - Error Opening %1 - Fehler beim Öffnen von %1 - - - - Select Directory - Verzeichnis auswählen - - - - Properties - Einstellungen - - - - The game properties could not be loaded. - Spiel-Einstellungen konnten nicht geladen werden. - - - - Switch Executable (%1);;All Files (*.*) - %1 is an identifier for the Switch executable file extensions. - Switch-Programme (%1);;Alle Dateien (*.*) - - - - Load File - Datei laden - - - - Open Extracted ROM Directory - Öffne das extrahierte ROM-Verzeichnis - - - - Invalid Directory Selected - Ungültiges Verzeichnis ausgewählt - - - - The directory you have selected does not contain a 'main' file. - Das Verzeichnis, das du ausgewählt hast, enthält keine 'main'-Datei. - - - - Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - Installierbares Switch-Programm (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submissions Package (*.nsp);;NX Cartridge Image (*.xci) - - - - Install Files - Dateien installieren - - - - %n file(s) remaining - - %n Datei verbleibend - %n Dateien verbleibend - - - - - Installing file "%1"... - Datei "%1" wird installiert... - - - - - Install Results - NAND-Installation - - - - To avoid possible conflicts, we discourage users from installing base games to the NAND. -Please, only use this feature to install updates and DLC. - 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. - - - - %n file(s) were newly installed - - - %n file was newly installed - - %n files were newly installed - - - - - - %n file(s) were overwritten - - - %n Datei wurde überschrieben - - %n Dateien wurden überschrieben - - - - - - %n file(s) failed to install - - - %n Datei konnte nicht installiert werden - - %n Dateien konnten nicht installiert werden - - - - - - System Application - Systemanwendung - - - - System Archive - Systemarchiv - - - - System Application Update - Systemanwendungsupdate - - - - Firmware Package (Type A) - Firmware-Paket (Typ A) - - - - Firmware Package (Type B) - Firmware-Paket (Typ B) - - - - Game - Spiel - - - - Game Update - Spiel-Update - - - - Game DLC - Spiel-DLC - - - - Delta Title - Delta-Titel - - - - Select NCA Install Type... - Wähle den NCA-Installationstyp aus... - - - - Please select the type of title you would like to install this NCA as: -(In most instances, the default 'Game' is fine.) - Bitte wähle, als was diese NCA installiert werden soll: -(In den meisten Fällen sollte die Standardeinstellung 'Spiel' ausreichen.) - - - - Failed to Install - Installation fehlgeschlagen - - - - The title type you selected for the NCA is invalid. - Der Titel-Typ, den du für diese NCA ausgewählt hast, ist ungültig. - - - - File not found - Datei nicht gefunden - - - - File "%1" not found - Datei "%1" nicht gefunden - - - - OK - OK - - - - - Hardware requirements not met - Hardwareanforderungen nicht erfüllt - - - - - Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled. - Dein System erfüllt nicht die empfohlenen Mindestanforderungen der Hardware. Meldung der Komptabilität wurde deaktiviert. - - - - Missing yuzu Account - Fehlender yuzu-Account - - - - In order to submit a game compatibility test case, you must link your eden account.<br><br/>To link your eden account, go to Emulation &gt; Configuration &gt; Web. - - - - - Install decryption keys and restart eden before attempting to install firmware. - - - - - Firmware installation cancelled, firmware may be in bad state, restart eden or re-install firmware. - - - - - Encryption keys are missing. - - - - - Are you sure you want to close eden? - - - - - - - eden - - - - - The currently running application has requested eden to not exit. - -Would you like to bypass this and exit anyway? - - - - In order to submit a game compatibility test case, you must link your yuzu account.<br><br/>To link your yuzu account, go to Emulation &gt; Configuration &gt; Web. - Um einen Kompatibilitätsbericht abzuschicken, musst du einen yuzu-Account mit yuzu verbinden.<br><br/>Um einen yuzu-Account zu verbinden, prüfe die Einstellungen unter Emulation &gt; Konfiguration &gt; Web. - - - - Error opening URL - Fehler beim Öffnen der URL - - - - Unable to open the URL "%1". - URL "%1" kann nicht geöffnet werden. - - - - TAS Recording - TAS Aufnahme - - - - Overwrite file of player 1? - Datei von Spieler 1 überschreiben? - - - - Invalid config detected - Ungültige Konfiguration erkannt - - - - Handheld controller can't be used on docked mode. Pro controller will be selected. - Handheld-Controller können nicht im Dock verwendet werden. Der Pro-Controller wird verwendet. - - - - - Amiibo - Amiibo - - - - - The current amiibo has been removed - Das aktuelle Amiibo wurde entfernt - - - - Error Fehler - - - - The current game is not looking for amiibos - Das aktuelle Spiel sucht nicht nach Amiibos - - - - Amiibo File (%1);; All Files (*.*) - Amiibo-Datei (%1);; Alle Dateien (*.*) - - - - Load Amiibo - Amiibo laden - - - - Error loading Amiibo data - Fehler beim Laden der Amiibo-Daten - - - - The selected file is not a valid amiibo - Die ausgewählte Datei ist keine gültige Amiibo - - - - The selected file is already on use - Die ausgewählte Datei wird bereits verwendet - - - - An unknown error occurred - Ein unbekannter Fehler ist aufgetreten - - - - - Verification failed for the following files: - -%1 - Überprüfung für die folgenden Dateien ist fehlgeschlagen: - -%1 - - - - Keys not installed - - - - - Select Dumped Firmware Source Location - - - - - Installing Firmware... - - - - - - - - Firmware install failed - - - - - Unable to locate potential firmware NCA files - - - - - Failed to delete one or more firmware file. - - - - - One or more firmware files failed to copy into NAND. - - - - - Firmware integrity verification failed! - - - - - Select Dumped Keys Location - - - - - - - Decryption Keys install failed - - - - - prod.keys is a required decryption key file. - - - - - One or more keys failed to copy. - - - - - Decryption Keys install succeeded - - - - - Decryption Keys were successfully installed - - - - - Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. - - - - - - - - - - - No firmware available - Keine Firmware verfügbar - - - - Please install the firmware to use the Album applet. - Bitte installiere die Firmware um das Album-Applet zu nutzen. - - - - Album Applet - Album-Applet - - - - Album applet is not available. Please reinstall firmware. - Album-Applet ist nicht verfügbar. Bitte Firmware erneut installieren. - - - - Please install the firmware to use the Cabinet applet. - Bitte installiere die Firmware um das Cabinet-Applet zu nutzen. - - - - Cabinet Applet - Cabinet-Applet - - - - Cabinet applet is not available. Please reinstall firmware. - Cabinet-Applet ist nicht verfügbar. Bitte Firmware erneut installieren. - - - - Please install the firmware to use the Mii editor. - Bitte installiere die Firmware um den Mii-Editor zu nutzen. - - - - Mii Edit Applet - Mii-Edit-Applet - - - - Mii editor is not available. Please reinstall firmware. - Mii-Editor ist nicht verfügbar. Bitte Firmware erneut installieren. - - - - Please install the firmware to use the Controller Menu. - Bitte installiere die Firmware um das Controller-Menü zu nutzen - - - - Controller Applet - Controller-Applet - - - - Controller Menu is not available. Please reinstall firmware. - Controller-Menü ist nicht verfügbar. Bitte Firmware erneut installieren. - - - - Please install the firmware to use the Home Menu. - - - - - - Home Menu Applet - - - - - - Home Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use Starter. - - - - - Starter Applet - - - - - Starter is not available. Please reinstall firmware. - - - - - Please install firmware to use the home menu. - - - - - Capture Screenshot - Screenshot aufnehmen - - - - PNG Image (*.png) - PNG Bild (*.png) - - - - Update Available - - - - - Update %1 for Eden is available. -Would you like to download it? - - - - - TAS state: Running %1/%2 - TAS Zustand: Läuft %1/%2 - - - - TAS state: Recording %1 - TAS Zustand: Aufnahme %1 - - - - TAS state: Idle %1/%2 - TAS-Status: Untätig %1/%2 - - - - TAS State: Invalid - TAS Zustand: Ungültig - - - - &Stop Running - &Stoppe Ausführung - - - - &Start - &Start - - - - Stop R&ecording - Aufnahme stoppen - - - - R&ecord - Aufnahme - - - - Building: %n shader(s) - - Erstelle: %n Shader - Erstelle: %n Shader - - - - - Scale: %1x - %1 is the resolution scaling factor - Skalierung: %1x - - - - Speed: %1% / %2% - Geschwindigkeit: %1% / %2% - - - - Speed: %1% - Geschwindigkeit: %1% - - - Game: %1 FPS (Unlocked) - Spiel: %1 FPS (Unbegrenzt) - - - - Game: %1 FPS - Spiel: %1 FPS - - - - Frame: %1 ms - Frame: %1 ms - - - - %1 %2 - %1 %2 - - - - - FSR - FSR - - - - NO AA - KEIN AA - - - - VOLUME: MUTE - LAUTSTÄRKE: STUMM - - - - VOLUME: %1% - Volume percentage (e.g. 50%) - LAUTSTÄRKE: %1% - - - - Derivation Components Missing - Derivationskomponenten fehlen - - - - Select RomFS Dump Target - RomFS wählen - - - - Please select which RomFS you would like to dump. - Wähle, welches RomFS du speichern möchtest. - - - Are you sure you want to close yuzu? - Bist du sicher, dass du yuzu beenden willst? - - - yuzu - yuzu - - - - Are you sure you want to stop the emulation? Any unsaved progress will be lost. - Bist du sicher, dass du die Emulation stoppen willst? Jeder nicht gespeicherte Fortschritt geht verloren. - - - The currently running application has requested yuzu to not exit. - -Would you like to bypass this and exit anyway? - Die derzeit laufende Anwendung hat yuzu aufgefordert, sich nicht zu beenden. - -Möchtest du dies umgehen und sie trotzdem beenden? - - - - None - Keiner - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Nearest - Nächster - - - - Bilinear - Bilinear - - - - Bicubic - Bikubisch - - - - Gaussian - Gaussian - - - - ScaleForce - ScaleForce - - - - Area - - - - - Docked - Im Dock - - - - Handheld - Handheld - - - - Normal - Normal - - - - High - Hoch - - - - Extreme - Extrem - - - - Vulkan - Vulkan - - - - OpenGL - OpenGL - - - - Null - Null - - - - GLSL - GLSL - - - - GLASM - GLASM - - - - SPIRV - SPIRV - GRenderWindow - - + + OpenGL not available! OpenGL nicht verfügbar! - + OpenGL shared contexts are not supported. Gemeinsame OpenGL-Kontexte werden nicht unterstützt. - yuzu has not been compiled with OpenGL support. - yuzu wurde nicht mit OpenGL-Unterstützung kompiliert. + + Eden has not been compiled with OpenGL support. + - - eden has not been compiled with OpenGL support. - - - - - + + Error while initializing OpenGL! Fehler beim Initialisieren von OpenGL! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. Deine Grafikkarte unterstützt kein OpenGL oder du hast nicht den neusten Treiber installiert. - + Error while initializing OpenGL 4.6! Fehler beim Initialisieren von OpenGL 4.6! - + Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 Deine Grafikkarte unterstützt OpenGL 4.6 nicht, oder du benutzt nicht die neuste Treiberversion.<br><br>GL Renderer:<br>%1 - + Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2 Deine Grafikkarte unterstützt anscheinend nicht eine oder mehrere von yuzu benötigten OpenGL-Erweiterungen. Bitte stelle sicher, dass du den neusten Grafiktreiber installiert hast.<br><br>GL Renderer:<br>%1<br><br>Nicht unterstützte Erweiterungen:<br>%2 @@ -6949,192 +6048,208 @@ Möchtest du dies umgehen und sie trotzdem beenden? GameList - + + &Add New Game Directory + &Neues Spieleverzeichnis hinzufügen + + + Favorite Favorit - + Start Game Spiel starten - + Start Game without Custom Configuration Spiel ohne benutzerdefinierte Spiel-Einstellungen starten - + Open Save Data Location Spielstand-Verzeichnis öffnen - + Open Mod Data Location Mod-Verzeichnis öffnen - + Open Transferable Pipeline Cache Transferierbaren Pipeline-Cache öffnen - + + Link to Ryujinx + + + + Remove Entfernen - + Remove Installed Update Installiertes Update entfernen - + Remove All Installed DLC Alle installierten DLCs entfernen - + Remove Custom Configuration Spiel-Einstellungen entfernen - - Remove Play Time Data - Spielzeit-Daten entfernen - - - + Remove Cache Storage Cache-Speicher entfernen - + Remove OpenGL Pipeline Cache OpenGL-Pipeline-Cache entfernen - + Remove Vulkan Pipeline Cache Vulkan-Pipeline-Cache entfernen - + Remove All Pipeline Caches Alle Pipeline-Caches entfernen - + Remove All Installed Contents Alle installierten Inhalte entfernen - - + + Manage Play Time + Spielzeit verwalten + + + + Edit Play Time Data + Spielzeit-Daten bearbeiten + + + + Remove Play Time Data + Spielzeit-Daten entfernen + + + + Dump RomFS RomFS speichern - + Dump RomFS to SDMC RomFS nach SDMC dumpen - + Verify Integrity Integrität überprüfen - + Copy Title ID to Clipboard Title-ID in die Zwischenablage kopieren - + Navigate to GameDB entry GameDB-Eintrag öffnen - + Create Shortcut Verknüpfung erstellen - + Add to Desktop Zum Desktop hinzufügen - + Add to Applications Menu Zum Menü "Anwendungen" hinzufügen - + Configure Game - + Spiel konfigurieren - Properties - Eigenschaften - - - + Scan Subfolders Unterordner scannen - + Remove Game Directory Spieleverzeichnis entfernen - + ▲ Move Up ▲ Nach Oben - + ▼ Move Down ▼ Nach Unten - + Open Directory Location Verzeichnis öffnen - + Clear Löschen - + Name Name - + Compatibility Kompatibilität - + Add-ons Add-ons - + File type Dateityp - + Size Größe - + Play time Spielzeit @@ -7142,62 +6257,62 @@ Möchtest du dies umgehen und sie trotzdem beenden? GameListItemCompat - + Ingame Im Spiel - + Game starts, but crashes or major glitches prevent it from being completed. Spiel startet, stürzt jedoch ab oder hat signifikante Glitches, die es verbieten es durchzuspielen. - + Perfect Perfekt - + Game can be played without issues. Das Spiel kann ohne Probleme gespielt werden. - + Playable Spielbar - + Game functions with minor graphical or audio glitches and is playable from start to finish. Das Spiel funktioniert mit minimalen grafischen oder Tonstörungen und ist komplett spielbar. - + Intro/Menu Intro/Menü - + Game loads, but is unable to progress past the Start Screen. Das Spiel lädt, ist jedoch nicht im Stande den Startbildschirm zu passieren. - + Won't Boot Startet nicht - + The game crashes when attempting to startup. Das Spiel stürzt beim Versuch zu starten ab. - + Not Tested Nicht getestet - + The game has not yet been tested. Spiel wurde noch nicht getestet. @@ -7205,7 +6320,7 @@ Möchtest du dies umgehen und sie trotzdem beenden? GameListPlaceholder - + Double-click to add a new folder to the game list Doppelklicke, um einen neuen Ordner zur Spieleliste hinzuzufügen. @@ -7213,20 +6328,17 @@ Möchtest du dies umgehen und sie trotzdem beenden? GameListSearchField - + %1 of %n result(s) - - %1 von %n Ergebnis - %1 von %n Ergebnisse(n) - + %1 von %n Ergebnis%1 von %n Ergebnisse(n) - + Filter: Filter: - + Enter pattern to filter Wörter zum Filtern eingeben @@ -7302,233 +6414,241 @@ Möchtest du dies umgehen und sie trotzdem beenden? HostRoomWindow - + Error Fehler - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. + + Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid Eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. Debug Message: - - - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid yuzu account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. -Debug Message: - Ankündigen des Raums in der öffentlichen Lobby fehlgeschlagen. Um einen öffentlichen Raum zu erstellen, muss ein gültiges yuzu-Konto in Emulation -> Konfigurieren -> Web hinterlegt sein. Falls der Raum nicht in der öffentlichen Lobby angezeigt werden soll, wähle "Nicht gelistet". -Debug Nachricht: + Hotkeys - + Audio Mute/Unmute Audio aktivieren / deaktivieren - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Main Window Hauptfenster - + Audio Volume Down Lautstärke verringern - + Audio Volume Up Lautstärke erhöhen - + Capture Screenshot Screenshot aufnehmen - + Change Adapting Filter Adaptiven Filter ändern - + Change Docked Mode Dockmodus ändern - - Change GPU Accuracy - GPU-Genauigkeit ändern + + Change GPU Mode + GPU-Modus ändern - + Configure - + Konfigurieren - + Configure Current Game - + Konfiguriere aktuelles Spiel - + Continue/Pause Emulation Emulation fortsetzen/pausieren - + Exit Fullscreen Vollbild verlassen - Exit yuzu - yuzu verlassen + + Exit Eden + Verlasse Eden - - Exit eden - - - - + Fullscreen Vollbild - + Load File Datei laden - + Load/Remove Amiibo Amiibo laden/entfernen - - Multiplayer Browse Public Game Lobby - + + Browse Public Game Lobby + Öffentliche Spiele-Lobbys durchsuchen - - Multiplayer Create Room - + + Create Room + Raum erstellen - - Multiplayer Direct Connect to Room - + + Direct Connect to Room + Direkte Verbindung zum Raum - - Multiplayer Leave Room - + + Leave Room + Raum verlassen - - Multiplayer Show Current Room - + + Show Current Room + Aktuellen Raum anzeigen - + Restart Emulation Emulation neustarten - + Stop Emulation Emulation stoppen - + TAS Record TAS aufnehmen - + TAS Reset TAS neustarten - + TAS Start/Stop TAS starten/stoppen - + Toggle Filter Bar Filterleiste umschalten - + Toggle Framerate Limit Aktiviere Bildraten Limitierung - + + Toggle Turbo Speed + Turbo Geschwindigkeit umschalten + + + + Toggle Slow Speed + Langsame Geschwindigkeit umschalten + + + Toggle Mouse Panning Mausschwenk umschalten - + Toggle Renderdoc Capture Renderdoc-Aufnahme umschalten - + Toggle Status Bar Statusleiste umschalten + + + Toggle Performance Overlay + Leistungs Overlay umschalten + InstallDialog - + Please confirm these are the files you wish to install. Bitte bestätige, dass du diese Dateien installieren willst. - + Installing an Update or DLC will overwrite the previously installed one. Wenn du ein Update oder DLC installierst, wirst du die vorher installierten überschreiben. - + Install Installieren - + Install Files to NAND Dateien im NAND installieren @@ -7536,8 +6656,8 @@ Debug Nachricht: LimitableInputDialog - - The text can't contain any of the following characters: + + The text can't contain any of the following characters: %1 Der Text darf keines der folgenden Zeichen enthalten: %1 @@ -7560,22 +6680,22 @@ Debug Nachricht: Geschätzte Zeit: 5m 4s - + Loading... Lädt... - + Loading Shaders %1 / %2 Shader %1 / %2 wird geladen... - + Launching... Starten... - + Estimated Time %1 Geschätzte Zeit: %1 @@ -7624,42 +6744,42 @@ Debug Nachricht: Lobby aktualisieren - + Password Required to Join Passwort zum Joinen benötigt - + Password: Passwort: - + Players Spieler - + Room Name Raumname - + Preferred Game Bevorzugtes Spiel - + Host Host - + Refreshing Aktualisiere - + Refresh List Liste aktualisieren @@ -7682,362 +6802,1424 @@ Debug Nachricht: &Zuletzt geladene Dateien - + + Open &Eden Folders + Öffnen &Eden-Ordner + + + &Emulation &Emulation - + &View &Anzeige - + &Reset Window Size &Fenstergröße zurücksetzen - + &Debugging &Debugging - + + &Game List Mode + &Spieleliste Modus + + + + Game &Icon Size + + + + Reset Window Size to &720p Fenstergröße auf &720p zurücksetzen - + Reset Window Size to 720p Fenstergröße auf 720p zurücksetzen - + Reset Window Size to &900p Fenstergröße auf &900p zurücksetzen - + Reset Window Size to 900p Fenstergröße auf 900p zurücksetzen - + Reset Window Size to &1080p Fenstergröße auf &1080p zurücksetzen - + Reset Window Size to 1080p Fenstergröße auf 1080p zurücksetzen - + &Multiplayer &Mehrspieler - + &Tools &Werkzeuge - - &Amiibo - &Amiibo + + Am&iibo + - + + Launch &Applet + + + + &TAS &TAS - + &Create Home Menu Shortcut - + - + + Install &Firmware + + + + &Help &Hilfe - + &Install Files to NAND... &Dateien im NAND installieren... - + L&oad File... Datei &laden... - + Load &Folder... &Verzeichnis laden... - + E&xit S&chließen - + + &Pause &Pause - + &Stop &Stop - + &Verify Installed Contents Installierte Inhalte &überprüfen - - &About eden - + + &About Eden + &Über Eden - - Open &eden Folder - - - - - Open Home Menu - - - - - &Discord - - - - - Open &Setup - - - - - &Desktop - - - - - &Application Menu - - - - &About yuzu - &Über yuzu - - - + Single &Window Mode &Einzelfenster-Modus - + Con&figure... Kon&figurieren - + Ctrl+, - + Strg+ - - Display D&ock Widget Headers - D&ock-Widget-Header anzeigen + + Enable Overlay Display Applet + - + Show &Filter Bar &Filterleiste anzeigen - + Show &Status Bar &Statusleiste anzeigen - + Show Status Bar Statusleiste anzeigen - + &Browse Public Game Lobby &Öffentliche Spiele-Lobbys durchsuchen - + &Create Room &Raum erstellen - + &Leave Room &Raum verlassen - + &Direct Connect to Room &Direkte Verbindung zum Raum - + &Show Current Room &Aktuellen Raum anzeigen - + F&ullscreen Vollbild (&u) - + &Restart Neusta&rt - + Load/Remove &Amiibo... &Amiibo laden/entfernen... - + &Report Compatibility &Kompatibilität melden - + Open &Mods Page &Mods-Seite öffnen - + Open &Quickstart Guide &Schnellstart-Anleitung öffnen - + &FAQ &FAQ - Open &yuzu Folder - &yuzu-Verzeichnis öffnen - - - + &Capture Screenshot &Bildschirmfoto aufnehmen - - Open &Album - &Album öffnen + + &Album + - + &Set Nickname and Owner Spitzname und Besitzer &festlegen - + &Delete Game Data Spiel-Daten &löschen - + &Restore Amiibo Amiibo &wiederherstellen - + &Format Amiibo Amiibo &formatieren - - Open &Mii Editor - &Mii-Editor öffnen + + &Mii Editor + - + &Configure TAS... &TAS &konfigurieren... - + Configure C&urrent Game... &Spiel-Einstellungen ändern... - + + &Start &Start - + &Reset &Zurücksetzen - + + R&ecord Aufnahme - + Open &Controller Menu Öffne &Controller-Menü - - Install Firmware - + + Install Decryption &Keys + - - Install Decryption Keys - + + &Home Menu + - - - MicroProfileDialog - - &MicroProfile - &MicroProfile + + &Desktop + + + + + &Application Menu + + + + + &Root Data Folder + + + + + &NAND Folder + + + + + &SDMC Folder + + + + + &Mod Folder + + + + + &Log Folder + + + + + From Folder + + + + + From ZIP + + + + + &Eden Dependencies + + + + + &Data Manager + + + + + &Tree View + + + + + &Grid View + + + + + Game Icon Size + + + + + + + None + + + + + Show Game &Name + + + + + Show &Performance Overlay + + + + + Small (32x32) + Klein (32x32) + + + + Standard (64x64) + Standard (64x64) + + + + Large (128x128) + Groß (128x128) + + + + Full Size (256x256) + Volle Größe (256x256) + + + + Broken Vulkan Installation Detected + Defekte Vulkan-Installation erkannt + + + + Vulkan initialization failed during boot. + + + + + Running a game + TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping + Spiel wird ausgeführt + + + + Loading Web Applet... + + + + + + Disable Web Applet + + + + + 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.) + + + + + The amount of shaders currently being built + + + + + The current selected resolution scaling multiplier. + + + + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. + + + + + How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. + + + + + 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. + + + + + Unmute + Ton aktivieren + + + + Mute + Stummschalten + + + + Reset Volume + Lautstärke zurücksetzen + + + + &Clear Recent Files + + + + + &Continue + + + + + Warning: Outdated Game Format + + + + + 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.<br>For an explanation of the various Switch formats Eden supports, out our user handbook. This message will not be shown again. + + + + + + Error while loading ROM! + + + + + The ROM format is not supported. + + + + + An error occurred initializing the video core. + + + + + Eden 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: <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>How to Upload the Log File</a>. + + + + + Error while loading ROM! %1 + %1 signifies a numeric error code. + + + + + %1<br>Please redump your files or ask on Discord/Stoat for help. + %1 signifies an error string. + + + + + An unknown error occurred. Please see the log for more details. + + + + + (64-bit) + + + + + (32-bit) + + + + + %1 %2 + %1 is the title name. %2 indicates if the title is 64-bit or 32-bit + + + + + Closing software... + + + + + Save Data + + + + + Mod Data + + + + + Error Opening %1 Folder + + + + + + Folder does not exist! + + + + + Remove Installed Game Contents? + + + + + Remove Installed Game Update? + + + + + Remove Installed Game DLC? + + + + + Remove Entry + + + + + Delete OpenGL Transferable Shader Cache? + + + + + Delete Vulkan Transferable Shader Cache? + + + + + Delete All Transferable Shader Caches? + + + + + Remove Custom Game Configuration? + + + + + Remove Cache Storage? + + + + + Remove File + + + + + Remove Play Time Data + + + + + Reset play time? + + + + + + RomFS Extraction Failed! + + + + + There was an error copying the RomFS files or the user cancelled the operation. + + + + + Full + + + + + Skeleton + + + + + Select RomFS Dump Mode + + + + + Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. + + + + + There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root + + + + + Extracting RomFS... + + + + + + Cancel + + + + + RomFS Extraction Succeeded! + + + + + The operation completed successfully. + + + + + Error Opening %1 + + + + + Select Directory + + + + + Properties + + + + + The game properties could not be loaded. + + + + + Switch Executable (%1);;All Files (*.*) + %1 is an identifier for the Switch executable file extensions. + + + + + Load File + + + + + Open Extracted ROM Directory + + + + + Invalid Directory Selected + + + + + The directory you have selected does not contain a 'main' file. + + + + + Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) + + + + + Install Files + + + + + %n file(s) remaining + + + + + Installing file "%1"... + + + + + + Install Results + + + + + To avoid possible conflicts, we discourage users from installing base games to the NAND. +Please, only use this feature to install updates and DLC. + + + + + %n file(s) were newly installed + + + + + + %n file(s) were overwritten + + + + + + %n file(s) failed to install + + + + + + System Application + + + + + System Archive + + + + + System Application Update + + + + + Firmware Package (Type A) + + + + + Firmware Package (Type B) + + + + + Game + + + + + Game Update + + + + + Game DLC + + + + + Delta Title + + + + + Select NCA Install Type... + + + + + Please select the type of title you would like to install this NCA as: +(In most instances, the default 'Game' is fine.) + + + + + Failed to Install + + + + + The title type you selected for the NCA is invalid. + + + + + File not found + + + + + File "%1" not found + + + + + OK + + + + + Function Disabled + + + + + Compatibility list reporting is currently disabled. Check back later! + + + + + Error opening URL + + + + + Unable to open the URL "%1". + + + + + TAS Recording + + + + + Overwrite file of player 1? + + + + + Invalid config detected + + + + + Handheld controller can't be used on docked mode. Pro controller will be selected. + + + + + + Amiibo + + + + + + The current amiibo has been removed + + + + + Error + + + + + + The current game is not looking for amiibos + + + + + Amiibo File (%1);; All Files (*.*) + + + + + Load Amiibo + + + + + Error loading Amiibo data + + + + + The selected file is not a valid amiibo + + + + + The selected file is already on use + + + + + An unknown error occurred + + + + + + Keys not installed + + + + + + Install decryption keys and restart Eden before attempting to install firmware. + + + + + Select Dumped Firmware Source Location + + + + + Select Dumped Firmware ZIP + + + + + Zipped Archives (*.zip) + + + + + Firmware cleanup failed + + + + + Failed to clean up extracted firmware cache. +Check write permissions in the system temp directory and try again. +OS reported error: %1 + + + + + No firmware available + + + + + Firmware Corrupted + + + + + Unknown applet + + + + + Applet doesn't map to a known value. + + + + + Record not found + + + + + Applet not found. Please reinstall firmware. + + + + + Capture Screenshot + + + + + PNG Image (*.png) + + + + + Update Available + + + + + Download %1? + + + + + TAS state: Running %1/%2 + + + + + TAS state: Recording %1 + + + + + TAS state: Idle %1/%2 + + + + + TAS State: Invalid + + + + + &Stop Running + + + + + Stop R&ecording + + + + + Building: %n shader(s) + + + + + Scale: %1x + %1 is the resolution scaling factor + + + + + Speed: %1% / %2% + + + + + Speed: %1% + + + + + Game: %1 FPS + + + + + Frame: %1 ms + + + + + + FSR + + + + + NO AA + + + + + VOLUME: MUTE + + + + + VOLUME: %1% + Volume percentage (e.g. 50%) + + + + + Derivation Components Missing + + + + + Decryption keys are missing. Install them now? + + + + + Wayland Detected! + + + + + Wayland is known to have significant performance issues and mysterious bugs. +It's recommended to use X11 instead. + +Would you like to force it for future launches? + + + + + Use X11 + + + + + Continue with Wayland + + + + + Don't show again + + + + + Restart Required + + + + + Restart Eden to apply the X11 backend. + + + + + Slow + + + + + Turbo + + + + + Unlocked + + + + + Select RomFS Dump Target + + + + + Please select which RomFS you would like to dump. + + + + + Are you sure you want to close Eden? + + + + + + + Eden + + + + + Are you sure you want to stop the emulation? Any unsaved progress will be lost. + + + + + The currently running application has requested Eden to not exit. + +Would you like to bypass this and exit anyway? + + + + + FXAA + + + + + SMAA + + + + + Nearest + + + + + Bilinear + + + + + Bicubic + + + + + Zero-Tangent + + + + + B-Spline + + + + + Mitchell + + + + + Spline-1 + + + + + Gaussian + + + + + Lanczos + + + + + ScaleForce + + + + + Area + + + + + MMPX + + + + + Docked + + + + + Handheld + + + + + Fast + + + + + Balanced + + + + + Accurate + + + + + Vulkan + + + + + OpenGL GLSL + + + + + OpenGL SPIRV + + + + + OpenGL GLASM + + + + + Null + MigrationWorker - - Data was migrated successfully. - - - - + Linking the old directory failed. You may need to re-run with administrative privileges on Windows. OS gave error: %1 - + - + + + +Note that your configuration and data will be shared with %1. +If this is not desirable, delete the following files: +%2 +%3 +%4 + + + + If you wish to clean up the files which were left in the old data location, you can do so by deleting the following directory: %1 - + + + + + Data was migrated successfully. + + + + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + @@ -8054,7 +8236,7 @@ If you wish to clean up the files which were left in the old data location, you - + Refreshing Aktualisiere @@ -8064,27 +8246,27 @@ If you wish to clean up the files which were left in the old data location, you Entbannen - + Subject Thema - + Type Typ - + Forum Username Forum Benutzername - + IP Address IP-Addresse - + Refresh Aktualisieren @@ -8092,37 +8274,37 @@ If you wish to clean up the files which were left in the old data location, you MultiplayerState - + Current connection status Aktueller Verbindungsstatus - + Not Connected. Click here to find a room! Nicht verbunden! Hier klicken um Raum zu finden! - + Not Connected Nicht verbunden - + Connected Verbunden - + New Messages Received Neue Nachrichten erhalten - + Error Fehler - + Failed to update the room information. Please check your Internet connection and try hosting the room again. Debug Message: Aktualisieren der Rauminformationen fehlgeschlagen. Überprüfe deine Internetverbindung und versuche erneut einen Raum zu erstellen. @@ -8131,92 +8313,6 @@ Debug Message: NetworkMessage - - Username is not valid. Must be 4 to 20 alphanumeric characters. - Benutzername ist ungültig. Muss aus 4 bis 20 alphanumerischen Zeichen bestehen. - - - Room name is not valid. Must be 4 to 20 alphanumeric characters. - Raumname ist ungütig. Muss aus 4 bis 20 alphanumerischen Zeichen bestehen. - - - Username is already in use or not valid. Please choose another. - Benutzername wird bereits genutzt oder ist ungültig. Bitte wähle einen anderen. - - - IP is not a valid IPv4 address. - IP ist keine gültige IPv4-Addresse. - - - Port must be a number between 0 to 65535. - Port muss eine Zahl zwischen 0 und 65535 sein. - - - You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - Es muss ein bevorzugtes Spiel ausgewählt werden um einen Raum zu erstellen. Sollten keine Spiele in der Spieleliste vorhanden sein, kann ein Spielordner mittels des Plus-Symbols in der Spieleliste hinzugefügt werden. - - - Unable to find an internet connection. Check your internet settings. - Es konnte keine Internetverbindung hergestellt werden. Überprüfe deine Interneteinstellungen. - - - Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - Es kann keine Verbindung zum Host hergestellt werden. -Überprüfen Sie, ob die Verbindungseinstellungen korrekt sind. -Wenn Sie immer noch keine Verbindung herstellen können, wenden Sie sich an den Host des Raumes und überprüfen Sie, ob der Host richtig konfiguriert ist und der externe Port weitergeleitet wurde. - - - Unable to connect to the room because it is already full. - Verbindung zum Raum fehlgeschlagen, da dieser bereits voll ist. - - - Creating a room failed. Please retry. Restarting yuzu might be necessary. - Raum konnte nicht erstellt werden. Bitte versuche es erneut. Ein Neustart von yuzu ist eventuell notwendig. - - - The host of the room has banned you. Speak with the host to unban you or try a different room. - Der Ersteller des Raumes hat dich gebannt. Wende dich an den Ersteller, um den Bann aufzuheben oder probiere einen anderen Raum aus. - - - Version mismatch! Please update to the latest version of yuzu. If the problem persists, contact the room host and ask them to update the server. - Keine Übereinstimmung der Versionen! Bitte zur neuesten Version von yuzu aktualisieren. Sollte das Problem weiterhin vorhanden sein, kontaktiere den Raumersteller und bitte ihn den Server zu aktualisieren. - - - Incorrect password. - Falsches Passwort. - - - An unknown error occurred. If this error continues to occur, please open an issue - Ein unbekannter Fehler ist aufgetreten. Sollte der Fehler weiterhin auftreten, erstelle bitte eine Fehlermeldung. - - - Connection to room lost. Try to reconnect. - Verbindung zum Raum verloren. Versuche dich erneut zu verbinden. - - - You have been kicked by the room host. - Sie wurden vom Raum-Ersteller gekickt. - - - IP address is already in use. Please choose another. - IP-Addresse wird bereits genutzt. Bitte wählen Sie eine andere aus. - - - You do not have enough permission to perform this action. - Du besitzt nicht genug Rechte, um diese Aktion durchzuführen. - - - The user you are trying to kick/ban could not be found. -They may have left the room. - Den Benutzer, welchen du bannen/kicken wolltest, konnte nicht gefunden werden. -Eventuell hat dieser den Raum verlassen. - - - No valid network interface is selected. -Please go to Configure -> System -> Network and make a selection. - Es ist keine gültige Netzwerkschnittstelle ausgewählt. -Bitte gehen Sie zu Konfigurieren -> System -> Netzwerk und treffen Sie eine Auswahl. - Game already running @@ -8250,10 +8346,132 @@ Proceed anyway? - NetworkMessage::ErrorManager + NewUserDialog - Error - Fehler + + + New User + + + + + Change Avatar + + + + + Set Image + + + + + UUID + + + + + Eden + + + + + Username + + + + + UUID must be 32 hex characters (0-9, A-F) + + + + + Generate + + + + + Select User Image + + + + + Image Formats (*.jpg *.jpeg *.png *.bmp) + + + + + No firmware available + + + + + Please install the firmware to use firmware avatars. + + + + + + Error loading archive + + + + + Archive is not available. Please install/reinstall firmware. + + + + + Could not locate RomFS. Your file or decryption keys may be corrupted. + + + + + Error extracting archive + + + + + Could not extract RomFS. Your file or decryption keys may be corrupted. + + + + + Error finding image directory + + + + + Failed to find image directory in the archive. + + + + + No images found + + + + + No avatar images were found in the archive. + + + + + + All Good + Tooltip + + + + + Must be 32 hex characters (0-9, a-f) + Tooltip + + + + + Must be between 1 and 32 characters + Tooltip + @@ -8280,7 +8498,7 @@ Proceed anyway? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -8289,83 +8507,196 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> + + PerformanceOverlay + + + Form + + + + + Frametime + + + + + 0 ms + + + + + + Min: 0 + + + + + + Max: 0 + + + + + + Avg: 0 + + + + + FPS + + + + + 0 fps + + + + + %1 fps + + + + + + Avg: %1 + + + + + + Min: %1 + + + + + + Max: %1 + + + + + %1 ms + + + PlayerControlPreview - + START/PAUSE START/PAUSE + + ProfileAvatarDialog + + + Select + + + + + Cancel + + + + + Background Color + + + + + Select Firmware Avatar + + + QObject - - %1 is not playing a game - %1 spielt kein Spiel + + + + Migration + - - %1 is playing %2 - %1 spielt %2 + + Clear Shader Cache + - - Not playing a game - Spielt kein Spiel + + Keep Old Data + - - Installed SD Titles - Installierte SD-Titel + + Clear Old Data + - - Installed NAND Titles - Installierte NAND-Titel + + Link Old Directory + - - System Titles - Systemtitel + + + + + - - Add New Game Directory - Neues Spieleverzeichnis hinzufügen + + + No + - - Favorites - Favoriten + + You can manually re-trigger this prompt by deleting the new config directory: +%1 + + + + + Migrating + + + + + Migrating, this may take a while... + - - + + Shift Shift - - + + Ctrl Strg - - + + Alt Alt - - - - + + + + [not set] [nicht gesetzt] @@ -8375,15 +8706,15 @@ p, li { white-space: pre-wrap; } Hat %1 %2 - - - - - - - - + + + + + + + + Axis %1%2 Achse %1%2 @@ -8393,359 +8724,383 @@ p, li { white-space: pre-wrap; } Taste %1 - - - - - - + + + + + + [unknown] [unbekannt] - - - + + + Left Links - - - + + + Right Rechts - - - + + + Down Runter - - - + + + Up Hoch - - + + Z Z - - + + R R - - + + L L - - + + A A - - + + B B - - + + X X - - + + Y Y - - + + Start Start - - + + L1 L1 - - + + L2 L2 - - + + L3 L3 - - + + R1 R1 - - + + R2 R2 - - + + R3 R3 - - + + Circle Kreis - - + + Cross Kreuz - - + + Square Quadrat - - + + Triangle Dreieck - - + + Share Teilen - - + + Options Optionen - - + + [undefined] [undefiniert] - + %1%2 %1%2 - - + + [invalid] [ungültig] - - + + %1%2Hat %3 %1%2Hat %3 - - - + + + %1%2Axis %3 %1%2Achse %3 - - + + %1%2Axis %3,%4,%5 %1%2Achse %3,%4,%5 - - + + %1%2Motion %3 %1%2Bewegung %3 - - + + %1%2Button %3 %1%2Knopf %3 - - + + [unused] [unbenutzt] - + ZR ZR - + ZL ZL - + SR SR - + SL SL - + Stick L Stick L - + Stick R Stick R - + Plus Plus - + Minus Minus - - + + Home Home - + Capture Screenshot - + Touch Touch - + Wheel Indicates the mouse wheel Mausrad - + Backward Rückwärts - + Forward Vorwärts - + Task Aufgabe - + Extra Extra - + %1%2%3%4 %1%2%3%4 - - + + %1%2%3Hat %4 %1%2%3Hat %4 - - + + %1%2%3Axis %4 %1%2%3Achse %4 - - + + %1%2%3Button %4 %1%2%3Knopf %4 - - - - Migration - + + Not playing a game + Spielt kein Spiel - - - - - + + %1 is not playing a game + %1 spielt kein Spiel - - - No - + + %1 is playing %2 + %1 spielt %2 - - You can manually re-trigger this prompt by deleting the new config directory: -%1 - + + Play Time: %1 + - - Migrating - + + Never Played + - - Migrating, this may take a while... - + + Version: %1 + + + + + Version: 1.0.0 + + + + + Installed SD Titles + Installierte SD-Titel + + + + Installed NAND Titles + Installierte NAND-Titel + + + + System Titles + Systemtitel + + + + Add New Game Directory + Neues Spieleverzeichnis hinzufügen + + + + Favorites + Favoriten @@ -8836,31 +9191,817 @@ p, li { white-space: pre-wrap; } Dateipfad - + No game data present Keine Spieldaten vorhanden - + The following amiibo data will be formatted: Die folgenden amiibo-Daten werden formatiert: - + The following game data will removed: Die folgenden Spieldaten werden entfernt: - + Set nickname and owner: Spitzname und Besitzer festlegen: - + Do you wish to restore this amiibo? Möchtest du diese amiibo wiederherstellen? + + QtCommon::Content + + + Game Requires Firmware + + + + + The game you are trying to launch requires firmware to boot or to get past the opening menu. Please <a href='https://yuzu-mirror.github.io/help/quickstart'>dump and install firmware</a>, or press "OK" to launch anyways. + + + + + Installing Firmware... + + + + + + + + + Cancel + + + + + Firmware Install Failed + + + + + Firmware Install Succeeded + + + + + Firmware integrity verification failed! + + + + + + Verification failed for the following files: + +%1 + + + + + + Verifying integrity... + + + + + + Integrity verification succeeded! + + + + + + The operation completed successfully. + + + + + + Integrity verification failed! + + + + + File contents may be corrupt or missing. + + + + + Integrity verification couldn't be performed + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity. + + + + + Select Dumped Keys Location + + + + + Decryption Keys install succeeded + + + + + Decryption Keys install failed + + + + + Orphaned Profiles Detected! + + + + + UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br> + + + + + Really clear data? + + + + + Important data may be lost! + + + + + Are you REALLY sure? + + + + + Once deleted, your data will NOT come back! +Only do this if you're 100% sure you want to delete this data. + + + + + Clearing... + + + + + Select Export Location + + + + + %1.zip + + + + + + Zipped Archives (*.zip) + + + + + Exporting data. This may take a while... + + + + + Exporting + + + + + Exported Successfully + + + + + Data was exported successfully. + + + + + Export Cancelled + + + + + Export was cancelled by the user. + + + + + Export Failed + + + + + Ensure you have write permissions on the targeted directory and try again. + + + + + Select Import Location + + + + + Import Warning + + + + + All previous data in this directory will be deleted. Are you sure you wish to proceed? + + + + + Importing data. This may take a while... + + + + + Importing + + + + + Imported Successfully + + + + + Data was imported successfully. + + + + + Import Cancelled + + + + + Import was cancelled by the user. + + + + + Import Failed + + + + + Ensure you have read permissions on the targeted directory and try again. + + + + + QtCommon::FS + + + Linked Save Data + + + + + Save data has been linked. + + + + + Failed to link save data + + + + + Could not link directory: + %1 +To: + %2 + + + + + Already Linked + + + + + This title is already linked to Ryujinx. Would you like to unlink it? + + + + + Failed to unlink old directory + + + + + + OS returned error: %1 + + + + + Failed to copy save data + + + + + Unlink Successful + + + + + Successfully unlinked Ryujinx save data. Save data has been kept intact. + + + + + Could not find Ryujinx installation + + + + + Could not find a valid Ryujinx installation. This may typically occur if you are using Ryujinx in portable mode. + +Would you like to manually select a portable folder to use? + + + + + Ryujinx Portable Location + + + + + Not a valid Ryujinx directory + + + + + The specified directory does not contain valid Ryujinx data. + + + + + + Could not find Ryujinx save data + + + + + QtCommon::Game + + + Error Removing Contents + + + + + Error Removing Update + + + + + Error Removing DLC + + + + + + + + + + Successfully Removed + + + + + Successfully removed the installed base game. + + + + + The base game is not installed in the NAND and cannot be removed. + + + + + Successfully removed the installed update. + + + + + There is no update installed for this title. + + + + + There are no DLCs installed for this title. + + + + + Successfully removed %1 installed DLC. + + + + + + Error Removing Transferable Shader Cache + + + + + + A shader cache for this title does not exist. + + + + + Successfully removed the transferable shader cache. + + + + + Failed to remove the transferable shader cache. + + + + + Error Removing Vulkan Driver Pipeline Cache + + + + + Failed to remove the driver pipeline cache. + + + + + + Error Removing Transferable Shader Caches + + + + + Successfully removed the transferable shader caches. + + + + + Failed to remove the transferable shader cache directory. + + + + + + Error Removing Custom Configuration + + + + + A custom configuration for this title does not exist. + + + + + Successfully removed the custom game configuration. + + + + + Failed to remove the custom game configuration. + + + + + Reset Metadata Cache + + + + + The metadata cache is already empty. + + + + + The operation completed successfully. + + + + + The metadata cache couldn't be deleted. It might be in use or non-existent. + + + + + Create Shortcut + + + + + Do you want to launch the game in fullscreen? + + + + + Shortcut Created + + + + + Successfully created a shortcut to %1 + + + + + Shortcut may be Volatile! + + + + + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? + + + + + Failed to Create Shortcut + + + + + Failed to create a shortcut to %1 + + + + + Create Icon + + + + + Cannot create icon file. Path "%1" does not exist and cannot be created. + + + + + No firmware available + + + + + Please install firmware to use the home menu. + + + + + Home Menu Applet + + + + + Home Menu is not available. Please reinstall firmware. + + + + + QtCommon::Mod + + + Mod Name + + + + + What should this mod be called? + Wie soll diese Mod heißen? + + + + RomFS + + + + + ExeFS/Patch + + + + + Cheat + + + + + Mod Type + Mod Typ + + + + Could not detect mod type automatically. Please manually specify the type of mod you downloaded. + +Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods. + + + + + + Mod Extract Failed + + + + + Failed to create temporary directory %1 + + + + + Zip file %1 is empty + + + + + QtCommon::Path + + + Error Opening Shader Cache + + + + + Failed to create or open shader cache for this title, ensure your app data directory has write permissions. + + + + + QtCommon::StringLookup + + + Contains game save data. DO NOT REMOVE UNLESS YOU KNOW WHAT YOU'RE DOING! + + + + + Contains Vulkan and OpenGL pipeline caches. Generally safe to remove. + + + + + Contains updates and DLC for games. + + + + + Contains firmware and applet data. + + + + + Contains game mods, patches, and cheats. + + + + + Decryption Keys were successfully installed + + + + + Unable to read key directory, aborting + + + + + One or more keys failed to copy. + + + + + Verify your keys file has a .keys extension and try again. + + + + + Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. + + + + + Successfully installed firmware version %1 + + + + + Unable to locate potential firmware NCA files + + + + + Failed to delete one or more firmware files. + + + + + One or more firmware files failed to copy into NAND. + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. Restart Eden or re-install firmware. + + + + + Firmware missing. Firmware is required to run certain games and use the Home Menu. + + + + + Firmware reported as present, but was unable to be read. Check for decryption keys and redump firmware if necessary. + + + + + Eden has detected user data for the following emulators: + + + + + Would you like to migrate your data for use in Eden? +Select the corresponding button to migrate data from that emulator. +This may take a while. + + + + + Clearing shader cache is recommended for all users. +Do not uncheck unless you know what you're doing. + + + + + Keeps the old data directory. This is recommended if you aren't +space-constrained and want to keep separate data for the old emulator. + + + + + Deletes the old data directory. +This is recommended on devices with space constraints. + + + + + Creates a filesystem link between the old directory and Eden directory. +This is recommended if you want to share data between emulators. + + + + + Ryujinx title database does not exist. + + + + + Invalid header on Ryujinx title database. + + + + + Invalid magic header on Ryujinx title database. + + + + + Invalid byte alignment on Ryujinx title database. + + + + + No items found in Ryujinx title database. + + + + + Title %1 not found in Ryujinx title database. + + + QtControllerSelectorDialog @@ -8897,7 +10038,7 @@ p, li { white-space: pre-wrap; } - + Pro Controller Pro-Controller @@ -8910,7 +10051,7 @@ p, li { white-space: pre-wrap; } - + Dual Joycons Zwei Joycons @@ -8923,7 +10064,7 @@ p, li { white-space: pre-wrap; } - + Left Joycon Linker Joycon @@ -8936,7 +10077,7 @@ p, li { white-space: pre-wrap; } - + Right Joycon Rechter Joycon @@ -8965,7 +10106,7 @@ p, li { white-space: pre-wrap; } - + Handheld Handheld @@ -9086,32 +10227,32 @@ p, li { white-space: pre-wrap; } Nicht genügend Controller - + GameCube Controller GameCube-Controller - + Poke Ball Plus Poke-Ball Plus - + NES Controller NES-Controller - + SNES Controller SNES-Controller - + N64 Controller N64-Controller - + Sega Genesis Sega Genesis @@ -9119,28 +10260,28 @@ p, li { white-space: pre-wrap; } QtErrorDisplay - - - + + + Error Code: %1-%2 (0x%3) Fehlercode: %1-%2 (0x%3) - + An error has occurred. Please try again or contact the developer of the software. Ein Fehler ist aufgetreten. Bitte versuche es noch einmal oder kontaktiere den Entwickler der Software. - + An error occurred on %1 at %2. Please try again or contact the developer of the software. Ein Fehler ist in %1 bei %2 aufgetreten. Bitte versuche es noch einmal oder kontaktiere den Entwickler der Software. - + An error has occurred. %1 @@ -9156,7 +10297,7 @@ Bitte versuche es noch einmal oder kontaktiere den Entwickler der Software. QtProfileSelectionDialog - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -9164,7 +10305,7 @@ Bitte versuche es noch einmal oder kontaktiere den Entwickler der Software. - + Users Nutzer @@ -9257,7 +10398,7 @@ Bitte versuche es noch einmal oder kontaktiere den Entwickler der Software.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -9266,17 +10407,57 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - - + + OK OK - + Cancel Abbrechen + + RyujinxDialog + + + Ryujinx Link + + + + + Linking save data to Ryujinx lets both Ryujinx and Eden reference the same save files for your games. + +By selecting "From Eden", previous save data stored in Ryujinx will be deleted, and vice versa for "From Ryujinx". + + + + + From Eden + + + + + From Ryujinx + + + + + Cancel + Abbrechen + + + + Failed to link save data + + + + + OS returned error: %1 + + + SequenceDialog @@ -9286,143 +10467,31 @@ p, li { white-space: pre-wrap; } - WaitTreeCallstack + SetPlayTimeDialog - - Call stack - Stack aufrufen - - - - WaitTreeSynchronizationObject - - - [%1] %2 - [%1] %2 + + Set Play Time Data + - - waited by no thread - von keinem Thread pausiert - - - - WaitTreeThread - - - runnable - lauffähig + + Hours: + Stunden: - - paused - pausiert + + Minutes: + Minuten: - - sleeping - schläft + + Seconds: + Sekunden: - - waiting for IPC reply - Warten auf IPC-Antwort - - - - waiting for objects - Warten auf Objekte - - - - waiting for condition variable - wartet auf condition variable - - - - waiting for address arbiter - Warten auf den Adressarbiter - - - - waiting for suspend resume - warten auf Fortsetzen nach Unterbrechung - - - - waiting - warten - - - - initialized - initialisiert - - - - terminated - beendet - - - - unknown - unbekannt - - - - PC = 0x%1 LR = 0x%2 - PC = 0x%1 LR = 0x%2 - - - - ideal - ideal - - - - core %1 - Kern %1 - - - - processor = %1 - Prozessor = %1 - - - - affinity mask = %1 - Affinitätsmaske = %1 - - - - thread id = %1 - Thread-ID = %1 - - - - priority = %1(current) / %2(normal) - Priorität = %1(aktuell) / %2(normal) - - - - last running ticks = %1 - Letzte laufende Ticks = %1 - - - - WaitTreeThreadList - - - waited by thread - gewartet von Thread - - - - WaitTreeWidget - - - &Wait Tree - &Wait Tree + + Total play time reached maximum. + diff --git a/dist/languages/el.ts b/dist/languages/el.ts index 3d51012936..9742495ac4 100644 --- a/dist/languages/el.ts +++ b/dist/languages/el.ts @@ -1,25 +1,15 @@ - - - + AboutDialog - - About yuzu - Σχετικά με το yuzu - - - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - - About eden - + About Eden + - <html><head/><body><p><span style=" font-size:28pt;">eden</span></p></body></html> - + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> + @@ -34,70 +24,50 @@ p, li { white-space: pre-wrap; } hr { height: 1px; border-width: 0; } li.unchecked::marker { content: "\2610"; } li.checked::marker { content: "\2612"; } -</style></head><body style=" font-family:'Adwaita Sans'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> - +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> + - <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">This software should not be used to play games you have not legally obtained.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Το yuzu είναι ένας πειραματικός εξομοιωτής ανοιχτού κώδικα για το Nintendo Switch κάτω από την άδεια χρήσης GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Αυτό το λογισμικό δεν πρέπει να χρησιμοποιείται για την αναπαραγωγή παιχνιδιών που δεν έχετε αποκτήσει νόμιμα.</span></p></body></html> - - - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Ιστοσελίδα</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Πηγαίος Κώδικας</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Συνεργάτες</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"></span>Άδεια</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. eden is not affiliated with Nintendo in any way.</span></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">Το &quot;Nintendo Switch&quot; είναι ένα εμπορικό σήμα της Nintendo. Το yuzu δεν συνδέεται με την Nintendo με κανέναν τρόπο.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. Eden is not affiliated with Nintendo in any way.</span></p></body></html> + CalibrationConfigurationDialog - + Communicating with the server... Επικοινωνία με τον διακομιστή... - + Cancel Άκυρο - + Touch the top left corner <br>of your touchpad. Αγγίξτε την πάνω αριστερή γωνία <br>του touchpad σας. - + Now touch the bottom right corner <br>of your touchpad. Τώρα αγγίξτε την κάτω δεξιά γωνία <br>του touchpad σας. - + Configuration completed! Η διαμόρφωση ολοκληρώθηκε! - + OK Εντάξει @@ -120,78 +90,78 @@ p, li { white-space: pre-wrap; } Αποστολή Μηνύματος - + Members Μέλη - + %1 has joined Ο %1 έχει συνδεθεί - + %1 has left Ο %1 αποχώρησε - + %1 has been kicked Ο %1 έχει διωχθεί - + %1 has been banned Ο %1 έχει αποκλειστεί - + %1 has been unbanned Ο %1 έχει καταργηθεί από τους αποκλεισμένους - + View Profile Εμφάνιση Προφίλ - - + + Block Player Αποκλεισμός Παίχτη - + When you block a player, you will no longer receive chat messages from them.<br><br>Are you sure you would like to block %1? Όταν αποκλείετε έναν παίκτη, δεν θα λαμβάνετε πλέον μηνύματα συνομιλίας από αυτόν. Είστε βέβαιοι ότι θέλετε να αποκλείσετε τον %1; - + Kick Διώξιμο - + Ban Αποκλεισμός - + Kick Player Διώξιμο Παίχτη - + Are you sure you would like to <b>kick</b> %1? Είστε βέβαιοι ότι θέλετε να <b>διώξετε</b> τον %1; - + Ban Player Αποκλεισμός Παίκτη - + Are you sure you would like to <b>kick and ban</b> %1? This would ban both their forum username and their IP address. @@ -215,7 +185,7 @@ This would ban both their forum username and their IP address. Moderation... - + @@ -226,17 +196,17 @@ This would ban both their forum username and their IP address. ClientRoomWindow - + Connected Συνδεδεμένο - + Disconnected Αποσυνδεμένο - + %1 - %2 (%3/%4 members) - connected %1 - %2 (%3/%4 μέλη) - συνδεμένα @@ -259,14 +229,10 @@ This would ban both their forum username and their IP address. Report Game Compatibility Αναφορά Συμβατότητας Παιχνιδιού - - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of yuzu you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected yuzu account</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Εάν επιλέξετε να υποβάλετε μια υπόθεση δοκιμής στη </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">Λίστα Συμβατότητας του yuzu</span></a><span style=" font-size:10pt;">, Οι ακόλουθες πληροφορίες θα συλλεχθούν και θα προβληθούν στον ιστότοπο:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Πληροφορίες Υλικού (CPU / GPU / Λειτουργικό Σύστημα)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ποιά έκδοση του yuzu τρέχετε </li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Τον συνδεδεμένο λογαριασμό yuzu</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">eden Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of eden you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected eden account</li></ul></body></html> - + @@ -281,22 +247,22 @@ This would ban both their forum username and their IP address. No The game doesn't get past the "Launching..." screen - + Yes The game gets past the intro/menu and into gameplay - + No The game crashes or freezes while loading or using the menu - + <html><head/><body><p>Does the game reach gameplay?</p></body></html> - + @@ -316,22 +282,22 @@ This would ban both their forum username and their IP address. Yes The game can be finished without any workarounds - + No The game can't progress past a certain area - + <html><head/><body><p>Is the game completely playable from start to finish?</p></body></html> - + Major The game has major graphical errors - + @@ -351,22 +317,22 @@ This would ban both their forum username and their IP address. Major The game has major audio errors - + Minor The game has minor audio errors - + None Audio is played perfectly - + <html><head/><body><p>Does the game have any audio glitches / missing effects?</p></body></html> - + @@ -374,22 +340,22 @@ This would ban both their forum username and their IP address. Ευχαριστούμε για την συμμετοχή! - + Submitting Υποβάλλεται - + Communication error Σφάλμα επικοινωνίας - + An error occurred while sending the Testcase Προέκυψε ένα σφάλμα κατά την αποστολή της Υπόθεσης Τεστ - + Next Επόμενο @@ -397,1525 +363,1865 @@ This would ban both their forum username and their IP address. ConfigurationShared - + % % - + Amiibo editor - + - + Controller configuration - + - + Data erase - + - + Error Σφάλμα - + Net connect - + - + Player select - + - + Software keyboard - + - + Mii Edit - + - + Online web - + - + Shop - + - + Photo viewer - + - + Offline web - + - + Login share - + - + Wifi web auth - + - + My page - + - + + Enable Overlay Applet + + + + + Enables Horizon's built-in overlay applet. Press and hold the home button for 1 second to show it. + + + + Output Engine: Μηχανή εξόδου: - + Output Device: - + - + Input Device: - + - + Mute audio - + - + Volume: Ένταση: - + Mute audio when in background Σίγαση ήχου όταν βρίσκεται στο παρασκήνιο - + Multicore CPU Emulation Εξομοίωση Πολυπύρηνων CPU - - This option increases CPU emulation thread use from 1 to the Switch’s maximum of 4. -This is mainly a debug option and shouldn’t be disabled. - + + This option increases CPU emulation thread use from 1 to the maximum of 4. +This is mainly a debug option and shouldn't be disabled. + - + Memory Layout - + - - Increases the amount of emulated RAM from the stock 4GB of the retail Switch to the developer kit's 8/6GB. -It’s doesn’t improve stability or performance and is intended to let big texture mods fit in emulated RAM. -Enabling it will increase memory use. It is not recommended to enable unless a specific game with a texture mod needs it. - + + Increases the amount of emulated RAM. +Doesn't affect performance/stability but may allow HD texture mods to load. + - + Limit Speed Percent Όριο Ποσοστού Ταχύτητας - - Controls the game's maximum rendering speed, but it’s up to each game if it runs faster or not. + + Controls the game's maximum rendering speed, but it's up to each game if it runs faster or not. 200% for a 30 FPS game is 60 FPS, and for a 60 FPS game it will be 120 FPS. Disabling it means unlocking the framerate to the maximum your PC can reach. - + - + + Turbo Speed + + + + + When the Turbo Speed hotkey is pressed, the speed will be limited to this percentage. + + + + + Slow Speed + + + + + When the Slow Speed hotkey is pressed, the speed will be limited to this percentage. + + + + Synchronize Core Speed - + - - Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). -Compatibility varies by game; many (especially older ones) may not respond well. + + Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). Can help reduce stuttering at lower framerates. - + - + Accuracy: Ακρίβεια: - - This setting controls the accuracy of the emulated CPU. -Don't change this unless you know what you are doing. - + + Change the accuracy of the emulated CPU (for debugging only). + - - + + Backend: - + - - Fast CPU Time - + + CPU Overclock + - + Overclocks the emulated CPU to remove some FPS limiters. Weaker CPUs may see reduced performance, and certain games may behave improperly. Use Boost (1700MHz) to run at the Switch's highest native clock, or Fast (2000MHz) to run at 2x clock. - + - + + Custom CPU Ticks + + + + + Set a custom value of CPU ticks. Higher values can increase performance, but may cause deadlocks. A range of 77-21000 is recommended. + + + + + Enable Host MMU Emulation (fastmem) + + + + + This optimization speeds up memory accesses by the guest program. +Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU. +Disabling this forces all memory accesses to use Software MMU Emulation. + + + + Unfuse FMA (improve performance on CPUs without FMA) Αχρησιμοποίητο FMA (βελτιώνει την απόδοση σε επεξεργαστές χωρίς FMA) - + This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support. - + - + Faster FRSQRTE and FRECPE Ταχύτερη FRSQRTE και FRECPE - + This option improves the speed of some approximate floating-point functions by using less accurate native approximations. - + - + Faster ASIMD instructions (32 bits only) Ταχύτερες οδηγίες ASIMD (μόνο 32 bits) - + This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes. - + - + Inaccurate NaN handling Ανακριβής χειρισμός NaN - + This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions. - + - + Disable address space checks Απενεργοποίηση ελέγχου χώρου διευθύνσεων - - This option improves speed by eliminating a safety check before every memory read/write in guest. -Disabling it may allow a game to read/write the emulator's memory. - + + This option improves speed by eliminating a safety check before every memory operation. +Disabling it may allow arbitrary code execution. + - + Ignore global monitor Αγνοήση καθολικής επίβλεψης - + 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. - + - + API: API: - - Switches between the available graphics APIs. -Vulkan is recommended in most cases. - + + Changes the output graphics API. +Vulkan is recommended. + - + Device: Συσκευή: - - This setting selects the GPU to use with the Vulkan backend. - + + This setting selects the GPU to use (Vulkan only). + - - Shader Backend: - - - - - The shader backend to use for the OpenGL renderer. -GLSL is the fastest in performance and the best in rendering accuracy. -GLASM is a deprecated NVIDIA-only backend that offers much better shader building performance at the cost of FPS and rendering accuracy. -SPIR-V compiles the fastest, but yields poor results on most GPU drivers. - - - - + Resolution: Ανάλυση: - - Forces the game to render at a different resolution. -Higher resolutions require much more VRAM and bandwidth. -Options lower than 1X can cause rendering issues. - + + Forces to render at a different resolution. +Higher resolutions require more VRAM and bandwidth. +Options lower than 1X can cause artifacts. + - + Window Adapting Filter: Φίλτρο Προσαρμογής Παραθύρου: - + FSR Sharpness: - + - - Determines how sharpened the image will look while using FSR’s dynamic contrast. - + + Determines how sharpened the image will look using FSR's dynamic contrast. + - + Anti-Aliasing Method: Μέθοδος Anti-Aliasing: - + The anti-aliasing method to use. SMAA offers the best quality. -FXAA has a lower performance impact and can produce a better and more stable picture under very low resolutions. - +FXAA can produce a more stable picture in lower resolutions. + - + Fullscreen Mode: Λειτουργία Πλήρους Οθόνης: - + The method used to render the window in fullscreen. Borderless offers the best compatibility with the on-screen keyboard that some games request for input. Exclusive fullscreen may offer better performance and better Freesync/Gsync support. - + - + Aspect Ratio: Αναλογία Απεικόνισης: - - Stretches the game to fit the specified aspect ratio. -Switch games only support 16:9, so custom game mods are required to get other ratios. + + Stretches the renderer to fit the specified aspect ratio. +Most games only support 16:9, so modifications are required to get other ratios. Also controls the aspect ratio of captured screenshots. - + - - Use disk pipeline cache - + + Use persistent pipeline cache + - + Allows saving shaders to storage for faster loading on following game boots. Disabling it is only intended for debugging. - + - - Optimize SPIRV output shader - + + Optimize SPIRV output + - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. This feature is experimental. - + - - Use asynchronous GPU emulation - Χρησιμοποίηση ασύγχρονης εξομοίωσης GPU - - - - Uses an extra CPU thread for rendering. -This option should always remain enabled. - - - - + NVDEC emulation: Εξομοίωση NVDEC: - + Specifies how videos should be decoded. It can either use the CPU or the GPU for decoding, or perform no decoding at all (black screen on videos). In most cases, GPU decoding provides the best performance. - + - + ASTC Decoding Method: - + - + This option controls how ASTC textures should be decoded. -CPU: Use the CPU for decoding, slowest but safest method. -GPU: Use the GPU's compute shaders to decode ASTC textures, recommended for most games and users. -CPU Asynchronously: Use the CPU to decode ASTC textures as they arrive. Completely eliminates ASTC decoding -stuttering at the cost of rendering issues while the texture is being decoded. - +CPU: Use the CPU for decoding. +GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). +CPU Asynchronously: Use the CPU to decode ASTC textures on demand. EliminatesASTC decoding +stuttering but may present artifacts. + - + ASTC Recompression Method: - + - - Almost all desktop and laptop dedicated GPUs lack support for ASTC textures, forcing the emulator to decompress to an intermediate format any card supports, RGBA8. -This option recompresses RGBA8 to either the BC1 or BC3 format, saving VRAM but negatively affecting image quality. - + + Most GPUs lack support for ASTC textures and must decompress to anintermediate format: RGBA8. +BC1/BC3: The intermediate format will be recompressed to BC1 or BC3 format, + saving VRAM but degrading image quality. + - + + Frame Pacing Mode (Vulkan only) + + + + + Controls how the emulator manages frame pacing to reduce stuttering and make the frame rate smoother and more consistent. + + + + VRAM Usage Mode: - + - - Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. Has no effect on integrated graphics. Aggressive mode may severely impact the performance of other applications such as recording software. - + + Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. +Aggressive mode may impact performance of other applications such as recording software. + - + + Skip CPU Inner Invalidation + + + + + Skips certain cache invalidations during memory updates, reducing CPU usage and improving latency. This may cause soft-crashes. + + + + VSync Mode: - + - + FIFO (VSync) does not drop frames or exhibit tearing but is limited by the screen refresh rate. -FIFO Relaxed is similar to FIFO but allows tearing as it recovers from a slow down. +FIFO Relaxed 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. - +Immediate (no synchronization) presents whatever is available and can exhibit tearing. + - + + Sync Memory Operations + + + + + Ensures data consistency between compute and memory operations. +This option fixes issues in games, but may degrade performance. +Unreal Engine 4 games often see the most significant changes thereof. + + + + Enable asynchronous presentation (Vulkan only) - + - + Slightly improves performance by moving presentation to a separate CPU thread. - + - + Force maximum clocks (Vulkan only) - + - + Runs work in the background while waiting for graphics commands to keep the GPU from lowering its clock speed. - + - + Anisotropic Filtering: Ανισοτροπικό Φιλτράρισμα: - + Controls the quality of texture rendering at oblique angles. -It’s a light setting and safe to set at 16x on most GPUs. - +Safe to set at 16x on most GPUs. + - - Accuracy Level: - Επίπεδο Ακρίβειας: + + GPU Mode: + - - GPU emulation accuracy. -Most games render fine with Normal, but High is still required for some. -Particles tend to only render correctly with High accuracy. -Extreme should only be used for debugging. -This option can be changed while playing. -Some games may require booting on high to render properly. - + + Controls the GPU emulation mode. +Most games render fine with Fast or Balanced modes, but Accurate is still required for some. +Particles tend to only render correctly with Accurate mode. + - - Use asynchronous shader building (Hack) - Χρήση ασύγχρονης σύνταξης σκίασης (Τέχνασμα) + + DMA Accuracy: + - - Enables asynchronous shader compilation, which may reduce shader stutter. -This feature is experimental. - + + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. + - Use Fast GPU Time (Hack) - Χρήση Γοργού Ρυθμού GPU (Τέχνασμα) + + Enable asynchronous shader compilation + - Enables Fast GPU Time. This option will force most games to run at their highest native resolution. - Ενεργοποιεί τον Γοργό Ρυθμό GPU. Αυτή η επιλογή θα αναγκάσει τα περισσότερα παιχνίδια να εκτελούνται στην υψηλότερη εγγενή τους ανάλυση. + + May reduce shader stutter. + - + + Fast GPU Time + + + + + Overclocks the emulated GPU to increase dynamic resolution and render distance. +Use 256 for maximal performance and 512 for maximal graphics fidelity. + + + + + GPU Unswizzle + + + + + Accelerates BCn 3D texture decoding using GPU compute. +Disable if experiencing crashes or graphical glitches. + + + + + GPU Unswizzle Max Texture Size + + + + + Sets the maximum size (MiB) for GPU-based texture unswizzling. +While the GPU is faster for medium and large textures, the CPU may be more efficient for very small ones. +Adjust this to find the balance between GPU acceleration and CPU overhead. + + + + + GPU Unswizzle Stream Size + + + + + Sets the maximum amount of texture data (in MiB) processed per frame. +Higher values can reduce stutter during texture loading but may impact frame consistency. + + + + + GPU Unswizzle Chunk Size + + + + + Determines the number of depth slices processed in a single dispatch. +Increasing this can improve throughput on high-end GPUs but may cause TDR or driver timeouts on weaker hardware. + + + + Use Vulkan pipeline cache - + - + Enables GPU vendor-specific pipeline cache. This option can improve shader loading time significantly in cases where the Vulkan driver does not store pipeline cache files internally. - + - + Enable Compute Pipelines (Intel Vulkan Only) - + - - Enable compute pipelines, required by some games. -This setting only exists for Intel proprietary drivers, and may crash if enabled. + + 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. - + - + Enable Reactive Flushing - + - + Uses reactive flushing instead of predictive flushing, allowing more accurate memory syncing. - + - + Sync to framerate of video playback - + - + Run the game at normal speed during video playback, even when the framerate is unlocked. - + - + Barrier feedback loops - + - + Improves rendering of transparency effects in specific games. - + - + + Enable buffer history + + + + + Enables access to previous buffer states. +This option may improve rendering quality and performance consistency in some games. + + + + + Fix bloom effects + + + + + Removes bloom in Burnout. + + + + + Enable Legacy Rescale Pass + + + + + May fix rescale issues in some games by relying on behavior from the previous implementation. +Legacy behavior workaround that fixes line artifacts on AMD and Intel GPUs, and grey texture flicker on Nvidia GPUs in Luigis Mansion 3. + + + + + Extended Dynamic State + + + + + Controls the number of features that can be used in Extended Dynamic State. +Higher states allow for more features and can increase performance, but may cause additional graphical issues. + + + + + Vertex Input Dynamic State + + + + + Enables vertex input dynamic state feature for better quality and performance. + + + + + Sample Shading + + + + + Allows the fragment shader to execute per sample in a multi-sampled fragment instead of once per fragment. Improves graphics quality at the cost of performance. +Higher values improve quality but degrade performance. + + + + RNG Seed RNG Seed - + Controls the seed of the random number generator. -Mainly used for speedrunning purposes. - +Mainly used for speedrunning. + - + Device Name - + - - The name of the emulated Switch. - + + The name of the console. + - + Custom RTC Date: - + - - This option allows to change the emulated clock of the Switch. + + This option allows to change the clock of the console. Can be used to manipulate time in games. - + - + + The number of seconds from the current unix time + + + + Language: - + - - Note: this can be overridden when region setting is auto-select - Σημείωση: αυτό μπορεί να παρακαμφθεί όταν η ρύθμιση περιοχής είναι ως αυτόματη επιλογή + + This option can be overridden when region setting is auto-select + - + Region: Περιφέρεια: - - The region of the emulated Switch. - + + The region of the console. + - + Time Zone: Ζώνη Ώρας: - - The time zone of the emulated Switch. - + + The time zone of the console. + - + Sound Output Mode: - + - + Console Mode: - + - - Selects if the console is emulated in Docked or Handheld mode. + + Selects if the console is in Docked or Handheld mode. Games will change their resolution, details and supported controllers and depending on this setting. Setting to Handheld can help improve performance for low end systems. - + - - Prompt for user on game boot - Επιλογή χρήστη κατά την εκκίνηση παιχνιδιού + + Unit Serial + - - Pause emulation when in background - Παύση εξομοίωσης όταν βρίσκεται στο παρασκήνιο + + Battery Serial + - - Fast GPU Time (Hack) - + + Debug knobs + - - Overclocks the emulated GPU to increase dynamic resolution and render distance. -Use 128 for maximal performance and 512 for maximal graphics fidelity. - + + Prompt for user profile on boot + - - Extended Dynamic State - + + Useful if multiple people use the same PC. + - - Enables the VkExtendedDynamicState* extensions. -Higher dynamic states will generally improve performance, but may cause issues on certain games or devices. - + + Pause when not in focus + - - Provoking Vertex - + + Pauses emulation when focusing on other windows. + - - Improves lighting and vertex handling in certain games. -Only Vulkan 1.0+ devices support this extension. - - - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - - Ask to select a user profile on each boot, useful if multiple people use eden on the same PC. - - - - - This setting pauses eden when focusing other windows. - - - - + Confirm before stopping emulation - + - - This setting overrides game prompts asking to confirm stopping the game. + + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - + - + Hide mouse on inactivity Απόκρυψη δρομέα ποντικιού στην αδράνεια - - This setting hides the mouse after 2.5s of inactivity. - + + Hides the mouse after 2.5s of inactivity. + - + Disable controller applet - + - - Forcibly disables the use of the controller applet by guests. -When a guest attempts to open the controller applet, it is immediately closed. - + + Forcibly disables the use of the controller applet in emulated programs. +When a program attempts to open the controller applet, it is immediately closed. + - + Check for updates - + - + Whether or not to check for updates upon startup. - + - + Enable Gamemode - + - + + Force X11 as Graphics Backend + + + + Custom frontend - + - + Real applet - + - + Never - + - + On Load - + - + Always - + - + CPU CPU - + GPU - + - + CPU Asynchronous - + - + Uncompressed (Best quality) - + - + BC1 (Low quality) - + - + BC3 (Medium quality) - + - - Conservative - - - - - Aggressive - - - - - OpenGL - - - - - Vulkan - Vulkan - - - - Null - - - - - GLSL - - - - - GLASM (Assembly Shaders, NVIDIA Only) - GLASM (Shaders Γλώσσας Μηχανής, μόνο NVIDIA) - - - - SPIR-V (Experimental, AMD/Mesa Only) - - - - - Normal - - - - - High - - - - - Extreme - - - - + + Auto Αυτόματη - + + 30 FPS + + + + + 60 FPS + + + + + 90 FPS + + + + + 120 FPS + + + + + Conservative + + + + + Aggressive + + + + + Vulkan + Vulkan + + + + OpenGL GLSL + + + + + OpenGL GLASM (Assembly Shaders, NVIDIA Only) + + + + + OpenGL SPIR-V (Experimental, AMD/Mesa Only) + + + + + Null + + + + + Fast + + + + + Balanced + + + + + Accurate Ακριβής - - Unsafe - Επισφαλής - - - - Paranoid (disables most optimizations) - - - - - Dynarmic - - - - - NCE - - - - - Borderless Windowed - Παραθυροποιημένο Χωρίς Όρια - - - - Exclusive Fullscreen - Αποκλειστική Πλήρης Οθόνη - - - - No Video Output - Χωρίς Έξοδο Βίντεο - - - - CPU Video Decoding - Αποκωδικοποίηση Βίντεο CPU - - - - GPU Video Decoding (Default) - Αποκωδικοποίηση Βίντεο GPU (Προεπιλογή) - - - - 0.25X (180p/270p) [EXPERIMENTAL] - - - - - 0.5X (360p/540p) [EXPERIMENTAL] - - - - - 0.75X (540p/810p) [EXPERIMENTAL] - 0.75X (540p/810p) [ΠΕΙΡΑΜΑΤΙΚΟ] - - - - 1X (720p/1080p) - 1X (720p/1080p) - - - - 1.5X (1080p/1620p) [EXPERIMENTAL] - - - - - 2X (1440p/2160p) - 2X (1440p/2160p) - - - - 3X (2160p/3240p) - 3X (2160p/3240p) - - - - 4X (2880p/4320p) - 4X (2880p/4320p) - - - - 5X (3600p/5400p) - 5X (3600p/5400p) - - - - 6X (4320p/6480p) - 6X (4320p/6480p) - - - - 7X (5040p/7560p) - - - - - 8X (5760p/8640p) - - - - - Nearest Neighbor - Πλησιέστερος Γείτονας - - - - Bilinear - Διγραμμικό - - - - Bicubic - Δικυβικό - - - - Gaussian - Gaussian - - - - ScaleForce - ScaleForce - - - - AMD FidelityFX™️ Super Resolution - - - - - Area - - - - - None - Κανένα - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Default (16:9) - Προεπιλογή (16:9) - - - - Force 4:3 - Επιβολή 4:3 - - - - Force 21:9 - Επιβολή 21:9 - - - - Force 16:10 - Επιβολή 16:10 - - - - Stretch to Window - Επέκταση στο Παράθυρο - - - - Automatic - Αυτόματα - - - + + Default Προεπιλεγμένο - + + Unsafe (fast) + + + + + Safe (stable) + + + + + Unsafe + Επισφαλής + + + + Paranoid (disables most optimizations) + + + + + Debugging + + + + + Dynarmic + + + + + NCE + + + + + Borderless Windowed + Παραθυροποιημένο Χωρίς Όρια + + + + Exclusive Fullscreen + Αποκλειστική Πλήρης Οθόνη + + + + No Video Output + Χωρίς Έξοδο Βίντεο + + + + CPU Video Decoding + Αποκωδικοποίηση Βίντεο CPU + + + + GPU Video Decoding (Default) + Αποκωδικοποίηση Βίντεο GPU (Προεπιλογή) + + + + 0.25X (180p/270p) [EXPERIMENTAL] + + + + + 0.5X (360p/540p) [EXPERIMENTAL] + + + + + 0.75X (540p/810p) [EXPERIMENTAL] + 0.75X (540p/810p) [ΠΕΙΡΑΜΑΤΙΚΟ] + + + + 1X (720p/1080p) + 1X (720p/1080p) + + + + 1.25X (900p/1350p) [EXPERIMENTAL] + + + + + 1.5X (1080p/1620p) [EXPERIMENTAL] + + + + + 2X (1440p/2160p) + 2X (1440p/2160p) + + + + 3X (2160p/3240p) + 3X (2160p/3240p) + + + + 4X (2880p/4320p) + 4X (2880p/4320p) + + + + 5X (3600p/5400p) + 5X (3600p/5400p) + + + + 6X (4320p/6480p) + 6X (4320p/6480p) + + + + 7X (5040p/7560p) + + + + + 8X (5760p/8640p) + + + + + Nearest Neighbor + Πλησιέστερος Γείτονας + + + + Bilinear + Διγραμμικό + + + + Bicubic + Δικυβικό + + + + Gaussian + Gaussian + + + + Lanczos + + + + + ScaleForce + ScaleForce + + + + AMD FidelityFX Super Resolution + + + + + Area + + + + + MMPX + + + + + Zero-Tangent + + + + + B-Spline + + + + + Mitchell + + + + + Spline-1 + + + + + + None + Κανένα + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Default (16:9) + Προεπιλογή (16:9) + + + + Force 4:3 + Επιβολή 4:3 + + + + Force 21:9 + Επιβολή 21:9 + + + + Force 16:10 + Επιβολή 16:10 + + + + Stretch to Window + Επέκταση στο Παράθυρο + + + + Automatic + Αυτόματα + + + 2x 2x - + 4x 4x - + 8x 8x - + 16x 16x - + + 32x + + + + + 64x + + + + Japanese (日本語) Ιαπωνικά (日本語) - + American English - + - + French (français) Γαλλικά (Français) - + German (Deutsch) Γερμανικά (Deutsch) - + Italian (italiano) Ιταλικά (Italiano) - + Spanish (español) Ισπανικά (Español) - + Chinese Κινέζικα - + Korean (한국어) Κορεάτικα (한국어) - + Dutch (Nederlands) Ολλανδικά (Nederlands) - + Portuguese (português) Πορτογαλικά (Português) - + Russian (Русский) Ρώσικα (Русский) - + Taiwanese Ταϊβανέζικα - + British English Βρετανικά Αγγλικά - + Canadian French Καναδικά Γαλλικά - + Latin American Spanish Λατινοαμερικάνικα Ισπανικά - + Simplified Chinese Απλοποιημένα Κινέζικα - + Traditional Chinese (正體中文) Παραδοσιακά Κινέζικα (正體中文) - + Brazilian Portuguese (português do Brasil) Πορτογαλικά Βραζιλίας (Português do Brasil) - - + + Polish (polska) + + + + + Thai (แบบไทย) + + + + + Japan Ιαπωνία - + USA ΗΠΑ - + Europe Ευρώπη - + Australia Αυστραλία - + China Κίνα - + Korea Κορέα - + Taiwan Ταϊβάν - + Auto (%1) Auto select time zone - + - + Default (%1) Default time zone - + - + CET CET - + CST6CDT CST6CDT - + Cuba Κούβα - + EET EET - + Egypt Αίγυπτος - + Eire - + - + EST EST - + EST5EDT EST5EDT - + GB - + - + GB-Eire - + - + GMT GMT - + GMT+0 GMT+0 - + GMT-0 GMT-0 - + GMT0 GMT0 - + Greenwich Γκρήνουιτς - + Hongkong Χονγκ Κονγκ - + HST HST - + Iceland Ισλανδία - + Iran Ιράν - + Israel Ισραήλ - + Jamaica Ιαμαϊκή - + Kwajalein - + - + Libya Λιβύη - + MET MET - + MST MST - + MST7MDT MST7MDT - + Navajo Ναβάχο - + NZ - + - + NZ-CHAT - + - + Poland Πολωνία - + Portugal Πορτογαλία - + PRC - + - + PST8PDT PST8PDT - + ROC ROC - + ROK ROK - + Singapore Σιγκαπούρη - + Turkey Τουρκία - + UCT UCT - + Universal Παγκόσμια - + UTC UTC - + W-SU W-SU - + WET WET - + Zulu - + - + Mono Μονοφωνικό - + Stereo Στέρεοφωνικό - + Surround - + - + 4GB DRAM (Default) - + - + 6GB DRAM (Unsafe) - + - + 8GB DRAM - + - + 10GB DRAM (Unsafe) - + - + 12GB DRAM (Unsafe) - + - - Low (128) - - - - - Medium (256) - - - - - High (512) - - - - + Docked Docked - + Handheld Handheld - + + + Off + + + + Boost (1700MHz) - + - + Fast (2000MHz) - + - + Always ask (Default) - + - + Only if game specifies not to stop - + - + Never ask - + + + + + + Medium (256) + + + + + + High (512) + + + + + Very Small (16 MB) + + + + + Small (32 MB) + + + + + Normal (128 MB) + + + + + Large (256 MB) + + + + + Very Large (512 MB) + + + + + Very Low (4 MB) + + + + + Low (8 MB) + + + + + Normal (16 MB) + + + + + Medium (32 MB) + + + + + High (64 MB) + + + + + Very Low (32) + + + + + Low (64) + + + + + Normal (128) + + + + + Disabled + + + + + ExtendedDynamicState 1 + + + + + ExtendedDynamicState 2 + + + + + ExtendedDynamicState 3 + + + + + Tree View + + + + + Grid View + @@ -1928,12 +2234,12 @@ When a guest attempts to open the controller applet, it is immediately closed. Applets - + Applet mode preference - + @@ -1950,37 +2256,37 @@ When a guest attempts to open the controller applet, it is immediately closed. Configure Infrared Camera - + Select where the image of the emulated camera comes from. It may be a virtual camera or a real camera. - + Camera Image Source: - + Input device: - + Preview - + Resolution: 320*240 - + Click to preview - + @@ -1988,7 +2294,7 @@ When a guest attempts to open the controller applet, it is immediately closed.Επαναφορά Προεπιλογών - + Auto Αυτόματη @@ -2018,7 +2324,7 @@ When a guest attempts to open the controller applet, it is immediately closed. CPU Backend - + @@ -2175,29 +2481,29 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all memory accesses to use Software MMU Emulation.</div> - + Enable Host MMU Emulation (general memory instructions) - + <div style="white-space: nowrap">This optimization speeds up exclusive memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all exclusive memory accesses to use Software MMU Emulation.</div> - + Enable Host MMU Emulation (exclusive memory instructions) - + @@ -2219,14 +2525,14 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up memory accesses by allowing invalid memory accesses to succeed.</div> - <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> + <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> - + Enable fallbacks for invalid memory accesses - + @@ -2239,12 +2545,12 @@ When a guest attempts to open the controller applet, it is immediately closed. Debugger - + Enable GDB Stub - + @@ -2257,29 +2563,29 @@ When a guest attempts to open the controller applet, it is immediately closed.Καταγραφή Συμβάντων - - Open Log Location - Άνοιγμα θέσης του αρχείου καταγραφής - - - + Global Log Filter Παγκόσμιο φίλτρο αρχείου καταγραφής - + When checked, the max size of the log increases from 100 MB to 1 GB Όταν επιλεγεί, το μέγιστο μέγεθος του αρχείου καταγραφής αυξάνεται από 100 MB σε 1 GB - + Enable Extended Logging** Ενεργοποίηση Εκτεταμένης Καταγραφής** - + Show Log in Console - + + + + + Open Log Location + Άνοιγμα θέσης του αρχείου καταγραφής @@ -2289,7 +2595,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Arguments String - + @@ -2309,12 +2615,12 @@ When a guest attempts to open the controller applet, it is immediately closed. When checked, it will dump all the macro programs of the GPU - + Dump Maxwell Macros - + @@ -2334,12 +2640,12 @@ When a guest attempts to open the controller applet, it is immediately closed. Dump Game Shaders - + Enable Renderdoc Hotkey - + @@ -2354,12 +2660,12 @@ When a guest attempts to open the controller applet, it is immediately closed. When checked, it disables the macro HLE functions. Enabling this makes games run slower - + Disable Macro HLE - + @@ -2374,7 +2680,7 @@ When a guest attempts to open the controller applet, it is immediately closed. When checked, yuzu will log statistics about the compiled pipeline cache - + @@ -2384,12 +2690,12 @@ When a guest attempts to open the controller applet, it is immediately closed. <html><head/><body><p>When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.</p></body></html> - + Disable Buffer Reorder - + @@ -2409,36 +2715,27 @@ When a guest attempts to open the controller applet, it is immediately closed. Disable Web Applet - + Enable All Controller Types - + - - Censor username in logs - - - - - **This will be reset automatically when eden closes. - - - - Enable Auto-Stub** - Ενεργοποίηση Auto-Stub** + + Enable Auto-Stub + Kiosk (Quest) Mode - + - Enable CPU Debugging - Ενεργοποίηση Εντοπισμού Σφαλμάτων CPU + Use dev.keys + @@ -2451,43 +2748,74 @@ When a guest attempts to open the controller applet, it is immediately closed.Εντοπισμός Σφαλμάτων - - Flush log output on each line - + + Battery Serial: + - - Enable FS Access Log - + + Bitmask for quick development toggles + - + + Set debug knobs (bitmask) + + + + + 16-bit debug knob set for quick development toggles + + + + + (bitmask) + + + + + Debug Knobs: + + + + + Unit Serial: + + + + Enable this to output the latest generated audio command list to the console. Only affects games using the audio renderer. - + - - Enable Auto-Stub - - - - + Dump Audio Commands To Console** - + - + + Flush log output on each line + + + + + Enable FS Access Log + + + + Enable Verbose Reporting Services** - + - **This will be reset automatically when yuzu closes. - **Αυτό θα μηδενιστεί αυτόματα όταν το yuzu κλείσει. + + Censor username in logs + - - Web applet not compiled - Το web applet δεν έχει συσταθεί + + **This will be reset automatically when Eden closes. + @@ -2529,103 +2857,99 @@ When a guest attempts to open the controller applet, it is immediately closed. ConfigureDialog - - yuzu Configuration - Διαμόρφωση yuzu - - eden Configuration - + Eden Configuration + Some settings are only available when a game is not running. - + - + Applets - + - - + + Audio Ήχος - - + + CPU CPU - + Debug Αποσφαλμάτωση - + Filesystem Σύστημα Αρχείων - - + + General Γενικά - - + + Graphics Γραφικά - + GraphicsAdvanced - + - - GraphicsExtensions - + + GraphicsExtra + - + Hotkeys Πλήκτρα Συντόμευσης - - + + Controls Χειρισμός - + Profiles Τα προφίλ - + Network Δίκτυο - - + + System Σύστημα - + Game List Λίστα Παιχνιδιών - + Web Ιστός @@ -2655,9 +2979,10 @@ When a guest attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2667,107 +2992,183 @@ When a guest attempts to open the controller applet, it is immediately closed.Κάρτα SD - + + Save Data + + + + Gamecard Κάρτα Παιχνιδιού - + Path Μονοπάτι - + Inserted Εισηγμένο - + Current Game Τρέχων Παιχνίδι - + Patch Manager Διαχειριστής Ενημερώσεων Κώδικα - + Dump Decompressed NSOs - + - + Dump ExeFS - + - + Mod Load Root - + - + Dump Root - + - + Caching Προσωρινή Αποθήκευση - + Cache Game List Metadata Αποθήκευση Μεταδεδομένων Λίστας Παιχνιδιών - - - - + Reset Metadata Cache Επαναφορά Προσωρινής Μνήμης Μεταδεδομένων - - - Select Emulated NAND Directory... - - - - - Select Emulated SD Directory... - - - - - Select Gamecard Path... - - - - - Select Dump Directory... - - + Select Emulated NAND Directory... + + + + + Select Emulated SD Directory... + + + + + + Select Save Data Directory... + + + + + Select Gamecard Path... + + + + + Select Dump Directory... + + + + Select Mod Load Directory... - + - - The metadata cache is already empty. - Η προσωρινή μνήμη μεταδεδομένων είναι ήδη άδεια. + + Save Data Directory + - - The operation completed successfully. - Η επέμβαση ολοκληρώθηκε με επιτυχία. + + Choose an action for the save data directory: + - - The metadata cache couldn't be deleted. It might be in use or non-existent. - Δεν ήταν δυνατή η διαγραφή της προσωρινής μνήμης μεταδεδομένων. Μπορεί να χρησιμοποιείται ή να μην υπάρχει. + + Set Custom Path + + + + + Reset to NAND + + + + + Save data exists in both the old and new locations. + +Old: %1 +New: %2 + +Would you like to migrate saves from the old location? +WARNING: This will overwrite any conflicting saves in the new location! + + + + + Would you like to migrate your save data to the new location? + +From: %1 +To: %2 + + + + + Migrate Save Data + + + + + Migrating save data... + + + + + Cancel + + + + + + Migration Failed + + + + + Failed to create destination directory. + + + + + Failed to migrate save data: +%1 + + + + + Migration Complete + + + + + Save data has been migrated successfully. + +Would you like to delete the old save data? + @@ -2785,28 +3186,54 @@ When a guest attempts to open the controller applet, it is immediately closed. - Linux - + External Content + - + + Add directories to scan for DLCs and Updates without installing to NAND + + + + + Add Directory + + + + + Remove Selected + + + + Reset All Settings Επαναφορά Όλων των Ρυθμίσεων - yuzu - yuzu + + Eden + - - eden - - - - + This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed? Επαναφέρει όλες τις ρυθμίσεις και καταργεί όλες τις επιλογές ανά παιχνίδι. Δεν θα διαγράψει καταλόγους παιχνιδιών, προφίλ ή προφίλ εισόδου. Συνέχιση; + + + Select External Content Directory... + + + + + Directory Already Added + + + + + This directory is already in the list. + + ConfigureGraphics @@ -2836,35 +3263,35 @@ When a guest attempts to open the controller applet, it is immediately closed.Χρώμα Φόντου: - + % FSR sharpening percentage (e.g. 50%) % - + Off - + - + VSync Off - + - + Recommended - + - + On - + - + VSync On - + @@ -2880,7 +3307,7 @@ When a guest attempts to open the controller applet, it is immediately closed.Για προχωρημένους - + Advanced Graphics Settings Προηγμένες Ρυθμίσεις Γραφικών @@ -2890,24 +3317,38 @@ When a guest attempts to open the controller applet, it is immediately closed. Form - Φόρμα + - Extensions - + Extras + - - Vulkan Extension Settings - + + Hacks + - - While it's recommended to use state 3, some games may perform better on lower states. Setting to 0 (disabled) may also break games. -If your GPU is older (i.e. RX570/580 or older), it may not support these features. If this is the case, set the slider to 0 and uncheck all boxes. -These settings are experimental, and may cause black screens. If your games fail to boot or are stuck on a black screen, change these settings around. - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + + + + + % + Sample Shading percentage (e.g. 50%) + + + + + Extended Dynamic State is disabled on macOS due to MoltenVK compatibility issues that cause black screens. + @@ -2938,75 +3379,75 @@ These settings are experimental, and may cause black screens. If your games fail Επαναφορά Προεπιλογών - + Action Δράση - + Hotkey Πλήκτρο Συντόμευσης - + Controller Hotkey Πλήκτρο Συντόμευσης Χειριστηρίου - - - + + + Conflicting Key Sequence Αντικρουόμενη Ακολουθία Πλήκτρων - - + + The entered key sequence is already assigned to: %1 Η εισαγόμενη ακολουθία πλήκτρων έχει ήδη αντιστοιχιστεί στο: %1 - + [waiting] [αναμονή] - + Invalid Μη Έγκυρο - + Invalid hotkey settings - + - + An error occurred. Please report this issue on github. - + - + Restore Default Επαναφορά Προκαθορισμένων - + Clear Καθαρισμός - + Conflicting Button Sequence Αντικρουόμενη Ακολουθία Κουμπιών - + The default button sequence is already assigned to: %1 Η προεπιλεγμένη ακολουθία κουμπιών έχει ήδη αντιστοιχιστεί στο: %1 - + The default key sequence is already assigned to: %1 Η προεπιλεγμένη ακολουθία πλήκτρων έχει ήδη αντιστοιχιστεί στο: %1 @@ -3016,7 +3457,7 @@ These settings are experimental, and may cause black screens. If your games fail ConfigureInput - + @@ -3191,7 +3632,7 @@ These settings are experimental, and may cause black screens. If your games fail L Body - + @@ -3203,7 +3644,7 @@ These settings are experimental, and may cause black screens. If your games fail L Button - + @@ -3215,7 +3656,7 @@ These settings are experimental, and may cause black screens. If your games fail R Body - + @@ -3227,7 +3668,7 @@ These settings are experimental, and may cause black screens. If your games fail R Button - + @@ -3292,7 +3733,7 @@ These settings are experimental, and may cause black screens. If your games fail Debug Controller - + @@ -3305,12 +3746,12 @@ These settings are experimental, and may cause black screens. If your games fail Ring Controller - + Infrared Camera - + @@ -3326,17 +3767,13 @@ These settings are experimental, and may cause black screens. If your games fail - Requires restarting eden - - - - Requires restarting yuzu - Απαιτεί επανεκκίνηση του yuzu + Requires restarting Eden + Enable XInput 8 player support (disables web applet) - + @@ -3351,27 +3788,27 @@ These settings are experimental, and may cause black screens. If your games fail Enable direct JoyCon driver - + Enable direct Pro Controller driver [EXPERIMENTAL] - + Allows unlimited uses of the same Amiibo in games that would otherwise limit you to one use. - + Use random Amiibo ID - + Motion / Touch - + @@ -3389,57 +3826,57 @@ These settings are experimental, and may cause black screens. If your games fail Input Profiles - + Player 1 Profile - + Player 2 Profile - + Player 3 Profile - + Player 4 Profile - + Player 5 Profile - + Player 6 Profile - + Player 7 Profile - + Player 8 Profile - + Use global input configuration - + Player %1 profile - + @@ -3481,30 +3918,19 @@ These settings are experimental, and may cause black screens. If your games fail - + Left Stick Αριστερό Stick - - - - - - - Up - Πάνω - - - - - - - - - - Left - Αριστερά + + + + + + + Down + Κάτω @@ -3518,14 +3944,25 @@ These settings are experimental, and may cause black screens. If your games fail Δεξιά - - - - - - - Down - Κάτω + + + + + + + + Left + Αριστερά + + + + + + + + + Up + Πάνω @@ -3572,14 +4009,6 @@ These settings are experimental, and may cause black screens. If your games fail D-Pad D-Pad - - - - - - SL - SL - @@ -3589,59 +4018,55 @@ These settings are experimental, and may cause black screens. If your games fail SR - - - - L - L + + + + + SL + SL - + ZL ZL + + + + + L + L + Minus Μείον - - - - Capture - Στιγμιότυπο - - + Plus Συν - - - Home - Αρχική + + + + ZR + ZR - - + + R R - - - - - ZR - ZR - Motion 1 @@ -3652,10 +4077,22 @@ These settings are experimental, and may cause black screens. If your games fail Motion 2 Κίνηση 2 + + + + Capture + Στιγμιότυπο + + + + + Home + Αρχική + Face Buttons - + @@ -3664,10 +4101,10 @@ These settings are experimental, and may cause black screens. If your games fail Χ - - - Y - Υ + + + B + B @@ -3676,21 +4113,21 @@ These settings are experimental, and may cause black screens. If your games fail A - - - B - B + + + Y + Υ - + Right Stick Δεξιός Μοχλός Mouse panning - + @@ -3698,242 +4135,242 @@ These settings are experimental, and may cause black screens. If your games fail Διαμόρφωση - - - - + + + + Clear Καθαρισμός - - - - - + + + + + [not set] [άδειο] - - - + + + Invert button Κουμπί αντιστροφής - - + + Toggle button Κουμπί εναλλαγής - + Turbo button - + - - + + Invert axis Αντιστροφή άξονα - - - + + + Set threshold Ορισμός ορίου - - + + Choose a value between 0% and 100% Επιλέξτε μια τιμή μεταξύ 0% και 100% - + Toggle axis Εναλλαγή αξόνων - + Set gyro threshold Ρύθμιση κατωφλίου γυροσκοπίου - + Calibrate sensor - + - + Map Analog Stick Χαρτογράφηση Αναλογικού Stick - + After pressing OK, first move your joystick horizontally, and then vertically. To invert the axes, first move your joystick vertically, and then horizontally. Αφού πατήσετε OK, μετακινήστε πρώτα το joystick σας οριζόντια και μετά κατακόρυφα. Για να αντιστρέψετε τους άξονες, μετακινήστε πρώτα το joystick κατακόρυφα και μετά οριζόντια. - + Center axis Κεντρικός άξονας - - + + Deadzone: %1% Νεκρή Ζώνη: %1% - - + + Modifier Range: %1% Εύρος Τροποποιητή: %1% - - + + Pro Controller Pro Controller - + Dual Joycons Διπλά Joycons - + Left Joycon Αριστερό Joycon - + Right Joycon Δεξί Joycon - + Handheld Handheld - + GameCube Controller Χειριστήριο GameCube - + Poke Ball Plus Poke Ball Plus - + NES Controller Χειριστήριο NES - + SNES Controller Χειριστήριο SNES - + N64 Controller Χειριστήριο N64 - + Sega Genesis Sega Genesis - + Start / Pause - + - + Z Z - + Control Stick - + - + C-Stick C-Stick - + Shake! - + - + [waiting] [αναμονή] - + New Profile Νέο Προφίλ - + Enter a profile name: Εισαγάγετε ένα όνομα προφίλ: - - + + Create Input Profile Δημιουργία Προφίλ Χειρισμού - + The given profile name is not valid! Το όνομα του προφίλ δεν είναι έγκυρο! - + Failed to create the input profile "%1" Η δημιουργία του προφίλ χειρισμού "%1" απέτυχε - + Delete Input Profile Διαγραφή Προφίλ Χειρισμού - + Failed to delete the input profile "%1" Η διαγραφή του προφίλ χειρισμού "%1" απέτυχε - + Load Input Profile Φόρτωση Προφίλ Χειρισμού - + Failed to load the input profile "%1" Η φόρτωση του προφίλ χειρισμού "%1" απέτυχε - + Save Input Profile Αποθήκευση Προφίλ Χειρισμού - + Failed to save the input profile "%1" Η αποθήκευση του προφίλ χειρισμού "%1" απέτυχε @@ -3956,26 +4393,17 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Προκαθορισμένα - - ConfigureLinuxTab - - - - Linux - - - ConfigureMotionTouch Configure Motion / Touch - + Touch - + @@ -3990,14 +4418,14 @@ To invert the axes, first move your joystick vertically, and then horizontally.< - + Configure Διαμόρφωση Touch from button profile: - + @@ -4007,7 +4435,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< You may use any Cemuhook compatible UDP input source to provide motion and touch input. - + @@ -4020,107 +4448,93 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Πόρτα: - - Learn More - Μάθετε Περισσότερα - - - - + + Test Τεστ - + Add Server Προσθήκη Διακομιστή - + Remove Server Κατάργηση Διακομιστή - + %1:%2 %1:%2 - yuzu - yuzu + + + + + + + Eden + - - <a href='https://eden-emulator.github.io/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - - - - + Port number has invalid characters Ο αριθμός θύρας έχει μη έγκυρους χαρακτήρες - - - - - - - eden - - - - + Port has to be in range 0 and 65353 Η θύρα πρέπει να ανήκει στο εύρος 0 και 65353 - + IP address is not valid Η διεύθυνση IP δεν είναι έγκυρη - + This UDP server already exists Αυτός ο διακομιστής UDP υπάρχει ήδη - + Unable to add more than 8 servers Δεν είναι δυνατή η προσθήκη περισσότερων από 8 διακομιστών - + Testing Δοκιμή - + Configuring Διαμόρφωση - + Test Successful Τεστ Επιτυχές - + Successfully received data from the server. Λήφθηκαν με επιτυχία δεδομένα από τον διακομιστή. - + Test Failed Η Δοκιμή Απέτυχε - + Could not receive valid data from the server.<br>Please verify that the server is set up correctly and the address and port are correct. Δεν ήταν δυνατή η λήψη έγκυρων δεδομένων από τον διακομιστή.<br>Βεβαιωθείτε ότι ο διακομιστής έχει ρυθμιστεί σωστά και ότι η διεύθυνση και η θύρα είναι σωστές. - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. Η δοκιμή UDP ή η διαμόρφωση βαθμονόμησης είναι σε εξέλιξη.<br>Παρακαλώ περιμένετε να τελειώσουν. @@ -4130,7 +4544,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Configure mouse panning - + @@ -4140,17 +4554,17 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Can be toggled via a hotkey. Default hotkey is Ctrl + F9 - + Sensitivity - + Horizontal - + @@ -4164,37 +4578,37 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Vertical - + Deadzone counterweight - + Counteracts a game's built-in deadzone - + Deadzone - + Stick decay - + Strength - + Minimum - + @@ -4205,22 +4619,22 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Mouse panning works better with a deadzone of 0% and a range of 100%. Current values are %1% and %2% respectively. - + Emulated mouse is enabled. This is incompatible with mouse panning. - + Emulated mouse is enabled - + Real mouse input and mouse panning are incompatible. Please disable the emulated mouse in input advanced settings to allow mouse panning. - + @@ -4246,9 +4660,9 @@ Current values are %1% and %2% respectively. Διεπαφή Δικτύου - - None - Κανένα + + Enable Airplane Mode + @@ -4256,12 +4670,12 @@ Current values are %1% and %2% respectively. Dialog - + Info - + @@ -4281,7 +4695,7 @@ Current values are %1% and %2% respectively. Format - + @@ -4301,52 +4715,57 @@ Current values are %1% and %2% respectively. Some settings are only available when a game is not running. - + - + Add-Ons Πρόσθετα - + System Σύστημα - + CPU CPU - + Graphics Γραφικά - + Adv. Graphics Προχ. Γραφικά - - GPU Extensions - + + Ext. Graphics + - + Audio Ήχος - + Input Profiles - + - Linux - + Network + + + + + Applets + @@ -4367,15 +4786,110 @@ Current values are %1% and %2% respectively. Πρόσθετα - + + Import Mod from ZIP + + + + + Import Mod from Folder + + + + Patch Name Όνομα Ενημέρωσης Κώδικα - + Version Έκδοση + + + Mod Install Succeeded + + + + + Successfully installed all mods. + + + + + Mod Install Failed + + + + + Failed to install the following mods: + %1 +Check the log for details. + + + + + Mod Folder + + + + + Zipped Mod Location + + + + + Zipped Archives (*.zip) + + + + + Invalid Selection + + + + + Only mods, cheats, and patches can be deleted. +To delete NAND-installed updates, right-click the game in the game list and click Remove -> Remove Installed Update. + + + + + You are about to delete the following installed mods: + + + + + + +Once deleted, these can NOT be recovered. Are you 100% sure you want to delete them? + + + + + Delete add-on(s)? + + + + + Successfully deleted + + + + + Successfully deleted all selected mods. + + + + + &Delete + + + + + &Open in File Manager + + ConfigureProfileManager @@ -4405,32 +4919,17 @@ Current values are %1% and %2% respectively. Όνομα χρήστη - - Set Image - Ορισμός Εικόνας - - - + Add Προσθήκη - - Rename - Μετονομασία - - - - Remove - Αφαίρεση - - - + Profile management is available only when game is not running. Η διαχείριση προφίλ είναι διαθέσιμη μόνο όταν το παιχνίδι δεν εκτελείται. - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -4438,103 +4937,83 @@ Current values are %1% and %2% respectively. %2 - - Enter Username - Εισάγετε Όνομα Χρήστη - - - + Users Χρήστες - - Enter a username for the new user: - Εισαγάγετε ένα όνομα χρήστη για τον νέο χρήστη: - - - - Enter a new username: - Εισαγάγετε ένα νέο όνομα χρήστη: - - - - Select User Image - Επιλέξτε Εικόνα χρήστη - - - - JPEG Images (*.jpg *.jpeg) - Εικόνες JPEG (*.jpg *.jpeg) - - - + Error deleting image Σφάλμα κατα τη διαγραφή εικόνας - + Error occurred attempting to overwrite previous image at: %1. Παρουσιάστηκε σφάλμα κατά την προσπάθεια αντικατάστασης της προηγούμενης εικόνας στο: %1. - + Error deleting file Σφάλμα κατα τη διαγραφή του αρχείου - + Unable to delete existing file: %1. Δεν είναι δυνατή η διαγραφή του υπάρχοντος αρχείου: %1. - + Error creating user image directory Σφάλμα δημιουργίας καταλόγου εικόνων χρήστη - + Unable to create directory %1 for storing user images. Δεν είναι δυνατή η δημιουργία του καταλόγου %1 για την αποθήκευση εικόνων χρήστη. - - Error copying user image - Σφάλμα κατά την αντιγραφή της εικόνας χρήστη + + Error saving user image + - - Unable to copy image from %1 to %2 - Αδύνατη η αντιγραφή της εικόνας από το %1 στο %2 + + Unable to save image to file + - - Error resizing user image - Σφάλμα αλλαγής μεγέθους εικόνας χρήστη + + &Edit + - - Unable to resize image - Δεν είναι δυνατή η αλλαγή μεγέθους της εικόνας + + &Delete + + + + + Edit User + ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. - + - + Confirm Delete Επιβεβαίωση Διαγραφής - + Name: %1 UUID: %2 - + @@ -4542,29 +5021,29 @@ UUID: %2 Configure Ring Controller - + 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. - + Virtual Ring Sensor Parameters - + Pull - + Push - + @@ -4574,29 +5053,29 @@ UUID: %2 Direct Joycon Driver - + Enable Ring Input - + - + Enable - + Ring Sensor Value - + - + Not connected - + @@ -4604,63 +5083,63 @@ UUID: %2 Επαναφορά Προεπιλογών - + Clear Καθαρισμός - + [not set] [μη ορισμένο] - + Invert axis Αντιστροφή άξονα - - + + Deadzone: %1% Νεκρή Ζώνη: %1% - + Error enabling ring input - + - + Direct Joycon driver is not enabled - + - + Configuring Διαμόρφωση - + The current mapped device doesn't support the ring controller - - - - - The current mapped device doesn't have a ring attached - + + The current mapped device doesn't have a ring attached + + + + The current mapped device is not connected - + - + Unexpected driver result %1 - + - + [waiting] [αναμονή] @@ -4681,12 +5160,12 @@ UUID: %2 Core - + - + Warning: "%1" is not a valid language for region "%2" - + @@ -4698,13 +5177,13 @@ UUID: %2 - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the eden website.</p></body></html> - + <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the user handbook.</p></body></html> + To check which hotkeys control the playback/recording, please refer to the Hotkey settings (Configure -> General -> Hotkeys). - + @@ -4732,17 +5211,22 @@ UUID: %2 Παύση εκτέλεσης κατά τη διάρκεια φόρτωσης - + + Show recording dialog + + + + Script Directory Κατάλογος Σεναρίων - + Path Μονοπάτι - + ... ... @@ -4750,14 +5234,14 @@ UUID: %2 ConfigureTasDialog - + TAS Configuration Ρυθμίσεις TAS - + Select TAS Load Directory... - + @@ -4765,12 +5249,12 @@ UUID: %2 Configure Touchscreen Mappings - + Mapping: - + @@ -4791,17 +5275,17 @@ UUID: %2 Click the bottom area to add a point, then press a button to bind. Drag points to change position, or double-click table cells to edit values. - + Delete Point - + Button - + @@ -4856,36 +5340,32 @@ Drag points to change position, or double-click table cells to edit values. Configure Touchscreen - - - - Warning: The settings in this page affect the inner workings of yuzu's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - Προειδοποίηση: Οι ρυθμίσεις σε αυτήν τη σελίδα επηρεάζουν την εσωτερική λειτουργία της προσομοιωμένης οθόνης αφής του yuzu. Η αλλαγή τους μπορεί να οδηγήσει σε ανεπιθύμητη συμπεριφορά, όπως μερική ή μη λειτουργία της οθόνης αφής. Θα πρέπει να χρησιμοποιήσετε αυτήν τη σελίδα μόνο εάν γνωρίζετε τι κάνετε. + - Warning: The settings in this page affect the inner workings of eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - + Warning: The settings in this page affect the inner workings of Eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. + Touch Parameters - + Touch Diameter Y - + Touch Diameter X - + Rotational Angle - + @@ -4896,64 +5376,43 @@ Drag points to change position, or double-click table cells to edit values. ConfigureUI - - - + + None Κανένα - - - Small (32x32) - - - Standard (64x64) - + Small (24x24) + - Large (128x128) - + Standard (48x48) + - Full Size (256x256) - + Large (72x72) + - Small (24x24) - - - - - Standard (48x48) - - - - - Large (72x72) - - - - Filename Όνομα αρχείου - + Filetype Τύπος αρχείου - + Title ID ID Τίτλου - + Title Name Όνομα τίτλου @@ -4978,12 +5437,12 @@ Drag points to change position, or double-click table cells to edit values. Note: Changing language will apply your configuration. - + Interface language: - + @@ -4998,98 +5457,93 @@ Drag points to change position, or double-click table cells to edit values. Show Compatibility List - + Show Add-Ons Column - + Show Size Column - + Show File Types Column - + Show Play Time Column - + - Game Icon Size: - + Folder Icon Size: + - Folder Icon Size: - + Row 1 Text: + - Row 1 Text: - - - - Row 2 Text: - + - + Screenshots Στιγμιότυπα - + Ask Where To Save Screenshots (Windows Only) - + - + Screenshots Path: - + - + ... ... - + TextLabel - + - + Resolution: Ανάλυση: - + Select Screenshots Path... - + - + <System> <System> - + English Αγγλικά - + Auto (%1 x %2, %3 x %4) Screenshot width value - + @@ -5097,12 +5551,12 @@ Drag points to change position, or double-click table cells to edit values. Configure Vibration - + Press any controller button to vibrate the controller. - + @@ -5169,7 +5623,7 @@ Drag points to change position, or double-click table cells to edit values. Enable Accurate Vibration - + @@ -5186,126 +5640,174 @@ Drag points to change position, or double-click table cells to edit values. - eden Web Service - + Eden Web Service + - - By providing your username and token, you agree to allow eden to collect additional usage data, which may include user identifying information. - - - - - Verify - Επαλήθευση - - - - Sign up - Εγγραφή - - - + Token: Διαπιστευτήριο: - + Username: Όνομα χρήστη: - - What is my token? - Ποιο είναι το διακριτικό μου; + + Generate + - + Web Service configuration can only be changed when a public room isn't being hosted. - + - Telemetry - Τηλεμετρία - - - Learn more - Μάθετε περισσότερα - - - Telemetry ID: - Αναγνωριστικό τηλεμετρίας: - - - Regenerate - Εκ Νέου Αντικατάσταση - - - + Discord Presence - + - + Show Current Game in your Discord Status - - - - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Μάθετε περισσότερα</span></a> - - - - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - - - - - <a href='https://evilperson1337.notion.site/Hosting-a-Room-Inside-of-Eden-20457c2edaf680108abac6215a79acdb'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - - - - - Warning - + + - Verification is currently nonfunctional, instead generate a random 48-character string with only lowercase a-z. - - - - - Unverified, please click Verify before saving configuration + All Good Tooltip - Μη επαληθευμένο, κάντε κλικ στο κουμπί Επαλήθευση πριν αποθηκεύσετε τις ρυθμίσεις + - Verified + + Must be between 4-20 characters Tooltip - Επαληθεύτηκε + - Verification failed + + Must be 48 characters, and lowercase a-z Tooltip - Η επαλήθευση απέτυχε - - - Verification failed - Η επαλήθευση απέτυχε + ControllerDialog - + Controller P1 - + - + &Controller P1 - + + + + + DataDialog + + + Data Manager + + + + + Deleting ANY data is IRREVERSABLE! + + + + + Shaders + + + + + UserNAND + + + + + SysNAND + + + + + Mods + + + + + Saves + + + + + DataWidget + + + Form + + + + + Tooltip + + + + + Open with your system file manager + + + + + Delete all data in this directory. THIS IS 100% IRREVERSABLE! + + + + + Export all data in this directory. This may take a while! + + + + + Import data for this directory. This may take a while, and will delete ALL EXISTING DATA! + + + + + Calculating... + + + + + DepsDialog + + + Eden Dependencies + + + + + <html><head/><body><p><span style=" font-size:28pt;">Eden Dependencies</span></p></body></html> + + + + + <html><head/><body><p>The projects that make Eden possible</p></body></html> + + + + + Dependency + + + + + Version + @@ -5313,42 +5815,42 @@ Drag points to change position, or double-click table cells to edit values. Direct Connect - + Server Address - + <html><head/><body><p>Server address of the host</p></body></html> - + Port - + <html><head/><body><p>Port number the host is listening on</p></body></html> - + Nickname - + Password - + Connect - + @@ -5356,12 +5858,12 @@ Drag points to change position, or double-click table cells to edit values. Connecting - + Connect - + @@ -5369,1720 +5871,424 @@ Drag points to change position, or double-click table cells to edit values. Username is not valid. Must be 4 to 20 alphanumeric characters. - + Room name is not valid. Must be 4 to 20 alphanumeric characters. - + Username is already in use or not valid. Please choose another. - + IP is not a valid IPv4 address. - + Port must be a number between 0 to 65535. - + You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - + Unable to find an internet connection. Check your internet settings. - + Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - + Unable to connect to the room because it is already full. - + - Creating a room failed. Please retry. Restarting eden might be necessary. - + Creating a room failed. Please retry. Restarting Eden might be necessary. + The host of the room has banned you. Speak with the host to unban you or try a different room. - + - Version mismatch! Please update to the latest version of eden. If the problem persists, contact the room host and ask them to update the server. - + Version mismatch! Please update to the latest version of Eden. If the problem persists, contact the room host and ask them to update the server. + Incorrect password. - Λανθασμένος κωδικός πρόσβασης. + An unknown error occurred. If this error continues to occur, please open an issue - Εμφανίστηκε ένα άγνωστο σφάλμα. Αν αυτό το σφάλμα συνεχίζει να εμφανίζεται, ανοίξτε ένα αίτημα + Connection to room lost. Try to reconnect. - Η σύνδεση με το δωμάτιο χάθηκε. Προσπαθήστε να επανασυνδεθείτε. + You have been kicked by the room host. - Έχετε διωχθεί από τον οικοδεσπότη του δωματίου. + IP address is already in use. Please choose another. - Η διεύθυνση IP χρησιμοποιείται ήδη. Παρακαλώ επιλέξτε άλλη. + You do not have enough permission to perform this action. - Δεν έχετε επαρκή δικαιώματα για την εκτέλεση αυτής της ενέργειας. + The user you are trying to kick/ban could not be found. They may have left the room. - Ο χρήστης που προσπαθείτε να διώξετε/αποβάλλετε δεν βρέθηκε. -Μπορεί να έχει φύγει από το δωμάτιο. + No valid network interface is selected. Please go to Configure -> System -> Network and make a selection. - Δεν έχει επιλεγεί έγκυρη διασύνδεση δικτύου. -Παρακαλούμε μεταβείτε στη Ρυθμίσεις -> Σύστημα -> Δίκτυο και κάντε μια επιλογή. + Error - Σφάλμα - - - - GMainWindow - - Telemetry - Τηλεμετρία - - - - Broken Vulkan Installation Detected - - - - - Running a game - TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping - - - - - Loading Web Applet... - - - - - - Disable Web Applet - - - - - 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.) - - - - - The amount of shaders currently being built - - - - - The current selected resolution scaling multiplier. - - - - - Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. - - - - - How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. - Πόσα καρέ ανά δευτερόλεπτο εμφανίζει το παιχνίδι αυτή τη στιγμή. Αυτό διαφέρει από παιχνίδι σε παιχνίδι και από σκηνή σε σκηνή. - - - - 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. - - - - - Unmute - - - - - Mute - - - - - Reset Volume - - - - - &Clear Recent Files - - - - - &Continue - &Συνέχεια - - - - &Pause - &Παύση - - - - Warning Outdated Game Format - - - - 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.<br><br>For an explanation of the various Switch formats yuzu supports, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - Μη μεταφρασμένη συμβολοσειρά - -Χρησιμοποιείτε τη μορφή καταλόγου αποδομημένης ROM για αυτό το παιχνίδι, η οποία είναι μια ξεπερασμένη μορφή που έχει αντικατασταθεί από άλλες, όπως NCA, NAX, XCI ή NSP. Οι αποδομημένοι κατάλογοι ROM στερούνται εικονιδίων, μεταδεδομένων και υποστήριξης ενημερώσεων.<br><br> -Για μια εξήγηση των διαφόρων μορφών Switch που υποστηρίζει το yuzu,<a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'> δείτε το wiki μας </a>. Αυτό το μήνυμα δεν θα εμφανιστεί ξανά. - - - - - Error while loading ROM! - Σφάλμα κατά τη φόρτωση της ROM! - - - - The ROM format is not supported. - - - - - An error occurred initializing the video core. - - - - - Error while loading ROM! %1 - %1 signifies a numeric error code. - - - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://eden-emulator.github.io/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - - - - - Game Updates Warning - - - - - The game you are trying to launch is known to have performance or booting issues when updates are applied. Please try increasing the memory layout to 6GB or 8GB if any issues occur.<br><br>Press "OK" to continue launching, or "Cancel" to cancel the launch. - - - - - Don't show again for this game - - - - - 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.<br><br>For an explanation of the various Switch formats eden supports, <a href='https://eden-emulator.github.io/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - - - - - eden 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: <a href='https://eden-emulator.github.io/help/reference/log-files/'>How to Upload the Log File</a>. - - - - - %1<br>Please redump your files or ask on Discord for help. - %1 signifies an error string. - - - - - An unknown error occurred. Please see the log for more details. - Εμφανίστηκε ένα απροσδιόριστο σφάλμα. Ανατρέξτε στο αρχείο καταγραφής για περισσότερες λεπτομέρειες. - - - - (64-bit) - (64-bit) - - - - (32-bit) - (32-bit) - - - - %1 %2 - %1 is the title name. %2 indicates if the title is 64-bit or 32-bit - %1 %2 - - - - Closing software... - - - - - Save Data - Αποθήκευση δεδομένων - - - - Mod Data - - - - - Error Opening %1 Folder - - - - - - Folder does not exist! - Ο φάκελος δεν υπάρχει! - - - - Error Opening Transferable Shader Cache - - - - - Failed to create the shader cache directory for this title. - - - - - Error Removing Contents - - - - - Error Removing Update - - - - - Error Removing DLC - - - - - Remove Installed Game Contents? - - - - - Remove Installed Game Update? - - - - - Remove Installed Game DLC? - - - - - Remove Entry - - - - - - - - - - Successfully Removed - - - - - Successfully removed the installed base game. - - - - - The base game is not installed in the NAND and cannot be removed. - - - - - Successfully removed the installed update. - - - - - There is no update installed for this title. - - - - - There are no DLC installed for this title. - - - - - Successfully removed %1 installed DLC. - - - - - Delete OpenGL Transferable Shader Cache? - - - - - Delete Vulkan Transferable Shader Cache? - - - - - Delete All Transferable Shader Caches? - - - - - Remove Custom Game Configuration? - - - - - Remove Cache Storage? - - - - - Remove File - Αφαίρεση Αρχείου - - - - Remove Play Time Data - - - - - Reset play time? - - - - - - Error Removing Transferable Shader Cache - - - - - - A shader cache for this title does not exist. - - - - - Successfully removed the transferable shader cache. - - - - - Failed to remove the transferable shader cache. - - - - - Error Removing Vulkan Driver Pipeline Cache - - - - - Failed to remove the driver pipeline cache. - - - - - - Error Removing Transferable Shader Caches - - - - - Successfully removed the transferable shader caches. - - - - - Failed to remove the transferable shader cache directory. - - - - - - Error Removing Custom Configuration - - - - - A custom configuration for this title does not exist. - - - - - Successfully removed the custom game configuration. - - - - - Failed to remove the custom game configuration. - - - - - - RomFS Extraction Failed! - - - - - There was an error copying the RomFS files or the user cancelled the operation. - - - - - Full - - - - - Skeleton - - - - - Select RomFS Dump Mode - Επιλογή λειτουργίας απόρριψης RomFS - - - - Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. - Μη αποθηκευμένη μετάφραση. -Παρακαλούμε επιλέξτε τον τρόπο με τον οποίο θα θέλατε να γίνει η απόρριψη της RomFS.<br> -Η επιλογή Πλήρης θα αντιγράψει όλα τα αρχεία στο νέο κατάλογο, ενώ η επιλογή <br> Σκελετός θα δημιουργήσει μόνο τη δομή του καταλόγου. - - - - There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root - - - - - Extracting RomFS... - - - - - - - - - Cancel - Ακύρωση - - - - RomFS Extraction Succeeded! - - - - - - - The operation completed successfully. - Η επέμβαση ολοκληρώθηκε με επιτυχία. - - - - Integrity verification couldn't be performed! - - - - - File contents were not checked for validity. - - - - - - Verifying integrity... - - - - - - Integrity verification succeeded! - - - - - - Integrity verification failed! - - - - - File contents may be corrupt. - - - - - - - - Create Shortcut - - - - - Do you want to launch the game in fullscreen? - - - - - Successfully created a shortcut to %1 - - - - - This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - - - - - Failed to create a shortcut to %1 - - - - - Create Icon - - - - - Cannot create icon file. Path "%1" does not exist and cannot be created. - - - - - Error Opening %1 - - - - - Select Directory - Επιλογή καταλόγου - - - - Properties - Ιδιότητες - - - - The game properties could not be loaded. - - - - - Switch Executable (%1);;All Files (*.*) - %1 is an identifier for the Switch executable file extensions. - - - - - Load File - Φόρτωση αρχείου - - - - Open Extracted ROM Directory - - - - - Invalid Directory Selected - - - - - The directory you have selected does not contain a 'main' file. - - - - - Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - - - - - Install Files - - - - - %n file(s) remaining - - - - - - - - Installing file "%1"... - - - - - - Install Results - Αποτελέσματα εγκατάστασης - - - - To avoid possible conflicts, we discourage users from installing base games to the NAND. -Please, only use this feature to install updates and DLC. - - - - - %n file(s) were newly installed - - - - - - - - - %n file(s) were overwritten - - - - - - - - - %n file(s) failed to install - - - - - - - - - System Application - Εφαρμογή συστήματος - - - - System Archive - - - - - System Application Update - - - - - Firmware Package (Type A) - - - - - Firmware Package (Type B) - - - - - Game - Παιχνίδι - - - - Game Update - Ενημέρωση παιχνιδιού - - - - Game DLC - DLC παιχνιδιού - - - - Delta Title - - - - - Select NCA Install Type... - Επιλέξτε τον τύπο εγκατάστασης NCA... - - - - Please select the type of title you would like to install this NCA as: -(In most instances, the default 'Game' is fine.) - - - - - Failed to Install - - - - - The title type you selected for the NCA is invalid. - - - - - File not found - Το αρχείο δεν βρέθηκε - - - - File "%1" not found - Το αρχείο "%1" δεν βρέθηκε - - - - OK - OK - - - - - Hardware requirements not met - - - - - - Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled. - - - - - Missing yuzu Account - - - - - In order to submit a game compatibility test case, you must link your eden account.<br><br/>To link your eden account, go to Emulation &gt; Configuration &gt; Web. - - - - - Install decryption keys and restart eden before attempting to install firmware. - - - - - Firmware installation cancelled, firmware may be in bad state, restart eden or re-install firmware. - - - - - Encryption keys are missing. - - - - - Are you sure you want to close eden? - - - - - - - eden - - - - - The currently running application has requested eden to not exit. - -Would you like to bypass this and exit anyway? - - - - - Error opening URL - Σφάλμα κατα το άνοιγμα του URL - - - - Unable to open the URL "%1". - Αδυναμία ανοίγματος του URL "%1". - - - - TAS Recording - - - - - Overwrite file of player 1? - - - - - Invalid config detected - - - - - Handheld controller can't be used on docked mode. Pro controller will be selected. - - - - - - Amiibo - Amiibo - - - - - The current amiibo has been removed - - - - - Error - Σφάλμα - - - - - The current game is not looking for amiibos - - - - - Amiibo File (%1);; All Files (*.*) - - - - - Load Amiibo - Φόρτωση Amiibo - - - - Error loading Amiibo data - Σφάλμα φόρτωσης δεδομένων Amiibo - - - - The selected file is not a valid amiibo - Το επιλεγμένο αρχείο δεν αποτελεί έγκυρο amiibo - - - - The selected file is already on use - Το επιλεγμένο αρχείο χρησιμοποιείται ήδη - - - - An unknown error occurred - - - - - - Verification failed for the following files: - -%1 - - - - - Keys not installed - - - - - Select Dumped Firmware Source Location - - - - - Installing Firmware... - - - - - - - - Firmware install failed - - - - - Unable to locate potential firmware NCA files - - - - - Failed to delete one or more firmware file. - - - - - One or more firmware files failed to copy into NAND. - - - - - Firmware integrity verification failed! - - - - - Select Dumped Keys Location - - - - - - - Decryption Keys install failed - - - - - prod.keys is a required decryption key file. - - - - - One or more keys failed to copy. - - - - - Decryption Keys install succeeded - - - - - Decryption Keys were successfully installed - - - - - Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. - - - - - - - - - - - No firmware available - - - - - Please install the firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Controller Menu. - - - - - Controller Applet - Applet Χειρισμού - - - - Controller Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Home Menu. - - - - - - Home Menu Applet - - - - - - Home Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use Starter. - - - - - Starter Applet - - - - - Starter is not available. Please reinstall firmware. - - - - - Please install firmware to use the home menu. - - - - - Capture Screenshot - Λήψη στιγμιότυπου οθόνης - - - - PNG Image (*.png) - Εικόνα PBG (*.png) - - - - Update Available - - - - - Update %1 for Eden is available. -Would you like to download it? - - - - - TAS state: Running %1/%2 - - - - - TAS state: Recording %1 - - - - - TAS state: Idle %1/%2 - - - - - TAS State: Invalid - - - - - &Stop Running - - - - - &Start - &Έναρξη - - - - Stop R&ecording - - - - - R&ecord - - - - - Building: %n shader(s) - - - - - - - - Scale: %1x - %1 is the resolution scaling factor - Κλίμακα: %1x - - - - Speed: %1% / %2% - Ταχύτητα: %1% / %2% - - - - Speed: %1% - Ταχύτητα: %1% - - - - Game: %1 FPS - - - - - Frame: %1 ms - Καρέ: %1 ms - - - - %1 %2 - %1 %2 - - - - - FSR - FSR - - - - NO AA - - - - - VOLUME: MUTE - - - - - VOLUME: %1% - Volume percentage (e.g. 50%) - - - - - Derivation Components Missing - - - - - Select RomFS Dump Target - - - - - Please select which RomFS you would like to dump. - - - - Are you sure you want to close yuzu? - Είστε σίγουροι ότι θέλετε να κλείσετε το yuzu; - - - yuzu - yuzu - - - - Are you sure you want to stop the emulation? Any unsaved progress will be lost. - - - - - None - Κανένα - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Nearest - - - - - Bilinear - Διγραμμικό - - - - Bicubic - Δικυβικό - - - - Gaussian - Gaussian - - - - ScaleForce - ScaleForce - - - - Area - - - - - Docked - Docked - - - - Handheld - Handheld - - - - Normal - - - - - High - - - - - Extreme - - - - - Vulkan - Vulkan - - - - OpenGL - - - - - Null - - - - - GLSL - - - - - GLASM - - - - - SPIRV - + GRenderWindow - - + + OpenGL not available! Το OpenGL δεν είναι διαθέσιμο! - + OpenGL shared contexts are not supported. - + - - eden has not been compiled with OpenGL support. - + + Eden has not been compiled with OpenGL support. + - - + + Error while initializing OpenGL! Σφάλμα κατα την αρχικοποίηση του OpenGL! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. - + - + Error while initializing OpenGL 4.6! - + - + Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 - + - + Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2 - + GameList - + + &Add New Game Directory + + + + Favorite Αγαπημένο - + Start Game Έναρξη παιχνιδιού - + Start Game without Custom Configuration - + - + Open Save Data Location Άνοιγμα Τοποθεσίας Αποθήκευσης Δεδομένων - + Open Mod Data Location Άνοιγμα Τοποθεσίας Δεδομένων Mod - + Open Transferable Pipeline Cache - + - + + Link to Ryujinx + + + + Remove Αφαίρεση - + Remove Installed Update Αφαίρεση Εγκατεστημένης Ενημέρωσης - + Remove All Installed DLC Αφαίρεση Όλων των Εγκατεστημένων DLC - + Remove Custom Configuration - + - - Remove Play Time Data - - - - + Remove Cache Storage - + - + Remove OpenGL Pipeline Cache - + - + Remove Vulkan Pipeline Cache - + - + Remove All Pipeline Caches Καταργήστε Όλη την Κρυφή μνήμη του Pipeline - + Remove All Installed Contents Καταργήστε Όλο το Εγκατεστημένο Περιεχόμενο - - + + Manage Play Time + + + + + Edit Play Time Data + + + + + Remove Play Time Data + + + + + Dump RomFS Απόθεση του RomFS - + Dump RomFS to SDMC Απόθεση του RomFS στο SDMC - + Verify Integrity - + - + Copy Title ID to Clipboard Αντιγραφή του Title ID στο Πρόχειρο - + Navigate to GameDB entry Μεταβείτε στην καταχώρηση GameDB - + Create Shortcut - + - + Add to Desktop - + - + Add to Applications Menu - + - + Configure Game - + - Properties - Ιδιότητες - - - + Scan Subfolders Σκανάρισμα Υποφακέλων - + Remove Game Directory Αφαίρεση Φακέλου Παιχνιδιών - + ▲ Move Up ▲ Μετακίνηση Επάνω - + ▼ Move Down ▼ Μετακίνηση Κάτω - + Open Directory Location Ανοίξτε την Τοποθεσία Καταλόγου - + Clear Καθαρισμός - + Name Όνομα - + Compatibility Συμβατότητα - + Add-ons Πρόσθετα - + File type Τύπος αρχείου - + Size Μέγεθος - + Play time - + GameListItemCompat - + Ingame - + - + Game starts, but crashes or major glitches prevent it from being completed. - + - + Perfect Τέλεια - + Game can be played without issues. - + - + Playable - + - + Game functions with minor graphical or audio glitches and is playable from start to finish. - + - + Intro/Menu Εισαγωγή/Μενου - + Game loads, but is unable to progress past the Start Screen. - + - + Won't Boot Δεν ξεκινά - + The game crashes when attempting to startup. Το παιχνίδι διακόπτεται κατά την προσπάθεια εκκίνησης. - + Not Tested Μη Τεσταρισμένο - + The game has not yet been tested. Το παιχνίδι δεν έχει ακόμα τεσταριστεί. @@ -7090,7 +6296,7 @@ Would you like to download it? GameListPlaceholder - + Double-click to add a new folder to the game list Διπλο-κλικ για προσθήκη νεου φακέλου στη λίστα παιχνιδιών @@ -7098,20 +6304,17 @@ Would you like to download it? GameListSearchField - + %1 of %n result(s) - - - - + - + Filter: Φίλτρο: - + Enter pattern to filter Εισαγάγετε μοτίβο για φιλτράρισμα @@ -7121,22 +6324,22 @@ Would you like to download it? Create Room - + Room Name - + Preferred Game - + Max Players - + @@ -7146,17 +6349,17 @@ Would you like to download it? (Leave blank for open game) - + Password - + Port - + @@ -7166,255 +6369,273 @@ Would you like to download it? Load Previous Ban List - + Public - + Unlisted - + Host Room - + HostRoomWindow - + Error Σφάλμα - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. + + Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid Eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. Debug Message: - + Hotkeys - + Audio Mute/Unmute - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Main Window - + - + Audio Volume Down - + - + Audio Volume Up - + - + Capture Screenshot Λήψη στιγμιότυπου οθόνης - + Change Adapting Filter - + - + Change Docked Mode - + - - Change GPU Accuracy - + + Change GPU Mode + - + Configure - Διαμόρφωση + - + Configure Current Game - + - + Continue/Pause Emulation - + - + Exit Fullscreen - + - - Exit eden - + + Exit Eden + - + Fullscreen Πλήρη Οθόνη - + Load File Φόρτωση αρχείου - + Load/Remove Amiibo - + - - Multiplayer Browse Public Game Lobby - + + Browse Public Game Lobby + - - Multiplayer Create Room - + + Create Room + - - Multiplayer Direct Connect to Room - + + Direct Connect to Room + - - Multiplayer Leave Room - + + Leave Room + - - Multiplayer Show Current Room - + + Show Current Room + - + Restart Emulation - + - + Stop Emulation - + - + TAS Record - + - + TAS Reset - + - + TAS Start/Stop - + - + Toggle Filter Bar - + - + Toggle Framerate Limit - + - + + Toggle Turbo Speed + + + + + Toggle Slow Speed + + + + Toggle Mouse Panning - + - + Toggle Renderdoc Capture - + - + Toggle Status Bar - + + + + + Toggle Performance Overlay + InstallDialog - + Please confirm these are the files you wish to install. Επιβεβαιώστε ότι αυτά είναι τα αρχεία που θέλετε να εγκαταστήσετε. - + Installing an Update or DLC will overwrite the previously installed one. Η εγκατάσταση μιας Ενημέρωσης ή DLC θα αντικαταστήσει το προηγουμένως εγκατεστημένο. - + Install Εγκατάσταση - + Install Files to NAND - + LimitableInputDialog - - The text can't contain any of the following characters: + + The text can't contain any of the following characters: %1 - + @@ -7422,37 +6643,37 @@ Debug Message: Loading Shaders 387 / 1628 - + Loading Shaders %v out of %m - + Estimated Time 5m 4s - + - + Loading... Φόρτωση... - + Loading Shaders %1 / %2 - + - + Launching... Εκκίνηση... - + Estimated Time %1 - + @@ -7460,18 +6681,18 @@ Debug Message: Public Room Browser - + Nickname - + Filters - + @@ -7481,62 +6702,62 @@ Debug Message: Games I Own - + Hide Empty Rooms - + Hide Full Rooms - + Refresh Lobby - + - + Password Required to Join - + - + Password: - + + + + + Players + - Players - + Room Name + - Room Name - + Preferred Game + - Preferred Game - - - - Host - + - + Refreshing - + - + Refresh List - + @@ -7554,357 +6775,1427 @@ Debug Message: &Recent Files - + - + + Open &Eden Folders + + + + &Emulation - + - + &View - - - - - &Reset Window Size - - - - - &Debugging - + + &Reset Window Size + + + + + &Debugging + + + + + &Game List Mode + + + + + Game &Icon Size + + + + Reset Window Size to &720p - + - + Reset Window Size to 720p - + - + Reset Window Size to &900p - + - + Reset Window Size to 900p - + - + Reset Window Size to &1080p - + - + Reset Window Size to 1080p - + - + &Multiplayer &Πολλαπλών Παικτών - + &Tools - + - - &Amiibo - + + Am&iibo + - + + Launch &Applet + + + + &TAS &TAS - + &Create Home Menu Shortcut - + - + + Install &Firmware + + + + &Help - + - + &Install Files to NAND... - + - + L&oad File... - + - + Load &Folder... - + - + E&xit - + - + + &Pause &Παύση - + &Stop &Σταμάτημα - + &Verify Installed Contents - + - - &About eden - + + &About Eden + - - Open &eden Folder - - - - - Open Home Menu - - - - - &Discord - - - - - Open &Setup - - - - - &Desktop - - - - - &Application Menu - - - - + Single &Window Mode - + - + Con&figure... - + - + Ctrl+, - + - - Display D&ock Widget Headers - + + Enable Overlay Display Applet + - + Show &Filter Bar - + - + Show &Status Bar - + - + Show Status Bar - + - + &Browse Public Game Lobby &Περιήγηση σε δημόσιο λόμπι παιχνιδιού - + &Create Room &Δημιουργία δωματίου - + &Leave Room &Αποχωρήσει από το δωμάτιο - + &Direct Connect to Room &Άμεση σύνδεση σε Δωμάτιο - + &Show Current Room &Εμφάνιση τρέχοντος δωματίου - + F&ullscreen - + - + &Restart - - - - - Load/Remove &Amiibo... - - - - - &Report Compatibility - - - - - Open &Mods Page - - - - - Open &Quickstart Guide - - - - - &FAQ - + + Load/Remove &Amiibo... + + + + + &Report Compatibility + + + + + Open &Mods Page + + + + + Open &Quickstart Guide + + + + + &FAQ + + + + &Capture Screenshot - + - - Open &Album - + + &Album + - + &Set Nickname and Owner - + - + &Delete Game Data - + - + &Restore Amiibo - + - + &Format Amiibo - + - - Open &Mii Editor - + + &Mii Editor + - + &Configure TAS... - + - + Configure C&urrent Game... - + - + + &Start &Έναρξη - + &Reset - + - + + R&ecord - + - + Open &Controller Menu - + - - Install Firmware - + + Install Decryption &Keys + - - Install Decryption Keys - + + &Home Menu + - - - MicroProfileDialog - - &MicroProfile - + + &Desktop + + + + + &Application Menu + + + + + &Root Data Folder + + + + + &NAND Folder + + + + + &SDMC Folder + + + + + &Mod Folder + + + + + &Log Folder + + + + + From Folder + + + + + From ZIP + + + + + &Eden Dependencies + + + + + &Data Manager + + + + + &Tree View + + + + + &Grid View + + + + + Game Icon Size + + + + + + + None + + + + + Show Game &Name + + + + + Show &Performance Overlay + + + + + Small (32x32) + + + + + Standard (64x64) + + + + + Large (128x128) + + + + + Full Size (256x256) + + + + + Broken Vulkan Installation Detected + + + + + Vulkan initialization failed during boot. + + + + + Running a game + TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping + + + + + Loading Web Applet... + + + + + + Disable Web Applet + + + + + 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.) + + + + + The amount of shaders currently being built + + + + + The current selected resolution scaling multiplier. + + + + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. + + + + + How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. + + + + + 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. + + + + + Unmute + + + + + Mute + + + + + Reset Volume + + + + + &Clear Recent Files + + + + + &Continue + + + + + Warning: Outdated Game Format + + + + + 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.<br>For an explanation of the various Switch formats Eden supports, out our user handbook. This message will not be shown again. + + + + + + Error while loading ROM! + + + + + The ROM format is not supported. + + + + + An error occurred initializing the video core. + + + + + Eden 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: <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>How to Upload the Log File</a>. + + + + + Error while loading ROM! %1 + %1 signifies a numeric error code. + + + + + %1<br>Please redump your files or ask on Discord/Stoat for help. + %1 signifies an error string. + + + + + An unknown error occurred. Please see the log for more details. + + + + + (64-bit) + + + + + (32-bit) + + + + + %1 %2 + %1 is the title name. %2 indicates if the title is 64-bit or 32-bit + + + + + Closing software... + + + + + Save Data + + + + + Mod Data + + + + + Error Opening %1 Folder + + + + + + Folder does not exist! + + + + + Remove Installed Game Contents? + + + + + Remove Installed Game Update? + + + + + Remove Installed Game DLC? + + + + + Remove Entry + + + + + Delete OpenGL Transferable Shader Cache? + + + + + Delete Vulkan Transferable Shader Cache? + + + + + Delete All Transferable Shader Caches? + + + + + Remove Custom Game Configuration? + + + + + Remove Cache Storage? + + + + + Remove File + + + + + Remove Play Time Data + + + + + Reset play time? + + + + + + RomFS Extraction Failed! + + + + + There was an error copying the RomFS files or the user cancelled the operation. + + + + + Full + + + + + Skeleton + + + + + Select RomFS Dump Mode + + + + + Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. + + + + + There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root + + + + + Extracting RomFS... + + + + + + Cancel + + + + + RomFS Extraction Succeeded! + + + + + The operation completed successfully. + + + + + Error Opening %1 + + + + + Select Directory + + + + + Properties + + + + + The game properties could not be loaded. + + + + + Switch Executable (%1);;All Files (*.*) + %1 is an identifier for the Switch executable file extensions. + + + + + Load File + + + + + Open Extracted ROM Directory + + + + + Invalid Directory Selected + + + + + The directory you have selected does not contain a 'main' file. + + + + + Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) + + + + + Install Files + + + + + %n file(s) remaining + + + + + Installing file "%1"... + + + + + + Install Results + + + + + To avoid possible conflicts, we discourage users from installing base games to the NAND. +Please, only use this feature to install updates and DLC. + + + + + %n file(s) were newly installed + + + + + + %n file(s) were overwritten + + + + + + %n file(s) failed to install + + + + + + System Application + + + + + System Archive + + + + + System Application Update + + + + + Firmware Package (Type A) + + + + + Firmware Package (Type B) + + + + + Game + + + + + Game Update + + + + + Game DLC + + + + + Delta Title + + + + + Select NCA Install Type... + + + + + Please select the type of title you would like to install this NCA as: +(In most instances, the default 'Game' is fine.) + + + + + Failed to Install + + + + + The title type you selected for the NCA is invalid. + + + + + File not found + + + + + File "%1" not found + + + + + OK + + + + + Function Disabled + + + + + Compatibility list reporting is currently disabled. Check back later! + + + + + Error opening URL + + + + + Unable to open the URL "%1". + + + + + TAS Recording + + + + + Overwrite file of player 1? + + + + + Invalid config detected + + + + + Handheld controller can't be used on docked mode. Pro controller will be selected. + + + + + + Amiibo + + + + + + The current amiibo has been removed + + + + + Error + + + + + + The current game is not looking for amiibos + + + + + Amiibo File (%1);; All Files (*.*) + + + + + Load Amiibo + + + + + Error loading Amiibo data + + + + + The selected file is not a valid amiibo + + + + + The selected file is already on use + + + + + An unknown error occurred + + + + + + Keys not installed + + + + + + Install decryption keys and restart Eden before attempting to install firmware. + + + + + Select Dumped Firmware Source Location + + + + + Select Dumped Firmware ZIP + + + + + Zipped Archives (*.zip) + + + + + Firmware cleanup failed + + + + + Failed to clean up extracted firmware cache. +Check write permissions in the system temp directory and try again. +OS reported error: %1 + + + + + No firmware available + + + + + Firmware Corrupted + + + + + Unknown applet + + + + + Applet doesn't map to a known value. + + + + + Record not found + + + + + Applet not found. Please reinstall firmware. + + + + + Capture Screenshot + + + + + PNG Image (*.png) + + + + + Update Available + + + + + Download %1? + + + + + TAS state: Running %1/%2 + + + + + TAS state: Recording %1 + + + + + TAS state: Idle %1/%2 + + + + + TAS State: Invalid + + + + + &Stop Running + + + + + Stop R&ecording + + + + + Building: %n shader(s) + + + + + Scale: %1x + %1 is the resolution scaling factor + + + + + Speed: %1% / %2% + + + + + Speed: %1% + + + + + Game: %1 FPS + + + + + Frame: %1 ms + + + + + + FSR + + + + + NO AA + + + + + VOLUME: MUTE + + + + + VOLUME: %1% + Volume percentage (e.g. 50%) + + + + + Derivation Components Missing + + + + + Decryption keys are missing. Install them now? + + + + + Wayland Detected! + + + + + Wayland is known to have significant performance issues and mysterious bugs. +It's recommended to use X11 instead. + +Would you like to force it for future launches? + + + + + Use X11 + + + + + Continue with Wayland + + + + + Don't show again + + + + + Restart Required + + + + + Restart Eden to apply the X11 backend. + + + + + Slow + + + + + Turbo + + + + + Unlocked + + + + + Select RomFS Dump Target + + + + + Please select which RomFS you would like to dump. + + + + + Are you sure you want to close Eden? + + + + + + + Eden + + + + + Are you sure you want to stop the emulation? Any unsaved progress will be lost. + + + + + The currently running application has requested Eden to not exit. + +Would you like to bypass this and exit anyway? + + + + + FXAA + + + + + SMAA + + + + + Nearest + + + + + Bilinear + + + + + Bicubic + + + + + Zero-Tangent + + + + + B-Spline + + + + + Mitchell + + + + + Spline-1 + + + + + Gaussian + + + + + Lanczos + + + + + ScaleForce + + + + + Area + + + + + MMPX + + + + + Docked + + + + + Handheld + + + + + Fast + + + + + Balanced + + + + + Accurate + + + + + Vulkan + + + + + OpenGL GLSL + + + + + OpenGL SPIRV + + + + + OpenGL GLASM + + + + + Null + MigrationWorker - - Data was migrated successfully. - - - - + Linking the old directory failed. You may need to re-run with administrative privileges on Windows. OS gave error: %1 - + - + + + +Note that your configuration and data will be shared with %1. +If this is not desirable, delete the following files: +%2 +%3 +%4 + + + + If you wish to clean up the files which were left in the old data location, you can do so by deleting the following directory: %1 - + + + + + Data was migrated successfully. + + + + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + @@ -7912,127 +8203,91 @@ If you wish to clean up the files which were left in the old data location, you Moderation - + Ban List - + - + Refreshing - + Unban - + + + + + Subject + - Subject - - - - Type - + - + Forum Username - + - + IP Address - + - + Refresh - + MultiplayerState - + Current connection status - + - + Not Connected. Click here to find a room! - + - + Not Connected - + - + Connected Συνδεδεμένο - + New Messages Received - + - + Error Σφάλμα - + Failed to update the room information. Please check your Internet connection and try hosting the room again. Debug Message: - + NetworkMessage - - Incorrect password. - Λανθασμένος κωδικός πρόσβασης. - - - An unknown error occurred. If this error continues to occur, please open an issue - Εμφανίστηκε ένα άγνωστο σφάλμα. Αν αυτό το σφάλμα συνεχίζει να εμφανίζεται, ανοίξτε ένα αίτημα - - - Connection to room lost. Try to reconnect. - Η σύνδεση με το δωμάτιο χάθηκε. Προσπαθήστε να επανασυνδεθείτε. - - - You have been kicked by the room host. - Έχετε διωχθεί από τον οικοδεσπότη του δωματίου. - - - IP address is already in use. Please choose another. - Η διεύθυνση IP χρησιμοποιείται ήδη. Παρακαλώ επιλέξτε άλλη. - - - You do not have enough permission to perform this action. - Δεν έχετε επαρκή δικαιώματα για την εκτέλεση αυτής της ενέργειας. - - - The user you are trying to kick/ban could not be found. -They may have left the room. - Ο χρήστης που προσπαθείτε να διώξετε/αποβάλλετε δεν βρέθηκε. -Μπορεί να έχει φύγει από το δωμάτιο. - - - No valid network interface is selected. -Please go to Configure -> System -> Network and make a selection. - Δεν έχει επιλεγεί έγκυρη διασύνδεση δικτύου. -Παρακαλούμε μεταβείτε στη Ρυθμίσεις -> Σύστημα -> Δίκτυο και κάντε μια επιλογή. - Game already running @@ -8067,10 +8322,132 @@ Proceed anyway? - NetworkMessage::ErrorManager + NewUserDialog - Error - Σφάλμα + + + New User + + + + + Change Avatar + + + + + Set Image + + + + + UUID + + + + + Eden + + + + + Username + + + + + UUID must be 32 hex characters (0-9, A-F) + + + + + Generate + + + + + Select User Image + + + + + Image Formats (*.jpg *.jpeg *.png *.bmp) + + + + + No firmware available + + + + + Please install the firmware to use firmware avatars. + + + + + + Error loading archive + + + + + Archive is not available. Please install/reinstall firmware. + + + + + Could not locate RomFS. Your file or decryption keys may be corrupted. + + + + + Error extracting archive + + + + + Could not extract RomFS. Your file or decryption keys may be corrupted. + + + + + Error finding image directory + + + + + Failed to find image directory in the archive. + + + + + No images found + + + + + No avatar images were found in the archive. + + + + + + All Good + Tooltip + + + + + Must be 32 hex characters (0-9, a-f) + Tooltip + + + + + Must be between 1 and 32 characters + Tooltip + @@ -8078,7 +8455,7 @@ Proceed anyway? Dialog - + @@ -8097,468 +8474,605 @@ Proceed anyway? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - + + + + + PerformanceOverlay + + + Form + + + + + Frametime + + + + + 0 ms + + + + + + Min: 0 + + + + + + Max: 0 + + + + + + Avg: 0 + + + + + FPS + + + + + 0 fps + + + + + %1 fps + + + + + + Avg: %1 + + + + + + Min: %1 + + + + + + Max: %1 + + + + + %1 ms + PlayerControlPreview - + START/PAUSE - + + + + + ProfileAvatarDialog + + + Select + + + + + Cancel + + + + + Background Color + + + + + Select Firmware Avatar + QObject - - %1 is not playing a game - %1 δεν παίζει παιχνίδι + + + + Migration + - - %1 is playing %2 - %1 παίζει %2 + + Clear Shader Cache + - - Not playing a game - Δεν παίζει παιχνίδι + + Keep Old Data + - - Installed SD Titles - + + Clear Old Data + - - Installed NAND Titles - + + Link Old Directory + - - System Titles - Τίτλοι Συστήματος + + + + + - - Add New Game Directory - Προσθήκη Νέας Τοποθεσίας Παιχνιδιών + + + No + - - Favorites - Αγαπημένα + + You can manually re-trigger this prompt by deleting the new config directory: +%1 + + + + + Migrating + + + + + Migrating, this may take a while... + - - + + Shift Shift - - + + Ctrl Ctrl - - + + Alt Alt - - - - + + + + [not set] [μη ορισμένο] Hat %1 %2 - + - - - - - - - - + + + + + + + + Axis %1%2 Άξονας%1%2 Button %1 - + - - - - - - + + + + + + [unknown] [άγνωστο] - - - + + + Left Αριστερά - - - + + + Right Δεξιά - - - + + + Down Κάτω - - - + + + Up Πάνω - - + + Z Z - - + + R R - - + + L L - - + + A A - - + + B B - - + + X Χ - - + + Y Υ - - + + Start - + - - + + L1 L1 - - + + L2 L2 - - + + L3 L3 - - + + R1 R1 - - + + R2 R2 - - + + R3 R3 - - + + Circle - + - - + + Cross - + - - + + Square - + - - + + Triangle - + - - + + Share - + - - + + Options - + - - + + [undefined] - + - + %1%2 - + - - + + [invalid] - + - - - %1%2Hat %3 - - - - - + + %1%2Hat %3 + + + + - %1%2Axis %3 - - - - - - %1%2Axis %3,%4,%5 - - - - - - %1%2Motion %3 - - - - - %1%2Button %3 - + + %1%2Axis %3 + - - + + + %1%2Axis %3,%4,%5 + + + + + + %1%2Motion %3 + + + + + + %1%2Button %3 + + + + + [unused] [άδειο] - + ZR ZR - + ZL ZL - + SR SR - + SL SL - + Stick L - + - + Stick R - + - + Plus Συν - + Minus Μείον - - + + Home Αρχική - + Capture Στιγμιότυπο - + Touch - + - + Wheel Indicates the mouse wheel - + - + Backward - + - + Forward - + - + Task - + - + Extra - + - + %1%2%3%4 - + - - + + %1%2%3Hat %4 - + - - + + %1%2%3Axis %4 - + - - + + %1%2%3Button %4 - + - - - - Migration - + + Not playing a game + Δεν παίζει παιχνίδι - - - - - + + %1 is not playing a game + %1 δεν παίζει παιχνίδι - - - No - + + %1 is playing %2 + %1 παίζει %2 - - You can manually re-trigger this prompt by deleting the new config directory: -%1 - + + Play Time: %1 + - - Migrating - + + Never Played + - - Migrating, this may take a while... - + + Version: %1 + + + + + Version: 1.0.0 + + + + + Installed SD Titles + + + + + Installed NAND Titles + + + + + System Titles + Τίτλοι Συστήματος + + + + Add New Game Directory + Προσθήκη Νέας Τοποθεσίας Παιχνιδιών + + + + Favorites + Αγαπημένα @@ -8566,22 +9080,22 @@ p, li { white-space: pre-wrap; } Amiibo Settings - + Amiibo Info - + Series - + Type - + @@ -8591,52 +9105,52 @@ p, li { white-space: pre-wrap; } Amiibo Data - + Custom Name - + Owner - + Creation Date - + dd/MM/yyyy - + Modification Date - + dd/MM/yyyy - + Game Data - + Game Id - + Mount Amiibo - + @@ -8646,32 +9160,818 @@ p, li { white-space: pre-wrap; } File Path - + - + No game data present - - - - - The following amiibo data will be formatted: - + - The following game data will removed: - + The following amiibo data will be formatted: + - Set nickname and owner: - + The following game data will removed: + + Set nickname and owner: + + + + Do you wish to restore this amiibo? - + + + + + QtCommon::Content + + + Game Requires Firmware + + + + + The game you are trying to launch requires firmware to boot or to get past the opening menu. Please <a href='https://yuzu-mirror.github.io/help/quickstart'>dump and install firmware</a>, or press "OK" to launch anyways. + + + + + Installing Firmware... + + + + + + + + + Cancel + + + + + Firmware Install Failed + + + + + Firmware Install Succeeded + + + + + Firmware integrity verification failed! + + + + + + Verification failed for the following files: + +%1 + + + + + + Verifying integrity... + + + + + + Integrity verification succeeded! + + + + + + The operation completed successfully. + + + + + + Integrity verification failed! + + + + + File contents may be corrupt or missing. + + + + + Integrity verification couldn't be performed + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity. + + + + + Select Dumped Keys Location + + + + + Decryption Keys install succeeded + + + + + Decryption Keys install failed + + + + + Orphaned Profiles Detected! + + + + + UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br> + + + + + Really clear data? + + + + + Important data may be lost! + + + + + Are you REALLY sure? + + + + + Once deleted, your data will NOT come back! +Only do this if you're 100% sure you want to delete this data. + + + + + Clearing... + + + + + Select Export Location + + + + + %1.zip + + + + + + Zipped Archives (*.zip) + + + + + Exporting data. This may take a while... + + + + + Exporting + + + + + Exported Successfully + + + + + Data was exported successfully. + + + + + Export Cancelled + + + + + Export was cancelled by the user. + + + + + Export Failed + + + + + Ensure you have write permissions on the targeted directory and try again. + + + + + Select Import Location + + + + + Import Warning + + + + + All previous data in this directory will be deleted. Are you sure you wish to proceed? + + + + + Importing data. This may take a while... + + + + + Importing + + + + + Imported Successfully + + + + + Data was imported successfully. + + + + + Import Cancelled + + + + + Import was cancelled by the user. + + + + + Import Failed + + + + + Ensure you have read permissions on the targeted directory and try again. + + + + + QtCommon::FS + + + Linked Save Data + + + + + Save data has been linked. + + + + + Failed to link save data + + + + + Could not link directory: + %1 +To: + %2 + + + + + Already Linked + + + + + This title is already linked to Ryujinx. Would you like to unlink it? + + + + + Failed to unlink old directory + + + + + + OS returned error: %1 + + + + + Failed to copy save data + + + + + Unlink Successful + + + + + Successfully unlinked Ryujinx save data. Save data has been kept intact. + + + + + Could not find Ryujinx installation + + + + + Could not find a valid Ryujinx installation. This may typically occur if you are using Ryujinx in portable mode. + +Would you like to manually select a portable folder to use? + + + + + Ryujinx Portable Location + + + + + Not a valid Ryujinx directory + + + + + The specified directory does not contain valid Ryujinx data. + + + + + + Could not find Ryujinx save data + + + + + QtCommon::Game + + + Error Removing Contents + + + + + Error Removing Update + + + + + Error Removing DLC + + + + + + + + + + Successfully Removed + + + + + Successfully removed the installed base game. + + + + + The base game is not installed in the NAND and cannot be removed. + + + + + Successfully removed the installed update. + + + + + There is no update installed for this title. + + + + + There are no DLCs installed for this title. + + + + + Successfully removed %1 installed DLC. + + + + + + Error Removing Transferable Shader Cache + + + + + + A shader cache for this title does not exist. + + + + + Successfully removed the transferable shader cache. + + + + + Failed to remove the transferable shader cache. + + + + + Error Removing Vulkan Driver Pipeline Cache + + + + + Failed to remove the driver pipeline cache. + + + + + + Error Removing Transferable Shader Caches + + + + + Successfully removed the transferable shader caches. + + + + + Failed to remove the transferable shader cache directory. + + + + + + Error Removing Custom Configuration + + + + + A custom configuration for this title does not exist. + + + + + Successfully removed the custom game configuration. + + + + + Failed to remove the custom game configuration. + + + + + Reset Metadata Cache + + + + + The metadata cache is already empty. + + + + + The operation completed successfully. + + + + + The metadata cache couldn't be deleted. It might be in use or non-existent. + + + + + Create Shortcut + + + + + Do you want to launch the game in fullscreen? + + + + + Shortcut Created + + + + + Successfully created a shortcut to %1 + + + + + Shortcut may be Volatile! + + + + + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? + + + + + Failed to Create Shortcut + + + + + Failed to create a shortcut to %1 + + + + + Create Icon + + + + + Cannot create icon file. Path "%1" does not exist and cannot be created. + + + + + No firmware available + + + + + Please install firmware to use the home menu. + + + + + Home Menu Applet + + + + + Home Menu is not available. Please reinstall firmware. + + + + + QtCommon::Mod + + + Mod Name + + + + + What should this mod be called? + + + + + RomFS + + + + + ExeFS/Patch + + + + + Cheat + + + + + Mod Type + + + + + Could not detect mod type automatically. Please manually specify the type of mod you downloaded. + +Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods. + + + + + + Mod Extract Failed + + + + + Failed to create temporary directory %1 + + + + + Zip file %1 is empty + + + + + QtCommon::Path + + + Error Opening Shader Cache + + + + + Failed to create or open shader cache for this title, ensure your app data directory has write permissions. + + + + + QtCommon::StringLookup + + + Contains game save data. DO NOT REMOVE UNLESS YOU KNOW WHAT YOU'RE DOING! + + + + + Contains Vulkan and OpenGL pipeline caches. Generally safe to remove. + + + + + Contains updates and DLC for games. + + + + + Contains firmware and applet data. + + + + + Contains game mods, patches, and cheats. + + + + + Decryption Keys were successfully installed + + + + + Unable to read key directory, aborting + + + + + One or more keys failed to copy. + + + + + Verify your keys file has a .keys extension and try again. + + + + + Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. + + + + + Successfully installed firmware version %1 + + + + + Unable to locate potential firmware NCA files + + + + + Failed to delete one or more firmware files. + + + + + One or more firmware files failed to copy into NAND. + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. Restart Eden or re-install firmware. + + + + + Firmware missing. Firmware is required to run certain games and use the Home Menu. + + + + + Firmware reported as present, but was unable to be read. Check for decryption keys and redump firmware if necessary. + + + + + Eden has detected user data for the following emulators: + + + + + Would you like to migrate your data for use in Eden? +Select the corresponding button to migrate data from that emulator. +This may take a while. + + + + + Clearing shader cache is recommended for all users. +Do not uncheck unless you know what you're doing. + + + + + Keeps the old data directory. This is recommended if you aren't +space-constrained and want to keep separate data for the old emulator. + + + + + Deletes the old data directory. +This is recommended on devices with space constraints. + + + + + Creates a filesystem link between the old directory and Eden directory. +This is recommended if you want to share data between emulators. + + + + + Ryujinx title database does not exist. + + + + + Invalid header on Ryujinx title database. + + + + + Invalid magic header on Ryujinx title database. + + + + + Invalid byte alignment on Ryujinx title database. + + + + + No items found in Ryujinx title database. + + + + + Title %1 not found in Ryujinx title database. + @@ -8689,7 +9989,7 @@ p, li { white-space: pre-wrap; } Players: - + @@ -8710,7 +10010,7 @@ p, li { white-space: pre-wrap; } - + Pro Controller Pro Controller @@ -8723,7 +10023,7 @@ p, li { white-space: pre-wrap; } - + Dual Joycons Διπλά Joycons @@ -8736,7 +10036,7 @@ p, li { white-space: pre-wrap; } - + Left Joycon Αριστερό Joycon @@ -8749,7 +10049,7 @@ p, li { white-space: pre-wrap; } - + Right Joycon Δεξί Joycon @@ -8763,7 +10063,7 @@ p, li { white-space: pre-wrap; } Use Current Config - + @@ -8778,7 +10078,7 @@ p, li { white-space: pre-wrap; } - + Handheld Handheld @@ -8841,7 +10141,7 @@ p, li { white-space: pre-wrap; } Create - + @@ -8896,35 +10196,35 @@ p, li { white-space: pre-wrap; } Not enough controllers - + - + GameCube Controller Χειριστήριο GameCube - + Poke Ball Plus Poke Ball Plus - + NES Controller Χειριστήριο NES - + SNES Controller Χειριστήριο SNES - + N64 Controller Χειριστήριο N64 - + Sega Genesis Sega Genesis @@ -8932,38 +10232,38 @@ p, li { white-space: pre-wrap; } QtErrorDisplay - - - + + + Error Code: %1-%2 (0x%3) - + - + An error has occurred. Please try again or contact the developer of the software. - + - + An error occurred on %1 at %2. Please try again or contact the developer of the software. - + - + An error has occurred. %1 %2 - + QtProfileSelectionDialog - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -8971,75 +10271,75 @@ Please try again or contact the developer of the software. %2 - + Users Χρήστες Profile Creator - + Profile Selector - + Profile Icon Editor - + Profile Nickname Editor - + Who will receive the points? - + Who is using Nintendo eShop? - + Who is making this purchase? - + Who is posting? - + Select a user to link to a Nintendo Account. - + Change settings for which user? - + Format data for which user? - + Which user will be transferred to another console? - + Send save data for which user? - + @@ -9052,19 +10352,19 @@ Please try again or contact the developer of the software. Software Keyboard - + Enter Text - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -9073,163 +10373,91 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - - + + OK OK - + Cancel Ακύρωση + + RyujinxDialog + + + Ryujinx Link + + + + + Linking save data to Ryujinx lets both Ryujinx and Eden reference the same save files for your games. + +By selecting "From Eden", previous save data stored in Ryujinx will be deleted, and vice versa for "From Ryujinx". + + + + + From Eden + + + + + From Ryujinx + + + + + Cancel + + + + + Failed to link save data + + + + + OS returned error: %1 + + + SequenceDialog Enter a hotkey - + - WaitTreeCallstack + SetPlayTimeDialog - - Call stack - Κλήση stack - - - - WaitTreeSynchronizationObject - - - [%1] %2 - + + Set Play Time Data + - - waited by no thread - - - - - WaitTreeThread - - - runnable - + + Hours: + - - paused - + + Minutes: + - - sleeping - + + Seconds: + - - waiting for IPC reply - - - - - waiting for objects - αναμονή αντικειμένων - - - - waiting for condition variable - - - - - waiting for address arbiter - - - - - waiting for suspend resume - - - - - waiting - - - - - initialized - - - - - terminated - - - - - unknown - - - - - PC = 0x%1 LR = 0x%2 - PC = 0x%1 LR = 0x%2 - - - - ideal - - - - - core %1 - πυρήνας %1 - - - - processor = %1 - επεξεργαστής = %1 - - - - affinity mask = %1 - - - - - thread id = %1 - - - - - priority = %1(current) / %2(normal) - προτεραιότητα = %1(τρέχον) / %2(κανονικό) - - - - last running ticks = %1 - - - - - WaitTreeThreadList - - - waited by thread - - - - - WaitTreeWidget - - - &Wait Tree - + + Total play time reached maximum. + diff --git a/dist/languages/es.ts b/dist/languages/es.ts index fca48d93ad..29557af4b2 100644 --- a/dist/languages/es.ts +++ b/dist/languages/es.ts @@ -1,25 +1,15 @@ - - - + AboutDialog - - About yuzu - Acerca de yuzu - - - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - - About eden - + About Eden + Acerca de Eden - <html><head/><body><p><span style=" font-size:28pt;">eden</span></p></body></html> - + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> @@ -34,72 +24,59 @@ p, li { white-space: pre-wrap; } hr { height: 1px; border-width: 0; } li.unchecked::marker { content: "\2610"; } li.checked::marker { content: "\2612"; } -</style></head><body style=" font-family:'Adwaita Sans'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> - +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css"> +p, li { white-space: pre-wrap; } +hr { height: 1px; border-width: 0; } +li.unchecked::marker { content: "\2610"; } +li.checked::marker { content: "\2612"; } +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden es un emulador experimental de código abierto de Nintendo Switch licenciado bajo GPLv3.0+ que está basado en el emulador yuzu el cual finalizó su desarrollo en marzo de 2024. <br /><br />Este programa no debería ser usado para jugar a juegos que no fueron obtenidos legalmente.</span></p></body></html> - <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">This software should not be used to play games you have not legally obtained.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu es un emulador experimental de código abierto de Nintendo Switch licenciada bajo GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Este software no debe ser utilizado para jugar a juegos que no se hayan obtenido de forma legal.</span></p></body></html> - - - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Página web</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Código fuente</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contribuidores</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licencia</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Sitio web</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Código fuente</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Colaboradores</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licencia</span></a></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. eden is not affiliated with Nintendo in any way.</span></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; es una marca registrada de Nintendo. yuzu no esta afiliado con Nintendo de ninguna forma.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. Eden is not affiliated with Nintendo in any way.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; es una marca registrada de Nintendo. Eden no está afiliado de ninguna forma con Nintendo.</span></p></body></html> CalibrationConfigurationDialog - + Communicating with the server... Comunicando con el servidor... - + Cancel Cancelar - + Touch the top left corner <br>of your touchpad. - Toque la esquina superior izquierda<br>del trackpad. + Toca la esquina superior izquierda<br>de tu panel táctil. - + Now touch the bottom right corner <br>of your touchpad. - Ahora toque la esquina inferior derecha <br>del trackpad. + Ahora toca la esquina inferior derecha <br>de tu panel táctil. - + Configuration completed! ¡Configuración completada! - + OK - OK + Aceptar @@ -112,7 +89,7 @@ p, li { white-space: pre-wrap; } Send Chat Message - Enviar mensaje del chat + Enviar mensaje al chat @@ -120,84 +97,84 @@ p, li { white-space: pre-wrap; } Enviar mensaje - + Members Miembros - + %1 has joined - %1 se ha unido + %1 se unió - + %1 has left - %1 se ha ido + %1 se fué - + %1 has been kicked %1 ha sido expulsado - + %1 has been banned %1 ha sido vetado - + %1 has been unbanned %1 se le ha retirado el veto - + View Profile Ver perfil - - + + Block Player Bloquear jugador - + When you block a player, you will no longer receive chat messages from them.<br><br>Are you sure you would like to block %1? - Cuando bloqueas a un jugador, ya no recibirás mensajes de ellos. <br><br> ¿Estás seguro de que quieres bloquear a %1? + Cuando bloqueas a un jugador, ya no recibirás más mensajes de él. <br><br> ¿Estás seguro de que quieres bloquear a %1? - + Kick Expulsar - + Ban Vetar - + Kick Player - Expulsar jugador + Expulsar al jugador - + Are you sure you would like to <b>kick</b> %1? - ¿Estás seguro que quieres <b>expulsar</b> a %1? + ¿Estás seguro de que quieres <b>expulsar</b> a %1? + + + + Ban Player + Vetar al jugador - Ban Player - Vetar jugador - - - Are you sure you would like to <b>kick and ban</b> %1? This would ban both their forum username and their IP address. - ¿Estás seguro que quieres <b>expulsar y vetar a</b>%1? + ¿Estás seguro de que quieres <b>vetar y expulsar a</b>%1? -Esto banearía su nombre del foro y su dirección IP. +Esto vetará su nombre de usuario del foro y su dirección IP. @@ -226,17 +203,17 @@ Esto banearía su nombre del foro y su dirección IP. ClientRoomWindow - + Connected Conectado - + Disconnected Desconectado - + %1 - %2 (%3/%4 members) - connected %1 - %2 (%3/%4 miembros) - conectado @@ -257,36 +234,32 @@ Esto banearía su nombre del foro y su dirección IP. Report Game Compatibility - Informar de compatibilidad del juego - - - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of yuzu you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected yuzu account</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Si deseas presentar una prueba a la </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">Lista de Compatibilidad de yuzu</span></a><span style=" font-size:10pt;">, La siguiente información será obtenida y publicada en el sitio web:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Informacion de Hardware (CPU / GPU / Sistema operativo)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Versión de yuzu que estés utilizando</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La cuenta de yuzu conectada</li></ul></body></html> + Informar de compatibilidad con el juego <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">eden Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of eden you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected eden account</li></ul></body></html> - + <html><head/><body><p><span style=" font-size:10pt;">Si elijes entregar un caso de prueba a la </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">lista de compatibilidad de Eden</span></a><span style=" font-size:10pt;">, Se recopilará y mostrará la siguiente información en el sito:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Información del hardware (CPU / GPU / Sistema operativo)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Qué version de Eden estás usando</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La cuenta de eden que está conectada </li></ul></body></html> <html><head/><body><p>Does the game boot?</p></body></html> - <html><head/><body><p>¿El juego se ejecuta?</p></body></html> + <html><head/><body><p>¿El juego se inicia?</p></body></html> Yes The game starts to output video or audio - Sí El juego llega a reproducir vídeo o sonido + Sí El juego empieza a reproducir vídeo o audio No The game doesn't get past the "Launching..." screen - No El juego no consigue avanzar más allá de la pantalla "Iniciando..." + No El juego no consigue avanzar más allá de la pantalla de "Iniciando..." Yes The game gets past the intro/menu and into gameplay - Sí El juego avanza del menú y entra al juego + Sí El juego avanza del menú/introducción y entra al juego @@ -296,7 +269,7 @@ Esto banearía su nombre del foro y su dirección IP. <html><head/><body><p>Does the game reach gameplay?</p></body></html> - <html><head/><body><p>¿El juego alcanza a ser jugable?</p></body></html> + <html><head/><body><p>¿El juego llega a ser jugable?</p></body></html> @@ -306,12 +279,12 @@ Esto banearía su nombre del foro y su dirección IP. No The game crashes or freezes during gameplay - No El juego se bloquea o se congela durante la ejecución + No El juego se bloquea o se congela durante la partida <html><head/><body><p>Does the game work without crashing, freezing or locking up during gameplay?</p></body></html> - <html><head/><body><p>¿Funciona el juego sin que se interrumpa, se congele o se bloquee durante la partida?</p></body></html> + <html><head/><body><p>¿El juego funciona sin que se interrumpa, se congele o se bloquee durante la partida?</p></body></html> @@ -366,30 +339,30 @@ Esto banearía su nombre del foro y su dirección IP. <html><head/><body><p>Does the game have any audio glitches / missing effects?</p></body></html> - <html><head/><body><p>¿El juego tiene algún problema de audio o falta de efectos de sonido?</p></body></html> + <html><head/><body><p>¿El juego tiene algún problema de audio o faltan efectos de sonido?</p></body></html> Thank you for your submission! - Gracias por su contribución. + Gracias por tu contribución. - + Submitting Enviando - + Communication error Error de comunicación - + An error occurred while sending the Testcase - Ha ocurrido un fallo mientras se enviaba el caso de prueba. + Ha ocurrido un error mientras se enviaba el caso de prueba - + Next Siguiente @@ -397,1585 +370,1920 @@ Esto banearía su nombre del foro y su dirección IP. ConfigurationShared - + % % - + Amiibo editor Editor de Amiibo - + Controller configuration - Configuración de controles + Configuración del mando - + Data erase Borrar datos - + Error Error - + Net connect Conexión a la red - + Player select - Selección de personaje + Selección de jugador - + Software keyboard Teclado de software - + Mii Edit Editor de Mii - + Online web - Web online + Web en línea - + Shop Tienda - + Photo viewer Álbum - + Offline web - Web offline + Web fuera de línea - + Login share Inicio de sesión - + Wifi web auth Autenticación Wi-Fi - + My page Mi página - + + Enable Overlay Applet + Habilitar applet de superposición + + + + Enables Horizon's built-in overlay applet. Press and hold the home button for 1 second to show it. + Activa el applet integrado de superpuesto de Horizon. Mantén pulsado el botón de inicio durante 1 segundo para que aparezca. + + + Output Engine: Motor de salida: - + Output Device: Dispositivo de salida: - + Input Device: Dispositivo de entrada: - + Mute audio - Silenciar sonido + Silenciar audio - + Volume: Volumen: - + Mute audio when in background - Silenciar audio en segundo plano + Silenciar el audio en segundo plano - + Multicore CPU Emulation Emulación de CPU multinúcleo - - This option increases CPU emulation thread use from 1 to the Switch’s maximum of 4. -This is mainly a debug option and shouldn’t be disabled. - Esta opción aumenta los hilos de CPU emulados de 1 a 4, el máximo de la Switch. -Esta es una opción para depuración y no ha de activarse. + + This option increases CPU emulation thread use from 1 to the maximum of 4. +This is mainly a debug option and shouldn't be disabled. + Esta opción aumenta el uso de hilos de emulación de la CPU de 1 a un máximo de 4. +Principalmente es una opción de depuración y no debería desactivarse. - + Memory Layout - Memoria emulada + Distribución de memoria - - Increases the amount of emulated RAM from the stock 4GB of the retail Switch to the developer kit's 8/6GB. -It’s doesn’t improve stability or performance and is intended to let big texture mods fit in emulated RAM. -Enabling it will increase memory use. It is not recommended to enable unless a specific game with a texture mod needs it. - Aumenta la cantidad de RAM emulada desde los 4GB de la Switch normal hasta los 6/8GB del kit de desarrollador. -No mejora ni la estabilidad ni el rendimiento y la intención es permitir que los mods de texturas grandes quepen en la RAM emulada. -Activarlo incrementará el uso de memoria. No es recomendable activarlo a menos que un juego específico con un mod de texturas lo necesite. + + Increases the amount of emulated RAM. +Doesn't affect performance/stability but may allow HD texture mods to load. + Incrementa la cantidad de RAM emulada. +No afecta al rendimiento/estabilidad pero puede permitir que carguen los mods con texturas HD. - + Limit Speed Percent Limitar porcentaje de velocidad - - Controls the game's maximum rendering speed, but it’s up to each game if it runs faster or not. + + Controls the game's maximum rendering speed, but it's up to each game if it runs faster or not. 200% for a 30 FPS game is 60 FPS, and for a 60 FPS game it will be 120 FPS. Disabling it means unlocking the framerate to the maximum your PC can reach. - Controla la velocidad máxima de renderizado del juego, pero depende del juego si aumenta su velocidad o no. + Controla la velocidad máxima de renderizado del juego, pero depende de cada juego si aumenta su velocidad o no. 200% en un juego de 30 FPS serán 60 FPS; en uno de 60 FPS serán 120 FPS. -Desactivarlo hará que el juego se renderice lo más rápido posible según tu equipo. +Desactivarlo hará que el juego se renderice lo más rápido posible según tu ordenador. - + + Turbo Speed + Velocidad turbo + + + + When the Turbo Speed hotkey is pressed, the speed will be limited to this percentage. + Cuando la tecla de Velocidad turbo sea presionada, la velocidad será limltada a este porcentaje. + + + + Slow Speed + Velocidad lenta + + + + When the Slow Speed hotkey is pressed, the speed will be limited to this percentage. + Cuando la tecla de velocidad lenta sea presionada, la velocidad será limitada a este porcentaje. + + + Synchronize Core Speed - + Sincronizar velocidad de los núcleos - - Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). -Compatibility varies by game; many (especially older ones) may not respond well. + + Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). Can help reduce stuttering at lower framerates. - + Sincroniza la velocidad del núcleo de la CPU con la velocidad máxima de renderizado del juego para aumentar los FPS sin afectar la velocidad del juego (animaciones, físicas, etc.). +Puede ayudar a reducir los tirones o parpadeos en tasas de fotogramas bajas. - + Accuracy: Precisión: - - This setting controls the accuracy of the emulated CPU. -Don't change this unless you know what you are doing. - Este ajuste controla la precisión de la CPU emulada. -No ha de cambiarse salvo que sepas lo que estás haciendo. + + Change the accuracy of the emulated CPU (for debugging only). + Cambia la precisión de la CPU emulada (solo para depuración) - - + + Backend: Motor: - - Fast CPU Time - + + CPU Overclock + Overclock de CPU - + Overclocks the emulated CPU to remove some FPS limiters. Weaker CPUs may see reduced performance, and certain games may behave improperly. Use Boost (1700MHz) to run at the Switch's highest native clock, or Fast (2000MHz) to run at 2x clock. - + Overcloquea la CPU emulada para eliminar algunos limitadores de FPS. en CPUs más humildes puede reducir el rendimiento y algunos juegos pueden funcionar incorrectamente. +Usa Boost (1700MHz) para ejecutar a la velocidad nativa maximo de Switch, o Fast (2000MHz) para ejecutar al doble velocidad. - + + Custom CPU Ticks + Ticks de CPU personalizados + + + + Set a custom value of CPU ticks. Higher values can increase performance, but may cause deadlocks. A range of 77-21000 is recommended. + Establece un valor personalizado para los ticks de la CPU. Valores más altos pueden aumentar el rendimiento, pero también pueden causar bloqueos. Se recomienda un rango de 77-21000. + + + + Enable Host MMU Emulation (fastmem) + Activar la emulación del huesped MMU (fastmem) + + + + This optimization speeds up memory accesses by the guest program. +Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU. +Disabling this forces all memory accesses to use Software MMU Emulation. + Esta optimización acelera el acceso de la memoria por parte del programa invitado. +Al actualizarlo, las lecturas/escrituras de memoria del programa invitado se realizan directamente en la memoria y habilita el uso del huesped MMU +Desactivando este opción obliga a que todos los accesos a la memoria utilicen el Software MMU emulado. + + + Unfuse FMA (improve performance on CPUs without FMA) Desactivar FMA (mejora el rendimiento en las CPU sin FMA) - + This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support. Esta opción mejora el rendimiento al reducir la precisión de las instrucciones fused-multiply-add en las CPU sin soporte nativo FMA. - + Faster FRSQRTE and FRECPE - FRSQRTE y FRECPE rápido + FRSQRTE y FRECPE rápidos - + This option improves the speed of some approximate floating-point functions by using less accurate native approximations. Esta opción mejora el rendimiento de algunas funciones aproximadas de punto flotante al utilizar aproximaciones nativas menos precisas. - + Faster ASIMD instructions (32 bits only) - Instrucciones ASIMD rápidas (sólo 32 bits) + Instrucciones ASIMD rápidas (solo 32 bits) - + This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes. Esta opción mejora la velocidad de las funciones de punto flotante ASIMD de 32 bits al ejecutarlas con redondeos incorrectos. - + Inaccurate NaN handling Gestión imprecisa NaN - + This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions. Esta opción mejora el rendimiento al no hacer comprobaciones "NaN". Ten en cuenta que, a cambio, reduce la precisión de ciertas instrucciones de coma flotante. - + Disable address space checks Desactivar comprobación del espacio de destino - - This option improves speed by eliminating a safety check before every memory read/write in guest. -Disabling it may allow a game to read/write the emulator's memory. - Esta opción mejora el rendimiento eliminando una comprobación de seguridad en cada lectura escritura de memoria emulada (guest). -Desactivarlo puede permitir a un juego escribir o leer la memoria el emulador (host). + + This option improves speed by eliminating a safety check before every memory operation. +Disabling it may allow arbitrary code execution. + Esta opción mejora la velocidad eliminando una verificación de seguridad antes de cada operación de memoria. - + Ignore global monitor Ignorar monitorización global - + 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. - Esta opción mejora el rendimiento al depender sólo de la semántica de "cmpxchg" para garantizar la seguridad de las instrucciones de acceso exclusivo. + Esta opción mejora el rendimiento al depender solo de la semántica de cmpxchg para garantizar la seguridad de las instrucciones de acceso exclusivas. Ten en cuenta que puede resultar en bloqueos y otras condiciones de carrera. - + API: API: - - Switches between the available graphics APIs. -Vulkan is recommended in most cases. - Alterna entre las APIs gráficas disponibles. -Vulkan es la recomendación para la mayoría de casos. + + Changes the output graphics API. +Vulkan is recommended. + Cambia la API de salida gráfica. +Se recomienda Vulkan. - + Device: Dispositivo: - - This setting selects the GPU to use with the Vulkan backend. - Selecciona que GPU usar en Vulkan. + + This setting selects the GPU to use (Vulkan only). + Este ajuste selecciona la GPU a usar (solo Vulkan). - - Shader Backend: - Soporte de shaders: - - - - The shader backend to use for the OpenGL renderer. -GLSL is the fastest in performance and the best in rendering accuracy. -GLASM is a deprecated NVIDIA-only backend that offers much better shader building performance at the cost of FPS and rendering accuracy. -SPIR-V compiles the fastest, but yields poor results on most GPU drivers. - El motor de shaders usado para OpenGL. -GLSL es el más rápido y preciso al renderizar. -GLASM es un motor específico de NVIDIA ya obsoleto que ofrece mejor rendimiento al crear shaders a cambio de menor precisión y FPS. -SPIR-V es el más rápido, pero da malos resultados en la mayoría de drivers. - - - + Resolution: Resolución: - - Forces the game to render at a different resolution. -Higher resolutions require much more VRAM and bandwidth. -Options lower than 1X can cause rendering issues. - Obliga el juego a renderizar a otra resolución. -Mayores resoluciones requieren mucha más capacidad y ancho de banda de VRAM. -Opciones por debajo de 1x pueden causar errores gráficos. + + Forces to render at a different resolution. +Higher resolutions require more VRAM and bandwidth. +Options lower than 1X can cause artifacts. + Obliga al renderizado a realizarse en una resolución diferente. +Las resoluciones altas requieren más VRAM y ancho de banda. +Las opciones inferiores a 1X pueden generar errores visuales. - + Window Adapting Filter: Filtro adaptable de ventana: - + FSR Sharpness: Nitidez FSR: - - Determines how sharpened the image will look while using FSR’s dynamic contrast. - Ajusta la intensidad del filtro de enfoque al usar el contraste dinámico de FSR. + + Determines how sharpened the image will look using FSR's dynamic contrast. + Determina el nivel de nitidez de la imagen utilizando el contraste dinámico de FSR. - + Anti-Aliasing Method: - Método de Anti-Aliasing: + Método de suavizado de bordes: - + The anti-aliasing method to use. SMAA offers the best quality. -FXAA has a lower performance impact and can produce a better and more stable picture under very low resolutions. - Método de antialiasing que usar. -SMAA ofrece algo mejor calidad. -FXAA ofrece algo mejor de rendimiento y mayor estabilidad de imagen a muy bajas resoluciones. +FXAA can produce a more stable picture in lower resolutions. + El método de suavizado de bordes que se usará. +SMAA ofrece mejor calidad. +FXAA puede producir mejores resultados visuales en resoluciones bajas. - + Fullscreen Mode: Modo pantalla completa: - + The method used to render the window in fullscreen. Borderless offers the best compatibility with the on-screen keyboard that some games request for input. Exclusive fullscreen may offer better performance and better Freesync/Gsync support. - Modo de rendizado a pantalla completa. + Modo de renderizado a pantalla completa. Ventana sin bordes ofrece la mejor compatibilidad con el teclado en pantalla que algunos juegos necesitan. Pantalla completa exclusiva puede ofrecer mejor rendimiento y mejor soporte para FreeSync/G-Sync/VRR. - + Aspect Ratio: Relación de aspecto: - - Stretches the game to fit the specified aspect ratio. -Switch games only support 16:9, so custom game mods are required to get other ratios. + + Stretches the renderer to fit the specified aspect ratio. +Most games only support 16:9, so modifications are required to get other ratios. Also controls the aspect ratio of captured screenshots. - Estira la pantalla del juego a la relación de aspecto indicada. -Nativamente, los juegos solo soportan 16:9. Se necesitarán mods para otras relaciones de aspecto. -También afecta a las capturas de pantalla. + Ajusta el renderizador a la relación de aspecto especificada. +La mayoría de los juegos solo admiten 16:9, por lo que se requieren modificaciones para obtener otras relaciones de aspecto. +También controla la relación de aspecto de las capturas de pantalla. - - Use disk pipeline cache - Usar caché de canalización en disco + + Use persistent pipeline cache + Usar el caché de canalización persistente - + Allows saving shaders to storage for faster loading on following game boots. Disabling it is only intended for debugging. - Permite almacenar las shaders para cargar más rápido al arrancar el juego otra vez. -Solo ha de desactivarse para depuración. + Permite almacenar los sombreadores para que carguen más rápido la próxima vez que inicies el juego. +Desactivarlo solo está destinado para depuración. - - Optimize SPIRV output shader - + + Optimize SPIRV output + Optimizar la salida de SPIRV - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. This feature is experimental. - + Ejecuta un paso adicional de optimización sobre los sombreadores SPIRV generados. +Aumentará el tiempo requerido para compilar los sombreadores. +Puede mejorar un poco el rendimiento. +Esta función es experimental. - - Use asynchronous GPU emulation - Usar emulación asíncrona de GPU - - - - Uses an extra CPU thread for rendering. -This option should always remain enabled. - Usa un hilo de CPU adicional para renderizar. -Esta opción debería estar siempre activada. - - - + NVDEC emulation: Emulación NVDEC: - + Specifies how videos should be decoded. It can either use the CPU or the GPU for decoding, or perform no decoding at all (black screen on videos). In most cases, GPU decoding provides the best performance. - Indica cómo decodificar los videos: -Puede usar la CPU, GPU o no decodificar (mostrará una pantalla en negro durante los videos). -En la mayoría de casos, decodificar mediante GPU es la mejor opción. + Indica cómo descodificar los vídeos: +Puede usar la CPU, GPU o no descodificar (mostrará una pantalla en negro durante los vídeos). +En la mayoría de casos, descodificar mediante la GPU es la mejor opción. - + ASTC Decoding Method: - Modo decodificación ASTC: + Modo descodificación ASTC: - + This option controls how ASTC textures should be decoded. -CPU: Use the CPU for decoding, slowest but safest method. -GPU: Use the GPU's compute shaders to decode ASTC textures, recommended for most games and users. -CPU Asynchronously: Use the CPU to decode ASTC textures as they arrive. Completely eliminates ASTC decoding -stuttering at the cost of rendering issues while the texture is being decoded. - Controla cómo decodificar texturas ASTC: -CPU: Usa la CPU, el más lento pero el más seguro. -GPU: Usa las unidades de computa de la GPU, recomendado para la mayoría de juegos y usuarios. -CPU Asíncrono: Usa la CPU para decodificar al vuelo. Elimina los tirones relacionados con decodificar texturas ASTC a cambio de errores gráficos mientras la textura se decodifica. +CPU: Use the CPU for decoding. +GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). +CPU Asynchronously: Use the CPU to decode ASTC textures on demand. EliminatesASTC decoding +stuttering but may present artifacts. + Esta opción controla cómo deben descodificarse las texturas ASTC. +CPU: utiliza el procesador para la descodificación. +GPU: utiliza los sombreadores computables de la tarjeta gráfica para descodificar las texturas ASTC (recomendado). +CPU asíncrono: usa el procesador para descodificar las texturas ASTC bajo demanda. Elimina los tirones causados por la descodificación ASTC, pero puede generar errores visuales. - + ASTC Recompression Method: Modo recompresión ASTC: - - Almost all desktop and laptop dedicated GPUs lack support for ASTC textures, forcing the emulator to decompress to an intermediate format any card supports, RGBA8. -This option recompresses RGBA8 to either the BC1 or BC3 format, saving VRAM but negatively affecting image quality. - Casi ninguna gráfica dedicada de ordenador tiene soporte para decodificar las texturas ASTC, forzando a descomprimir a un formato intermedio, RGBA8. -Esta opción recomprime RGBA8 al formato BC1 o BC3, sacrificando calidad de imagen a cambio de menor uso de VRAM. + + Most GPUs lack support for ASTC textures and must decompress to anintermediate format: RGBA8. +BC1/BC3: The intermediate format will be recompressed to BC1 or BC3 format, + saving VRAM but degrading image quality. + La mayoría de las GPU no son compatibles con texturas ASTC y deben descomprimirse a un formato intermedio: RGBA8. +BC1/BC3: El formato intermedio será recomprimido a BC1 o BC3, lo que ahorra VRAM, pero degrada la calidad de la imagen. - + + Frame Pacing Mode (Vulkan only) + Modo de ritmo de fotogramas (solo Vulkan) + + + + Controls how the emulator manages frame pacing to reduce stuttering and make the frame rate smoother and more consistent. + Controla cómo el emulador gestiona el ritmo de los fotogramas para reducir los tirones y hacer que la velocidad de los fotogramas sea más suave y consistente. + + + VRAM Usage Mode: - + Modo de uso de la VRAM: - - Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. Has no effect on integrated graphics. Aggressive mode may severely impact the performance of other applications such as recording software. - + + Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. +Aggressive mode may impact performance of other applications such as recording software. + Selecciona si el emulador prefiere ahorrar memoria o maximizar el uso de memoria de video disponible para mejorar el rendimiento. +El modo agresivo puede afectar al rendimiento de otras aplicaciones, como a los programas de grabación. - + + Skip CPU Inner Invalidation + Saltar invalidación interna de la CPU + + + + Skips certain cache invalidations during memory updates, reducing CPU usage and improving latency. This may cause soft-crashes. + Omite ciertas invalidaciones de caché durante las actualizaciones de memoria, reduciendo el uso de la CPU y mejorando la latencia. Esto puede causar bloqueos leves. + + + VSync Mode: Modo VSync: - + FIFO (VSync) does not drop frames or exhibit tearing but is limited by the screen refresh rate. -FIFO Relaxed is similar to FIFO but allows tearing as it recovers from a slow down. +FIFO Relaxed 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. - 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 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. +Immediate (no synchronization) presents whatever is available and can exhibit tearing. + FIFO (VSync) no pierde fotogramas ni presenta desgarros de imagen, pero está limitado por la tasa de actualización del monitor. +FIFO Relaxed permite desgarros de imagen, pero se recupera más rápido cuando hay caídas de rendimiento. +Mailbox ofrece menor latencia que FIFO y evita el tearing, aunque puede perder algunos fotogramas. +Immediate (sin sincronización) muestra los fotogramas tan pronto están disponibles, pero puede generar desgarros de imagen. - + + Sync Memory Operations + Sincronizar operaciones de memoria + + + + Ensures data consistency between compute and memory operations. +This option fixes issues in games, but may degrade performance. +Unreal Engine 4 games often see the most significant changes thereof. + Asegura la consistencia de datos entre las operaciones procesadas y en memoria. +Esta opción arregla errores en los juegos, pero puede afectar negativamente al rendimiento. +Los juegos con Unreal Engine 4 son con frecuencia los que muestran cambios significantes en esto. + + + Enable asynchronous presentation (Vulkan only) - Activar presentación asíncrona (sólo Vulkan) + Activar presentación asíncrona (solo Vulkan) - + Slightly improves performance by moving presentation to a separate CPU thread. Mejora el rendimiento ligeramente al usar un hilo de CPU adicional para la presentación. - + Force maximum clocks (Vulkan only) - Forzar relojes al máximo (sólo Vulkan) + Forzar relojes al máximo (solo Vulkan) - + Runs work in the background while waiting for graphics commands to keep the GPU from lowering its clock speed. Ejecuta los procesos en segundo plano mientras se espera a las instrucciones gráficas para evitar que la GPU reduzca su velocidad de reloj. - + Anisotropic Filtering: Filtrado anisotrópico: - + Controls the quality of texture rendering at oblique angles. -It’s a light setting and safe to set at 16x on most GPUs. - Controla la calidad de una textura renderizado a ángulos oblicuos. -Es un ajuste de bajo coste y sin problemas a 16x en la mayoría de GPUs. +Safe to set at 16x on most GPUs. + Controla la calidad del renderizado de texturas en ángulos oblicuos. +Es seguro configurarlo en 16x en la mayoría de las GPU. - - Accuracy Level: - Nivel de precisión: + + GPU Mode: + Modo de la GPU: - - GPU emulation accuracy. -Most games render fine with Normal, but High is still required for some. -Particles tend to only render correctly with High accuracy. -Extreme should only be used for debugging. -This option can be changed while playing. -Some games may require booting on high to render properly. - Precisión de GPU emulada. -La mayoría de juegos funcionan con "Normal", pero algunos requieren precisión "Alta". -Partículas suelen depender de precisión "Alta". -La precisión "Extrema" solo ha de usarse para depuración. -Esta opción se puede cambiar mientras se juega, pero algunos juegos necesitan ser reiniciados para aplicar el cambio. + + Controls the GPU emulation mode. +Most games render fine with Fast or Balanced modes, but Accurate is still required for some. +Particles tend to only render correctly with Accurate mode. + Controla el modo de emulación de la GPU +La mayoridad de juegos renderizarán bien con el modo rápido o balanceado, pero el preciso todavía esta requerido para algunos. +Las partículas tienden a representarse correctamente solo con el modo preciso. - - Use asynchronous shader building (Hack) - Usar la construcción de shaders asíncronos (Hack) + + DMA Accuracy: + Precisión de DMA: - - Enables asynchronous shader compilation, which may reduce shader stutter. -This feature is experimental. - Activa la compilación asíncrona de shaders, que puede reducir los tirones producidos por shaders. -Esta opción es experimental. + + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. + Controla la precisión del DMA. La opción de precisión segura corrige errores en algunos juegos, pero puede reducir el rendimiento - Use Fast GPU Time (Hack) - Usar tiempo rápido de GPU (Hack) + + Enable asynchronous shader compilation + Activa la compilación de shaders asincrónicos - Enables Fast GPU Time. This option will force most games to run at their highest native resolution. - Activa el tiempo rápido de GPU. Esta opción hará que la mayoría de juegos estén forzados a ejecutarse en su resolución nativa máxima. + + May reduce shader stutter. + Puede reducir los tirones causados por la carga de sombreadores. - + + Fast GPU Time + Tiempo rápido de la GPU + + + + Overclocks the emulated GPU to increase dynamic resolution and render distance. +Use 256 for maximal performance and 512 for maximal graphics fidelity. + Overcloquea la GPU emulada para aumentar la resolución dinámica y la distancia de renderizado. +Use 256 para el máximo rendimiento y 512 para la máxima fidelidad gráfica. + + + + GPU Unswizzle + Desentrelazado de la GPU + + + + Accelerates BCn 3D texture decoding using GPU compute. +Disable if experiencing crashes or graphical glitches. + Acelera la decodificación de texturas 3D BCn mediante computación de la GPU. +Desactívela si experimenta problemas o fallos gráficos. + + + + GPU Unswizzle Max Texture Size + Tamaño máximo de textura de desentrelazado de la GPU + + + + Sets the maximum size (MiB) for GPU-based texture unswizzling. +While the GPU is faster for medium and large textures, the CPU may be more efficient for very small ones. +Adjust this to find the balance between GPU acceleration and CPU overhead. + Establece el tamaño máximo (en MiB) para el desentrelazado de texturas basada en GPU. +Aunque la GPU es más rápida para texturas medianas y grandes, la CPU puede ser más eficiente para texturas muy pequeñas. +Ajuste este valor para encontrar el equilibrio entre la aceleración de la GPU y la sobrecarga de la CPU. + + + + GPU Unswizzle Stream Size + Tamaño del flujo de desentrelazado de la GPU + + + + Sets the maximum amount of texture data (in MiB) processed per frame. +Higher values can reduce stutter during texture loading but may impact frame consistency. + Establece la cantidad máxima de datos de textura (en MiB) procesados ​​por cada fotograma. Valores más altos pueden reducir la distorsión durante la carga de texturas, pero pueden afectar a la consistencia de los fotogramas. + + + + GPU Unswizzle Chunk Size + Tamaño del trozo de desentrelazado de la GPU + + + + Determines the number of depth slices processed in a single dispatch. +Increasing this can improve throughput on high-end GPUs but may cause TDR or driver timeouts on weaker hardware. + Determina la cantidad de cortes de profundidad procesados ​​en un solo envío. Aumentar este valor puede mejorar el rendimiento en una GPU de gama alta, pero puede causar tirones y problemas en los tiempos de respuesta en hardware más modesto. + + + Use Vulkan pipeline cache Usar caché de canalización de Vulkan - + Enables GPU vendor-specific pipeline cache. This option can improve shader loading time significantly in cases where the Vulkan driver does not store pipeline cache files internally. - Activa la caché de pipeline específica del fabricante. -Esta opción puede mejorar los tiempos de cargas de shaders en caso de que el driver de Vulkan no lo almacene internamente. + Activa la caché de canalización específica del fabricante. +Esta opción puede mejorar los tiempos de cargas de sombreadores en el caso de que el controlador de Vulkan no lo almacene internamente. - + Enable Compute Pipelines (Intel Vulkan Only) - Activar canalizaciones de cómputo (solo Intel Vulkan) + Activar la canalizaciones de cómputo (solo Intel Vulkan) - - Enable compute pipelines, required by some games. -This setting only exists for Intel proprietary drivers, and may crash if enabled. + + 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. - Activa las canalizaciones de cómputo, que son necesarias en algunos juegos. -Esta opción sólo afecta a los controladores propios de AMD, y puede producir errores si se activa. -Las canalizaciones de cómputo siempre están activadas en los demás controladores. + Obligatorio para algunos juegos. +Este ajuste solo existe para los controladores propietarios de Intel y puede causar fallos si se activa. +En los demás controladores, la canalización de cómputo siempre está activada. - + Enable Reactive Flushing - Activar Limpieza Reactiva + Activar limpieza reactiva - + Uses reactive flushing instead of predictive flushing, allowing more accurate memory syncing. Usa limpieza de memoria reactiva en vez de predictiva, permitiendo una sincronización de memoria más precisa. - + Sync to framerate of video playback Sincronizar a fotogramas de reproducción de vídeo - + Run the game at normal speed during video playback, even when the framerate is unlocked. Ejecuta el juego a velocidad normal durante la reproducción de vídeos, incluso cuando no hay límite de fotogramas. - + Barrier feedback loops Bucles de feedback de barrera - + Improves rendering of transparency effects in specific games. Mejora la renderización de los efectos de transparencia en ciertos juegos. - + + Enable buffer history + Activar el historial del búfer + + + + Enables access to previous buffer states. +This option may improve rendering quality and performance consistency in some games. + Habilita el acceso a estados de búfer anteriores. +Esta opción puede mejorar la calidad de renderizado y la consistencia en el rendimiento de algunos juegos. + + + + Fix bloom effects + Arreglar efectos de resplandor + + + + Removes bloom in Burnout. + Elimina el resplandor en Burnout. + + + + Enable Legacy Rescale Pass + Activar el pase de reescalado heredado + + + + May fix rescale issues in some games by relying on behavior from the previous implementation. +Legacy behavior workaround that fixes line artifacts on AMD and Intel GPUs, and grey texture flicker on Nvidia GPUs in Luigis Mansion 3. + Puede arreglar los problemas de reescalado en algunos juegos confiando en el comportamiento de la implementación anterior. +Solución alternativa de comportamiento heredado que corrige los artefactos de línea de la GPU AMD y el parpadeo de texturas gris de la GPU Nvidia en Luigis Mansion 3. + + + + Extended Dynamic State + Estado dinámico extendido + + + + Controls the number of features that can be used in Extended Dynamic State. +Higher states allow for more features and can increase performance, but may cause additional graphical issues. + Controla el número de funciones que pueden ser usadas en el Estado Dinámico Extendido. +Números más altos permiten úsar más funciones y pueden aumentar el rendimiento, pero tambén pueden causar errores gráficos. + + + + Vertex Input Dynamic State + Estado dinámico de entrada de vértices + + + + Enables vertex input dynamic state feature for better quality and performance. + Activa la función de estado dinámico de entrada de vértices para una mejor calidad y rendimiento. + + + + Sample Shading + Sombreado de muestra + + + + Allows the fragment shader to execute per sample in a multi-sampled fragment instead of once per fragment. Improves graphics quality at the cost of performance. +Higher values improve quality but degrade performance. + Permite que el sombreador de fragmentos se ejecute por muestra en un fragmento multimuestreado, en lugar de una sola vez por fragmento. Mejora la calidad de los gráficos a costa de rendimiento. +Los valores más altos mejoran la calidad, pero reducen el rendimiento. + + + RNG Seed Semilla de GNA - + Controls the seed of the random number generator. -Mainly used for speedrunning purposes. - Controla la semilla usada al generar números aleatoriamente (RNG seed). -Usado principalmente en speedrunnning. +Mainly used for speedrunning. + Controla la semilla del generador de números aleatorios. +Usado principalmente para speedrunning. - + Device Name Nombre del dispositivo - - The name of the emulated Switch. - Nombre de la consola emulada. + + The name of the console. + El nombre de la consola - + Custom RTC Date: Fecha Personalizada RTC: - - This option allows to change the emulated clock of the Switch. + + This option allows to change the clock of the console. Can be used to manipulate time in games. - Permite ajustar el reloj interno de la consola emulada. -Puede usarse para manipular la hora dentro de los juegos. + Esta opción permite cambiar el reloj de la consola. +Puede ser usado para manipular el tiempo en juegos. - + + The number of seconds from the current unix time + Número de segundos de la hora actual de Unix + + + Language: Idioma: - - Note: this can be overridden when region setting is auto-select - Nota: esto puede ser reemplazado si la opción de región está en "autoseleccionar" + + This option can be overridden when region setting is auto-select + Esta opción puede ser reemplazada cuando la configuración de región está en selección automática. - + Region: Región: - - The region of the emulated Switch. - La región de la Switch emulada. + + The region of the console. + La Región de la Consola. - + Time Zone: Zona horaria: - - The time zone of the emulated Switch. - El huso horario de la Switch emulada. + + The time zone of the console. + La zona horaria de la consola. - + Sound Output Mode: Método de salida de sonido: - + Console Mode: Modo consola: - - Selects if the console is emulated in Docked or Handheld mode. + + Selects if the console is in Docked or Handheld mode. Games will change their resolution, details and supported controllers and depending on this setting. Setting to Handheld can help improve performance for low end systems. - Selecciona si la consola es emulada en modo Dock o Portátil. -Los juegos cambiarán su resolución, calidad y mandos compatibles según este modo. -Usar el modo Portátil puede ayudar al rendimiento en equipos de bajos recursos. + Selecciona si la consola está en modo acoplado o portátil. +Los juegos cambiarán su resolución, detalles y compatibilidad con los mandos según esta configuración. +Configurar el modo portátil puede mejorar el rendimiento en sistemas de gama baja. - - Prompt for user on game boot - Seleccionar usuario al arrancar + + Unit Serial + Nº de serie de la unidad - Ask to select a user profile on each boot, useful if multiple people use yuzu on the same PC. - Preguntar qué perfil de usuario usar al inciar, útil si múltiples personas usan yuzu en un mismo equipo. + + Battery Serial + Nº de serie de la batería - - Pause emulation when in background - Pausar emulación cuando la ventana esté en segundo plano + + Debug knobs + Perillas de depuración - This setting pauses yuzu when focusing other windows. - Pausa yuzu cuando cuando no esté en primer plano. + + Prompt for user profile on boot + Solicitud para perfil de usuario al arrancar - - Fast GPU Time (Hack) - + + Useful if multiple people use the same PC. + Útil si múltiples personas usan la misma PC - - Overclocks the emulated GPU to increase dynamic resolution and render distance. -Use 128 for maximal performance and 512 for maximal graphics fidelity. - + + Pause when not in focus + Pausar cuando la ventana no esté activa - - Extended Dynamic State - + + Pauses emulation when focusing on other windows. + Pausa la emulación cuando esta activa otra ventana diferente. - - Enables the VkExtendedDynamicState* extensions. -Higher dynamic states will generally improve performance, but may cause issues on certain games or devices. - - - - - Provoking Vertex - - - - - Improves lighting and vertex handling in certain games. -Only Vulkan 1.0+ devices support this extension. - - - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - - Ask to select a user profile on each boot, useful if multiple people use eden on the same PC. - - - - - This setting pauses eden when focusing other windows. - - - - + Confirm before stopping emulation Confirmar detención - - This setting overrides game prompts asking to confirm stopping the game. + + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - Salta el aviso del juego para confirmar si ha de salir. -Activar esta opción salta ese aviso y detiene la emulacón directamente. + Anula las solicitudes de confirmación para detener la emulación. Al habilitar esta opción, se omiten dichas solicitudes y se sale directamente de la emulación. - + Hide mouse on inactivity Ocultar el cursor por inactividad. - - This setting hides the mouse after 2.5s of inactivity. - Oculta el ratón tras 2,5 segundos de inactividad. + + Hides the mouse after 2.5s of inactivity. + Oculta el mouse después de 2.5s de inactividad. - + Disable controller applet Desactivar applet de mandos - - Forcibly disables the use of the controller applet by guests. -When a guest attempts to open the controller applet, it is immediately closed. - Fuerza la desactivación del applet de control para invitados. -Cuando un invitado intenta abrir el applet de control, éste se cierra automáticamente. + + Forcibly disables the use of the controller applet in emulated programs. +When a program attempts to open the controller applet, it is immediately closed. + Desactiva forzosamente el uso del applet del controlador en programas emulados. +Cuando un programa intenta abrir el applet del controlador, se cierra inmediatamente. - + Check for updates - + Buscar actualizaciones - + Whether or not to check for updates upon startup. - + Si se deben buscar actualizaciones al iniciar o no. - + Enable Gamemode Activar Modo Juego - + + Force X11 as Graphics Backend + Forzar X11 como motor gráfico + + + Custom frontend Interfaz personalizada - + Real applet Applet real - + Never - + Nunca - + On Load - + Al cargar - + Always - + Siempre - + CPU CPU - + GPU GPU - + CPU Asynchronous CPU Asíncrona - + Uncompressed (Best quality) - Sin compresión (Calidad óptima) + Sin compresión (Mejor calidad) - + BC1 (Low quality) BC1 (Calidad baja) - + BC3 (Medium quality) BC3 (Calidad media) - - Conservative - - - - - Aggressive - - - - - OpenGL - OpenGL - - - - Vulkan - Vulkan - - - - Null - Ninguno - - - - GLSL - GLSL - - - - GLASM (Assembly Shaders, NVIDIA Only) - GLASM (Shaders de ensamblado, sólo NVIDIA) - - - - SPIR-V (Experimental, AMD/Mesa Only) - SPIR-V (Experimental, sólo AMD/Mesa) - - - - Normal - Normal - - - - High - Alto - - - - Extreme - Extremo - - - + + Auto Auto - + + 30 FPS + 30 FPS + + + + 60 FPS + 60 FPS + + + + 90 FPS + 90 FPS + + + + 120 FPS + 120 FPS + + + + Conservative + Conservativo + + + + Aggressive + Agresivo + + + + Vulkan + Vulkan + + + + OpenGL GLSL + OpenGL GLSL + + + + OpenGL GLASM (Assembly Shaders, NVIDIA Only) + OpenGL GLASM (Ensamblado de sombreadores, solo NVIDIA) + + + + OpenGL SPIR-V (Experimental, AMD/Mesa Only) + OpenGL SPIR-V (Experimental, solo AMD/Mesa) + + + + Null + Ninguno + + + + Fast + Rápido + + + + Balanced + Balanceado + + + + Accurate Preciso - - Unsafe - Impreciso - - - - Paranoid (disables most optimizations) - Paranoico (Deshabilita la mayoría de optimizaciones) - - - - Dynarmic - DynARMic - - - - NCE - NCE - - - - Borderless Windowed - Ventana sin bordes - - - - Exclusive Fullscreen - Pantalla completa - - - - No Video Output - Sin salida de vídeo - - - - CPU Video Decoding - Decodificación de vídeo en la CPU - - - - GPU Video Decoding (Default) - Decodificación de vídeo en GPU (Por defecto) - - - - 0.25X (180p/270p) [EXPERIMENTAL] - - - - - 0.5X (360p/540p) [EXPERIMENTAL] - x0,5 (360p/540p) [EXPERIMENTAL] - - - - 0.75X (540p/810p) [EXPERIMENTAL] - x0,75 (540p/810p) [EXPERIMENTAL] - - - - 1X (720p/1080p) - x1 (720p/1080p) - - - - 1.5X (1080p/1620p) [EXPERIMENTAL] - x1,5 (1080p/1620p) [EXPERIMENTAL] - - - - 2X (1440p/2160p) - x2 (1440p/2160p) - - - - 3X (2160p/3240p) - x3 (2160p/3240p) - - - - 4X (2880p/4320p) - x4 (2880p/4320p) - - - - 5X (3600p/5400p) - x5 (3600p/5400p) - - - - 6X (4320p/6480p) - x6 (4320p/6480p) - - - - 7X (5040p/7560p) - x7 (5040p/7560p) - - - - 8X (5760p/8640p) - x8 (5760p/8640p) - - - - Nearest Neighbor - Vecino más próximo - - - - Bilinear - Bilineal - - - - Bicubic - Bicúbico - - - - Gaussian - Gaussiano - - - - ScaleForce - ScaleForce - - - - AMD FidelityFX™️ Super Resolution - AMD FidelityFX™️ Super Resolution - - - - Area - - - - - None - Ninguno - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Default (16:9) - Predeterminado (16:9) - - - - Force 4:3 - Forzar 4:3 - - - - Force 21:9 - Forzar 21:9 - - - - Force 16:10 - Forzar 16:10 - - - - Stretch to Window - Estirar a la ventana - - - - Automatic - Automático - - - + + Default Predeterminado - + + Unsafe (fast) + Inseguro (rápido) + + + + Safe (stable) + Seguro (estable) + + + + Unsafe + Impreciso + + + + Paranoid (disables most optimizations) + Paranoico (Deshabilita la mayoría de optimizaciones) + + + + Debugging + Depuración + + + + Dynarmic + DynARMic + + + + NCE + NCE + + + + Borderless Windowed + Ventana sin bordes + + + + Exclusive Fullscreen + Pantalla completa + + + + No Video Output + Sin salida de vídeo + + + + CPU Video Decoding + Decodificación de vídeo en la CPU + + + + GPU Video Decoding (Default) + Decodificación de vídeo en GPU (Por defecto) + + + + 0.25X (180p/270p) [EXPERIMENTAL] + 0.25X (180p/270p) [EXPERIMENTAL] + + + + 0.5X (360p/540p) [EXPERIMENTAL] + x0,5 (360p/540p) [EXPERIMENTAL] + + + + 0.75X (540p/810p) [EXPERIMENTAL] + x0,75 (540p/810p) [EXPERIMENTAL] + + + + 1X (720p/1080p) + x1 (720p/1080p) + + + + 1.25X (900p/1350p) [EXPERIMENTAL] + 1.25X (900p/1350p) [EXPERIMENTAL] + + + + 1.5X (1080p/1620p) [EXPERIMENTAL] + x1,5 (1080p/1620p) [EXPERIMENTAL] + + + + 2X (1440p/2160p) + x2 (1440p/2160p) + + + + 3X (2160p/3240p) + x3 (2160p/3240p) + + + + 4X (2880p/4320p) + x4 (2880p/4320p) + + + + 5X (3600p/5400p) + x5 (3600p/5400p) + + + + 6X (4320p/6480p) + x6 (4320p/6480p) + + + + 7X (5040p/7560p) + x7 (5040p/7560p) + + + + 8X (5760p/8640p) + x8 (5760p/8640p) + + + + Nearest Neighbor + Vecino más próximo + + + + Bilinear + Bilineal + + + + Bicubic + Bicúbico + + + + Gaussian + Gaussiano + + + + Lanczos + Lanczos + + + + ScaleForce + ScaleForce + + + + AMD FidelityFX Super Resolution + Super Resolución AMD FidelityFX + + + + Area + Área + + + + MMPX + MMPX + + + + Zero-Tangent + Tangente cero + + + + B-Spline + Ranura B + + + + Mitchell + Mitchell + + + + Spline-1 + Spline-1 + + + + + None + Ninguno + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Default (16:9) + Predeterminado (16:9) + + + + Force 4:3 + Forzar 4:3 + + + + Force 21:9 + Forzar 21:9 + + + + Force 16:10 + Forzar 16:10 + + + + Stretch to Window + Estirar a la ventana + + + + Automatic + Automático + + + 2x x2 - + 4x x4 - + 8x x8 - + 16x x16 - + + 32x + 32x + + + + 64x + 64x + + + Japanese (日本語) Japonés (日本語) - + American English Inglés estadounidense - + French (français) Francés (français) - + German (Deutsch) Alemán (deutsch) - + Italian (italiano) Italiano (italiano) - + Spanish (español) Español - + Chinese Chino - + Korean (한국어) Coreano (한국어) - + Dutch (Nederlands) Holandés (nederlands) - + Portuguese (português) Portugués (português) - + Russian (Русский) Ruso (Русский) - + Taiwanese Taiwanés - + British English Inglés británico - + Canadian French Francés canadiense - + Latin American Spanish Español latinoamericano - + Simplified Chinese Chino simplificado - + Traditional Chinese (正體中文) Chino tradicional (正體中文) - + Brazilian Portuguese (português do Brasil) Portugués brasileño (português do Brasil) - - + + Polish (polska) + Polaco (polska) + + + + Thai (แบบไทย) + Tailandés (แบบไทย) + + + + Japan Japón - + USA EEUU - + Europe Europa - + Australia Australia - + China China - + Korea Corea - + Taiwan Taiwán - + Auto (%1) Auto select time zone Auto (%1) - + Default (%1) Default time zone Predeterminada (%1) - + CET CET - + CST6CDT CST6CDT - + Cuba Cuba - + EET EET - + Egypt Egipto - + Eire Eire - + EST EST - + EST5EDT EST5EDT - + GB GB - + GB-Eire GB-Eire - + GMT GMT - + GMT+0 GMT+0 - + GMT-0 GMT-0 - + GMT0 GMT0 - + Greenwich Greenwich - + Hongkong Hongkong - + HST HST - + Iceland Islandia - + Iran Irán - + Israel Israel - + Jamaica Jamaica - + Kwajalein Kwajalein - + Libya Libia - + MET MET - + MST MST - + MST7MDT MST7MDT - + Navajo Navajo - + NZ NZ - + NZ-CHAT NZ-CHAT - + Poland Polonia - + Portugal Portugal - + PRC PRC - + PST8PDT PST8PDT - + ROC ROC - + ROK ROK - + Singapore Singapur - + Turkey Turquía - + UCT UCT - + Universal Universal - + UTC UTC - + W-SU W-SU - + WET WET - + Zulu Zulú - + Mono Mono - + Stereo Estéreo - + Surround Envolvente - + 4GB DRAM (Default) 4GB DRAM (Por defecto) - + 6GB DRAM (Unsafe) 6GB DRAM (Inseguro) - + 8GB DRAM - + 8GB DRAM - + 10GB DRAM (Unsafe) - + 10GB DRAM (Inseguro) - + 12GB DRAM (Unsafe) - + 12GB DRAM (Inseguro) - - Low (128) - - - - - Medium (256) - - - - - High (512) - - - - 8GB DRAM (Unsafe) - 8GB DRAM (Inseguro) - - - + Docked Sobremesa - + Handheld Portátil - + + + Off + Apagado + + + Boost (1700MHz) - + Boost (1700MHz) - + Fast (2000MHz) - + Rápido (2000MHz) - + Always ask (Default) Preguntar siempre (Por defecto) - + Only if game specifies not to stop Solo si el juego pide no ser cerrado - + Never ask Nunca preguntar + + + + Medium (256) + Medio (256) + + + + + High (512) + Alto (512) + + + + Very Small (16 MB) + Muy pequeño (16 MB) + + + + Small (32 MB) + Pequeño (32 MB) + + + + Normal (128 MB) + Normal (128 MB) + + + + Large (256 MB) + Grande (256 MB) + + + + Very Large (512 MB) + Muy grande (512 MB) + + + + Very Low (4 MB) + Muy bajo (4 MB) + + + + Low (8 MB) + Bajo (8 MB) + + + + Normal (16 MB) + Normal (16 MB) + + + + Medium (32 MB) + Medio (32 MB) + + + + High (64 MB) + Alto (64 MB) + + + + Very Low (32) + Muy bajo (32) + + + + Low (64) + Bajo (64) + + + + Normal (128) + Normal (128) + + + + Disabled + Desactivado + + + + ExtendedDynamicState 1 + ModoDynamicoExtendido 1 + + + + ExtendedDynamicState 2 + ModoDynamicoExtendido 2 + + + + ExtendedDynamicState 3 + ModoDynamicoExtendido 3 + + + + Tree View + Vista en árbol + + + + Grid View + Vista en cuadrícula + ConfigureApplets @@ -2047,7 +2355,7 @@ Cuando un invitado intenta abrir el applet de control, éste se cierra automáti Restaurar valores predeterminados - + Auto Auto @@ -2110,7 +2418,7 @@ Cuando un invitado intenta abrir el applet de control, éste se cierra automáti <html><head/><body><p><span style=" font-weight:600;">For debugging only.</span><br/>If you're not sure what these do, keep all of these enabled. <br/>These settings, when disabled, only take effect when CPU Debugging is enabled. </p></body></html> - <html><head/><body><p><span style=" font-weight:600;">Sólo para depurar.</span><br/>Si no estás seguro de su función, déjalas activadas. <br/>Estas opciones, cuando estén desactivadas, sólo funcionarán cuando la Depuración de CPU esté activada. </p></body></html> + <html><head/><body><p><span style=" font-weight:600;">Solo para depurar.</span><br/>Si no estás seguro de su función, déjalas activadas. <br/>Estas opciones, cuando estén desactivadas, solo funcionarán cuando la Depuración de CPU esté activada. </p></body></html> @@ -2150,13 +2458,13 @@ Cuando un invitado intenta abrir el applet de control, éste se cierra automáti <div>This optimization avoids dispatcher lookups by keeping track potential return addresses of BL instructions. This approximates what happens with a return stack buffer on a real CPU.</div> - <div>Esta optimización evita las búsquedas del emisor al rastrear las direcciones potenciales de retorno de las instrucciones BL. Esto se aproxima a lo que sucede con un buffer acumulado de retorno en una CPU real.</div> + <div>Esta optimización evita las búsquedas del emisor al rastrear las direcciones potenciales de retorno de las instrucciones BL. Esto se aproxima a lo que sucede con un búfer acumulado de retorno en una CPU real.</div> Enable return stack buffer - Activar buffer acumulado de retorno + Activar el búfer de acumulación de retorno @@ -2221,7 +2529,7 @@ Cuando un invitado intenta abrir el applet de control, éste se cierra automáti <div style="white-space: nowrap">When disabled, a misalignment is triggered on all misaligned accesses.</div> - <div style="white-space: nowrap">Cuando esté activada, una desalineación sólo se activa cuando un acceso cruza el límite de una página.</div> + <div style="white-space: nowrap">Cuando esté activada, una desalineación solo se activa cuando un acceso cruza el límite de una página.</div> <div style="white-space: nowrap">Cuando esté desactivado, se produce una desalineación en todos los accesos desalineados.</div> @@ -2234,7 +2542,7 @@ Cuando un invitado intenta abrir el applet de control, éste se cierra automáti <div style="white-space: nowrap">This optimization speeds up memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all memory accesses to use Software MMU Emulation.</div> @@ -2252,7 +2560,7 @@ Cuando un invitado intenta abrir el applet de control, éste se cierra automáti <div style="white-space: nowrap">This optimization speeds up exclusive memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all exclusive memory accesses to use Software MMU Emulation.</div> @@ -2286,7 +2594,7 @@ Cuando un invitado intenta abrir el applet de control, éste se cierra automáti <div style="white-space: nowrap">This optimization speeds up memory accesses by allowing invalid memory accesses to succeed.</div> - <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> + <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> <div style="white-space: nowrap">Esta optimización acelera los accesos a la memoria al permitir que los accesos no válidos tengan éxito.</div> @@ -2301,7 +2609,7 @@ Cuando un invitado intenta abrir el applet de control, éste se cierra automáti CPU settings are available only when game is not running. - Los ajustes de la CPU sólo están disponibles cuando no se esté ejecutando ningún juego. + Los ajustes de la CPU solo están disponibles cuando no se esté ejecutando ningún juego. @@ -2327,30 +2635,30 @@ Cuando un invitado intenta abrir el applet de control, éste se cierra automáti Registro - - Open Log Location - Abrir ubicación del archivo de registro - - - + Global Log Filter Filtro del registro global - + When checked, the max size of the log increases from 100 MB to 1 GB Al activarlo, el tamaño máximo del registro aumenta de 100 MB a 1 GB. - + Enable Extended Logging** Habilitar registro extendido** - + Show Log in Console Ver registro en consola + + + Open Log Location + Abrir ubicación del archivo de registro + Homebrew @@ -2369,7 +2677,7 @@ Cuando un invitado intenta abrir el applet de control, éste se cierra automáti When checked, it executes shaders without loop logic changes - Al activarlo, se ejecutarán los shaders sin cambios en bucles lógicos. + Al activarlo, se ejecutarán los sombreadores sin cambios en bucles lógicos. @@ -2399,12 +2707,12 @@ Cuando un invitado intenta abrir el applet de control, éste se cierra automáti When checked, it will dump all the original assembler shaders from the disk shader cache or game as found - Al activarlo, se volcarán todos los shaders del ensamblador original de la caché de sombreadores en disco o del juego tal y como se encuentren. + Al activarlo, se volcarán todos los sombreadores del ensamblador original de la caché de sombreadores en el disco o del juego tal y como se encuentren. Dump Game Shaders - Volcar shaders del juego + Volcar sombreadores del juego @@ -2459,7 +2767,7 @@ Cuando un invitado intenta abrir el applet de control, éste se cierra automáti Disable Buffer Reorder - Desactivar reordenamiento de búffer + Desactivar el reordenamiento de búferes @@ -2469,17 +2777,17 @@ Cuando un invitado intenta abrir el applet de control, éste se cierra automáti 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. - 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. + Permite a Eden comprobar si el entorno de Vulkan funciona cuando el programa se inicia. Desactive esto si está causando problemas a programas externos que ven a Eden. Perform Startup Vulkan Check - Realizar comprobación de Vulkan al ejecutar + Realizar comprobación de Vulkan al iniciar Disable Web Applet - Desactivar Web applet + Desactivar applet web @@ -2487,18 +2795,9 @@ Cuando un invitado intenta abrir el applet de control, éste se cierra automáti Activar todos los tipos de controladores - - Censor username in logs - - - - - **This will be reset automatically when eden closes. - - - - Enable Auto-Stub** - Activar Auto-Stub** + + Enable Auto-Stub + Activar Auto-Stub @@ -2507,8 +2806,8 @@ Cuando un invitado intenta abrir el applet de control, éste se cierra automáti - Enable CPU Debugging - Activar depuración de la CPU + Use dev.keys + Usar dev.keys @@ -2521,43 +2820,74 @@ Cuando un invitado intenta abrir el applet de control, éste se cierra automáti Depuración - - Flush log output on each line - + + Battery Serial: + Nº de serie de la batería: - - Enable FS Access Log - Activar registro de acceso FS + + Bitmask for quick development toggles + Bitmask para toggles de desarrollo rapido - + + Set debug knobs (bitmask) + Establecer parámetros de depuración (bitmask) + + + + 16-bit debug knob set for quick development toggles + Conjunto de interruptores de depuración de 16 bits para toggles de desarrollo rapido + + + + (bitmask) + (bitmask) + + + + Debug Knobs: + perillas de depuración: + + + + Unit Serial: + Nº de serie de la unidad: + + + Enable this to output the latest generated audio command list to the console. Only affects games using the audio renderer. Activa esta opción para mostrar en la consola la última lista de comandos de audio generada. Solo afecta a los juegos que utilizan el renderizador de audio. - - Enable Auto-Stub - - - - + Dump Audio Commands To Console** Volcar comandos de audio a la consola** - + + Flush log output on each line + Limpia lg salida en cada linea + + + + Enable FS Access Log + Activar registro de acceso FS + + + Enable Verbose Reporting Services** Activar servicios de reporte detallados** - **This will be reset automatically when yuzu closes. - **Esto se reiniciará automáticamente cuando yuzu se cierre. + + Censor username in logs + Censura nombre de usario en logs - - Web applet not compiled - Applet web no compilado + + **This will be reset automatically when Eden closes. + **Esto se reiniciara automáticamente cuando Eden se cierre. @@ -2599,103 +2929,99 @@ Cuando un invitado intenta abrir el applet de control, éste se cierra automáti ConfigureDialog - - yuzu Configuration - Configuración de yuzu - - eden Configuration - + Eden Configuration + Configuración de Eden Some settings are only available when a game is not running. - Algunos ajustes sólo están disponibles cuando no se estén ejecutando los juegos. + Algunos ajustes solo están disponibles cuando no se estén ejecutando los juegos. - + Applets Applets - - + + Audio Audio - - + + CPU CPU - + Debug Depuración - + Filesystem Sistema de archivos - - + + General General - - + + Graphics Gráficos - + GraphicsAdvanced Gráficosavanzados - - GraphicsExtensions - + + GraphicsExtra + GraficasExtra - + Hotkeys Teclas de acceso rápido - - + + Controls Controles - + Profiles Perfiles - + Network Red - - + + System Sistema - + Game List Lista de juegos - + Web Web @@ -2725,9 +3051,10 @@ Cuando un invitado intenta abrir el applet de control, éste se cierra automáti - - - + + + + ... ... @@ -2737,107 +3064,195 @@ Cuando un invitado intenta abrir el applet de control, éste se cierra automáti Tarjeta SD - + + Save Data + Datos guardados + + + Gamecard Cartucho de juego - + Path Ruta - + Inserted Insertado - + Current Game Juego actual - + Patch Manager Administrador de parches - + Dump Decompressed NSOs Volcar NSOs descomprimidos - + Dump ExeFS Volcar ExeFS - + Mod Load Root Carpeta raíz de carga de mods - + Dump Root Carpeta raíz de volcado - + Caching Cargando caché - + Cache Game List Metadata Metadatos de lista de juegos en caché - - - - + Reset Metadata Cache Reiniciar caché de metadatos - + Select Emulated NAND Directory... Selecciona el directorio de NAND emulado... - + Select Emulated SD Directory... Seleccione el directorio de SD emulado... - + + + Select Save Data Directory... + Seleccione directorio de Datos guardados... + + + Select Gamecard Path... Seleccione la ruta del cartucho... - + Select Dump Directory... Seleccione directorio de volcado... - + Select Mod Load Directory... - Seleccione el directorio de carga de mod... + Seleccione el directorio de carga de mods... - - The metadata cache is already empty. - El caché de metadatos ya está vacío. + + Save Data Directory + Directorio de Datos guardados... - - The operation completed successfully. - La operación se completó con éxito. + + Choose an action for the save data directory: + Elige un acción para el directorio de datos guardados: - - The metadata cache couldn't be deleted. It might be in use or non-existent. - El caché de metadatos no se pudo eliminar. Puede que se encuentre en uso actualmente o ya haya sido eliminado. + + Set Custom Path + Configure ruta personalizado + + + + Reset to NAND + Restablecer a NAND + + + + Save data exists in both the old and new locations. + +Old: %1 +New: %2 + +Would you like to migrate saves from the old location? +WARNING: This will overwrite any conflicting saves in the new location! + Datos guardados existen en el directorio viejo y el nuevo + +Viejo: %1 +Nuevo: %2 + +¿Desea migrar las partidas guardadas desde el directorio anterior? +AUXILIO: ¡Esto sobrescribirá cualquier partida guardada existente en el nuevo directorio! + + + + Would you like to migrate your save data to the new location? + +From: %1 +To: %2 + ¿Desea migrar las partidas guardadas a el directorio nuevo? + +Desde: %1 +A: %2 + + + + Migrate Save Data + Migrar datos de guardado + + + + Migrating save data... + Migrando los datos de guardado... + + + + Cancel + Cancelar + + + + + Migration Failed + Migración fallida + + + + Failed to create destination directory. + Fallo al crear el directorio de destino. + + + + Failed to migrate save data: +%1 + Fallo al migrar los datos de guardado: +%1 + + + + Migration Complete + Migración completada + + + + Save data has been migrated successfully. + +Would you like to delete the old save data? + Los datos de guardado se migraron correctamente. + +¿Desea borrar los datos de guardado antiguos? @@ -2855,28 +3270,54 @@ Cuando un invitado intenta abrir el applet de control, éste se cierra automáti - Linux - Linux + External Content + Contenido externo - + + Add directories to scan for DLCs and Updates without installing to NAND + Añadir directorios para buscar contenido descargable y actualizaciones sin instalarlo en la NAND + + + + Add Directory + Añadir directorio + + + + Remove Selected + Eliminar seleccionado + + + Reset All Settings Reiniciar todos los ajustes - yuzu - yuzu + + Eden + Eden - - eden - - - - + This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed? Esto reiniciará y eliminará todas las configuraciones de los juegos. No eliminará ni los directorios de juego, ni los perfiles, ni los perfiles de los mandos. ¿Continuar? + + + Select External Content Directory... + Seleccionar el directorio de contenido externo... + + + + Directory Already Added + Directorio ya ha sido añadido + + + + This directory is already in the list. + Este directorio ya está en la lista. + ConfigureGraphics @@ -2906,33 +3347,33 @@ Cuando un invitado intenta abrir el applet de control, éste se cierra automáti Color de fondo: - + % FSR sharpening percentage (e.g. 50%) % - + Off Desactivado - + VSync Off VSync Desactivado - + Recommended Recomendado - + On Activado - + VSync On VSync Activado @@ -2950,7 +3391,7 @@ Cuando un invitado intenta abrir el applet de control, éste se cierra automáti Avanzado - + Advanced Graphics Settings Ajustes avanzados de gráficos @@ -2960,24 +3401,38 @@ Cuando un invitado intenta abrir el applet de control, éste se cierra automáti Form - + Forma - Extensions - + Extras + Extras - - Vulkan Extension Settings - + + Hacks + Hacks - - While it's recommended to use state 3, some games may perform better on lower states. Setting to 0 (disabled) may also break games. -If your GPU is older (i.e. RX570/580 or older), it may not support these features. If this is the case, set the slider to 0 and uncheck all boxes. -These settings are experimental, and may cause black screens. If your games fail to boot or are stuck on a black screen, change these settings around. - + + Changing these options from their default may cause issues. Novitii cavete! + Cambiar estas opciones predeterminadas puede causar problemas. ¡Cuidado! + + + + Vulkan Extensions + Extensiones de Vulkan + + + + % + Sample Shading percentage (e.g. 50%) + % + + + + Extended Dynamic State is disabled on macOS due to MoltenVK compatibility issues that cause black screens. + Estado extendido dinamico esta desactivado en macOS por parte de los incompatibilidades en MoltenVK que causa pantallas negras. @@ -3008,75 +3463,75 @@ These settings are experimental, and may cause black screens. If your games fail Restaurar valores predeterminados - + Action Acción - + Hotkey Tecla de acceso rápido - + Controller Hotkey Teclas de atajo del control - - - + + + Conflicting Key Sequence Combinación de teclas en conflicto - - + + The entered key sequence is already assigned to: %1 La combinación de teclas introducida ya ha sido asignada a: %1 - + [waiting] [esperando] - + Invalid No válido - + Invalid hotkey settings Configuración de teclas de atajo no válida - + An error occurred. Please report this issue on github. Ha ocurrido un error. Por favor, repórtelo en Github. - + Restore Default Restaurar valor predeterminado - + Clear Eliminar - + Conflicting Button Sequence Secuencia de botones en conflicto - + The default button sequence is already assigned to: %1 La secuencia de botones por defecto ya esta asignada a: %1 - + The default key sequence is already assigned to: %1 La combinación de teclas predeterminada ya ha sido asignada a: %1 @@ -3145,7 +3600,7 @@ These settings are experimental, and may cause black screens. If your games fail Console Mode - Modo de la consola + Modo consola @@ -3375,7 +3830,7 @@ These settings are experimental, and may cause black screens. If your games fail Ring Controller - Ring Controller + Mando Ring @@ -3396,17 +3851,13 @@ These settings are experimental, and may cause black screens. If your games fail - Requires restarting eden - - - - Requires restarting yuzu - Requiere reiniciar yuzu + Requires restarting Eden + Require reiniciar Eden Enable XInput 8 player support (disables web applet) - Activar soporte de 8 jugadores XInput (desactiva la web applet) + Activar soporte para 8 jugadores XInput (desactiva la web applet) @@ -3431,7 +3882,7 @@ These settings are experimental, and may cause black screens. If your games fail Allows unlimited uses of the same Amiibo in games that would otherwise limit you to one use. - Permite usos ilimitados del mismo Amiibo en juegos que, de otra manera, sólo te permiten usarlo una vez. + Permite usos ilimitados del mismo Amiibo en juegos que, de otra manera, solo te permiten usarlo una vez. @@ -3551,30 +4002,19 @@ These settings are experimental, and may cause black screens. If your games fail - + Left Stick Palanca izquierda - - - - - - - Up - Arriba - - - - - - - - - - Left - Izquierda + + + + + + + Down + Abajo @@ -3588,14 +4028,25 @@ These settings are experimental, and may cause black screens. If your games fail Derecha - - - - - - - Down - Abajo + + + + + + + + Left + Izquierda + + + + + + + + + Up + Arriba @@ -3642,14 +4093,6 @@ These settings are experimental, and may cause black screens. If your games fail D-Pad Cruceta - - - - - - SL - SL - @@ -3659,59 +4102,55 @@ These settings are experimental, and may cause black screens. If your games fail SR - - - - L - L + + + + + SL + SL - + ZL ZL + + + + + L + L + Minus Menos - - - - Capture - Captura - - + Plus Más - - - Home - Inicio + + + + ZR + ZR - - + + R R - - - - - ZR - ZR - Motion 1 @@ -3722,6 +4161,18 @@ These settings are experimental, and may cause black screens. If your games fail Motion 2 Movimiento 2 + + + + Capture + Captura + + + + + Home + Inicio + Face Buttons @@ -3734,10 +4185,10 @@ These settings are experimental, and may cause black screens. If your games fail X - - - Y - Y + + + B + B @@ -3746,14 +4197,14 @@ These settings are experimental, and may cause black screens. If your games fail A - - - B - B + + + Y + Y - + Right Stick Palanca derecha @@ -3768,242 +4219,242 @@ These settings are experimental, and may cause black screens. If your games fail Configurar - - - - + + + + Clear Borrar - - - - - + + + + + [not set] [no definido] - - - + + + Invert button Invertir botón - - + + Toggle button Alternar botón - + Turbo button Botón turbo - - + + Invert axis Invertir ejes - - - + + + Set threshold Configurar umbral - - + + Choose a value between 0% and 100% Seleccione un valor entre 0% y 100%. - + Toggle axis Alternar ejes - + Set gyro threshold Configurar umbral del Giroscopio - + Calibrate sensor Calibrar sensor - + Map Analog Stick Configuración de palanca analógico - + After pressing OK, first move your joystick horizontally, and then vertically. To invert the axes, first move your joystick vertically, and then horizontally. Después de pulsar OK, mueve primero el joystick de manera horizontal, y luego verticalmente. Para invertir los ejes, mueve primero el joystick de manera vertical, y luego horizontalmente. - + Center axis Centrar ejes - - + + Deadzone: %1% Punto muerto: %1% - - + + Modifier Range: %1% Rango del modificador: %1% - - + + Pro Controller Controlador Pro - + Dual Joycons Joycons duales - + Left Joycon Joycon izquierdo - + Right Joycon Joycon derecho - + Handheld Portátil - + GameCube Controller Controlador de GameCube - + Poke Ball Plus Poke Ball Plus - + NES Controller Controlador NES - + SNES Controller Controlador SNES - + N64 Controller Controlador N64 - + Sega Genesis Sega Genesis - + Start / Pause Inicio / Pausa - + Z Z - + Control Stick Palanca de control - + C-Stick C-Stick - + Shake! ¡Agita! - + [waiting] [esperando] - + New Profile Nuevo perfil - + Enter a profile name: Introduce un nombre de perfil: - - + + Create Input Profile Crear perfil de entrada - + The given profile name is not valid! ¡El nombre de perfil introducido no es válido! - + Failed to create the input profile "%1" Error al crear el perfil de entrada "%1" - + Delete Input Profile Eliminar perfil de entrada - + Failed to delete the input profile "%1" Error al eliminar el perfil de entrada "%1" - + Load Input Profile Cargar perfil de entrada - + Failed to load the input profile "%1" Error al cargar el perfil de entrada "%1" - + Save Input Profile Guardar perfil de entrada - + Failed to save the input profile "%1" Error al guardar el perfil de entrada "%1" @@ -4026,15 +4477,6 @@ Para invertir los ejes, mueve primero el joystick de manera vertical, y luego ho Predeterminados - - ConfigureLinuxTab - - - - Linux - Linux - - ConfigureMotionTouch @@ -4060,7 +4502,7 @@ Para invertir los ejes, mueve primero el joystick de manera vertical, y luego ho - + Configure Configurar @@ -4090,111 +4532,93 @@ Para invertir los ejes, mueve primero el joystick de manera vertical, y luego ho Puerto: - - Learn More - Más información - - - - + + Test Probar - + Add Server Añadir servidor - + Remove Server Eliminar servidor - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Más información</span></a> - - - + %1:%2 %1:%2 - yuzu - yuzu + + + + + + + Eden + Eden - - <a href='https://eden-emulator.github.io/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - - - - + Port number has invalid characters El número del puerto tiene caracteres que no son válidos - - - - - - - eden - - - - + Port has to be in range 0 and 65353 El puerto debe estar en un rango entre 0 y 65353 - + IP address is not valid Dirección IP no válida - + This UDP server already exists Este servidor UDP ya existe - + Unable to add more than 8 servers No es posible añadir más de 8 servidores - + Testing Probando - + Configuring Configurando - + Test Successful Prueba existosa - + Successfully received data from the server. Se han recibido con éxito los datos del servidor. - + Test Failed Prueba fallida - + Could not receive valid data from the server.<br>Please verify that the server is set up correctly and the address and port are correct. No se han podido recibir datos válidos del servidor.<br>Por favor, verifica que el servidor esté configurado correctamente y que la dirección y el puerto sean correctos. - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. La prueba de UDP o la configuración de la calibración está en curso.<br>Por favor, espera a que termine el proceso. @@ -4321,9 +4745,9 @@ Los valores actuales son %1% y %2% respectivamente. Interfaz de red - - None - Ninguna + + Enable Airplane Mode + Activa modo avión @@ -4376,52 +4800,57 @@ Los valores actuales son %1% y %2% respectivamente. Some settings are only available when a game is not running. - Algunos ajustes sólo están disponibles cuando no se estén ejecutando los juegos. + Algunos ajustes solo están disponibles cuando no se estén ejecutando los juegos. - + Add-Ons - Extras / Add-Ons + Complementos - + System Sistema - + CPU CPU - + Graphics Gráficos - + Adv. Graphics Gráficos avanz. - - GPU Extensions - + + Ext. Graphics + Extensiones Gráficas - + Audio Audio - + Input Profiles Perfiles de entrada - Linux - Linux + Network + Red + + + + Applets + Applets @@ -4439,18 +4868,117 @@ Los valores actuales son %1% y %2% respectivamente. Add-Ons - Extras / Add-Ons + Complementos - + + Import Mod from ZIP + Importar mod desde un archivo comprimido + + + + Import Mod from Folder + Importar mod desde una carpeta + + + Patch Name Nombre del parche - + Version Versión + + + Mod Install Succeeded + Mod instalado con éxito + + + + Successfully installed all mods. + Instalados todos los mods con éxito. + + + + Mod Install Failed + Fallo al instalar mod + + + + Failed to install the following mods: + %1 +Check the log for details. + Fallo al instalar los siguientes mods: + %1 +Compruebe los registros para más detalles. + + + + Mod Folder + Carpeta del mod + + + + Zipped Mod Location + Ubicación del mod comprimido + + + + Zipped Archives (*.zip) + Archivos comprimidos (*.zip) + + + + Invalid Selection + Selección inválida + + + + Only mods, cheats, and patches can be deleted. +To delete NAND-installed updates, right-click the game in the game list and click Remove -> Remove Installed Update. + Solo mods, trucos y parches pueden ser borrados. +Para borrar las actualizaciones instaladas en la NAND, haga clic derecho en el juego de la lista de juegos y haga clic en Eliminar -> Eliminar actualización instalada. + + + + You are about to delete the following installed mods: + + Está a punto de eliminar los siguientes mods instalados: + + + + + +Once deleted, these can NOT be recovered. Are you 100% sure you want to delete them? + Una vez eliminados, estos NO se pueden recuperar. ¿Está 100% seguro de que desea eliminarlos? + + + + Delete add-on(s)? + ¿Borrar complemento(s)? + + + + Successfully deleted + Éxito al borrar + + + + Successfully deleted all selected mods. + Éxito al borrar los mods seleccionados. + + + + &Delete + &Borrar + + + + &Open in File Manager + &Abrir en el gestor de archivos + ConfigureProfileManager @@ -4480,32 +5008,17 @@ Los valores actuales son %1% y %2% respectivamente. Nombre de usuario - - Set Image - Seleccionar imagen - - - + Add Añadir - - Rename - Renombrar - - - - Remove - Eliminar - - - + Profile management is available only when game is not running. - El sistema de perfiles sólo se encuentra disponible cuando no se estén ejecutando los juegos. + El sistema de perfiles solo se encuentra disponible cuando no se estén ejecutando los juegos. - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -4513,100 +5026,80 @@ Los valores actuales son %1% y %2% respectivamente. %2 - - Enter Username - Introduzca el nombre - - - + Users Usuarios - - Enter a username for the new user: - Introduce un nombre para el nuevo usuario: - - - - Enter a new username: - Introduce un nuevo nombre de usuario: - - - - Select User Image - Selecciona una imagen de usuario - - - - JPEG Images (*.jpg *.jpeg) - Imagenes JPEG (*.jpg *.jpeg) - - - + Error deleting image Error al eliminar la imagen - + Error occurred attempting to overwrite previous image at: %1. Ha ocurrido un error al intentar sobrescribir la imagen anterior en: %1. - + Error deleting file Error al eliminar el archivo - + Unable to delete existing file: %1. No se puede eliminar el archivo existente: %1. - + Error creating user image directory Error al crear el directorio de imagen del usuario - + Unable to create directory %1 for storing user images. - No se puede crear el directorio %1 para almacenar imágenes de usuario. + No se pudo crear el directorio %1 para almacenar las imágenes del usuario. - - Error copying user image - Error al copiar la imagen de usuario. + + Error saving user image + Error al guardar el imagen de usuario - - Unable to copy image from %1 to %2 - No se puede copiar la imagen de %1 a %2 + + Unable to save image to file + Error al guardar el imagen al archivo - - Error resizing user image - Error al redimensionar la imagen de usuario + + &Edit + &Editar - - Unable to resize image - No se puede cambiar el tamaño de la imagen + + &Delete + &Borrar + + + + Edit User + Editar usuario ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. ¿Eliminar este usuario? Todos los datos de guardado del usuario serán eliminados. - + Confirm Delete Confirmar eliminación - + Name: %1 UUID: %2 Nombre: %1 @@ -4618,17 +5111,17 @@ UUID: %2 Configure Ring Controller - Configurar Ring Controller + Configurar mando Ring 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. - Para usar el Ring-Con, configura al jugador 1 como el Joy-Con derecho (tanto físico como emulado) y al jugador 2 como el Joy-Con izquierdo (tanto físico como emulado) antes de correr el juego. + Para usar el Ring-Con, configure al jugador 1 como el Joy-Con derecho (tanto físico como emulado) y al jugador 2 como el Joy-Con izquierdo (tanto físico como emulado) antes de ejecutar el juego. Virtual Ring Sensor Parameters - Parámetros del sensor Ring virtual + Parámetros del sensor del mando Ring virtual @@ -4659,7 +5152,7 @@ UUID: %2 - + Enable Activar @@ -4670,7 +5163,7 @@ UUID: %2 - + Not connected No conectado @@ -4680,63 +5173,63 @@ UUID: %2 Restaurar valores predeterminados - + Clear Limpiar - + [not set] [no definido] - + Invert axis Invertir ejes - - + + Deadzone: %1% Punto muerto: %1% - + Error enabling ring input Error al activar la entrada del Ring - + Direct Joycon driver is not enabled El driver directo JoyCon no está activo. - + Configuring Configurando - + The current mapped device doesn't support the ring controller - El dispositivo de entrada actual no soporta el Ring Controller. - - - - The current mapped device doesn't have a ring attached - El dispositivo de entrada actual no tiene el Ring incorporado + El dispositivo de entrada actual no soporta el mando ring. + The current mapped device doesn't have a ring attached + El dispositivo de entrada actual no tiene el ring incorporado + + + The current mapped device is not connected El dispositivo de entrada actual no está conectado. - + Unexpected driver result %1 Resultado inesperado del driver %1 - + [waiting] [esperando] @@ -4760,7 +5253,7 @@ UUID: %2 Núcleo - + Warning: "%1" is not a valid language for region "%2" Aviso: "%1" no es un idioma válido para la región "%2" @@ -4772,14 +5265,10 @@ UUID: %2 TAS TAS - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the yuzu website.</p></body></html> - <html><head/><body><p>Interpreta la entrada de los mandos desde scripts en el mismo formato que los scripts TAS-nx.<br/>Para una explicación más detallada, consulta la <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">página de ayuda</span></a> en la página web de yuzu.</p></body></html> - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the eden website.</p></body></html> - + <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the user handbook.</p></body></html> + <html><head/><body><p>Lee la entrada del mando desde los scripts en el mismo formato que los scripts TAS-nx.<br/>Para una explicación más detallada, por favor consulte el manual de usuario.</p></body></html> @@ -4789,7 +5278,7 @@ UUID: %2 WARNING: This is an experimental feature.<br/>It will not play back scripts frame perfectly with the current, imperfect syncing method. - AVISO: Esta función es experimental.<br/>No se reproducirán perfectamente los scripts con el método imperfecto actual de sincronización. + ADVERTENCIA: Esta es una función experimental.<br/>No se reproducirán perfectamente los scripts con el actual método imperfecto de sincronización. @@ -4799,7 +5288,7 @@ UUID: %2 Enable TAS features - Activar características TAS + Activar funciones TAS @@ -4812,17 +5301,22 @@ UUID: %2 Pausar ejecución durante las cargas - + + Show recording dialog + Mostrar diálogo de grabación + + + Script Directory Directorio de scripts - + Path Ruta - + ... ... @@ -4830,14 +5324,14 @@ UUID: %2 ConfigureTasDialog - + TAS Configuration - Configuración TAS + Configuración del TAS - + Select TAS Load Directory... - Selecciona el directorio de carga TAS... + Seleccione el directorio de carga del TAS... @@ -4871,8 +5365,8 @@ UUID: %2 Click the bottom area to add a point, then press a button to bind. Drag points to change position, or double-click table cells to edit values. - Haz clic en el área inferior para añadir un punto, y luego presiona un botón para vincularlo. -Arrastra los puntos para cambiar de posición, o haz doble clic en las celdas de la tabla para editar los valores. + Haga clic en el área inferior para añadir un punto, y luego presione un botón para vincularlo. +Arrastre los puntos para cambiar de posición, o haga doble clic en las celdas de la tabla para editar los valores. @@ -4904,7 +5398,7 @@ Arrastra los puntos para cambiar de posición, o haz doble clic en las celdas de Enter the name for the new profile. - Introduce un nombre para el nuevo perfil: + Introduzca un nombre para el nuevo perfil: @@ -4929,7 +5423,7 @@ Arrastra los puntos para cambiar de posición, o haz doble clic en las celdas de [press key] - [presionar tecla] + [presione una tecla] @@ -4939,14 +5433,10 @@ Arrastra los puntos para cambiar de posición, o haz doble clic en las celdas de Configure Touchscreen Configurar pantalla táctil - - Warning: The settings in this page affect the inner workings of yuzu's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - Advertencia: Los ajustes en esta página afectarán al funcionamiento interno de la pantalla táctil emulada de yuzu. Cambiarlos puede dar lugar a un comportamiento imprevisto, como que la pantalla táctil deje de funcionar o funcione parcialmente. Sólo debes utilizar esta página si sabes lo que estás haciendo. - - Warning: The settings in this page affect the inner workings of eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - + Warning: The settings in this page affect the inner workings of Eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. + Advertencia: Los ajustes en esta página afectan al funcionamiento interno de la pantalla táctil emulada de Eden. Cambiando estos ajustes pueden resultar en comportamientos indeseados, por ejemplo que la pantalla táctil no funcione parcial o totalmente. Solo debería usar esta página si sabe lo que está haciendo. @@ -4977,64 +5467,43 @@ Arrastra los puntos para cambiar de posición, o haz doble clic en las celdas de ConfigureUI - - - + + None Ninguno - - - Small (32x32) - Pequeño (32x32) - - Standard (64x64) - Estándar (64x64) - - - - Large (128x128) - Grande (128x128) - - - - Full Size (256x256) - Tamaño completo (256x256) - - - Small (24x24) Pequeño (24x24) - + Standard (48x48) Estándar (48x48) - + Large (72x72) Grande (72x72) - + Filename Nombre del archivo - + Filetype Tipo de archivo - + Title ID ID del título - + Title Name Nombre del título @@ -5084,7 +5553,7 @@ Arrastra los puntos para cambiar de posición, o haz doble clic en las celdas de Show Add-Ons Column - Mostrar columna de extras/Add-Ons + Mostrar columna de complementos @@ -5103,71 +5572,66 @@ Arrastra los puntos para cambiar de posición, o haz doble clic en las celdas de - Game Icon Size: - Tamaño de los iconos de los juegos: - - - Folder Icon Size: Tamaño de los iconos de la carpeta: - + Row 1 Text: Texto de fila 1: - + Row 2 Text: Texto de fila 2: - + Screenshots Capturas de pantalla - + Ask Where To Save Screenshots (Windows Only) - Preguntar dónde guardar las capturas de pantalla (sólo en Windows) + Preguntar dónde guardar las capturas de pantalla (solo en Windows) - + Screenshots Path: Ruta de las capturas de pantalla: - + ... ... - + TextLabel TextLabel - + Resolution: Resolución: - + Select Screenshots Path... Selecciona la ruta de las capturas de pantalla: - + <System> <System> - + English Inglés - + Auto (%1 x %2, %3 x %4) Screenshot width value Auto (%1 x %2, %3 x %4) @@ -5265,170 +5729,178 @@ Arrastra los puntos para cambiar de posición, o haz doble clic en las celdas de Web Web - - yuzu Web Service - Servicio web de yuzu - - - By providing your username and token, you agree to allow yuzu to collect additional usage data, which may include user identifying information. - Al proporcionar el nombre de usuario y el token, aceptas que yuzu recopile datos de uso adicionales, que pueden incluir información de identificación del usuario. - - eden Web Service - + Eden Web Service + Servicio Web de Eden - - By providing your username and token, you agree to allow eden to collect additional usage data, which may include user identifying information. - - - - - Verify - Verificar - - - - Sign up - Registrarse - - - + Token: Token: - + Username: Nombre de usuario: - - What is my token? - ¿Cuál es mi token? + + Generate + Generar - + Web Service configuration can only be changed when a public room isn't being hosted. La configuración del servicio web solo puede ser cambiada cuando una sala pública no esté siendo alojada. - Telemetry - Telemetría - - - Share anonymous usage data with the yuzu team - Compartir datos de uso anónimo con el equipo de yuzu - - - Learn more - Saber más - - - Telemetry ID: - ID de telemetría: - - - Regenerate - Regenerar - - - + Discord Presence Presencia de Discord - + Show Current Game in your Discord Status Mostrar el juego actual en el estado de Discord - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Saber más</span></a> - - - - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Regístrate</span></a> - - - - <a href='https://evilperson1337.notion.site/Hosting-a-Room-Inside-of-Eden-20457c2edaf680108abac6215a79acdb'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - - - - - Warning - - - + - Verification is currently nonfunctional, instead generate a random 48-character string with only lowercase a-z. - - - - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">¿Cuál es mi token?</span></a> - - - Telemetry ID: 0x%1 - ID de telemetría: 0x%1 - - - Unspecified - Sin especificar - - - Token not verified - Token no verificado - - - Token was not verified. The change to your token has not been saved. - El token no se puede verificar. Los cambios realizados en tu token no se ha guardado. - - - - Unverified, please click Verify before saving configuration + All Good Tooltip - No verificado. Por favor, haz clic en Verificar antes de guardar los ajustes. + Todo bien - Verifying... - Verificando... - - - Verified + + Must be between 4-20 characters Tooltip - Verificado + Debe tener entre 4-20 caracteres - Verification failed + + Must be 48 characters, and lowercase a-z Tooltip - Error de verificación - - - Verification failed - Error de verificación - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - Error de verificación. Comprueba que has introducido el token correctamente, y que esté funcionando correctamente tu conexión a internet. + Debe tener 48 caracteres, solo letras minúsculas a-z ControllerDialog - + Controller P1 Controlador J1 - + &Controller P1 &Controlador J1 + + DataDialog + + + Data Manager + Gestor de datos + + + + Deleting ANY data is IRREVERSABLE! + ¡Eliminar CUALQUIER dato es IRREVERSIBLE! + + + + Shaders + Sombreadores + + + + UserNAND + NAND de usuario + + + + SysNAND + NAND de sistema + + + + Mods + Mods + + + + Saves + Guardados + + + + DataWidget + + + Form + Formulario + + + + Tooltip + Información sobre herramienta + + + + Open with your system file manager + Abrir con el gestor de archivos de su sistema + + + + Delete all data in this directory. THIS IS 100% IRREVERSABLE! + Eliminar todos los datos en este directorio. ¡ESTO ES 100% IRREVERSIBLE! + + + + Export all data in this directory. This may take a while! + Exportar todos los datos en este directorio. ¡Esto puede tomar un tiempo! + + + + Import data for this directory. This may take a while, and will delete ALL EXISTING DATA! + Importar todos los datos en este directorio. Esto puede tomar un tiempo, ¡y borrará TODOS LOS DATOS EXISTENTES! + + + + Calculating... + Calculando... + + + + DepsDialog + + + Eden Dependencies + Dependencias de Eden + + + + <html><head/><body><p><span style=" font-size:28pt;">Eden Dependencies</span></p></body></html> + <html><head/><body><p><span style=" font-size:28pt;">Dependencias de Eden</span></p></body></html> + + + + <html><head/><body><p>The projects that make Eden possible</p></body></html> + <html><head/><body><p>Los proyectos que hicieron Eden posible </p></body></html> + + + + Dependency + Dependencia + + + + Version + Versión + + DirectConnect @@ -5439,7 +5911,7 @@ Arrastra los puntos para cambiar de posición, o haz doble clic en las celdas de Server Address - Dirección del Servidor + Dirección del servidor @@ -5490,1519 +5962,154 @@ Arrastra los puntos para cambiar de posición, o haz doble clic en las celdas de Username is not valid. Must be 4 to 20 alphanumeric characters. - El nombre de usuario no es válido. Debe tener entre 4 y 20 caracteres alfanuméricos. + El nombre de usuario no es válido. Debe tener entre 4 y 20 caracteres alfanuméricos. Room name is not valid. Must be 4 to 20 alphanumeric characters. - El nombre de la sala no es válido. Debe tener entre 4 y 20 caracteres alfanuméricos. + El nombre de la sala no es válido. Debe tener entre 4 y 20 caracteres alfanuméricos. Username is already in use or not valid. Please choose another. - El nombre de usuario ya está en uso o no es válido. Por favor, selecciona otro. + El nombre de usuario ya está en uso o no es válido. Por favor, selecciona otro. IP is not a valid IPv4 address. - Esta IP no es una dirección IPv4 válida. + Esta IP no es una dirección IPv4 válida. Port must be a number between 0 to 65535. - El número del puerto debe estar entre 0 y 65535. + El puerto debe ser un numero entre 0 y 65535. You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - Debes elegir un Juego preferente para alojar una sala. Si todavía no tienes ningún juego en la lista de juegos, añade una carpeta de juegos haciendo clic en el icono del más en la lista de juegos. + Debe elegir un Juego preferente para alojar una sala. Si todavía no tiene ningún juego en la lista de juegos, agregue una carpeta de juegos haciendo clic en el icono de suma en la lista de juegos. Unable to find an internet connection. Check your internet settings. - No se puede encontrar ninguna conexión a internet. Comprueba tu configuración de internet. + No se puedo encontrar ninguna conexión al internet. Revisa tu configuración de internet. Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - No se ha podido conectar con el anfitrión. Comprueba que la configuración de la conexión es correcta. Si todavía no puedes conectarte, contacta con el anfitrión de la sala y verifica que el anfitrión tiene configurado correctamente el puerto externo direccionado. + No se pudo conectar al anfitrión. Revisa que los configuraciones de conexión estan correctos. Si todavía no puedes conectarte, contacta con el anfitrión de la sala y verifica que el anfitrión tiene configurado correctamente el puerto externo direccionado. Unable to connect to the room because it is already full. - No es posible conectarse a la sala debido a que ya se encuentra llena. + No se pudo conectar a la sala porque esta llena. - Creating a room failed. Please retry. Restarting eden might be necessary. - + Creating a room failed. Please retry. Restarting Eden might be necessary. + Error en crear una sala. Por favor reintentelo. Reiniciando Eden podría ser necesario. The host of the room has banned you. Speak with the host to unban you or try a different room. - El anfitrión de la sala te ha vetado. Habla con el anfitrión para quitar el veto o prueba con una sala diferente. + El anfitrión de la sala te ha prohibido. Habla con el anfitrión para remover el prohibición o intenta usar una sala diferente. - Version mismatch! Please update to the latest version of eden. If the problem persists, contact the room host and ask them to update the server. - + Version mismatch! Please update to the latest version of Eden. If the problem persists, contact the room host and ask them to update the server. + Incompatibilidad de versiones! Por favor intenta actualizar al version mas nuevo de Eden. Si la problema persiste, intenta contactar el anfitrión de la sala y pregunta si pueden actualizar el servidor. Incorrect password. - Contraseña incorrecta + Contraseña incorrecta An unknown error occurred. If this error continues to occur, please open an issue - Ha ocurrido un error desconocido. Si el error persiste, por favor, abre una solicitud de errores. + Ha ocurrido un error desconocido. Si este error persiste, por favor abra una solicitud de fallos. Connection to room lost. Try to reconnect. - Conexión a la sala perdida. Prueba a reconectarte. + El conexión a la sala se perdió. Intenta reconectarte. You have been kicked by the room host. - Has sido expulsado por el anfitrión. + Has sido expulsado por el anfitrión. IP address is already in use. Please choose another. - La dirección IP ya se encuentra en uso. Por favor, selecciona otra. + La dirección IP ya se encuentra en uso. Por favor, seleccione otra. You do not have enough permission to perform this action. - No tienes permisos suficientes para realizar esta acción. + No tienes suficiente permisión para realizar esta acción. The user you are trying to kick/ban could not be found. They may have left the room. - El usuario que estás intentando echar/vetar no se ha podido encontrar. + El usuario que estás intentando expulsar/prohibir no se pudo encontrar. Es posible que haya abandonado la sala. No valid network interface is selected. Please go to Configure -> System -> Network and make a selection. - No se ha seleccionado ninguna interfaz de red válida. -Por favor, vaya a Configuración -> Sistema -> Red y selecciona la interfaz. + No se ha seleccionado ninguna interfaz de red válida. +Por favor, vaya a Configuración -> Sistema -> Red y selecciona una interfaz. Error - Error - - - - GMainWindow - - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Anonymous data is collected</a> to help improve yuzu. <br/><br/>Would you like to share your usage data with us? - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Los datos de uso anónimos se recogen</a> para ayudar a mejorar yuzu. <br/><br/>¿Deseas compartir tus datos de uso con nosotros? - - - Telemetry - Telemetría - - - - Broken Vulkan Installation Detected - Se ha detectado una instalación corrupta de Vulkan - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - La inicialización de Vulkan ha fallado durante la ejecución. Haz clic <a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>aquí para más información sobre como arreglar el problema</a>. - - - - Running a game - TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping - Ejecutando un juego - - - - Loading Web Applet... - Cargando Web applet... - - - - - Disable Web Applet - Desactivar Web applet - - - - 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.) - 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.) - - - - The amount of shaders currently being built - La cantidad de shaders que se están construyendo actualmente - - - - The current selected resolution scaling multiplier. - El multiplicador de escala de resolución seleccionado actualmente. - - - - Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. - 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. - - - - How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. - 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. - - - - 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. - 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. - - - - Unmute - Desileciar - - - - Mute - Silenciar - - - - Reset Volume - Restablecer Volumen - - - - &Clear Recent Files - &Eliminar archivos recientes - - - - &Continue - &Continuar - - - - &Pause - &Pausar - - - - Warning Outdated Game Format - Advertencia: formato del juego obsoleto - - - 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.<br><br>For an explanation of the various Switch formats yuzu supports, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - 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.<br><br>Para ver una explicación de los diversos formatos de Switch que soporta yuzu,<a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>echa un vistazo a nuestra wiki</a>. Este mensaje no se volverá a mostrar. - - - - - Error while loading ROM! - ¡Error al cargar la ROM! - - - - The ROM format is not supported. - El formato de la ROM no es compatible. - - - - An error occurred initializing the video core. - Se ha producido un error al inicializar el núcleo de video. - - - 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: <a href='https://yuzu-emu.org/help/reference/log-files/'>How to Upload the Log File</a>. - 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: <a href='https://yuzu-emu.org/help/reference/log-files/'>Como cargar el archivo de registro</a>. - - - - Error while loading ROM! %1 - %1 signifies a numeric error code. - ¡Error al cargar la ROM! %1 - - - %1<br>Please follow <a href='https://yuzu-emu.org/help/quickstart/'>the yuzu quickstart guide</a> to redump your files.<br>You can refer to the yuzu wiki</a> or the yuzu Discord</a> for help. - %1 signifies an error string. - %1<br>Por favor, sigue <a href='https://yuzu-emu.org/help/quickstart/'>la guía de inicio rápido de yuzu</a> para revolcar los archivos.<br>Puedes consultar la wiki de yuzu</a> o el Discord de yuzu</a> para obtener ayuda. - - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://eden-emulator.github.io/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - - - - - Game Updates Warning - - - - - The game you are trying to launch is known to have performance or booting issues when updates are applied. Please try increasing the memory layout to 6GB or 8GB if any issues occur.<br><br>Press "OK" to continue launching, or "Cancel" to cancel the launch. - - - - - Don't show again for this game - - - - - 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.<br><br>For an explanation of the various Switch formats eden supports, <a href='https://eden-emulator.github.io/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - - - - - eden 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: <a href='https://eden-emulator.github.io/help/reference/log-files/'>How to Upload the Log File</a>. - - - - - %1<br>Please redump your files or ask on Discord for help. - %1 signifies an error string. - - - - - An unknown error occurred. Please see the log for more details. - Error desconocido. Por favor, consulte el archivo de registro para ver más detalles. - - - - (64-bit) - (64-bit) - - - - (32-bit) - (32-bit) - - - - %1 %2 - %1 is the title name. %2 indicates if the title is 64-bit or 32-bit - %1 %2 - - - - Closing software... - Cerrando software... - - - - Save Data - Datos de guardado - - - - Mod Data - Datos de mods - - - - Error Opening %1 Folder - Error al abrir la carpeta %1 - - - - - Folder does not exist! - ¡La carpeta no existe! - - - - Error Opening Transferable Shader Cache - Error al abrir el caché transferible de shaders - - - - Failed to create the shader cache directory for this title. - No se pudo crear el directorio de la caché de los shaders para este título. - - - - Error Removing Contents - Error al eliminar el contenido - - - - Error Removing Update - Error al eliminar la actualización - - - - Error Removing DLC - Error al eliminar el DLC - - - - Remove Installed Game Contents? - ¿Eliminar contenido del juego instalado? - - - - Remove Installed Game Update? - ¿Eliminar actualización del juego instalado? - - - - Remove Installed Game DLC? - ¿Eliminar el DLC del juego instalado? - - - - Remove Entry - Eliminar entrada - - - - - - - - - Successfully Removed - Se ha eliminado con éxito - - - - Successfully removed the installed base game. - Se ha eliminado con éxito el juego base instalado. - - - - The base game is not installed in the NAND and cannot be removed. - El juego base no está instalado en el NAND y no se puede eliminar. - - - - Successfully removed the installed update. - Se ha eliminado con éxito la actualización instalada. - - - - There is no update installed for this title. - No hay ninguna actualización instalada para este título. - - - - There are no DLC installed for this title. - No hay ningún DLC instalado para este título. - - - - Successfully removed %1 installed DLC. - Se ha eliminado con éxito %1 DLC instalado(s). - - - - Delete OpenGL Transferable Shader Cache? - ¿Deseas eliminar el caché transferible de shaders de OpenGL? - - - - Delete Vulkan Transferable Shader Cache? - ¿Deseas eliminar el caché transferible de shaders de Vulkan? - - - - Delete All Transferable Shader Caches? - ¿Deseas eliminar todo el caché transferible de shaders? - - - - Remove Custom Game Configuration? - ¿Deseas eliminar la configuración personalizada del juego? - - - - Remove Cache Storage? - ¿Quitar almacenamiento de caché? - - - - Remove File - Eliminar archivo - - - - Remove Play Time Data - Eliminar información del tiempo de juego - - - - Reset play time? - ¿Reestablecer tiempo de juego? - - - - - Error Removing Transferable Shader Cache - Error al eliminar la caché de shaders transferibles - - - - - A shader cache for this title does not exist. - No existe caché de shaders para este título. - - - - Successfully removed the transferable shader cache. - El caché de shaders transferibles se ha eliminado con éxito. - - - - Failed to remove the transferable shader cache. - No se ha podido eliminar la caché de shaders transferibles. - - - - Error Removing Vulkan Driver Pipeline Cache - Error al eliminar la caché de canalización del controlador Vulkan - - - - Failed to remove the driver pipeline cache. - No se ha podido eliminar la caché de canalización del controlador. - - - - - Error Removing Transferable Shader Caches - Error al eliminar las cachés de shaders transferibles - - - - Successfully removed the transferable shader caches. - Cachés de shaders transferibles eliminadas con éxito. - - - - Failed to remove the transferable shader cache directory. - No se ha podido eliminar el directorio de cachés de shaders transferibles. - - - - - Error Removing Custom Configuration - Error al eliminar la configuración personalizada del juego - - - - A custom configuration for this title does not exist. - No existe una configuración personalizada para este título. - - - - Successfully removed the custom game configuration. - Se eliminó con éxito la configuración personalizada del juego. - - - - Failed to remove the custom game configuration. - No se ha podido eliminar la configuración personalizada del juego. - - - - - RomFS Extraction Failed! - ¡La extracción de RomFS ha fallado! - - - - There was an error copying the RomFS files or the user cancelled the operation. - Se ha producido un error al copiar los archivos RomFS o el usuario ha cancelado la operación. - - - - Full - Completo - - - - Skeleton - En secciones - - - - Select RomFS Dump Mode - Elegir método de volcado de RomFS - - - - Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. - Por favor, selecciona el método en que quieres volcar el RomFS.<br>Completo copiará todos los archivos al nuevo directorio <br> mientras que en secciones solo creará la estructura del directorio. - - - - There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root - No hay suficiente espacio en %1 para extraer el RomFS. Por favor, libera espacio o elige otro directorio de volcado en Emulación > Configuración > Sistema > Sistema de archivos > Raíz de volcado - - - - Extracting RomFS... - Extrayendo RomFS... - - - - - - - - Cancel - Cancelar - - - - RomFS Extraction Succeeded! - ¡La extracción RomFS ha tenido éxito! - - - - - - The operation completed successfully. - La operación se completó con éxito. - - - - Integrity verification couldn't be performed! - ¡No se pudo ejecutar la verificación de integridad! - - - - File contents were not checked for validity. - No se ha podido comprobar la validez de los contenidos del archivo. - - - - - Verifying integrity... - Verificando integridad... - - - - - Integrity verification succeeded! - ¡La verificación de integridad ha sido un éxito! - - - - - Integrity verification failed! - ¡Verificación de integridad fallida! - - - - File contents may be corrupt. - Los contenidos del archivo pueden estar corruptos. - - - - - - - Create Shortcut - Crear acceso directo - - - - Do you want to launch the game in fullscreen? - ¿Desea iniciar el juego en pantalla completa? - - - - Successfully created a shortcut to %1 - Se ha creado un acceso directo a %1 - - - - This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - Esto creará un acceso directo a la AppImage actual. Esto puede no funcionar bien si se actualiza. ¿Continuar? - - - - Failed to create a shortcut to %1 - No se ha podido crear el acceso directo de %1 - - - - Create Icon - Crear icono - - - - Cannot create icon file. Path "%1" does not exist and cannot be created. - No se puede crear el archivo de icono. La ruta "%1" no existe y no se ha podido crear. - - - - Error Opening %1 - Error al intentar abrir %1 - - - - Select Directory - Seleccionar directorio - - - - Properties - Propiedades - - - - The game properties could not be loaded. - No se pueden cargar las propiedades del juego. - - - - Switch Executable (%1);;All Files (*.*) - %1 is an identifier for the Switch executable file extensions. - Ejecutable de Switch (%1);;Todos los archivos (*.*) - - - - Load File - Cargar archivo - - - - Open Extracted ROM Directory - Abrir el directorio de la ROM extraída - - - - Invalid Directory Selected - Directorio seleccionado no válido - - - - The directory you have selected does not contain a 'main' file. - El directorio que ha seleccionado no contiene ningún archivo 'main'. - - - - Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - 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) - - - - Install Files - Instalar archivos - - - - %n file(s) remaining - - %n archivo(s) restantes - %n archivo(s) restantes - - - - - Installing file "%1"... - Instalando el archivo "%1"... - - - - - Install Results - Instalar resultados - - - - To avoid possible conflicts, we discourage users from installing base games to the NAND. -Please, only use this feature to install updates and DLC. - 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. - - - - %n file(s) were newly installed - - - %n archivo(s) recién instalado/s - - %n archivo(s) instalado/s recientemente - - - - - - %n file(s) were overwritten - - - %n archivo(s) recién sobreescrito/s - - %n archivo(s) sobrescrito/s recientemente - - - - - - %n file(s) failed to install - - - %n archivo(s) no se instaló/instalaron - - %n archivo(s) no se instaló/instalaron - - - - - - System Application - Aplicación del sistema - - - - System Archive - Archivo del sistema - - - - System Application Update - Actualización de la aplicación del sistema - - - - Firmware Package (Type A) - Paquete de firmware (Tipo A) - - - - Firmware Package (Type B) - Paquete de firmware (Tipo B) - - - - Game - Juego - - - - Game Update - Actualización de juego - - - - Game DLC - DLC del juego - - - - Delta Title - Titulo delta - - - - Select NCA Install Type... - Seleccione el tipo de instalación NCA... - - - - Please select the type of title you would like to install this NCA as: -(In most instances, the default 'Game' is fine.) - Seleccione el tipo de título en el que deseas instalar este NCA como: -(En la mayoría de los casos, el 'Juego' predeterminado está bien). - - - - Failed to Install - Fallo en la instalación - - - - The title type you selected for the NCA is invalid. - El tipo de título que seleccionó para el NCA no es válido. - - - - File not found - Archivo no encontrado - - - - File "%1" not found - Archivo "%1" no encontrado - - - - OK - Aceptar - - - - - Hardware requirements not met - No se cumplen los requisitos de hardware - - - - - Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled. - El sistema no cumple con los requisitos de hardware recomendados. Los informes de compatibilidad se han desactivado. - - - - Missing yuzu Account - Falta la cuenta de Yuzu - - - - In order to submit a game compatibility test case, you must link your eden account.<br><br/>To link your eden account, go to Emulation &gt; Configuration &gt; Web. - - - - - Install decryption keys and restart eden before attempting to install firmware. - - - - - Firmware installation cancelled, firmware may be in bad state, restart eden or re-install firmware. - - - - - Encryption keys are missing. - - - - - Are you sure you want to close eden? - - - - - - - eden - - - - - The currently running application has requested eden to not exit. - -Would you like to bypass this and exit anyway? - - - - In order to submit a game compatibility test case, you must link your yuzu account.<br><br/>To link your yuzu account, go to Emulation &gt; Configuration &gt; Web. - Para enviar un caso de prueba de compatibilidad de juegos, debes vincular tu cuenta de yuzu.<br><br/> Para vincular tu cuenta de yuzu, ve a Emulación &gt; Configuración &gt; Web. - - - - Error opening URL - Error al abrir la URL - - - - Unable to open the URL "%1". - No se puede abrir la URL "%1". - - - - TAS Recording - Grabación TAS - - - - Overwrite file of player 1? - ¿Sobrescribir archivo del jugador 1? - - - - Invalid config detected - Configuración no válida detectada - - - - Handheld controller can't be used on docked mode. Pro controller will be selected. - El controlador del modo portátil no puede ser usado en el modo sobremesa. Se seleccionará el controlador Pro en su lugar. - - - - - Amiibo - Amiibo - - - - - The current amiibo has been removed - El amiibo actual ha sido eliminado - - - - Error Error - - - - The current game is not looking for amiibos - El juego actual no está buscando amiibos - - - - Amiibo File (%1);; All Files (*.*) - Archivo amiibo (%1);; Todos los archivos (*.*) - - - - Load Amiibo - Cargar amiibo - - - - Error loading Amiibo data - Error al cargar los datos Amiibo - - - - The selected file is not a valid amiibo - El archivo seleccionado no es un amiibo válido - - - - The selected file is already on use - El archivo seleccionado ya se encuentra en uso - - - - An unknown error occurred - Ha ocurrido un error inesperado - - - - - Verification failed for the following files: - -%1 - La verificación falló en los siguientes archivos: - -%1 - - - - Keys not installed - Claves no instaladas - - - Install decryption keys and restart yuzu before attempting to install firmware. - Prueba a instalar las claves de encriptado y reinicie yuzu antes de instalar el firmware. - - - - Select Dumped Firmware Source Location - Seleccionar ubicación de origen del firmware volcado - - - - Installing Firmware... - Instalando firmware... - - - - - - - Firmware install failed - Error en la instalación del firmware - - - - Unable to locate potential firmware NCA files - No se ha podido localizar los posibles archivos NCA de firmware. - - - - Failed to delete one or more firmware file. - No se pudo eliminar uno o más archivos de firmware. - - - Firmware installation cancelled, firmware may be in bad state, restart yuzu or re-install firmware. - La instalación del firmware se ha cancelado, puede que el firmware esté en mal estado, reinicia yuzu o reinstala el firmware. - - - - One or more firmware files failed to copy into NAND. - Uno o más archivos de firmware no se pudieron copiar en NAND. - - - - Firmware integrity verification failed! - ¡Error en la verificación de integridad del firmware! - - - - Select Dumped Keys Location - - - - - - - Decryption Keys install failed - - - - - prod.keys is a required decryption key file. - - - - - One or more keys failed to copy. - - - - - Decryption Keys install succeeded - - - - - Decryption Keys were successfully installed - - - - - Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. - - - - - - - - - - - No firmware available - No hay firmware disponible - - - - Please install the firmware to use the Album applet. - Por favor, instala el firmware para usar la aplicación del Álbum. - - - - Album Applet - Applet del Álbum - - - - Album applet is not available. Please reinstall firmware. - La aplicación del Álbum no esta disponible. Por favor, reinstala el firmware. - - - - Please install the firmware to use the Cabinet applet. - Por favor, instala el firmware para usar la applet de Cabinet. - - - - Cabinet Applet - Applet de Cabinet - - - - Cabinet applet is not available. Please reinstall firmware. - La applet de Cabinet no está disponible. Por favor, reinstala el firmware. - - - - Please install the firmware to use the Mii editor. - Por favor, instala el firmware para usar el editor de Mii. - - - - Mii Edit Applet - Applet de Editor de Mii - - - - Mii editor is not available. Please reinstall firmware. - El editor de Mii no está disponible. Por favor, reinstala el firmware. - - - - Please install the firmware to use the Controller Menu. - Por favor, instala el firmware para poder utilizar el Menú de mandos. - - - - Controller Applet - Applet de Mandos - - - - Controller Menu is not available. Please reinstall firmware. - El Menú de mandos no se encuentra disponible. Por favor, reinstala el firmware. - - - - Please install the firmware to use the Home Menu. - - - - - - Home Menu Applet - - - - - - Home Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use Starter. - - - - - Starter Applet - - - - - Starter is not available. Please reinstall firmware. - - - - - Please install firmware to use the home menu. - - - - - Capture Screenshot - Captura de pantalla - - - - PNG Image (*.png) - Imagen PNG (*.png) - - - - Update Available - - - - - Update %1 for Eden is available. -Would you like to download it? - - - - - TAS state: Running %1/%2 - Estado TAS: ejecutando %1/%2 - - - - TAS state: Recording %1 - Estado TAS: grabando %1 - - - - TAS state: Idle %1/%2 - Estado TAS: inactivo %1/%2 - - - - TAS State: Invalid - Estado TAS: nulo - - - - &Stop Running - &Parar de ejecutar - - - - &Start - &Iniciar - - - - Stop R&ecording - Pausar g&rabación - - - - R&ecord - G&rabar - - - - Building: %n shader(s) - - Creando: %n shader(s) - Construyendo: %n shader(s) - - - - - Scale: %1x - %1 is the resolution scaling factor - Escalado: %1x - - - - Speed: %1% / %2% - Velocidad: %1% / %2% - - - - Speed: %1% - Velocidad: %1% - - - Game: %1 FPS (Unlocked) - Juego: %1 FPS (desbloqueado) - - - - Game: %1 FPS - Juego: %1 FPS - - - - Frame: %1 ms - Fotogramas: %1 ms - - - - %1 %2 - %1 %2 - - - - - FSR - FSR - - - - NO AA - NO AA - - - - VOLUME: MUTE - VOLUMEN: SILENCIO - - - - VOLUME: %1% - Volume percentage (e.g. 50%) - VOLUMEN: %1% - - - - Derivation Components Missing - Faltan componentes de derivación - - - Encryption keys are missing. <br>Please follow <a href='https://yuzu-emu.org/help/quickstart/'>the yuzu quickstart guide</a> to get all your keys, firmware and games. - Faltan las claves de encriptación. <br>Por favor, siga <a href='https://yuzu-emu.org/help/quickstart/'>la guía de inicio rápido de yuzu</a> para obtener todas tus claves, firmware y juegos. - - - - Select RomFS Dump Target - Selecciona el destinatario para volcar el RomFS - - - - Please select which RomFS you would like to dump. - Por favor, seleccione los RomFS que deseas volcar. - - - Are you sure you want to close yuzu? - ¿Estás seguro de que quieres cerrar yuzu? - - - yuzu - yuzu - - - - Are you sure you want to stop the emulation? Any unsaved progress will be lost. - ¿Estás seguro de que quieres detener la emulación? Cualquier progreso no guardado se perderá. - - - The currently running application has requested yuzu to not exit. - -Would you like to bypass this and exit anyway? - La aplicación que se está ejecutando actualmente ha solicitado que yuzu no se cierre. - -¿Quieres salir de todas formas? - - - - None - Ninguno - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Nearest - Más cercano - - - - Bilinear - Bilineal - - - - Bicubic - Bicúbico - - - - Gaussian - Gaussiano - - - - ScaleForce - ScaleForce - - - - Area - - - - - Docked - Sobremesa - - - - Handheld - Portátil - - - - Normal - Normal - - - - High - Alto - - - - Extreme - Extremo - - - - Vulkan - Vulkan - - - - OpenGL - OpenGL - - - - Null - Ninguno - - - - GLSL - GLSL - - - - GLASM - GLASM - - - - SPIRV - SPIRV - GRenderWindow - - + + OpenGL not available! ¡OpenGL no está disponible! - + OpenGL shared contexts are not supported. Los contextos compartidos de OpenGL no son compatibles. - yuzu has not been compiled with OpenGL support. - yuzu no ha sido compilado con soporte de OpenGL. + + Eden has not been compiled with OpenGL support. + Eden no ha sido compilado con soporte para OpenGL. - - eden has not been compiled with OpenGL support. - - - - - + + Error while initializing OpenGL! ¡Error al inicializar OpenGL! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. Tu GPU no soporta OpenGL, o no tienes instalados los últimos controladores gráficos. - + Error while initializing OpenGL 4.6! ¡Error al iniciar OpenGL 4.6! - + Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 Tu GPU no soporta OpenGL 4.6, o no tienes instalado el último controlador de la tarjeta gráfica.<br><br>GL Renderer:<br>%1 - + Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2 Es posible que la GPU no soporte una o más extensiones necesarias de OpenGL . Por favor, asegúrate de tener los últimos controladores de la tarjeta gráfica.<br><br>GL Renderer:<br>%1<br><br>Extensiones no soportadas:<br>%2 @@ -7010,192 +6117,208 @@ Would you like to bypass this and exit anyway? GameList - + + &Add New Game Directory + &Añadir un nuevo directorio de juego + + + Favorite Favorito - + Start Game Iniciar juego - + Start Game without Custom Configuration Iniciar juego sin la configuración personalizada - + Open Save Data Location Abrir ubicación de los archivos de guardado - + Open Mod Data Location Abrir ubicación de los mods - + Open Transferable Pipeline Cache Abrir caché de canalización de shaders transferibles - + + Link to Ryujinx + Enlace a Ryujinx + + + Remove Eliminar - + Remove Installed Update Eliminar la actualización instalada - + Remove All Installed DLC Eliminar todos los DLC instalados - + Remove Custom Configuration Eliminar la configuración personalizada - - Remove Play Time Data - Eliminar información del tiempo de juego - - - + Remove Cache Storage Quitar almacenamiento de caché - + Remove OpenGL Pipeline Cache Eliminar caché de canalización de OpenGL - + Remove Vulkan Pipeline Cache Eliminar caché de canalización de Vulkan - + Remove All Pipeline Caches Eliminar todas las cachés de canalización - + Remove All Installed Contents Eliminar todo el contenido instalado - - + + Manage Play Time + Gestionar tiempo de juego + + + + Edit Play Time Data + Editar los datos del tiempo de juego + + + + Remove Play Time Data + Eliminar información del tiempo de juego + + + + Dump RomFS Volcar RomFS - + Dump RomFS to SDMC Volcar RomFS a SDMC - + Verify Integrity Verificar integridad - + Copy Title ID to Clipboard Copiar la ID del título al portapapeles - + Navigate to GameDB entry Ir a la sección de bases de datos del juego - + Create Shortcut Crear acceso directo - + Add to Desktop Añadir al escritorio - + Add to Applications Menu Añadir al menú de aplicaciones - + Configure Game - + Configurar juego - Properties - Propiedades - - - + Scan Subfolders Escanear subdirectorios - + Remove Game Directory Eliminar directorio de juegos - + ▲ Move Up ▲ Mover hacia arriba - + ▼ Move Down ▼ Mover hacia abajo - + Open Directory Location Abrir ubicación del directorio - + Clear Limpiar - + Name Nombre - + Compatibility Compatibilidad - + Add-ons - Extras/Add-ons + Complementos - + File type Tipo de archivo - + Size Tamaño - + Play time Tiempo de juego @@ -7203,62 +6326,62 @@ Would you like to bypass this and exit anyway? GameListItemCompat - + Ingame En juego - + Game starts, but crashes or major glitches prevent it from being completed. El juego se inicia, pero se bloquea o se producen fallos importantes que impiden completarlo. - + Perfect Perfecta - + Game can be played without issues. El juego se puede jugar sin problemas. - + Playable Jugable - + Game functions with minor graphical or audio glitches and is playable from start to finish. El juego tiene algunos errores gráficos o de sonido, pero se puede jugar de principio a fin. - + Intro/Menu Inicio/Menu - + Game loads, but is unable to progress past the Start Screen. El juego se ejecuta, pero no puede avanzar de la pantalla de inicio. - + Won't Boot No funciona - + The game crashes when attempting to startup. El juego se bloquea al intentar iniciar. - + Not Tested Sin testear - + The game has not yet been tested. El juego todavía no ha sido testeado todavía. @@ -7266,7 +6389,7 @@ Would you like to bypass this and exit anyway? GameListPlaceholder - + Double-click to add a new folder to the game list Haz doble clic para agregar un nuevo directorio a la lista de juegos. @@ -7274,20 +6397,17 @@ Would you like to bypass this and exit anyway? GameListSearchField - + %1 of %n result(s) - - %1 de %n resultado(s) - %1 de %n resultado(s) - + %1 de %n resulto(s)%1 de %n resultado(s)%1 de %n resultado(s) - + Filter: Búsqueda: - + Enter pattern to filter Introduce un patrón para buscar @@ -7363,233 +6483,242 @@ Would you like to bypass this and exit anyway? HostRoomWindow - + Error Error - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. + + Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid Eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. Debug Message: - - - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid yuzu account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. -Debug Message: - Error al publicar la sala al lobby público. Para poder publicar una sala en el lobby público, debes tener una cuenta válida de yuzu configurada en Emulación -> Configurar -> Web. Si no quieres publicar una sala en el lobby público, seleccione en su lugar "Privada". -Mensaje de depuración: + Se fallo anunciar la sala al vestíbulo público. En orden para Anfitrar el sala publicamente, se require que tienes una cuenta de Eden valida en Emulacion -> Configura -> Web. Si no quieres publicar una sala en el vestibulo publico, seleccione no listada en ves. +Mensaje de depuración: Hotkeys - + Audio Mute/Unmute Activar/Desactivar audio - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Main Window Ventana principal - + Audio Volume Down Bajar volumen del audio - + Audio Volume Up Subir volumen del audio - + Capture Screenshot Captura de pantalla - + Change Adapting Filter Cambiar filtro adaptable - + Change Docked Mode Cambiar a modo sobremesa - - Change GPU Accuracy - Cambiar precisión de GPU + + Change GPU Mode + Cambiar modo de la GPU - + Configure - Configurar + Configurar - + Configure Current Game - + Configure el juego actual - + Continue/Pause Emulation Continuar/Pausar emulación - + Exit Fullscreen Salir de pantalla completa - Exit yuzu - Cerrar yuzu + + Exit Eden + Salir de Eden - - Exit eden - - - - + Fullscreen Pantalla completa - + Load File Cargar archivo - + Load/Remove Amiibo Cargar/Eliminar Amiibo - - Multiplayer Browse Public Game Lobby - Buscar en el lobby de juegos públicos multijugador + + Browse Public Game Lobby + Buscar en la sala de juegos públicos - - Multiplayer Create Room - Crear sala multijugador + + Create Room + Crear sala - - Multiplayer Direct Connect to Room - Conexión directa a la sala multijugador + + Direct Connect to Room + Conexión directa a sala - - Multiplayer Leave Room - Abandonar sala multijugador + + Leave Room + Abandonar sala - - Multiplayer Show Current Room - Mostrar actual sala multijugador + + Show Current Room + Mostrar sala actual - + Restart Emulation Reiniciar emulación - + Stop Emulation Detener emulación - + TAS Record Grabar TAS - + TAS Reset Reiniciar TAS - + TAS Start/Stop Iniciar/detener TAS - + Toggle Filter Bar Alternar barra de filtro - + Toggle Framerate Limit Alternar limite de fotogramas - + + Toggle Turbo Speed + Alternar velocidad turbo + + + + Toggle Slow Speed + Alternar velocidad lenta + + + Toggle Mouse Panning Alternar desplazamiento del ratón - + Toggle Renderdoc Capture Alternar Captura de Renderdoc - + Toggle Status Bar Alternar barra de estado + + + Toggle Performance Overlay + Alternar superposición de rendimiento + InstallDialog - + Please confirm these are the files you wish to install. Por favor, confirma que estos son los archivos que desea instalar. - + Installing an Update or DLC will overwrite the previously installed one. Instalar una actualización o DLC reemplazará la instalada previamente. - + Install Instalar - + Install Files to NAND Instalar archivos al NAND... @@ -7597,8 +6726,8 @@ Mensaje de depuración: LimitableInputDialog - - The text can't contain any of the following characters: + + The text can't contain any of the following characters: %1 El texto no puede tener ninguno de estos caracteres: %1 @@ -7609,12 +6738,12 @@ Mensaje de depuración: Loading Shaders 387 / 1628 - Cargando shaders 387 / 1628 + Cargando sombreadores 387 / 1628 Loading Shaders %v out of %m - Cargando shaders %v de %m + Cargando sombreadores %v de %m @@ -7622,22 +6751,22 @@ Mensaje de depuración: Tiempo estimado 5m 4s - + Loading... Cargando... - + Loading Shaders %1 / %2 - Cargando shaders %1 / %2 + Cargando sombreadores %1 / %2 - + Launching... Iniciando... - + Estimated Time %1 Tiempo estimado %1 @@ -7683,45 +6812,45 @@ Mensaje de depuración: Refresh Lobby - Actualizar lobby + Actualizar la sala - + Password Required to Join Contraseña necesaria para unirse - + Password: Contraseña: - + Players Jugadores - + Room Name Nombre de sala - + Preferred Game Juego preferente - + Host Anfitrión - + Refreshing Actualizando - + Refresh List Actualizar lista @@ -7744,362 +6873,1453 @@ Mensaje de depuración: &Archivos recientes - + + Open &Eden Folders + Abrir carpetas de &Eden + + + &Emulation &Emulación - + &View &Ver - + &Reset Window Size &Reiniciar tamaño de ventana - + &Debugging &Depuración - + + &Game List Mode + Modo de la lista de &juegos + + + + Game &Icon Size + Tamaño del &icono de los juegos + + + Reset Window Size to &720p Reiniciar el tamaño de la ventana a &720p - + Reset Window Size to 720p Reiniciar el tamaño de la ventana a 720p - + Reset Window Size to &900p Reiniciar el tamaño de la ventana a &900p - + Reset Window Size to 900p Reiniciar el tamaño de la ventana a 900p - + Reset Window Size to &1080p Reiniciar el tamaño de la ventana a &1080p - + Reset Window Size to 1080p Reiniciar el tamaño de la ventana a 1080p - + &Multiplayer &Multijugador - + &Tools &Herramientas - - &Amiibo - &Amiibo + + Am&iibo + Am&iibo - + + Launch &Applet + Ejecutar &Applet + + + &TAS &TAS - + &Create Home Menu Shortcut - + &Crear un acceso directo al menú de inicio - + + Install &Firmware + Instalar &Firmware + + + &Help &Ayuda - + &Install Files to NAND... &Instalar archivos en NAND... - + L&oad File... C&argar archivo... - + Load &Folder... Cargar &carpeta - + E&xit S&alir - + + &Pause &Pausar - + &Stop &Detener - + &Verify Installed Contents &Verificar contenidos instalados - - &About eden - + + &About Eden + &Acerca de Eden - - Open &eden Folder - - - - - Open Home Menu - - - - - &Discord - - - - - Open &Setup - - - - - &Desktop - - - - - &Application Menu - - - - &About yuzu - &Acerca de yuzu - - - + Single &Window Mode Modo &ventana - + Con&figure... Con&figurar... - + Ctrl+, - + Ctrl+, - - Display D&ock Widget Headers - Mostrar complementos de cabecera del D&ock + + Enable Overlay Display Applet + Activar applet de visualización superpuesta - + Show &Filter Bar Mostrar barra de &búsqueda - + Show &Status Bar Mostrar barra de &estado - + Show Status Bar Mostrar barra de estado - + &Browse Public Game Lobby - &Buscar en el lobby de juegos públicos + &Buscar en la sala de juegos públicos - + &Create Room &Crear sala - + &Leave Room &Abandonar sala - + &Direct Connect to Room &Conexión directa a una sala - + &Show Current Room &Mostrar sala actual - + F&ullscreen P&antalla completa - + &Restart &Reiniciar - + Load/Remove &Amiibo... Cargar/Eliminar &Amiibo... - + &Report Compatibility &Reporte de compatibilidad - + Open &Mods Page Abrir página de &mods - + Open &Quickstart Guide Abrir guía de &inicio rápido - + &FAQ &Preguntas frecuentes - Open &yuzu Folder - Abrir la carpeta de &yuzu - - - + &Capture Screenshot &Captura de pantalla - - Open &Album - Abrir &Álbum + + &Album + &Álbum - + &Set Nickname and Owner &Darle nombre y propietario - + &Delete Game Data &Borrar datos de juego - + &Restore Amiibo &Restaurar Amiibo - + &Format Amiibo &Formatear Amiibo - - Open &Mii Editor - Abrir Editor de &Mii + + &Mii Editor + &Editor de Mii - + &Configure TAS... &Configurar TAS... - + Configure C&urrent Game... - Configurar j&uego actual... + Configurar el j&uego actual... - + + &Start &Iniciar - + &Reset &Reiniciar - + + R&ecord G&rabar - + Open &Controller Menu - Abrir Menú de &Mandos + Abrir el menú de &mandos - - Install Firmware - Instalar firmware + + Install Decryption &Keys + Instalar &llaves de desencriptación - - Install Decryption Keys - + + &Home Menu + &Menú de inicio - - - MicroProfileDialog - - &MicroProfile - &MicroPerfil + + &Desktop + &Escritorio + + + + &Application Menu + &Menú de la aplicación + + + + &Root Data Folder + &Datos de Archivo Root + + + + &NAND Folder + &Archivo NAND + + + + &SDMC Folder + &Archivo SDMC + + + + &Mod Folder + Carpeta de &mods + + + + &Log Folder + &Archivo Registro + + + + From Folder + Desde carpeta + + + + From ZIP + Desde archivo ZIP + + + + &Eden Dependencies + &Dependencias de Eden + + + + &Data Manager + Gestor de &datos + + + + &Tree View + Vista en &árbol + + + + &Grid View + Vista en &cuadrícula + + + + Game Icon Size + Tamaño del icono de los juegos + + + + + + None + Nada + + + + Show Game &Name + Mostrar el &nombre del juego + + + + Show &Performance Overlay + Mostrar superposición de &rendimiento + + + + Small (32x32) + Pequeño (32x32) + + + + Standard (64x64) + Estandar (64x64) + + + + Large (128x128) + Grande (128x128) + + + + Full Size (256x256) + Tamaño completo (256x256) + + + + Broken Vulkan Installation Detected + Detectada instalación fallida de Vulkan + + + + Vulkan initialization failed during boot. + La inicialización de Vulkan falló durante el arranque. + + + + Running a game + TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping + Ejecutando un juego + + + + Loading Web Applet... + Cargando applet web... + + + + + Disable Web Applet + Desactivar applet web + + + + 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.) + Desactivar el applet web puede causar comportamientos inesperados y debería solo ser usado con Super Mario 3D All-Stars. ¿Está seguro de que quiere desactivar el applet web? +(Puede ser activado en las ajustes de depuración.) + + + + The amount of shaders currently being built + La cantidad de sombreadores que se están contruyendo actualmente + + + + The current selected resolution scaling multiplier. + El multiplicador de escalado de resolución seleccionado actualmente. + + + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. + Velocidad de emulación actual. Los valores superiores o inferiores al 100% indican que la emulación se ejecuta más rápida o más lenta que en una Switch. + + + + How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. + La cantidad de fotogramas por segundo que muestra el juego actualmente. Esto varía según el juego y la escena. + + + + 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. + Tiempo empleado en emular un fotograma de la Switch, sin contar la limitación de fotogramas ni la sincronización vertical. Para una emulación a máxima velocidad, debería ser de 16,67 ms como máximo. + + + + Unmute + Desilenciar + + + + Mute + Silenciar + + + + Reset Volume + Restablecer volumen + + + + &Clear Recent Files + &Limpiar archivos recientes + + + + &Continue + &Continuar + + + + Warning: Outdated Game Format + Advertencia: formato del juego obsoleto + + + + 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.<br>For an explanation of the various Switch formats Eden supports, out our user handbook. This message will not be shown again. + Está usando el formato de directorio ROM deconstruido para este juego, el cual es un formato obsoleto que ha sido reemplazado por otros como NCA, NAX, XCI o NSP. Los directorios ROM deconstruidos carecen de iconos, metadatos y compatibilidad con actualizaciones.<br>Para obtener una explicación de los distintos formatos de la Switch compatibles con Eden, consulte nuestro manual de usuario. Este mensaje no volverá a aparecer de nuevo. + + + + + Error while loading ROM! + ¡Error al cargar la ROM! + + + + The ROM format is not supported. + El formato de la ROM no está soportado. + + + + An error occurred initializing the video core. + Se produjo un error al inicializar el núcleo de video. + + + + Eden 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: <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>How to Upload the Log File</a>. + Eden ha detectado un error al ejecutar el núcleo de vídeo. Esto suele deberse por usar controladores de la GPU obsoletos, incluidos los integrados. Consulte el registro para obtener más información. Para más información sobre cómo acceder al archivo de registro, por favor consulte la siguiente página: <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>Cómo subir el archivo de registro</a>. + + + + Error while loading ROM! %1 + %1 signifies a numeric error code. + ¡Error al cargar la ROM! %1 + + + + %1<br>Please redump your files or ask on Discord/Stoat for help. + %1 signifies an error string. + %1<br>Por favor vuelva a volcar sus archivos, o pida ayuda en Discord/Stoat. + + + + An unknown error occurred. Please see the log for more details. + Ha ocurrido un error desconocido. Por favor mire el registro para más detalles. + + + + (64-bit) + (64-bit) + + + + (32-bit) + (32-bit) + + + + %1 %2 + %1 is the title name. %2 indicates if the title is 64-bit or 32-bit + %1 %2 + + + + Closing software... + Cerrando el programa... + + + + Save Data + Datos de guardado + + + + Mod Data + Datos del mod + + + + Error Opening %1 Folder + Error abriendo la carpeta %1 + + + + + Folder does not exist! + ¡La carpeta no existe! + + + + Remove Installed Game Contents? + ¿Eliminar el contenido instalado del juego? + + + + Remove Installed Game Update? + ¿Eliminar la actualización instalada del juego? + + + + Remove Installed Game DLC? + ¿Eliminar el contenido descargable instalado del juego? + + + + Remove Entry + Eliminar entrada + + + + Delete OpenGL Transferable Shader Cache? + ¿Desea eliminar el caché transferible de sombreadores de OpenGL? + + + + Delete Vulkan Transferable Shader Cache? + ¿Desea eliminar el caché transferible de sombreadores de Vulkan? + + + + Delete All Transferable Shader Caches? + ¿Desea eliminar todo el caché transferible de sombreadores? + + + + Remove Custom Game Configuration? + ¿Borrar configuración personalizada del juego? + + + + Remove Cache Storage? + ¿Borrar el almacenamiento de caché? + + + + Remove File + Eliminar archivo + + + + Remove Play Time Data + Eliminar datos del tiempo de juego + + + + Reset play time? + ¿Reiniciar el tiempo de juego? + + + + + RomFS Extraction Failed! + ¡Fallo al extraer el RomFS! + + + + There was an error copying the RomFS files or the user cancelled the operation. + Ocurrió un error al copiar los archivos de la RomFS o el usuario canceló la operación. + + + + Full + Completo + + + + Skeleton + Esqueleto + + + + Select RomFS Dump Mode + Seleccione el método de volcado del RomFS + + + + Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. + Por favor seleccione como quiere que sea volcada la RomFS.<br>Completa copiará todos los archivos en el nuevo directorio mientras que <br>esqueleto solo creará la estructura de los directorios. + + + + There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root + No hay suficiente espacio libre en %1 para extraer la RomFS. Por favor libera espacio o selecciona un directorio de volcado diferente en Emulación > Configurar > Sistema > Sistema de archivos > Volcado raiz + + + + Extracting RomFS... + Extrayendo el RomFS... + + + + + Cancel + Cancelar + + + + RomFS Extraction Succeeded! + ¡La extracción del RomFS ha sido un éxito! + + + + The operation completed successfully. + La operación se completó con éxito. + + + + Error Opening %1 + Error al abrir %1 + + + + Select Directory + Seleccionar directorio + + + + Properties + Propiedades + + + + The game properties could not be loaded. + No se pudieron cargar las propiedades del juego. + + + + Switch Executable (%1);;All Files (*.*) + %1 is an identifier for the Switch executable file extensions. + Ejecutable de Switch (%1);;Todos los archivos (*.*) + + + + Load File + Cargar archivo + + + + Open Extracted ROM Directory + Abrir directorio de la ROM extraída + + + + Invalid Directory Selected + Seleccionado directorio inválido + + + + The directory you have selected does not contain a 'main' file. + El directorio seleccionado no contiene un archivo 'main'. + + + + Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) + Archivo de Switch instalable (*.nca *.nsp *.xci);;Archivo de contenido de Nintendo (*.nca);;Paquete de envío de Nintendo (*.nsp);;Imagen de cartucho NX (*.xci) + + + + Install Files + Instalar archivos + + + + %n file(s) remaining + %n archivo(s) restantes%n archivo(s) restantes%n archivo(s) restantes + + + + Installing file "%1"... + Instalando el archivo "%1"... + + + + + Install Results + Resultados de la instalación + + + + To avoid possible conflicts, we discourage users from installing base games to the NAND. +Please, only use this feature to install updates and DLC. + Para evitar posibles conflictos, desaconsejamos instalar juegos base en la NAND. +Por favor, use solo esta función para instalar actualizaciones y contenido descargable. + + + + %n file(s) were newly installed + + %n archivo(s) se instalaron recientemente +%n archivo(s) se instalaron recientemente +%n archivo(s) se instalaron recientemente + + + + + %n file(s) were overwritten + + %n archivo(s) fueron sobreescritos +%n archivo(s) fueron sobreescritos +%n archivo(s) fueron sobreescritos + + + + + %n file(s) failed to install + + fallo al instalar %n archivo(s) +fallo al instalar %n archivo(s) +fallo al instalar %n archivo(s) + + + + + System Application + Aplicación del sistema + + + + System Archive + Archivo del sistema + + + + System Application Update + Actualización de la aplicación del sistema + + + + Firmware Package (Type A) + Paquete de firmware (Tipo A) + + + + Firmware Package (Type B) + Paquete de firmware (Tipo B) + + + + Game + Juego + + + + Game Update + Actualización del juego + + + + Game DLC + Contenido descargable del juego + + + + Delta Title + Título Delta + + + + Select NCA Install Type... + Seleccione el tipo de instalación NCA... + + + + Please select the type of title you would like to install this NCA as: +(In most instances, the default 'Game' is fine.) + Seleccione el tipo de título en el que desea instalar este NCA: +(En la mayoría de los casos, la opción predeterminada "Juego" es suficiente). + + + + Failed to Install + Fallo al instalar + + + + The title type you selected for the NCA is invalid. + El tipo de título que ha seleccionado para el NCA es inválido. + + + + File not found + Archivo no encontrado + + + + File "%1" not found + Archivo "%1" no encontrado + + + + OK + Aceptar + + + + Function Disabled + Función desactivada + + + + Compatibility list reporting is currently disabled. Check back later! + Los informes de la lista de compatibilidad están deshabilitados. ¡Vuelva más tarde! + + + + Error opening URL + Error abriendo URL + + + + Unable to open the URL "%1". + No se pudo abrir URL "%1". + + + + TAS Recording + Grabación TAS + + + + Overwrite file of player 1? + ¿Sobrescribir el archivo del jugador 1? + + + + Invalid config detected + Detectada configuración inválida + + + + Handheld controller can't be used on docked mode. Pro controller will be selected. + El mando del modo portátil no puede usarse en el modo sobremesa. El mando pro será seleccionado en su lugar. + + + + + Amiibo + Amiibo + + + + + The current amiibo has been removed + El amiibo actual fue borrado + + + + Error + Error + + + + + The current game is not looking for amiibos + El juego actual no está buscando amiibos + + + + Amiibo File (%1);; All Files (*.*) + Archivo Amiibo (%1);; Todos los archivos (*.*) + + + + Load Amiibo + Cargar Amiibo + + + + Error loading Amiibo data + Error al cargar los datos del Amiibo + + + + The selected file is not a valid amiibo + El archivo seleccionado no es un amiibo válido + + + + The selected file is already on use + El archivo seleccionado se encuentra en uso + + + + An unknown error occurred + Ha ocurrido un error desconocido + + + + + Keys not installed + Claves no instaladas + + + + + Install decryption keys and restart Eden before attempting to install firmware. + Instale las claves de desencriptado y reinicie Eden antes de intentar instalar el firmware. + + + + Select Dumped Firmware Source Location + Seleccionar ubicación fuente del firmware volcado + + + + Select Dumped Firmware ZIP + Seleccionar ZIP del firmware volcado + + + + Zipped Archives (*.zip) + Archivos comprimidos (*.zip) + + + + Firmware cleanup failed + Fallo al limpiar firmware + + + + Failed to clean up extracted firmware cache. +Check write permissions in the system temp directory and try again. +OS reported error: %1 + Fallo al limpiar el cache del firmware extraído. +Compruebe los permisos de escritura en el directorio de temporales del sistema e inténtelo de nuevo. +Error reportado por el sistema operativo: %1 + + + + No firmware available + No hay firmware disponible + + + + Firmware Corrupted + Firmware corrompido + + + + Unknown applet + Applet desconocido + + + + Applet doesn't map to a known value. + Applet no asigna a un valor conocido. + + + + Record not found + Grabación no encontrada + + + + Applet not found. Please reinstall firmware. + Apple no encontrado. Por favor vuelva a instalar el firmware. + + + + Capture Screenshot + Captura de pantalla + + + + PNG Image (*.png) + Imagen PNG (*.png) + + + + Update Available + Actualización disponible + + + + Download %1? + ¿Descargar %1? + + + + TAS state: Running %1/%2 + Estado de TAS: Ejecutando %1/%2 + + + + TAS state: Recording %1 + Estado de TAS: Grabando %1 + + + + TAS state: Idle %1/%2 + Estado de TAS: Inactivo %1/%2 + + + + TAS State: Invalid + Estado de TAS: Inválido + + + + &Stop Running + &Parar de ejecutarse + + + + Stop R&ecording + &Parar grabación + + + + Building: %n shader(s) + Construyendo: %n sombreador(es)Construyendo: %n sombreador(es)Construyendo: %n sombreador(es) + + + + Scale: %1x + %1 is the resolution scaling factor + Escala: %1x + + + + Speed: %1% / %2% + Velocidad: %1% / %2% + + + + Speed: %1% + Velocidad: %1% + + + + Game: %1 FPS + Juego: %1 FPS + + + + Frame: %1 ms + Fotograma: %1 ms + + + + + FSR + FSR + + + + NO AA + NO AA + + + + VOLUME: MUTE + VOLUMEN: SILENCIADO + + + + VOLUME: %1% + Volume percentage (e.g. 50%) + VOLUMEN: %1% + + + + Derivation Components Missing + Componentes de derivación ausentes + + + + Decryption keys are missing. Install them now? + Las claves de desencriptado están ausentes. ¿Desea instalarlas ahora? + + + + Wayland Detected! + ¡Wayland detectado! + + + + Wayland is known to have significant performance issues and mysterious bugs. +It's recommended to use X11 instead. + +Would you like to force it for future launches? + Wayland es famoso por presentar importantes problemas de rendimiento y misteriosos fallos. +Se recomienda usar X11 en su lugar. + +¿Le gustaría forzar a usarlo en futuras ejecuciones? + + + + Use X11 + Usar X11 + + + + Continue with Wayland + Continuar con Wayland + + + + Don't show again + No mostrar de nuevo + + + + Restart Required + Reinicio requerido + + + + Restart Eden to apply the X11 backend. + Reinicie Eden para aplicar el motor X11. + + + + Slow + Lento + + + + Turbo + Turbo + + + + Unlocked + Desbloqueado + + + + Select RomFS Dump Target + Seleccione el destinatario para el volcado del RomFS + + + + Please select which RomFS you would like to dump. + Por favor seleccione que RomFS desea volcar. + + + + Are you sure you want to close Eden? + ¿Está seguro de que quiere cerrar Eden? + + + + + + Eden + Eden + + + + Are you sure you want to stop the emulation? Any unsaved progress will be lost. + ¿Está seguro de que desea parar la emulación? Cualquier progreso sin guardar se perderá. + + + + The currently running application has requested Eden to not exit. + +Would you like to bypass this and exit anyway? + La aplicación que se está ejecutando actualmente ha solicitado que Eden no se detenga. + +¿Desea omitir esto y salir de todos modos? + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Nearest + Más cercano + + + + Bilinear + Bilineal + + + + Bicubic + Bicúbico + + + + Zero-Tangent + Tangente cero + + + + B-Spline + B-Spline + + + + Mitchell + Mitchell + + + + Spline-1 + Spline-1 + + + + Gaussian + Gaussiano + + + + Lanczos + Lanczos + + + + ScaleForce + ScaleForce + + + + Area + Área + + + + MMPX + MMPX + + + + Docked + Anclado + + + + Handheld + Portátil + + + + Fast + Rápido + + + + Balanced + Equilibrado + + + + Accurate + Preciso + + + + Vulkan + Vulkan + + + + OpenGL GLSL + OpenGL GLSL + + + + OpenGL SPIRV + OpenGL SPIRV + + + + OpenGL GLASM + OpenGL GLASM + + + + Null + Nulo MigrationWorker - - Data was migrated successfully. - - - - + Linking the old directory failed. You may need to re-run with administrative privileges on Windows. OS gave error: %1 - + Conectando el directorio anticuado se fallo. A lo mejor necesitas iniciar con privilegios de administrador en Windows. +SO dio error: %1 - + + + +Note that your configuration and data will be shared with %1. +If this is not desirable, delete the following files: +%2 +%3 +%4 + + +Nota que tu configuration y datos se compartirán con %1. +Si esto no es deseable, borre los siguientes archivos: +%2 +%3 +%4 + + + If you wish to clean up the files which were left in the old data location, you can do so by deleting the following directory: %1 - + + +Si quieres limpiar los archivos que se quedaron en el ubicacion de datos anticuado, Puedes hacerlo si borres el siguiente directorio: +%1 + + + + Data was migrated successfully. + Datos se migraron con exito. + + + + ModSelectDialog + + + Dialog + Diálogo + + + + The specified folder or archive contains the following mods. Select which ones to install. + La carpeta o archivo indicado contiene los siguientes mods. Seleccione cuáles desea instalar. @@ -8116,7 +8336,7 @@ If you wish to clean up the files which were left in the old data location, you - + Refreshing Actualizando @@ -8126,27 +8346,27 @@ If you wish to clean up the files which were left in the old data location, you Quitar veto - + Subject Asunto - + Type Tipo - + Forum Username Nombre de usuario del foro - + IP Address Dirección IP - + Refresh Actualizar @@ -8154,37 +8374,37 @@ If you wish to clean up the files which were left in the old data location, you MultiplayerState - + Current connection status Estado de la conexión actual - + Not Connected. Click here to find a room! No conectado. Haz clic aquí para buscar una sala. - + Not Connected No conectado - + Connected Conectado - + New Messages Received Nuevos mensajes recibidos - + Error Error - + Failed to update the room information. Please check your Internet connection and try hosting the room again. Debug Message: No se ha podido actualizar la información de la sala. Por favor, comprueba tu conexión a internet e intenta alojar la sala de nuevo. @@ -8193,90 +8413,6 @@ Mensaje de depuración: NetworkMessage - - Username is not valid. Must be 4 to 20 alphanumeric characters. - El nombre de usuario no es válido. Debe tener entre 4 y 20 caracteres alfanuméricos. - - - Room name is not valid. Must be 4 to 20 alphanumeric characters. - El nombre de la sala no es válido. Debe tener entre 4 y 20 caracteres alfanuméricos. - - - Username is already in use or not valid. Please choose another. - El nombre de usuario ya está en uso o no es válido. Por favor, selecciona otro. - - - IP is not a valid IPv4 address. - Esta IP no es una dirección IPv4 válida. - - - Port must be a number between 0 to 65535. - El número del puerto debe estar entre 0 y 65535. - - - You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - Debes elegir un Juego preferente para alojar una sala. Si todavía no tienes ningún juego en la lista de juegos, añade una carpeta de juegos haciendo clic en el icono del más en la lista de juegos. - - - Unable to find an internet connection. Check your internet settings. - No se puede encontrar ninguna conexión a internet. Comprueba tu configuración de internet. - - - Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - No se ha podido conectar con el anfitrión. Comprueba que la configuración de la conexión es correcta. Si todavía no puedes conectarte, contacta con el anfitrión de la sala y verifica que el anfitrión tiene configurado correctamente el puerto externo direccionado. - - - Unable to connect to the room because it is already full. - No es posible conectarse a la sala debido a que ya se encuentra llena. - - - Creating a room failed. Please retry. Restarting yuzu might be necessary. - Error al crear una sala. Por favor, inténtalo de nuevo. Puede que sea necesario reiniciar yuzu. - - - The host of the room has banned you. Speak with the host to unban you or try a different room. - El anfitrión de la sala te ha vetado. Habla con el anfitrión para quitar el veto o prueba con una sala diferente. - - - Version mismatch! Please update to the latest version of yuzu. If the problem persists, contact the room host and ask them to update the server. - ¡No coinciden las versiones! Por favor, actualiza a la última versión de yuzu. Si el problema persiste, ponte en contacto con el anfitrión de la sala y pídele que actualice el servidor. - - - Incorrect password. - Contraseña incorrecta - - - An unknown error occurred. If this error continues to occur, please open an issue - Ha ocurrido un error desconocido. Si el error persiste, por favor, abre una solicitud de errores. - - - Connection to room lost. Try to reconnect. - Conexión a la sala perdida. Prueba a reconectarte. - - - You have been kicked by the room host. - Has sido expulsado por el anfitrión. - - - IP address is already in use. Please choose another. - La dirección IP ya se encuentra en uso. Por favor, selecciona otra. - - - You do not have enough permission to perform this action. - No tienes permisos suficientes para realizar esta acción. - - - The user you are trying to kick/ban could not be found. -They may have left the room. - El usuario que estás intentando echar/vetar no se ha podido encontrar. -Es posible que haya abandonado la sala. - - - No valid network interface is selected. -Please go to Configure -> System -> Network and make a selection. - No se ha seleccionado ninguna interfaz de red válida. -Por favor, vaya a Configuración -> Sistema -> Red y selecciona la interfaz. - Game already running @@ -8286,7 +8422,7 @@ Por favor, vaya a Configuración -> Sistema -> Red y selecciona la interfa Joining a room when the game is already running is discouraged and can cause the room feature not to work correctly. Proceed anyway? - No se recomienda unirse a una sala cuando el juego se está ejecutando ya que puede provocar que la funcionalidad de la sala no funcione correctamente. + No se recomienda unirse a una sala cuando el juego ya se está ejecutando porque puede provocar que la funcionalidad de la sala no funcione correctamente. ¿Proceder de todos modos? @@ -8311,10 +8447,132 @@ Proceed anyway? - NetworkMessage::ErrorManager + NewUserDialog - Error - Error + + + New User + Nuevo usuario + + + + Change Avatar + Cambiar avatar + + + + Set Image + Seleccionar imagen + + + + UUID + UUID + + + + Eden + Eden + + + + Username + Nombre de usuario + + + + UUID must be 32 hex characters (0-9, A-F) + UUID debe ser 32 caracteres hexadecimales (0-9, A-F) + + + + Generate + Generar + + + + Select User Image + Seleccionar imagen de usuario + + + + Image Formats (*.jpg *.jpeg *.png *.bmp) + Formatos de imagen (*.jpg *.jpeg *.png *.bmp) + + + + No firmware available + No hay firmware disponible + + + + Please install the firmware to use firmware avatars. + Por favor instala el firmware para usar los avatares del firmware. + + + + + Error loading archive + Error al cargar archivo + + + + Archive is not available. Please install/reinstall firmware. + Archivo no disponible. Por favor instalar/reinstala el firmware. + + + + Could not locate RomFS. Your file or decryption keys may be corrupted. + No se ha podido ubicar la RomFS. Su archivo o claves de desencriptación pueden estar corruptas. + + + + Error extracting archive + Error al descomprimir archivo + + + + Could not extract RomFS. Your file or decryption keys may be corrupted. + No se ha podido extraer la RomFS. Su archivo o claves de desencriptación pueden estar corruptas. + + + + Error finding image directory + Error al buscar el directorio de imágenes + + + + Failed to find image directory in the archive. + No se pudo encontrar el directorio de imágenes en el archivo. + + + + No images found + No se encontraron imágenes + + + + No avatar images were found in the archive. + No se encontraron imágenes de avatar en el archivo. + + + + + All Good + Tooltip + Todo está bien + + + + Must be 32 hex characters (0-9, a-f) + Tooltip + Debe ser 32 caracteres hexadecimales (0-9, a-f) + + + + Must be between 1 and 32 characters + Tooltip + Debe ser entre 1 y 32 caracteres @@ -8341,7 +8599,7 @@ Proceed anyway? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -8350,83 +8608,199 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> + + PerformanceOverlay + + + Form + Forma + + + + Frametime + Tiempo de fotograma + + + + 0 ms + 0 ms + + + + + Min: 0 + Mín: 0 + + + + + Max: 0 + Máx: 0 + + + + + Avg: 0 + Prom: 0 + + + + FPS + FPS + + + + 0 fps + 0 fps + + + + %1 fps + %1 fps + + + + + Avg: %1 + Prom: %1 + + + + + Min: %1 + Mín: %1 + + + + + Max: %1 + Máx: %1 + + + + %1 ms + %1 ms + + PlayerControlPreview - + START/PAUSE INICIO/PAUSAR + + ProfileAvatarDialog + + + Select + Seleccionar + + + + Cancel + Cancelar + + + + Background Color + Color de fondo + + + + Select Firmware Avatar + Seleccionar avatar del firmware + + QObject - - %1 is not playing a game - %1 no está jugando ningún juego + + + + Migration + Migracion - - %1 is playing %2 - %1 esta jugando %2 + + Clear Shader Cache + Limpiar caché de sombreador - - Not playing a game - No jugando ningún juego + + Keep Old Data + Mantener los datos antiguos - - Installed SD Titles - Títulos instalados en la SD + + Clear Old Data + Limpiar los datos antiguos - - Installed NAND Titles - Títulos instalados en NAND + + Link Old Directory + Vincular directorio antiguo - - System Titles - Títulos del sistema + + + + + + + - - Add New Game Directory - Añadir un nuevo directorio de juegos + + + No + No - - Favorites - Favoritos + + You can manually re-trigger this prompt by deleting the new config directory: +%1 + Puede volver a activar este mensaje manualmente si eliminas el nuevo directorio de configuración: +%1 + + + + Migrating + Migrando + + + + Migrating, this may take a while... + Migrando, Esto se puede tardar... - - + + Shift Shift - - + + Ctrl Ctrl - - + + Alt Alt - - - - + + + + [not set] [no definido] @@ -8436,15 +8810,15 @@ p, li { white-space: pre-wrap; } Rotación %1 %2 - - - - - - - - + + + + + + + + Axis %1%2 Eje %1%2 @@ -8454,359 +8828,383 @@ p, li { white-space: pre-wrap; } Botón %1 - - - - - - + + + + + + [unknown] [desconocido] - - - + + + Left Izquierda - - - + + + Right Derecha - - - + + + Down Abajo - - - + + + Up Arriba - - + + Z Z - - + + R R - - + + L L - - + + A A - - + + B B - - + + X X - - + + Y Y - - + + Start Comenzar - - + + L1 L1 - - + + L2 L2 - - + + L3 L3 - - + + R1 R1 - - + + R2 R2 - - + + R3 R3 - - + + Circle Círculo - - + + Cross Cruz - - + + Square Cuadrado - - + + Triangle Triángulo - - + + Share Compartir - - + + Options Opciones - - + + [undefined] [sin definir] - + %1%2 %1%2 - - + + [invalid] [inválido] - - + + %1%2Hat %3 %1%2Rotación %3 - - - + + + %1%2Axis %3 %1%2Eje %3 - - + + %1%2Axis %3,%4,%5 %1%2Eje %3,%4,%5 - - + + %1%2Motion %3 %1%2Movimiento %3 - - + + %1%2Button %3 %1%2Botón %3 - - + + [unused] [no usado] - + ZR ZR - + ZL ZL - + SR SR - + SL SL - + Stick L Palanca L - + Stick R Palanca R - + Plus Más - + Minus Menos - - + + Home Inicio - + Capture Captura - + Touch Táctil - + Wheel Indicates the mouse wheel Rueda - + Backward Atrás - + Forward Adelante - + Task Tarea - + Extra Extra - + %1%2%3%4 %1%2%3%4 - - + + %1%2%3Hat %4 %1%2%3Rotación %4 - - + + %1%2%3Axis %4 %1%2%3Axis %4 - - + + %1%2%3Button %4 %1%2%3Botón %4 - - - - Migration - + + Not playing a game + No jugando ningún juego - - - - - + + %1 is not playing a game + %1 no está jugando ningún juego - - - No - + + %1 is playing %2 + %1 esta jugando %2 - - You can manually re-trigger this prompt by deleting the new config directory: -%1 - + + Play Time: %1 + Tiempo de juego: %1 - - Migrating - + + Never Played + Nunca jugado - - Migrating, this may take a while... - + + Version: %1 + Versión: %1 + + + + Version: 1.0.0 + Versión: 1.0.0 + + + + Installed SD Titles + Títulos instalados en la SD + + + + Installed NAND Titles + Títulos instalados en NAND + + + + System Titles + Títulos del sistema + + + + Add New Game Directory + Añadir un nuevo directorio de juego + + + + Favorites + Favoritos @@ -8897,31 +9295,839 @@ p, li { white-space: pre-wrap; } Ruta del archivo - + No game data present No existen datos de juego - + The following amiibo data will be formatted: Los siguientes datos de amiibo serán formateados: - + The following game data will removed: Los siguientes datos del juego serán eliminados: - + Set nickname and owner: Establece un apodo y un propietario: - + Do you wish to restore this amiibo? ¿Deseas reestablecer este amiibo? + + QtCommon::Content + + + Game Requires Firmware + El juego requiere firmware + + + + The game you are trying to launch requires firmware to boot or to get past the opening menu. Please <a href='https://yuzu-mirror.github.io/help/quickstart'>dump and install firmware</a>, or press "OK" to launch anyways. + El juego que está tratando de abrir requiere firmware para arrancar o para pasar el menú de apertura. Por favor, <a href='https://yuzu-mirror.github.io/help/quickstart'>volcar e instalar el firmware</a>, o presionar "OK" para abrir de todas formas. + + + + Installing Firmware... + Instalando firmware... + + + + + + + + Cancel + Cancelar + + + + Firmware Install Failed + Instalación de Firmware Fallida. + + + + Firmware Install Succeeded + Firmware instalado exitosamente. + + + + Firmware integrity verification failed! + ¡Error en la verificación de integridad del firmware! + + + + + Verification failed for the following files: + +%1 + La verificación falló en los siguientes archivos: + +%1 + + + + + Verifying integrity... + Verificando integridad... + + + + + Integrity verification succeeded! + ¡La verificación de integridad ha sido un éxito! + + + + + The operation completed successfully. + La operación se completó con éxito. + + + + + Integrity verification failed! + ¡Verificación de integridad se fallo! + + + + File contents may be corrupt or missing. + Los contenidos del archivo pueden estar corruptos. + + + + Integrity verification couldn't be performed + No se pudo ejecutar la verificación de integridad + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity. + Instalacion de firmware cancellado , firmware podria estar en un mal estado o coruptos. contenidos de el archivo no pudieron ser verificados para validez. + + + + Select Dumped Keys Location + Seleccionar ubicación de origen de los llaves volcados + + + + Decryption Keys install succeeded + Instalación de llaves de descifra salo con exito + + + + Decryption Keys install failed + Instalacion de las llaves de descifra se fallo + + + + Orphaned Profiles Detected! + ¡Se detectaron perfiles huérfanos! + + + + + UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br> + ¡PODRÍAN SUCEDER COSAS MALAS E INESPERADAS SI NO LEE ESTO!<br>Eden ha detectado que los siguientes directorios de guardado no tienen perfil asociado:<br>%1<br><br>Los siguientes perfiles son válidos:<br>%2<br><br>Haga clic en "Aceptar" para abrir la carpeta de guardado y arreglar sus perfiles.<br>Consejo: copie el contenido de la carpeta más grande o la última modificada en otro lugar, elimine todos los perfiles huérfanos y mueva el contenido copiado al perfil correcto.<br><br>¿Aún tiene dudas? Consulte la <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>página de ayuda</a>.<br> + + + + Really clear data? + ¿Realmente deseas borrar los datos? + + + + Important data may be lost! + ¡Podrías perder información importante! + + + + Are you REALLY sure? + ¿Estás REALMENTE seguro? + + + + Once deleted, your data will NOT come back! +Only do this if you're 100% sure you want to delete this data. + ¡Una vez eliminados, tus datos no podrán recuperarse! +Haz esto solo si estás 100% seguro de que deseas borrarlos. + + + + Clearing... + Limpiando... + + + + Select Export Location + Selecciona la Ubicación de Exportación. + + + + %1.zip + %1.zip + + + + + Zipped Archives (*.zip) + Archivos comprimidos (*.zip) + + + + Exporting data. This may take a while... + Exportando datos. Esto puede tardar un poco... + + + + Exporting + Exportando + + + + Exported Successfully + Exportación Exitosa. + + + + Data was exported successfully. + Los datos se exportaron correctamente. + + + + Export Cancelled + Exportación cancelada. + + + + Export was cancelled by the user. + La exportación fue cancelada por el usuario. + + + + Export Failed + Exportación Fallida + + + + Ensure you have write permissions on the targeted directory and try again. + Asegúrate de tener permisos de escritura en el directorio seleccionado e inténtalo nuevamente. + + + + Select Import Location + Seleccionar ubicación de importación. + + + + Import Warning + Advertencia al importar datos + + + + All previous data in this directory will be deleted. Are you sure you wish to proceed? + Todos los datos anteriores en este directorio serán eliminados. ¿Estás seguro de que deseas continuar? + + + + Importing data. This may take a while... + Importando datos. Esto puede tomar unos minutos... + + + + Importing + Importando + + + + Imported Successfully + Importación completada con éxito. + + + + + Data was imported successfully. + Los datos se importaron correctamente. + + + + Import Cancelled + La importación fue cancelada. + + + + Import was cancelled by the user. + La importación fue cancelada por el usuario. + + + + Import Failed + Importación Fallida. + + + + Ensure you have read permissions on the targeted directory and try again. + Asegúrate de tener permisos de lectura en el directorio seleccionado e inténtalo nuevamente. + + + + QtCommon::FS + + + Linked Save Data + Datos de guardado enlazados + + + + Save data has been linked. + Los datos de guardado han sido enlazados. + + + + Failed to link save data + Fallo al enlazar datos de guardado + + + + Could not link directory: + %1 +To: + %2 + No se pudo vincular el directorio: + %1 +A: + %2 + + + + Already Linked + Ya está vinculado + + + + This title is already linked to Ryujinx. Would you like to unlink it? + Este título ya está vinculado a Ryujinx. ¿Desea desvincularlo? + + + + Failed to unlink old directory + Fallo al desvincular el directorio antiguo + + + + + OS returned error: %1 + El sistema operativo devolvió el error: %1 + + + + Failed to copy save data + Fallo al copiar datos de guardado + + + + Unlink Successful + Desvinculación exitosa + + + + Successfully unlinked Ryujinx save data. Save data has been kept intact. + Éxito al desvincular los datos de guardado de Ryujinx. Los datos guardados se han mantenido intactos. + + + + Could not find Ryujinx installation + No se encontró la instalación de Ryujinx + + + + Could not find a valid Ryujinx installation. This may typically occur if you are using Ryujinx in portable mode. + +Would you like to manually select a portable folder to use? + No se pudo encontrar una instalación válida de Ryujinx. Esto suele ocurrir si usa Ryujinx en modo portable. + +¿Desea seleccionar manualmente una carpeta portable? + + + + Ryujinx Portable Location + Ubicación de Ryujinx Portable + + + + Not a valid Ryujinx directory + Directorio de Ryujinx inválido + + + + The specified directory does not contain valid Ryujinx data. + El directorio indicado no contiene datos válidos de Ryujinx. + + + + + Could not find Ryujinx save data + No se pudieron encontrar los datos de guardado de Ryujinx + + + + QtCommon::Game + + + Error Removing Contents + Error en removiendo contenidos + + + + Error Removing Update + Error en removiendo actualizacion + + + + Error Removing DLC + Error en removiendo DLC + + + + + + + + + Successfully Removed + Se ha eliminado con éxito + + + + Successfully removed the installed base game. + El juego base se eliminó correctamente. + + + + The base game is not installed in the NAND and cannot be removed. + El juego base no está instalado en el NAND y no se puede eliminar. + + + + Successfully removed the installed update. + La actualización instalada se eliminó correctamente. + + + + There is no update installed for this title. + No hay ninguna actualización instalada para este título. + + + + There are no DLCs installed for this title. + No hay ninguna DLC instalada para este título. + + + + Successfully removed %1 installed DLC. + Se ha eliminado con éxito %1 DLC instalado. + + + + + Error Removing Transferable Shader Cache + Error en removiendo la caché de shaders transferibles + + + + + A shader cache for this title does not exist. + No existe caché de shaders para este título. + + + + Successfully removed the transferable shader cache. + El caché de shaders transferibles se ha eliminado con éxito. + + + + Failed to remove the transferable shader cache. + Fallo en eliminar la caché de shaders transferibles. + + + + Error Removing Vulkan Driver Pipeline Cache + Error al borrar la caché de canalización del controlador de Vulkan + + + + Failed to remove the driver pipeline cache. + Fallo en eliminar la caché de canalización del controlador. + + + + + Error Removing Transferable Shader Caches + Error en eliminar las cachés de shaders transferibles + + + + Successfully removed the transferable shader caches. + Cachés de shaders transferibles eliminadas con éxito. + + + + Failed to remove the transferable shader cache directory. + Fallo en eliminar el directorio de cachés de shaders transferibles. + + + + + Error Removing Custom Configuration + Error removiendo la configuración personalizada del juego + + + + A custom configuration for this title does not exist. + No existe una configuración personalizada para este título. + + + + Successfully removed the custom game configuration. + Se eliminó con éxito la configuración personalizada del juego. + + + + Failed to remove the custom game configuration. + Fallo en eliminar la configuración personalizada del juego. + + + + Reset Metadata Cache + Reiniciar caché de metadatos + + + + The metadata cache is already empty. + El caché de metadatos ya está vacío. + + + + The operation completed successfully. + La operación se completó con éxito. + + + + The metadata cache couldn't be deleted. It might be in use or non-existent. + El caché de metadatos no se pudo eliminar. Podría estar en uso actualmente o no existe. + + + + Create Shortcut + Crear acceso directo + + + + Do you want to launch the game in fullscreen? + ¿Desea iniciar el juego en pantalla completa? + + + + Shortcut Created + Acceso directo creado + + + + Successfully created a shortcut to %1 + Se ha creado un acceso directo a %1 con éxito + + + + Shortcut may be Volatile! + ¡El acceso directo podría ser volátil! + + + + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? + Esto creará un acceso directo a la AppImage actual. Puede que no funcione bien si actualiza. ¿Continuar? + + + + Failed to Create Shortcut + Fallo al crear el acceso directo + + + + Failed to create a shortcut to %1 + Fallo al crear un acceso directo a %1 + + + + Create Icon + Crear icono + + + + Cannot create icon file. Path "%1" does not exist and cannot be created. + No se puede crear el archivo de icono. La ruta "%1" no existe y no se pudo creer. + + + + No firmware available + No hay firmware disponible + + + + Please install firmware to use the home menu. + Por favor intenta instalar firmware para usar el menu de inicio. + + + + Home Menu Applet + Applet del Menu de Inicio + + + + Home Menu is not available. Please reinstall firmware. + Menu de inicio no esta disponible. Por favor intenta reinstalar firmware. + + + + QtCommon::Mod + + + Mod Name + Nombre del mod + + + + What should this mod be called? + ¿Cómo debería llamarse este mod? + + + + RomFS + RomFS + + + + ExeFS/Patch + ExeFS/Parche + + + + Cheat + Truco + + + + Mod Type + Tipo de mod + + + + Could not detect mod type automatically. Please manually specify the type of mod you downloaded. + +Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods. + No se ha podido detectar automáticamente el tipo de mod. Por favor especifique manualmente el tipo de mod que descargó. + +La mayoría de los mods son RomFS, pero los parches (.pchtxt) suelen ser ExeFS. + + + + + Mod Extract Failed + Fallo al extraer el mod + + + + Failed to create temporary directory %1 + Fallo al crear directorio temporal %1 + + + + Zip file %1 is empty + El archivo zip %1 está vacio + + + + QtCommon::Path + + + Error Opening Shader Cache + Error al abrir la caché de sombreadores. + + + + Failed to create or open shader cache for this title, ensure your app data directory has write permissions. + No se pudo crear o abrir la caché de sombreadores para este título. +Asegúrate de que el directorio de datos de la aplicación tenga permisos de escritura. + + + + QtCommon::StringLookup + + + Contains game save data. DO NOT REMOVE UNLESS YOU KNOW WHAT YOU'RE DOING! + Contiene datos guardados del juego. NO LO ELIMINAS A MENOS QUE SEPAS LO QUE ESTAS HACIENDO! + + + + Contains Vulkan and OpenGL pipeline caches. Generally safe to remove. + Contiene las cachés de las canalizaciones de Vulkan y OpenGL. Normalmente es seguro eliminarlas. + + + + Contains updates and DLC for games. + Contiene actualizaciones y DLC para juegos + + + + Contains firmware and applet data. + Contiene datos del firmware y de las aplicaciones del sistema. + + + + Contains game mods, patches, and cheats. + Contiene mods del juego, parches y trucos. + + + + Decryption Keys were successfully installed + Las llaves de cifrado se instalaron exitosamente. + + + + Unable to read key directory, aborting + No se pudo leer el directorio de claves. Operación cancelada. + + + + One or more keys failed to copy. + No se pudieron copiar una o más llaves. + + + + Verify your keys file has a .keys extension and try again. + Verifica que tu archivo de llaves tenga la extensión .keys e inténtalo nuevamente. + + + + Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. + No se pudieron inicializar las claves de descifrado. +Verifica que tus herramientas de extracción estén actualizadas y vuelve a extraer las claves. + + + + Successfully installed firmware version %1 + Firmware versión %1 instalado correctamente. + + + + Unable to locate potential firmware NCA files + No se pudieron localizar los posibles archivos NCA del firmware. + + + + Failed to delete one or more firmware files. + No se pudo eliminar uno o más archivos del firmware. + + + + One or more firmware files failed to copy into NAND. + Uno o más archivos del firmware no pudieron copiarse en la NAND. + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. Restart Eden or re-install firmware. + Instalación del firmware cancelada. +El firmware podría estar dañado o en un estado incorrecto. +Reinicia Eden o vuelve a instalar el firmware. + + + + Firmware missing. Firmware is required to run certain games and use the Home Menu. + Firmware ausente. El firmware se requiere para ejecutar ciertos juegos y para usar el menú Home. + + + + Firmware reported as present, but was unable to be read. Check for decryption keys and redump firmware if necessary. + El firmware está presente pero no se pudo leer. Verifique las claves de desencriptado y vuelva a volcar el firmware si fuera necesario. + + + + Eden has detected user data for the following emulators: + Eden ha detectado datos de usuario de los siguientes emuladores: + + + + Would you like to migrate your data for use in Eden? +Select the corresponding button to migrate data from that emulator. +This may take a while. + ¿Deseas migrar tus datos para usarlos en Eden? +Selecciona el botón correspondiente para transferir los datos desde ese emulador. +Este proceso puede tardar un poco. + + + + Clearing shader cache is recommended for all users. +Do not uncheck unless you know what you're doing. + Se recomienda borrar la caché de sombreadores para todos los usuarios. +No desmarques esta opción a menos que sepas exactamente lo que estás haciendo. + + + + Keeps the old data directory. This is recommended if you aren't +space-constrained and want to keep separate data for the old emulator. + Conserva el directorio de datos antiguo. +Se recomienda si no tienes limitaciones de espacio y deseas mantener los datos del emulador anterior por separado. + + + + Deletes the old data directory. +This is recommended on devices with space constraints. + Elimina el directorio de datos antiguo. +Se recomienda hacerlo en dispositivos con espacio de almacenamiento limitado. + + + + Creates a filesystem link between the old directory and Eden directory. +This is recommended if you want to share data between emulators. + Crea un enlace del sistema de archivos entre el directorio antiguo y el directorio de Eden. +Se recomienda si deseas compartir datos entre emuladores. + + + + Ryujinx title database does not exist. + La base de datos de títulos de Ryujinx no existe. + + + + Invalid header on Ryujinx title database. + Cabecera inválida en la base de datos de títulos de Ryujinx. + + + + Invalid magic header on Ryujinx title database. + Cabecera mágica inválida en la base de datos de títulos de Ryujinx. + + + + Invalid byte alignment on Ryujinx title database. + Alineación de bytes inválidos en la base de datos de títulos de Ryujinx. + + + + No items found in Ryujinx title database. + No se encontraron entradas en la base de datos de títulos de Ryujinx. + + + + Title %1 not found in Ryujinx title database. + Título %1 no encontrado en la base de datos de títulos de Ryujinx. + + QtControllerSelectorDialog @@ -8958,7 +10164,7 @@ p, li { white-space: pre-wrap; } - + Pro Controller Controlador Pro @@ -8971,7 +10177,7 @@ p, li { white-space: pre-wrap; } - + Dual Joycons Joycons duales @@ -8984,7 +10190,7 @@ p, li { white-space: pre-wrap; } - + Left Joycon Joycon izquierdo @@ -8997,7 +10203,7 @@ p, li { white-space: pre-wrap; } - + Right Joycon Joycon derecho @@ -9026,7 +10232,7 @@ p, li { white-space: pre-wrap; } - + Handheld Portátil @@ -9147,32 +10353,32 @@ p, li { white-space: pre-wrap; } No hay suficientes mandos. - + GameCube Controller Controlador de GameCube - + Poke Ball Plus Poke Ball Plus - + NES Controller Control de NES - + SNES Controller Control de SNES - + N64 Controller Control de N64 - + Sega Genesis Sega Genesis @@ -9180,28 +10386,28 @@ p, li { white-space: pre-wrap; } QtErrorDisplay - - - + + + Error Code: %1-%2 (0x%3) Código de error: %1-%2 (0x%3) - + An error has occurred. Please try again or contact the developer of the software. Ha ocurrido un error. Por favor, inténtalo de nuevo o contacta con el desarrollador del software. - + An error occurred on %1 at %2. Please try again or contact the developer of the software. Ha ocurrido un error en %1 a las %2 Por favor, inténtalo de nuevo o contacta con el desarrollador del software. - + An error has occurred. %1 @@ -9217,7 +10423,7 @@ Por favor, inténtalo de nuevo o contacta con el desarrollador del software. QtProfileSelectionDialog - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -9225,7 +10431,7 @@ Por favor, inténtalo de nuevo o contacta con el desarrollador del software. - + Users Usuarios @@ -9293,7 +10499,7 @@ Por favor, inténtalo de nuevo o contacta con el desarrollador del software. Send save data for which user? - ¿A qué usuario se le enviarán los datos de guardado? + ¿A qué usuario se le enviarán los datos guardados? @@ -9318,7 +10524,7 @@ Por favor, inténtalo de nuevo o contacta con el desarrollador del software.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -9327,17 +10533,59 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - - + + OK Aceptar - + Cancel Cancelar + + RyujinxDialog + + + Ryujinx Link + Enlace a Ryujinx + + + + Linking save data to Ryujinx lets both Ryujinx and Eden reference the same save files for your games. + +By selecting "From Eden", previous save data stored in Ryujinx will be deleted, and vice versa for "From Ryujinx". + Enlazar los datos de guardado con Ryujinx permite a ambos Ryujinx y Eden referenciar los mismos archivos de guardado para sus juegos. + +Seleccionando "Desde Eden", los datos de guardado anteriores alojados en Ryujinx se borrarán, y vice versa para "Desde Ryujinx". + + + + From Eden + Desde Eden + + + + From Ryujinx + Desde Ryujinx + + + + Cancel + Cancelar + + + + Failed to link save data + Fallo al enlazar datos de guardado + + + + OS returned error: %1 + El sistema operativo devolvió el error: %1 + + SequenceDialog @@ -9347,143 +10595,31 @@ p, li { white-space: pre-wrap; } - WaitTreeCallstack + SetPlayTimeDialog - - Call stack - Llamadas acumuladas - - - - WaitTreeSynchronizationObject - - - [%1] %2 - [%1] %2 + + Set Play Time Data + Establece los datos de tiempo de juego. - - waited by no thread - esperado por ningún hilo - - - - WaitTreeThread - - - runnable - ejecutable + + Hours: + Horas: - - paused - en pausa + + Minutes: + Minutos: - - sleeping - reposando + + Seconds: + Segundos: - - waiting for IPC reply - esperando respuesta IPC - - - - waiting for objects - esperando objetos - - - - waiting for condition variable - esperando variable condicional - - - - waiting for address arbiter - esperando al árbitro de dirección - - - - waiting for suspend resume - esperando a reanudar - - - - waiting - esperando - - - - initialized - inicializado - - - - terminated - terminado - - - - unknown - desconocido - - - - PC = 0x%1 LR = 0x%2 - PC = 0x%1 LR = 0x%2 - - - - ideal - ideal - - - - core %1 - núcleo %1 - - - - processor = %1 - procesador = %1 - - - - affinity mask = %1 - máscara de afinidad = %1 - - - - thread id = %1 - id de hilo = %1 - - - - priority = %1(current) / %2(normal) - prioridad = %1(presente) / %2(normal) - - - - last running ticks = %1 - últimos ticks consecutivos = %1 - - - - WaitTreeThreadList - - - waited by thread - esperado por el hilo - - - - WaitTreeWidget - - - &Wait Tree - &Árbol de espera + + Total play time reached maximum. + Se ha alcanzado el límite total de tiempo de juego. diff --git a/dist/languages/fi.ts b/dist/languages/fi.ts index cd75043fcb..f29f994c13 100644 --- a/dist/languages/fi.ts +++ b/dist/languages/fi.ts @@ -1,34 +1,20 @@ - - - + AboutDialog - - About yuzu - Tietoa Yuzu:sta - - - <html><head/><body><p><img src=":/icons/eden.png"/></p></body></html> - <html><head/><body><p><img src=":/icons/eden.png"/></p></body></html> - - - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - - About eden - + About Eden + - <html><head/><body><p><span style=" font-size:28pt;">eden</span></p></body></html> - + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> + <html><head/><body><p>%1 (%2)</p></body></html> - + @@ -38,70 +24,50 @@ p, li { white-space: pre-wrap; } hr { height: 1px; border-width: 0; } li.unchecked::marker { content: "\2610"; } li.checked::marker { content: "\2612"; } -</style></head><body style=" font-family:'Adwaita Sans'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> - +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> + - <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">This software should not be used to play games you have not legally obtained.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu on kokeellinen avoimen lähdekoodin Nintendo Switchille -emulaattori , joka on lisensoitu GPLv3.0+ lisenssillä.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Tätä emulaattoria ei saa käyttää laittomien pelikopioiden pelaamiseen.</span></p></body></html> - - - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/license.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Nettisivu</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Lähdekoodi</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Lahjoittajat</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/license.txt"><span style=" text-decoration: underline; color:#039be5;">Lisenssi</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. eden is not affiliated with Nintendo in any way.</span></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; on Nintendon tuotemerkki. yuzu ei ole sidoksissa Nintendon kanssa.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. Eden is not affiliated with Nintendo in any way.</span></p></body></html> + CalibrationConfigurationDialog - + Communicating with the server... Otetaan yhteyttä palvelimeen... - + Cancel Peruuta - + Touch the top left corner <br>of your touchpad. Kosketa kosketuslevyn vasenta yläreunaa <br> - + Now touch the bottom right corner <br>of your touchpad. Kosketa nyt kosketuslevyn oikeaa alakulmaa <br> - + Configuration completed! Konfiguraatio suoritettu! - + OK OK @@ -111,95 +77,95 @@ p, li { white-space: pre-wrap; } Room Window - + Send Chat Message - + Send Message - + - + Members - + - + %1 has joined - + - + %1 has left - + - + %1 has been kicked - + - + %1 has been banned - + - + %1 has been unbanned - + - + View Profile - + - - + + Block Player - + - + When you block a player, you will no longer receive chat messages from them.<br><br>Are you sure you would like to block %1? - + + + + + Kick + - Kick - + Ban + - - Ban - + + Kick Player + - Kick Player - + Are you sure you would like to <b>kick</b> %1? + - - Are you sure you would like to <b>kick</b> %1? - + + Ban Player + - Ban Player - - - - Are you sure you would like to <b>kick and ban</b> %1? This would ban both their forum username and their IP address. - + @@ -207,40 +173,40 @@ This would ban both their forum username and their IP address. Room Window - + Room Description - + Moderation... - + Leave Room - + ClientRoomWindow - + Connected - + - + Disconnected - + - + %1 - %2 (%3/%4 members) - connected - + @@ -264,163 +230,107 @@ This would ban both their forum username and their IP address. <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">eden Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of eden you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected eden account</li></ul></body></html> - + <html><head/><body><p>Does the game boot?</p></body></html> - + Yes The game starts to output video or audio - + No The game doesn't get past the "Launching..." screen - + Yes The game gets past the intro/menu and into gameplay - + No The game crashes or freezes while loading or using the menu - + <html><head/><body><p>Does the game reach gameplay?</p></body></html> - + Yes The game works without crashes - + No The game crashes or freezes during gameplay - + <html><head/><body><p>Does the game work without crashing, freezing or locking up during gameplay?</p></body></html> - + Yes The game can be finished without any workarounds - + No The game can't progress past a certain area - + <html><head/><body><p>Is the game completely playable from start to finish?</p></body></html> - + Major The game has major graphical errors - + Minor The game has minor graphical errors - + None Everything is rendered as it looks on the Nintendo Switch - + <html><head/><body><p>Does the game have any graphical glitches?</p></body></html> - + Major The game has major audio errors - + Minor The game has minor audio errors - + None Audio is played perfectly - + <html><head/><body><p>Does the game have any audio glitches / missing effects?</p></body></html> - - - - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of yuzu you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected yuzu account</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Kun haluat lähettää testiraportin </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu:n yhteensopivuuslistalle</span></a><span style=" font-size:10pt;">, Sivulla kerätään ja esitetään seuraavat tiedot:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Laitteistoinformaatio (CPU / GPU / Käyttöjärjestelmä)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Käyttämäsi yuzu-emulaattorin versionumero</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Yhdistetty yuzu-tili</li></ul></body></html> - - - Perfect - Täydellinen - - - <html><head/><body><p>Game functions flawlessly with no audio or graphical glitches.</p></body></html> - <html><head/><body><p>Peli toimii täydellisesti ilman ääni- tai grafiikkaongelmia.</p></body></html> - - - Great - Hyvä - - - <html><head/><body><p>Game functions with minor graphical or audio glitches and is playable from start to finish. May require some workarounds.</p></body></html> - <html><head/><body><p>Pelin voi pelata alusta loppuun mutta siinä esiintyy pieniä graafisia tai ääniongelmia. Peli saattaa vaatia toimiakseen lisätoimenpiteitä.</p></body></html> - - - Okay - Välttävä - - - <html><head/><body><p>Game functions with major graphical or audio glitches, but game is playable from start to finish with workarounds.</p></body></html> - Peli on pelattavissa alusta loppuun mutta siinä esiintyy merkittäviä ääni- ja grafiikkaongelmia. - - - Bad - Huono - - - <html><head/><body><p>Game functions, but with major graphical or audio glitches. Unable to progress in specific areas due to glitches even with workarounds.</p></body></html> - <html><head/><body><p>Peli toimii mutta siinä esiintyy merkittäviä ääni- ja grafiikkaongelmia. Peli ei ole pelattavissa alusta loppuun ongelmien vuoksi.</p></body></html> - - - Intro/Menu - Intro/Valikko - - - <html><head/><body><p>Game is completely unplayable due to major graphical or audio glitches. Unable to progress past the Start Screen.</p></body></html> - <html><head/><body><p>Peliä ei voi pelata merkittävien ääni- ja grafiikkaongelmien vuoksi. Pelissä ei pääse aloitusvalikko pidemmälle.</p></body></html> - - - Won't Boot - Ei käynnisty - - - <html><head/><body><p>The game crashes when attempting to startup.</p></body></html> - <html><head/><body><p>Peli kaatuu käynnistettäessä.</p></body></html> - - - <html><head/><body><p>Independent of speed or performance, how well does this game play from start to finish on this version of yuzu?</p></body></html> - <html><head/><body><p>Jos suorituskykä tai pelinopeutta ei oteta huomioon, kuinka hyvin tämä peli toimii tällä yuzu:n versiolla?</p></body></html> + @@ -428,22 +338,22 @@ This would ban both their forum username and their IP address. Kiitos raportistasi! - + Submitting Lähetetään - + Communication error Lähetysvirhe - + An error occurred while sending the Testcase - + - + Next Seuraava @@ -451,1517 +361,1865 @@ This would ban both their forum username and their IP address. ConfigurationShared - + + % + + + + Amiibo editor - + - + Controller configuration - + - + Data erase - + - + Error - + - + Net connect - + - + Player select - + - + Software keyboard - + - + Mii Edit - + - + Online web - + - + Shop - + - + Photo viewer - + - + Offline web - + - + Login share - + - + Wifi web auth - + - + My page - + - + + Enable Overlay Applet + + + + + Enables Horizon's built-in overlay applet. Press and hold the home button for 1 second to show it. + + + + Output Engine: - Äänimoottori + - + Output Device: - + - + Input Device: - + - + Mute audio - + - + Volume: - Äänenvoimakkuus: + - + Mute audio when in background - + - + Multicore CPU Emulation - Moni ydin prosessori emulaatio + - - This option increases CPU emulation thread use from 1 to the Switch’s maximum of 4. -This is mainly a debug option and shouldn’t be disabled. - + + This option increases CPU emulation thread use from 1 to the maximum of 4. +This is mainly a debug option and shouldn't be disabled. + - + Memory Layout - + - - Increases the amount of emulated RAM from the stock 4GB of the retail Switch to the developer kit's 8/6GB. -It’s doesn’t improve stability or performance and is intended to let big texture mods fit in emulated RAM. -Enabling it will increase memory use. It is not recommended to enable unless a specific game with a texture mod needs it. - + + Increases the amount of emulated RAM. +Doesn't affect performance/stability but may allow HD texture mods to load. + - + Limit Speed Percent - Rajoita nopeutta + - - Controls the game's maximum rendering speed, but it’s up to each game if it runs faster or not. + + Controls the game's maximum rendering speed, but it's up to each game if it runs faster or not. 200% for a 30 FPS game is 60 FPS, and for a 60 FPS game it will be 120 FPS. Disabling it means unlocking the framerate to the maximum your PC can reach. - + - + + Turbo Speed + + + + + When the Turbo Speed hotkey is pressed, the speed will be limited to this percentage. + + + + + Slow Speed + + + + + When the Slow Speed hotkey is pressed, the speed will be limited to this percentage. + + + + Synchronize Core Speed - + - - Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). -Compatibility varies by game; many (especially older ones) may not respond well. + + Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). Can help reduce stuttering at lower framerates. - + - + Accuracy: - Tarkkuus: + - - This setting controls the accuracy of the emulated CPU. -Don't change this unless you know what you are doing. - + + Change the accuracy of the emulated CPU (for debugging only). + - - + + Backend: - + - - Fast CPU Time - + + CPU Overclock + - + Overclocks the emulated CPU to remove some FPS limiters. Weaker CPUs may see reduced performance, and certain games may behave improperly. Use Boost (1700MHz) to run at the Switch's highest native clock, or Fast (2000MHz) to run at 2x clock. - + - + + Custom CPU Ticks + + + + + Set a custom value of CPU ticks. Higher values can increase performance, but may cause deadlocks. A range of 77-21000 is recommended. + + + + + Enable Host MMU Emulation (fastmem) + + + + + This optimization speeds up memory accesses by the guest program. +Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU. +Disabling this forces all memory accesses to use Software MMU Emulation. + + + + Unfuse FMA (improve performance on CPUs without FMA) - Epävakaa FMA (parantaa CPU:n suorituskykyä ilman FMA:ta) + - + This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support. - + - + Faster FRSQRTE and FRECPE - Nopeampi FRSQRTE ja FRECPE + - + This option improves the speed of some approximate floating-point functions by using less accurate native approximations. - + - + Faster ASIMD instructions (32 bits only) - + - + This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes. - + - + Inaccurate NaN handling - + - + This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions. - + - + Disable address space checks - + - - This option improves speed by eliminating a safety check before every memory read/write in guest. -Disabling it may allow a game to read/write the emulator's memory. - + + This option improves speed by eliminating a safety check before every memory operation. +Disabling it may allow arbitrary code execution. + - + Ignore global monitor - + - + 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. - + - + API: - + - - Switches between the available graphics APIs. -Vulkan is recommended in most cases. - + + Changes the output graphics API. +Vulkan is recommended. + - + Device: - + - - This setting selects the GPU to use with the Vulkan backend. - + + This setting selects the GPU to use (Vulkan only). + - - Shader Backend: - - - - - The shader backend to use for the OpenGL renderer. -GLSL is the fastest in performance and the best in rendering accuracy. -GLASM is a deprecated NVIDIA-only backend that offers much better shader building performance at the cost of FPS and rendering accuracy. -SPIR-V compiles the fastest, but yields poor results on most GPU drivers. - - - - + Resolution: - + - - Forces the game to render at a different resolution. -Higher resolutions require much more VRAM and bandwidth. -Options lower than 1X can cause rendering issues. - + + Forces to render at a different resolution. +Higher resolutions require more VRAM and bandwidth. +Options lower than 1X can cause artifacts. + - + Window Adapting Filter: - + - + FSR Sharpness: - + - - Determines how sharpened the image will look while using FSR’s dynamic contrast. - + + Determines how sharpened the image will look using FSR's dynamic contrast. + - + Anti-Aliasing Method: - + - + The anti-aliasing method to use. SMAA offers the best quality. -FXAA has a lower performance impact and can produce a better and more stable picture under very low resolutions. - +FXAA can produce a more stable picture in lower resolutions. + - + Fullscreen Mode: - + - + The method used to render the window in fullscreen. Borderless offers the best compatibility with the on-screen keyboard that some games request for input. Exclusive fullscreen may offer better performance and better Freesync/Gsync support. - + - + Aspect Ratio: - + - - Stretches the game to fit the specified aspect ratio. -Switch games only support 16:9, so custom game mods are required to get other ratios. + + Stretches the renderer to fit the specified aspect ratio. +Most games only support 16:9, so modifications are required to get other ratios. Also controls the aspect ratio of captured screenshots. - + - - Use disk pipeline cache - + + Use persistent pipeline cache + - + Allows saving shaders to storage for faster loading on following game boots. Disabling it is only intended for debugging. - + - - Optimize SPIRV output shader - + + Optimize SPIRV output + - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. This feature is experimental. - + - - Use asynchronous GPU emulation - - - - - Uses an extra CPU thread for rendering. -This option should always remain enabled. - - - - + NVDEC emulation: - + - + Specifies how videos should be decoded. It can either use the CPU or the GPU for decoding, or perform no decoding at all (black screen on videos). In most cases, GPU decoding provides the best performance. - + - + ASTC Decoding Method: - + - + This option controls how ASTC textures should be decoded. -CPU: Use the CPU for decoding, slowest but safest method. -GPU: Use the GPU's compute shaders to decode ASTC textures, recommended for most games and users. -CPU Asynchronously: Use the CPU to decode ASTC textures as they arrive. Completely eliminates ASTC decoding -stuttering at the cost of rendering issues while the texture is being decoded. - +CPU: Use the CPU for decoding. +GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). +CPU Asynchronously: Use the CPU to decode ASTC textures on demand. EliminatesASTC decoding +stuttering but may present artifacts. + - + ASTC Recompression Method: - + - - Almost all desktop and laptop dedicated GPUs lack support for ASTC textures, forcing the emulator to decompress to an intermediate format any card supports, RGBA8. -This option recompresses RGBA8 to either the BC1 or BC3 format, saving VRAM but negatively affecting image quality. - + + Most GPUs lack support for ASTC textures and must decompress to anintermediate format: RGBA8. +BC1/BC3: The intermediate format will be recompressed to BC1 or BC3 format, + saving VRAM but degrading image quality. + - + + Frame Pacing Mode (Vulkan only) + + + + + Controls how the emulator manages frame pacing to reduce stuttering and make the frame rate smoother and more consistent. + + + + VRAM Usage Mode: - + - - Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. Has no effect on integrated graphics. Aggressive mode may severely impact the performance of other applications such as recording software. - + + Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. +Aggressive mode may impact performance of other applications such as recording software. + - + + Skip CPU Inner Invalidation + + + + + Skips certain cache invalidations during memory updates, reducing CPU usage and improving latency. This may cause soft-crashes. + + + + VSync Mode: - + - + FIFO (VSync) does not drop frames or exhibit tearing but is limited by the screen refresh rate. -FIFO Relaxed is similar to FIFO but allows tearing as it recovers from a slow down. +FIFO Relaxed 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. - +Immediate (no synchronization) presents whatever is available and can exhibit tearing. + - + + Sync Memory Operations + + + + + Ensures data consistency between compute and memory operations. +This option fixes issues in games, but may degrade performance. +Unreal Engine 4 games often see the most significant changes thereof. + + + + Enable asynchronous presentation (Vulkan only) - + - + Slightly improves performance by moving presentation to a separate CPU thread. - + - + Force maximum clocks (Vulkan only) - + - + Runs work in the background while waiting for graphics commands to keep the GPU from lowering its clock speed. - + - + Anisotropic Filtering: - + - + Controls the quality of texture rendering at oblique angles. -It’s a light setting and safe to set at 16x on most GPUs. - +Safe to set at 16x on most GPUs. + - - Accuracy Level: - + + GPU Mode: + - - GPU emulation accuracy. -Most games render fine with Normal, but High is still required for some. -Particles tend to only render correctly with High accuracy. -Extreme should only be used for debugging. -This option can be changed while playing. -Some games may require booting on high to render properly. - + + Controls the GPU emulation mode. +Most games render fine with Fast or Balanced modes, but Accurate is still required for some. +Particles tend to only render correctly with Accurate mode. + - - Use asynchronous shader building (Hack) - + + DMA Accuracy: + - - Enables asynchronous shader compilation, which may reduce shader stutter. -This feature is experimental. - + + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. + - - Fast GPU Time (Hack) - + + Enable asynchronous shader compilation + - + + May reduce shader stutter. + + + + + Fast GPU Time + + + + Overclocks the emulated GPU to increase dynamic resolution and render distance. -Use 128 for maximal performance and 512 for maximal graphics fidelity. - +Use 256 for maximal performance and 512 for maximal graphics fidelity. + - + + GPU Unswizzle + + + + + Accelerates BCn 3D texture decoding using GPU compute. +Disable if experiencing crashes or graphical glitches. + + + + + GPU Unswizzle Max Texture Size + + + + + Sets the maximum size (MiB) for GPU-based texture unswizzling. +While the GPU is faster for medium and large textures, the CPU may be more efficient for very small ones. +Adjust this to find the balance between GPU acceleration and CPU overhead. + + + + + GPU Unswizzle Stream Size + + + + + Sets the maximum amount of texture data (in MiB) processed per frame. +Higher values can reduce stutter during texture loading but may impact frame consistency. + + + + + GPU Unswizzle Chunk Size + + + + + Determines the number of depth slices processed in a single dispatch. +Increasing this can improve throughput on high-end GPUs but may cause TDR or driver timeouts on weaker hardware. + + + + Use Vulkan pipeline cache - + - + Enables GPU vendor-specific pipeline cache. This option can improve shader loading time significantly in cases where the Vulkan driver does not store pipeline cache files internally. - + - + Enable Compute Pipelines (Intel Vulkan Only) - + - - Enable compute pipelines, required by some games. -This setting only exists for Intel proprietary drivers, and may crash if enabled. + + 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. - + - + Enable Reactive Flushing - + - + Uses reactive flushing instead of predictive flushing, allowing more accurate memory syncing. - + - + Sync to framerate of video playback - + - + Run the game at normal speed during video playback, even when the framerate is unlocked. - + - + Barrier feedback loops - + - + Improves rendering of transparency effects in specific games. - + - + + Enable buffer history + + + + + Enables access to previous buffer states. +This option may improve rendering quality and performance consistency in some games. + + + + + Fix bloom effects + + + + + Removes bloom in Burnout. + + + + + Enable Legacy Rescale Pass + + + + + May fix rescale issues in some games by relying on behavior from the previous implementation. +Legacy behavior workaround that fixes line artifacts on AMD and Intel GPUs, and grey texture flicker on Nvidia GPUs in Luigis Mansion 3. + + + + Extended Dynamic State - + - - Enables the VkExtendedDynamicState* extensions. -Higher dynamic states will generally improve performance, but may cause issues on certain games or devices. - + + Controls the number of features that can be used in Extended Dynamic State. +Higher states allow for more features and can increase performance, but may cause additional graphical issues. + - - Provoking Vertex - + + Vertex Input Dynamic State + - - Improves lighting and vertex handling in certain games. -Only Vulkan 1.0+ devices support this extension. - + + Enables vertex input dynamic state feature for better quality and performance. + - - Descriptor Indexing - + + Sample Shading + - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - + + Allows the fragment shader to execute per sample in a multi-sampled fragment instead of once per fragment. Improves graphics quality at the cost of performance. +Higher values improve quality but degrade performance. + - + RNG Seed - RNG siemen + - + Controls the seed of the random number generator. -Mainly used for speedrunning purposes. - +Mainly used for speedrunning. + - + Device Name - + - - The name of the emulated Switch. - + + The name of the console. + - + Custom RTC Date: - + - - This option allows to change the emulated clock of the Switch. + + This option allows to change the clock of the console. Can be used to manipulate time in games. - + - + + The number of seconds from the current unix time + + + + Language: - + - - Note: this can be overridden when region setting is auto-select - Huomio: tämä voidaan yliajaa kun alueasetus on automaattisella valinnalla + + This option can be overridden when region setting is auto-select + - + Region: - + - - The region of the emulated Switch. - + + The region of the console. + - + Time Zone: - + - - The time zone of the emulated Switch. - + + The time zone of the console. + - + Sound Output Mode: - + - + Console Mode: - + - - Selects if the console is emulated in Docked or Handheld mode. + + Selects if the console is in Docked or Handheld mode. Games will change their resolution, details and supported controllers and depending on this setting. Setting to Handheld can help improve performance for low end systems. - + - - Prompt for user on game boot - + + Unit Serial + - - Ask to select a user profile on each boot, useful if multiple people use eden on the same PC. - + + Battery Serial + - - Pause emulation when in background - + + Debug knobs + - - This setting pauses eden when focusing other windows. - + + Prompt for user profile on boot + - + + Useful if multiple people use the same PC. + + + + + Pause when not in focus + + + + + Pauses emulation when focusing on other windows. + + + + Confirm before stopping emulation - + - - This setting overrides game prompts asking to confirm stopping the game. + + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - + - + Hide mouse on inactivity - + - - This setting hides the mouse after 2.5s of inactivity. - + + Hides the mouse after 2.5s of inactivity. + - + Disable controller applet - + - - Forcibly disables the use of the controller applet by guests. -When a guest attempts to open the controller applet, it is immediately closed. - + + Forcibly disables the use of the controller applet in emulated programs. +When a program attempts to open the controller applet, it is immediately closed. + - + Check for updates - + - + Whether or not to check for updates upon startup. - + - + Enable Gamemode - + - + + Force X11 as Graphics Backend + + + + Custom frontend - + - + Real applet - + - + Never - + - + On Load - + - + Always - + - + CPU - CPU (prosessori) + - + GPU - + - + CPU Asynchronous - + - + Uncompressed (Best quality) - + - + BC1 (Low quality) - + - + BC3 (Medium quality) - + - - Conservative - - - - - Aggressive - - - - - OpenGL - - - - - Vulkan - - - - - Null - - - - - GLSL - - - - - GLASM (Assembly Shaders, NVIDIA Only) - - - - - SPIR-V (Experimental, AMD/Mesa Only) - - - - - Normal - - - - - High - - - - - Extreme - - - - + + Auto - + - + + 30 FPS + + + + + 60 FPS + + + + + 90 FPS + + + + + 120 FPS + + + + + Conservative + + + + + Aggressive + + + + + Vulkan + + + + + OpenGL GLSL + + + + + OpenGL GLASM (Assembly Shaders, NVIDIA Only) + + + + + OpenGL SPIR-V (Experimental, AMD/Mesa Only) + + + + + Null + + + + + Fast + + + + + Balanced + + + + + Accurate - Tarkka + - - Unsafe - Epävakaa - - - - Paranoid (disables most optimizations) - - - - - Dynarmic - - - - - NCE - - - - - Borderless Windowed - - - - - Exclusive Fullscreen - - - - - No Video Output - - - - - CPU Video Decoding - - - - - GPU Video Decoding (Default) - - - - - 0.25X (180p/270p) [EXPERIMENTAL] - - - - - 0.5X (360p/540p) [EXPERIMENTAL] - - - - - 0.75X (540p/810p) [EXPERIMENTAL] - - - - - 1X (720p/1080p) - - - - - 1.5X (1080p/1620p) [EXPERIMENTAL] - - - - - 2X (1440p/2160p) - - - - - 3X (2160p/3240p) - - - - - 4X (2880p/4320p) - - - - - 5X (3600p/5400p) - - - - - 6X (4320p/6480p) - - - - - 7X (5040p/7560p) - - - - - 8X (5760p/8640p) - - - - - Nearest Neighbor - - - - - Bilinear - - - - - Bicubic - - - - - Gaussian - - - - - ScaleForce - - - - - AMD FidelityFX™️ Super Resolution - - - - - Area - - - - - None - None - - - - FXAA - - - - - SMAA - - - - - Default (16:9) - - - - - Force 4:3 - - - - - Force 21:9 - - - - - Force 16:10 - - - - - Stretch to Window - - - - - Automatic - - - - + + Default - + - + + Unsafe (fast) + + + + + Safe (stable) + + + + + Unsafe + + + + + Paranoid (disables most optimizations) + + + + + Debugging + + + + + Dynarmic + + + + + NCE + + + + + Borderless Windowed + + + + + Exclusive Fullscreen + + + + + No Video Output + + + + + CPU Video Decoding + + + + + GPU Video Decoding (Default) + + + + + 0.25X (180p/270p) [EXPERIMENTAL] + + + + + 0.5X (360p/540p) [EXPERIMENTAL] + + + + + 0.75X (540p/810p) [EXPERIMENTAL] + + + + + 1X (720p/1080p) + + + + + 1.25X (900p/1350p) [EXPERIMENTAL] + + + + + 1.5X (1080p/1620p) [EXPERIMENTAL] + + + + + 2X (1440p/2160p) + + + + + 3X (2160p/3240p) + + + + + 4X (2880p/4320p) + + + + + 5X (3600p/5400p) + + + + + 6X (4320p/6480p) + + + + + 7X (5040p/7560p) + + + + + 8X (5760p/8640p) + + + + + Nearest Neighbor + + + + + Bilinear + + + + + Bicubic + + + + + Gaussian + + + + + Lanczos + + + + + ScaleForce + + + + + AMD FidelityFX Super Resolution + + + + + Area + + + + + MMPX + + + + + Zero-Tangent + + + + + B-Spline + + + + + Mitchell + + + + + Spline-1 + + + + + + None + + + + + FXAA + + + + + SMAA + + + + + Default (16:9) + + + + + Force 4:3 + + + + + Force 21:9 + + + + + Force 16:10 + + + + + Stretch to Window + + + + + Automatic + + + + 2x - + - + 4x - + - + 8x - + - + 16x - + - + + 32x + + + + + 64x + + + + Japanese (日本語) - + - + American English - + - + French (français) - + - + German (Deutsch) - + - + Italian (italiano) - + - + Spanish (español) - + - + Chinese - + - + Korean (한국어) - + - + Dutch (Nederlands) - + - + Portuguese (português) - + - + Russian (Русский) - + - + Taiwanese - + - + British English - + - + Canadian French - + - + Latin American Spanish - + - + Simplified Chinese - + - + Traditional Chinese (正體中文) - + - + Brazilian Portuguese (português do Brasil) - + - - + + Polish (polska) + + + + + Thai (แบบไทย) + + + + + Japan - + - + USA - + - + Europe - + - + Australia - + - + China - + - + Korea - + - + Taiwan - + - + Auto (%1) Auto select time zone - + - + Default (%1) Default time zone - + - + CET - + - + CST6CDT - + - + Cuba - + - + EET - + - + Egypt - + - + Eire - + - + EST - + - + EST5EDT - + - + GB - + - + GB-Eire - + - + GMT - + - + GMT+0 - + - + GMT-0 - + - + GMT0 - + - + Greenwich - + - + Hongkong - + - + HST - + - + Iceland - + - + Iran - + - + Israel - + - + Jamaica - + - + Kwajalein - + - + Libya - + - + MET - + - + MST - + - + MST7MDT - + - + Navajo - + - + NZ - + - + NZ-CHAT - + - + Poland - + - + Portugal - + - + PRC - + - + PST8PDT - + - + ROC - + - + ROK - + - + Singapore - + - + Turkey - + - + UCT - + - + Universal - + - + UTC - + - + W-SU - + - + WET - + - + Zulu - + - + Mono - Mono + - + Stereo - Stereo + - + Surround - Surround + - + 4GB DRAM (Default) - + - + 6GB DRAM (Unsafe) - + - + 8GB DRAM - + - + 10GB DRAM (Unsafe) - + - + 12GB DRAM (Unsafe) - + - + Docked - + - + Handheld - Käsikonsolimoodi + - + + + Off + + + + Boost (1700MHz) - + - + Fast (2000MHz) - + - + Always ask (Default) - + - + Only if game specifies not to stop - + - + Never ask - + - - Low (128) - - - - + + Medium (256) - + - + + High (512) - + - - % - % + + Very Small (16 MB) + + + + + Small (32 MB) + + + + + Normal (128 MB) + + + + + Large (256 MB) + + + + + Very Large (512 MB) + + + + + Very Low (4 MB) + + + + + Low (8 MB) + + + + + Normal (16 MB) + + + + + Medium (32 MB) + + + + + High (64 MB) + + + + + Very Low (32) + + + + + Low (64) + + + + + Normal (128) + + + + + Disabled + + + + + ExtendedDynamicState 1 + + + + + ExtendedDynamicState 2 + + + + + ExtendedDynamicState 3 + + + + + Tree View + + + + + Grid View + @@ -1969,17 +2227,17 @@ When a guest attempts to open the controller applet, it is immediately closed. Form - Muoto + Applets - + Applet mode preference - + @@ -1990,82 +2248,53 @@ When a guest attempts to open the controller applet, it is immediately closed.Audio Ääni - - Output Engine: - Äänimoottori - - - Audio Device: - Äänilaite: - - - Use global volume - Käytä globaalia äänenvoimakkuutta - - - Set volume: - Määritä äänenvoimakkuus: - - - Volume: - Äänenvoimakkuus: - - - 0 % - 0 % - - - %1% - Volume percentage (e.g. 50%) - %1% - ConfigureCamera Configure Infrared Camera - + Select where the image of the emulated camera comes from. It may be a virtual camera or a real camera. - + Camera Image Source: - + Input device: - + Preview - + Resolution: 320*240 - + Click to preview - + Restore Defaults - Palauta oletukset + - + Auto - + @@ -2085,27 +2314,15 @@ When a guest attempts to open the controller applet, it is immediately closed.General Yleiset - - Accuracy: - Tarkkuus: - - - Accurate - Tarkka - - - Unsafe - Epävakaa - We recommend setting accuracy to "Auto". - + CPU Backend - + @@ -2117,32 +2334,6 @@ When a guest attempts to open the controller applet, it is immediately closed.These settings reduce accuracy for speed. Nämä asetukset heikentävät nopeuden tarkkuutta. - - - <div>This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support.</div> - - - <div>Tämä asetus parantaa nopeutta vähentämällä sulautettujen ja kerrottujen lisäysten ohjeiden tarkkuutta suorittimissa, joissa ei ole natiivia FMA-tukea</div> - - - Unfuse FMA (improve performance on CPUs without FMA) - Epävakaa FMA (parantaa CPU:n suorituskykyä ilman FMA:ta) - - - - <div>This option improves the speed of some approximate floating-point functions by using less accurate native approximations.</div> - - -<div> Tämä asetus parantaa joidenkin likimääräisten liukulukufunktioiden nopeutta käyttämällä vähemmän tarkkoja natiiviarvioita</div> - - - Faster FRSQRTE and FRECPE - Nopeampi FRSQRTE ja FRECPE - - - CPU settings are available only when game is not running. - CPU-asetukset ovat saatavilla vain silloin, kun peli ei ole käynnissä. - ConfigureCpuDebug @@ -2164,7 +2355,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <html><head/><body><p><span style=" font-weight:600;">For debugging only.</span><br/>If you're not sure what these do, keep all of these enabled. <br/>These settings, when disabled, only take effect when CPU Debugging is enabled. </p></body></html> - + @@ -2173,12 +2364,12 @@ When a guest attempts to open the controller applet, it is immediately closed. - + Enable inline page tables -   +   Ota sisäiset sivutaulukot käyttöön @@ -2186,7 +2377,7 @@ Ota sisäiset sivutaulukot käyttöön <div>This optimization avoids dispatcher lookups by allowing emitted basic blocks to jump directly to other basic blocks if the destination PC is static.</div> - + @@ -2198,55 +2389,55 @@ Ota sisäiset sivutaulukot käyttöön <div>This optimization avoids dispatcher lookups by keeping track potential return addresses of BL instructions. This approximates what happens with a return stack buffer on a real CPU.</div> - + Enable return stack buffer - + <div>Enable a two-tiered dispatch system. A faster dispatcher written in assembly has a small MRU cache of jump destinations is used first. If that fails, dispatch falls back to the slower C++ dispatcher.</div> - + Enable fast dispatcher - + <div>Enables an IR optimization that reduces unnecessary accesses to the CPU context structure.</div> - + Enable context elimination - + <div>Enables IR optimizations that involve constant propagation.</div> - + Enable constant propagation - + <div>Enables miscellaneous IR optimizations.</div> - + @@ -2259,40 +2450,40 @@ Ota sisäiset sivutaulukot käyttöön <div style="white-space: nowrap">When enabled, a misalignment is only triggered when an access crosses a page boundary.</div> <div style="white-space: nowrap">When disabled, a misalignment is triggered on all misaligned accesses.</div> - + Enable misalignment check reduction - + <div style="white-space: nowrap">This optimization speeds up memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all memory accesses to use Software MMU Emulation.</div> - + Enable Host MMU Emulation (general memory instructions) - + <div style="white-space: nowrap">This optimization speeds up exclusive memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all exclusive memory accesses to use Software MMU Emulation.</div> - + Enable Host MMU Emulation (exclusive memory instructions) - + @@ -2300,25 +2491,25 @@ Ota sisäiset sivutaulukot käyttöön <div style="white-space: nowrap">This optimization speeds up exclusive memory accesses by the guest program.</div> <div style="white-space: nowrap">Enabling it reduces the overhead of fastmem failure of exclusive memory accesses.</div> - + Enable recompilation of exclusive memory instructions - + <div style="white-space: nowrap">This optimization speeds up memory accesses by allowing invalid memory accesses to succeed.</div> - <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> + <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> - + Enable fallbacks for invalid memory accesses - + @@ -2328,50 +2519,50 @@ Ota sisäiset sivutaulukot käyttöön ConfigureDebug + + + Debugger + + + + + Enable GDB Stub + + + + + Port: + + Logging Lokitiedosto - + Global Log Filter Lokitiedoston filtteri - - Show Log in Console - - - - - Open Log Location - Avaa lokitiedoston sijainti - - - - Debugger - - - - - Enable GDB Stub - - - - - Port: - Portti: - - - + When checked, the max size of the log increases from 100 MB to 1 GB - + + + + + Enable Extended Logging** + - Enable Extended Logging** - + Show Log in Console + + + + + Open Log Location + Avaa lokitiedoston sijainti @@ -2388,171 +2579,131 @@ Ota sisäiset sivutaulukot käyttöön Graphics Grafiikat + + + When checked, it executes shaders without loop logic changes + + + + + Disable Loop safety checks + + When checked, it will dump all the macro programs of the GPU - + Dump Maxwell Macros - - - - - Enable Renderdoc Hotkey - - - - - When checked, it disables the macro HLE functions. Enabling this makes games run slower - - - - - Disable Macro HLE - - - - - When checked, the graphics API enters a slower debugging mode - - - - - Enable Graphics Debugging - Ota käyttöön grafiikkavirheenjäljitys - - - - Censor username in logs - - - - - **This will be reset automatically when eden closes. - + When checked, it enables Nsight Aftermath crash dumps - + Enable Nsight Aftermath - + When checked, it will dump all the original assembler shaders from the disk shader cache or game as found - + Dump Game Shaders - + + + + + Enable Renderdoc Hotkey + When checked, it disables the macro Just In Time compiler. Enabling this makes games run slower - + Disable Macro JIT Poista Macro JIT käytöstä + + + When checked, it disables the macro HLE functions. Enabling this makes games run slower + + + + + Disable Macro HLE + + + + + When checked, the graphics API enters a slower debugging mode + + + + + Enable Graphics Debugging + Ota käyttöön grafiikkavirheenjäljitys + When checked, yuzu will log statistics about the compiled pipeline cache - + Enable Shader Feedback - - - - - When checked, it executes shaders without loop logic changes - - - - - Disable Loop safety checks - + <html><head/><body><p>When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.</p></body></html> - + Disable Buffer Reorder - - - - - 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. - - - - - Perform Startup Vulkan Check - - - - - Disable Web Applet - - - - - Enable All Controller Types - - - - - Enable Auto-Stub - - - - - Debugging - Virheenjäljitys - - - - Enable this to output the latest generated audio command list to the console. Only affects games using the audio renderer. - - - - - Dump Audio Commands To Console** - - - - - Flush log output on each line - - - - - Enable FS Access Log - - - - - Enable Verbose Reporting Services** - + Advanced Edistyneet asetukset + + + 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. + + + + + Perform Startup Vulkan Check + + + + + Disable Web Applet + + + + + Enable All Controller Types + + + + + Enable Auto-Stub + + Kiosk (Quest) Mode @@ -2560,18 +2711,88 @@ Ota sisäiset sivutaulukot käyttöön - Enable CPU Debugging - + Use dev.keys + Enable Debug Asserts - + - - Web applet not compiled - + + Debugging + Virheenjäljitys + + + + Battery Serial: + + + + + Bitmask for quick development toggles + + + + + Set debug knobs (bitmask) + + + + + 16-bit debug knob set for quick development toggles + + + + + (bitmask) + + + + + Debug Knobs: + + + + + Unit Serial: + + + + + Enable this to output the latest generated audio command list to the console. Only affects games using the audio renderer. + + + + + Dump Audio Commands To Console** + + + + + Flush log output on each line + + + + + Enable FS Access Log + + + + + Enable Verbose Reporting Services** + + + + + Censor username in logs + + + + + **This will be reset automatically when Eden closes. + @@ -2613,105 +2834,101 @@ Ota sisäiset sivutaulukot käyttöön ConfigureDialog - - yuzu Configuration - yuzu asetukset - - - - Applets - - - - - - Audio - Ääni - - - - - CPU - CPU (prosessori) - - - - Debug - Debuggaus - - - - Filesystem - Tietojärjestelmä - - - - - General - Yleiset - - - - - Graphics - Grafiikka - - - - GraphicsAdvanced - Edistyneet grafiikka-asetukset - - - - GraphicsExtensions - - - - - Hotkeys - Pikanäppäimet - - - - - Controls - Ohjainmääritykset - - - - Profiles - Profiilit - - - - Network - - - - - - System - Järjestelmä - - - - Game List - Pelilista - - - - Web - Web - - eden Configuration - + Eden Configuration + Some settings are only available when a game is not running. - + + + + + Applets + + + + + + Audio + Ääni + + + + + CPU + CPU (prosessori) + + + + Debug + Debuggaus + + + + Filesystem + Tietojärjestelmä + + + + + General + Yleiset + + + + + Graphics + Grafiikka + + + + GraphicsAdvanced + Edistyneet grafiikka-asetukset + + + + GraphicsExtra + + + + + Hotkeys + Pikanäppäimet + + + + + Controls + Ohjainmääritykset + + + + Profiles + Profiilit + + + + Network + + + + + + System + Järjestelmä + + + + Game List + Pelilista + + + + Web + Web @@ -2729,7 +2946,7 @@ Ota sisäiset sivutaulukot käyttöön Storage Directories - + @@ -2739,119 +2956,196 @@ Ota sisäiset sivutaulukot käyttöön - - - + + + + ... ... SD Card - + - + + Save Data + + + + Gamecard - - - - - Path - - - - - Inserted - + + Path + + + + + Inserted + + + + Current Game Tämän hetkinen peli - + Patch Manager - + - + Dump Decompressed NSOs Dumppaa puretut NSO:t - + Dump ExeFS Dumppaa ExeFS - + Mod Load Root - + - + Dump Root - + - + Caching - + - + Cache Game List Metadata - + - - - - + Reset Metadata Cache - - - - - Select Emulated NAND Directory... - - - - - Select Emulated SD Directory... - - - - - Select Gamecard Path... - - - - - Select Dump Directory... - + + Select Emulated NAND Directory... + + + + + Select Emulated SD Directory... + + + + + + Select Save Data Directory... + + + + + Select Gamecard Path... + + + + + Select Dump Directory... + + + + Select Mod Load Directory... - + - - The metadata cache is already empty. - + + Save Data Directory + - - The operation completed successfully. - Operaatio suoritettiin onnistuneesti. + + Choose an action for the save data directory: + - - The metadata cache couldn't be deleted. It might be in use or non-existent. - + + Set Custom Path + + + + + Reset to NAND + + + + + Save data exists in both the old and new locations. + +Old: %1 +New: %2 + +Would you like to migrate saves from the old location? +WARNING: This will overwrite any conflicting saves in the new location! + + + + + Would you like to migrate your save data to the new location? + +From: %1 +To: %2 + + + + + Migrate Save Data + + + + + Migrating save data... + + + + + Cancel + + + + + + Migration Failed + + + + + Failed to create destination directory. + + + + + Failed to migrate save data: +%1 + + + + + Migration Complete + + + + + Save data has been migrated successfully. + +Would you like to delete the old save data? + @@ -2869,43 +3163,53 @@ Ota sisäiset sivutaulukot käyttöön - Linux - + External Content + - Limit Speed Percent - Rajoita nopeutta + + Add directories to scan for DLCs and Updates without installing to NAND + - % - % + + Add Directory + - Multicore CPU Emulation - Moni ydin prosessori emulaatio + + Remove Selected + - Confirm exit while emulation is running - Vahvista emulaattorin sulkeminen kun emulointi on käynnissä - - - + Reset All Settings - + - yuzu - yuzu + + Eden + - - eden - - - - + This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed? - + + + + + Select External Content Directory... + + + + + Directory Already Added + + + + + This directory is already in the list. + @@ -2923,16 +3227,12 @@ Ota sisäiset sivutaulukot käyttöön API Settings - + Graphics Settings - - - - None - None + @@ -2940,35 +3240,35 @@ Ota sisäiset sivutaulukot käyttöön Taustan väri: - + % FSR sharpening percentage (e.g. 50%) - % + - + Off - + - + VSync Off - + - + Recommended - + - + On - + - + VSync On - + @@ -2984,9 +3284,9 @@ Ota sisäiset sivutaulukot käyttöön Edistyneet asetukset - + Advanced Graphics Settings - + @@ -2994,24 +3294,38 @@ Ota sisäiset sivutaulukot käyttöön Form - Muoto + - Extensions - + Extras + - - Vulkan Extension Settings - + + Hacks + - - While it's recommended to use state 3, some games may perform better on lower states. Setting to 0 (disabled) may also break games. -If your GPU is older (i.e. RX570/580 or older), it may not support these features. If this is the case, set the slider to 0 and uncheck all boxes. -These settings are experimental, and may cause black screens. If your games fail to boot or are stuck on a black screen, change these settings around. - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + + + + + % + Sample Shading percentage (e.g. 50%) + + + + + Extended Dynamic State is disabled on macOS due to MoltenVK compatibility issues that cause black screens. + @@ -3029,7 +3343,7 @@ These settings are experimental, and may cause black screens. If your games fail Double-click on a binding to change it. - + @@ -3042,77 +3356,77 @@ These settings are experimental, and may cause black screens. If your games fail Palauta oletukset - + Action Toiminto - + Hotkey Pikanäppäin - + Controller Hotkey - + - - - + + + Conflicting Key Sequence - + - - + + The entered key sequence is already assigned to: %1 - + - + [waiting] - + - + Invalid - + - + Invalid hotkey settings - + - + An error occurred. Please report this issue on github. - + - + Restore Default Palauta oletus - + Clear Tyhjennä - + Conflicting Button Sequence - + - + The default button sequence is already assigned to: %1 - + - + The default key sequence is already assigned to: %1 - + @@ -3120,7 +3434,7 @@ These settings are experimental, and may cause black screens. If your games fail ConfigureInput - + @@ -3179,22 +3493,22 @@ These settings are experimental, and may cause black screens. If your games fail Console Mode - + Docked - + Handheld - Käsikonsolimoodi + Vibration - + @@ -3205,57 +3519,57 @@ These settings are experimental, and may cause black screens. If your games fail Motion - + Controllers - + 1 - + 2 - + 3 - + 4 - + 5 - + 6 - + 7 - + 8 - + Connected - + @@ -3278,7 +3592,7 @@ These settings are experimental, and may cause black screens. If your games fail Joycon Colors - + @@ -3295,7 +3609,7 @@ These settings are experimental, and may cause black screens. If your games fail L Body - + @@ -3307,7 +3621,7 @@ These settings are experimental, and may cause black screens. If your games fail L Button - + @@ -3319,7 +3633,7 @@ These settings are experimental, and may cause black screens. If your games fail R Body - + @@ -3331,7 +3645,7 @@ These settings are experimental, and may cause black screens. If your games fail R Button - + @@ -3371,7 +3685,7 @@ These settings are experimental, and may cause black screens. If your games fail Emulated Devices - + @@ -3409,12 +3723,12 @@ These settings are experimental, and may cause black screens. If your games fail Ring Controller - + Infrared Camera - + @@ -3424,58 +3738,54 @@ These settings are experimental, and may cause black screens. If your games fail Emulate Analog with Keyboard Input - + - Requires restarting eden - - - - - Enable direct JoyCon driver - - - - - Enable direct Pro Controller driver [EXPERIMENTAL] - - - - - Allows unlimited uses of the same Amiibo in games that would otherwise limit you to one use. - - - - - Use random Amiibo ID - + Requires restarting Eden + Enable XInput 8 player support (disables web applet) - + Enable UDP controllers (not needed for motion) - + Controller navigation - + - % - % + + Enable direct JoyCon driver + + + + + Enable direct Pro Controller driver [EXPERIMENTAL] + + + + + Allows unlimited uses of the same Amiibo in games that would otherwise limit you to one use. + + + + + Use random Amiibo ID + Motion / Touch - + @@ -3483,67 +3793,67 @@ These settings are experimental, and may cause black screens. If your games fail Form - Muoto + Graphics - + Input Profiles - + Player 1 Profile - + Player 2 Profile - + Player 3 Profile - + Player 4 Profile - + Player 5 Profile - + Player 6 Profile - + Player 7 Profile - + Player 8 Profile - + Use global input configuration - + Player %1 profile - + @@ -3556,12 +3866,12 @@ These settings are experimental, and may cause black screens. If your games fail Connect Controller - + Input Device - + @@ -3576,49 +3886,28 @@ These settings are experimental, and may cause black screens. If your games fail New - + Delete - + - + Left Stick Vasen joystick - - - - - - - Up - - - - - Mouse panning - - - - - Configure - Säädä - - - - - - - - - - Left - + + + + + + + Down + @@ -3629,17 +3918,28 @@ These settings are experimental, and may cause black screens. If your games fail Right - + - - - - - - - Down - + + + + + + + + Left + + + + + + + + + + Up + @@ -3647,7 +3947,7 @@ These settings are experimental, and may cause black screens. If your games fail Pressed - + @@ -3655,13 +3955,13 @@ These settings are experimental, and may cause black screens. If your games fail Modifier - + Range - + @@ -3673,80 +3973,18 @@ These settings are experimental, and may cause black screens. If your games fail Deadzone: 0% - + Modifier Range: 0% - + D-Pad - - - - - - - L - - - - - - - ZL - - - - - - Minus - - - - - - Capture - - - - - - - Plus - - - - - - Home - - - - - - - - R - - - - - - - ZR - - - - - - - - SL - + @@ -3754,17 +3992,79 @@ These settings are experimental, and may cause black screens. If your games fail SR - + + + + + + + + SL + + + + + + + ZL + + + + + + + L + + + + + + Minus + + + + + + + Plus + + + + + + + ZR + + + + + + + + R + Motion 1 - + Motion 2 - + + + + + + Capture + + + + + + Home + @@ -3775,270 +4075,280 @@ These settings are experimental, and may cause black screens. If your games fail X - - - - - - Y - - - - - - A - + B - + + + + + + A + + + + + + Y + - + Right Stick Oikea joystick - - - - + + Mouse panning + + + + + Configure + + + + + + + Clear Tyhjennä - - - - - + + + + + [not set] [ei asetettu] - - - Toggle button - - - - - - + + + Invert button - + - + + + Toggle button + + + + Turbo button - + - - + + Invert axis - + - - - + + + Set threshold - + - - + + Choose a value between 0% and 100% - + - + Toggle axis - + - + Set gyro threshold - + - + Calibrate sensor - - - - - Map Analog Stick - + + Map Analog Stick + + + + After pressing OK, first move your joystick horizontally, and then vertically. To invert the axes, first move your joystick vertically, and then horizontally. - + - + Center axis - + - - + + Deadzone: %1% - + - - + + Modifier Range: %1% - + - - + + Pro Controller - + - + Dual Joycons - + - + Left Joycon - + - + Right Joycon - + - + Handheld Käsikonsolimoodi - + GameCube Controller - + - + Poke Ball Plus - + - + NES Controller - + - + SNES Controller - + - + N64 Controller - + - + Sega Genesis - + - + Start / Pause - + + + + + Z + - Z - + Control Stick + - Control Stick - - - - C-Stick - + - + Shake! - + - + [waiting] - + - + New Profile - + - + Enter a profile name: - + + + + + + Create Input Profile + - - Create Input Profile - - - - The given profile name is not valid! - + - + Failed to create the input profile "%1" - + + + + + Delete Input Profile + - Delete Input Profile - + Failed to delete the input profile "%1" + - - Failed to delete the input profile "%1" - + + Load Input Profile + - Load Input Profile - + Failed to load the input profile "%1" + - - Failed to load the input profile "%1" - + + Save Input Profile + - Save Input Profile - - - - Failed to save the input profile "%1" - + @@ -4046,7 +4356,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Create Input Profile - + @@ -4059,63 +4369,54 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Oletusasetukset - - ConfigureLinuxTab - - - - Linux - - - ConfigureMotionTouch Configure Motion / Touch - + Touch - + UDP Calibration: - + (100, 50) - (1800, 850) - + - + Configure Säädä Touch from button profile: - + CemuhookUDP Config - + You may use any Cemuhook compatible UDP input source to provide motion and touch input. - + Server: - + @@ -4123,109 +4424,95 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Portti: - - Learn More - - - - - - Test - - - - - Add Server - - - - - Remove Server - - - - - %1:%2 - - - - yuzu - yuzu - - - - <a href='https://eden-emulator.github.io/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - - - - - Port number has invalid characters - - - - - - - - - - eden - - - - - Port has to be in range 0 and 65353 - - - - - IP address is not valid - - - - - This UDP server already exists - - - - - Unable to add more than 8 servers - - - - - Testing - - - - - Configuring - - - - - Test Successful - - - - - Successfully received data from the server. - - - + + Test + + + + + Add Server + + + + + Remove Server + + + + + %1:%2 + + + + + + + + + + Eden + + + + + Port number has invalid characters + + + + + Port has to be in range 0 and 65353 + + + + + IP address is not valid + + + + + This UDP server already exists + + + + + Unable to add more than 8 servers + + + + + Testing + + + + + Configuring + + + + + Test Successful + + + + + Successfully received data from the server. + + + + Test Failed - + - + Could not receive valid data from the server.<br>Please verify that the server is set up correctly and the address and port are correct. - + - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. - + @@ -4233,27 +4520,27 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Configure mouse panning - + Enable mouse panning - + Can be toggled via a hotkey. Default hotkey is Ctrl + F9 - + Sensitivity - + Horizontal - + @@ -4262,68 +4549,68 @@ To invert the axes, first move your joystick vertically, and then horizontally.< % - % + Vertical - + Deadzone counterweight - + Counteracts a game's built-in deadzone - + Deadzone - + Stick decay - + Strength - + Minimum - + Default - + Mouse panning works better with a deadzone of 0% and a range of 100%. Current values are %1% and %2% respectively. - + Emulated mouse is enabled. This is incompatible with mouse panning. - + Emulated mouse is enabled - + Real mouse input and mouse panning are incompatible. Please disable the emulated mouse in input advanced settings to allow mouse panning. - + @@ -4336,7 +4623,7 @@ Current values are %1% and %2% respectively. Network - + @@ -4346,12 +4633,12 @@ Current values are %1% and %2% respectively. Network Interface - + - - None - None + + Enable Airplane Mode + @@ -4359,7 +4646,7 @@ Current values are %1% and %2% respectively. Dialog - + @@ -4404,56 +4691,57 @@ Current values are %1% and %2% respectively. Some settings are only available when a game is not running. - + - + Add-Ons Lisäosat - General - Yleiset - - - + System Järjestelmä - + CPU CPU (prosessori) - + Graphics Grafiikat - + Adv. Graphics - + - - GPU Extensions - + + Ext. Graphics + - + Audio Ääni - + Input Profiles - + - Linux - + Network + + + + + Applets + @@ -4474,15 +4762,110 @@ Current values are %1% and %2% respectively. Lisäosat - + + Import Mod from ZIP + + + + + Import Mod from Folder + + + + Patch Name Päivityksen nimi - + Version Versio + + + Mod Install Succeeded + + + + + Successfully installed all mods. + + + + + Mod Install Failed + + + + + Failed to install the following mods: + %1 +Check the log for details. + + + + + Mod Folder + + + + + Zipped Mod Location + + + + + Zipped Archives (*.zip) + + + + + Invalid Selection + + + + + Only mods, cheats, and patches can be deleted. +To delete NAND-installed updates, right-click the game in the game list and click Remove -> Remove Installed Update. + + + + + You are about to delete the following installed mods: + + + + + + +Once deleted, these can NOT be recovered. Are you 100% sure you want to delete them? + + + + + Delete add-on(s)? + + + + + Successfully deleted + + + + + Successfully deleted all selected mods. + + + + + &Delete + + + + + &Open in File Manager + + ConfigureProfileManager @@ -4512,32 +4895,17 @@ Current values are %1% and %2% respectively. Nimimerkki - - Set Image - Aseta kuva - - - + Add Lisää - - Rename - Nimeä uudelleen - - - - Remove - Poista - - - + Profile management is available only when game is not running. - + - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -4545,111 +4913,83 @@ Current values are %1% and %2% respectively. %2 - - Enter Username - Syötä nimimerkki - - - + Users Käyttäjät - - Enter a username for the new user: - Syötä nimimerkki uudelle käyttäjälle: - - - - Enter a new username: - Syötä uusi nimikerkki - - - Confirm Delete - Vahvista poistaminen - - - You are about to delete user with name "%1". Are you sure? - Olet poistamassa käyttäjän nimimerkillä "%1". Oletko varma? - - - - Select User Image - Valitse käyttäjän kuva - - - - JPEG Images (*.jpg *.jpeg) - JPEG kuvat (*.jpg *.jpeg) - - - + Error deleting image Virhe poistaessa kuvaa - + Error occurred attempting to overwrite previous image at: %1. Edellistä kuvaa korvatessa tapahtui virhe %1. - + Error deleting file Virhe poistaessa tiedostoa - + Unable to delete existing file: %1. Olemassa olevan tiedoston %1 ei onnistu - + Error creating user image directory Virhe luodessa käyttäjäkuvakansiota - + Unable to create directory %1 for storing user images. - Kansiota %1 käyttäjäkuvien tallentamiseksi ei voitu luoda + Kansiota %1 käyttäjäkuvien tallentamiseksi ei voitu luoda - - Error copying user image - Virhe kopioidessa käyttäjäkuvaa + + Error saving user image + - - Unable to copy image from %1 to %2 - Kuvaa ei voitu kopioida sijainnista %1 sijaintiin %2 + + Unable to save image to file + - - Error resizing user image - + + &Edit + - - Unable to resize image - + + &Delete + + + + + Edit User + ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. - + - + Confirm Delete - Vahvista poistaminen + - + Name: %1 UUID: %2 - + @@ -4657,127 +4997,127 @@ UUID: %2 Configure Ring Controller - + 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. - + Virtual Ring Sensor Parameters - + Pull - + Push - + Deadzone: 0% - + Direct Joycon Driver - + Enable Ring Input - + - + Enable - + Ring Sensor Value - + - + Not connected - + Restore Defaults - Palauta oletukset + - + Clear - Tyhjennä + - + [not set] - [ei asetettu] + - + Invert axis - + - - + + Deadzone: %1% - + - + Error enabling ring input - + - + Direct Joycon driver is not enabled - + - + Configuring - + - + The current mapped device doesn't support the ring controller - - - - - The current mapped device doesn't have a ring attached - + + The current mapped device doesn't have a ring attached + + + + The current mapped device is not connected - + - + Unexpected driver result %1 - + - + [waiting] - + @@ -4796,72 +5136,12 @@ UUID: %2 Core - + - System Settings - Järjestelmäasetukset - - - Note: this can be overridden when region setting is auto-select - Huomio: tämä voidaan yliajaa kun alueasetus on automaattisella valinnalla - - - English - Englanti - - - Language - Kieli - - - RNG Seed - RNG siemen - - - Mono - Mono - - - Stereo - Stereo - - - Surround - Surround - - - Console ID: - Konsoli ID: - - - Sound output mode - Äänen ulostulomoodi - - - Regenerate - Luo uudelleen - - - System settings are available only when game is not running. - Järjestelmäasetukset ovat saatavilla vain kun peli ei ole käynnissä - - - This will replace your current virtual Switch with a new one. Your current virtual Switch will not be recoverable. This might have unexpected effects in games. This might fail, if you use an outdated config savegame. Continue? - Tämä korvaa tämänhetkisen virtuaalisen Switchin uudella. Tämänhetkistä virtuaalista Switchiä ei voida palauttaa. Tällä voi olla odottamattomia vaikutuksia peleissä. Tämä voi epäonnistua jos käytät vanhentunutta tallennustiedoston konfiguraatiota. Haluatko jatkaa? - - - Warning - Varoitus - - - Console ID: 0x%1 - Konsoli ID: 0x%1 - - - + Warning: "%1" is not a valid language for region "%2" - + @@ -4869,55 +5149,60 @@ UUID: %2 TAS - + - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the eden website.</p></body></html> - + <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the user handbook.</p></body></html> + To check which hotkeys control the playback/recording, please refer to the Hotkey settings (Configure -> General -> Hotkeys). - + WARNING: This is an experimental feature.<br/>It will not play back scripts frame perfectly with the current, imperfect syncing method. - + Settings - + Enable TAS features - + Loop script - + Pause execution during loads - + - + + Show recording dialog + + + + Script Directory - - - - - Path - + + Path + + + + ... ... @@ -4925,14 +5210,14 @@ UUID: %2 ConfigureTasDialog - + TAS Configuration - + - + Select TAS Load Directory... - + @@ -4940,22 +5225,22 @@ UUID: %2 Configure Touchscreen Mappings - + Mapping: - + New - + Delete - + @@ -4966,59 +5251,59 @@ UUID: %2 Click the bottom area to add a point, then press a button to bind. Drag points to change position, or double-click table cells to edit values. - + Delete Point - + Button - + X X axis - + Y Y axis - + New Profile - + Enter the name for the new profile. - + Delete Profile - + Delete profile %1? - + Rename Profile - + New name: - + @@ -5033,14 +5318,10 @@ Drag points to change position, or double-click table cells to edit values.Configure Touchscreen Konfiguroi kosketusnäyttö - - Warning: The settings in this page affect the inner workings of yuzu's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - Varoitus: tämä asetus vaikuttaa yuzu:n emuloidun kosketusnäytön toimintaan. Asetusten muuttaminen voi johtaa siihen, ettei kosketusnäyttö enää toimi. Käytä tätä sivua vain jos tiedät mitä olet tekemässä. - - Warning: The settings in this page affect the inner workings of eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - + Warning: The settings in this page affect the inner workings of Eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. + @@ -5071,66 +5352,45 @@ Drag points to change position, or double-click table cells to edit values. ConfigureUI - - - + + None None - - - Small (32x32) - - - Standard (64x64) - + Small (24x24) + - Large (128x128) - + Standard (48x48) + - Full Size (256x256) - + Large (72x72) + - Small (24x24) - - - - - Standard (48x48) - - - - - Large (72x72) - - - - Filename Tiedostonimi - + Filetype - + - + Title ID Nimike ID - + Title Name - + @@ -5173,7 +5433,7 @@ Drag points to change position, or double-click table cells to edit values. Show Compatibility List - + @@ -5183,88 +5443,83 @@ Drag points to change position, or double-click table cells to edit values. Show Size Column - + Show File Types Column - + Show Play Time Column - + - Game Icon Size: - + Folder Icon Size: + - Folder Icon Size: - - - - Row 1 Text: Rivin 1 teksti: - + Row 2 Text: Rivin 2 teksti: - + Screenshots Kuvakaappaukset - + Ask Where To Save Screenshots (Windows Only) Kysy minne kuvakaappaukset tallennetaan (Vain Windowsilla) - + Screenshots Path: Kuvakaappauksien polku: - + ... ... - + TextLabel - + - + Resolution: - + - + Select Screenshots Path... Valitse polku kuvakaappauksille... - + <System> <System> - + English Englanti - + Auto (%1 x %2, %3 x %4) Screenshot width value - + @@ -5272,17 +5527,17 @@ Drag points to change position, or double-click table cells to edit values. Configure Vibration - + Press any controller button to vibrate the controller. - + Vibration - + @@ -5339,12 +5594,12 @@ Drag points to change position, or double-click table cells to edit values. Settings - + Enable Accurate Vibration - + @@ -5359,158 +5614,176 @@ Drag points to change position, or double-click table cells to edit values.Web Web - - yuzu Web Service - yuzu Web palvelu - - - By providing your username and token, you agree to allow yuzu to collect additional usage data, which may include user identifying information. - Antamalla nimimerkkisi ja tokenin, annat yuzu:lle luvan kerätä muita tietoja, jotka saattavat sisältää käyttäjän tunnistetietoja. - - eden Web Service - + Eden Web Service + - - By providing your username and token, you agree to allow eden to collect additional usage data, which may include user identifying information. - - - - - Verify - Varmista - - - - Sign up - Rekisteröidy - - - + Token: Tokeni: - + Username: Nimimerkki: - - What is my token? - Mikä on tokeni? + + Generate + - + Web Service configuration can only be changed when a public room isn't being hosted. - + - Telemetry - Telemetria - - - Share anonymous usage data with the yuzu team - Jaa anonyymiä dataa yuzu-tiimin kanssa - - - Learn more - Lue lisää - - - Telemetry ID: - Telemetria ID: - - - Regenerate - Luo uudelleen - - - + Discord Presence Discord näkyvyys - + Show Current Game in your Discord Status Näytä tämänhetkinen peli Discordin tilanäkymässä - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Lue lisää</span></a> - - - - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Rekisteröidy</span></a> - - - - <a href='https://evilperson1337.notion.site/Hosting-a-Room-Inside-of-Eden-20457c2edaf680108abac6215a79acdb'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - - - - - Unverified, please click Verify before saving configuration - Tooltip - - - - - Warning - Varoitus - - + - Verification is currently nonfunctional, instead generate a random 48-character string with only lowercase a-z. - + All Good + Tooltip + - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">Mikä on tokeni?</span></a> + + Must be between 4-20 characters + Tooltip + - Telemetry ID: 0x%1 - Telemetria ID: 0x%1 - - - Unspecified - Määrittelemätön - - - Token not verified - Tunnus ei ole vahvistettu. - - - Token was not verified. The change to your token has not been saved. - Tunnusta ei vahvisteta. Tunnuksen muutosta ei ole tallennettu. - - - Verifying... - Vahvistetaan... - - - Verification failed - Varmistus epäonnistui - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - Vahvistus epäonnistui. Tarkista, että olet syöttänyt tunnuksesi oikein ja nettiyhteytesi toimii. + + Must be 48 characters, and lowercase a-z + Tooltip + ControllerDialog - + Controller P1 - + - + &Controller P1 - + + + + + DataDialog + + + Data Manager + + + + + Deleting ANY data is IRREVERSABLE! + + + + + Shaders + + + + + UserNAND + + + + + SysNAND + + + + + Mods + + + + + Saves + + + + + DataWidget + + + Form + + + + + Tooltip + + + + + Open with your system file manager + + + + + Delete all data in this directory. THIS IS 100% IRREVERSABLE! + + + + + Export all data in this directory. This may take a while! + + + + + Import data for this directory. This may take a while, and will delete ALL EXISTING DATA! + + + + + Calculating... + + + + + DepsDialog + + + Eden Dependencies + + + + + <html><head/><body><p><span style=" font-size:28pt;">Eden Dependencies</span></p></body></html> + + + + + <html><head/><body><p>The projects that make Eden possible</p></body></html> + + + + + Dependency + + + + + Version + @@ -5518,42 +5791,42 @@ Drag points to change position, or double-click table cells to edit values. Direct Connect - + Server Address - + <html><head/><body><p>Server address of the host</p></body></html> - + Port - + <html><head/><body><p>Port number the host is listening on</p></body></html> - + Nickname - + Password - + Connect - + @@ -5561,12 +5834,12 @@ Drag points to change position, or double-click table cells to edit values. Connecting - + Connect - + @@ -5574,1915 +5847,424 @@ Drag points to change position, or double-click table cells to edit values. Username is not valid. Must be 4 to 20 alphanumeric characters. - + Room name is not valid. Must be 4 to 20 alphanumeric characters. - + Username is already in use or not valid. Please choose another. - + IP is not a valid IPv4 address. - + Port must be a number between 0 to 65535. - + You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - + Unable to find an internet connection. Check your internet settings. - + Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - + Unable to connect to the room because it is already full. - + - Creating a room failed. Please retry. Restarting eden might be necessary. - + Creating a room failed. Please retry. Restarting Eden might be necessary. + The host of the room has banned you. Speak with the host to unban you or try a different room. - + - Version mismatch! Please update to the latest version of eden. If the problem persists, contact the room host and ask them to update the server. - + Version mismatch! Please update to the latest version of Eden. If the problem persists, contact the room host and ask them to update the server. + Incorrect password. - + An unknown error occurred. If this error continues to occur, please open an issue - + Connection to room lost. Try to reconnect. - + You have been kicked by the room host. - + IP address is already in use. Please choose another. - + You do not have enough permission to perform this action. - + The user you are trying to kick/ban could not be found. They may have left the room. - + No valid network interface is selected. Please go to Configure -> System -> Network and make a selection. - + Error - - - - - GMainWindow - - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Anonymous data is collected</a> to help improve yuzu. <br/><br/>Would you like to share your usage data with us? - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Anonyymiä dataa kerätään</a> yuzun parantamiseksi. <br/><br/>Haluatko jakaa käyttödataa meidän kanssamme? - - - Telemetry - Telemetria - - - - Loading Web Applet... - Ladataan Web-applettia... - - - - - Disable Web Applet - - - - - 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.) - - - - - The amount of shaders currently being built - Tällä hetkellä ladattujen shadereiden määrä - - - - The current selected resolution scaling multiplier. - - - - - Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. - Tämänhetkinen emulointinopeus. Arvot yli tai alle 100% kertovat emuloinnin tapahtuvan nopeammin tai hitaammin kuin Switchillä: - - - - How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. - Kuinka monta kuvaruutua sekunnissa peli tällä hetkellä näyttää. Tämä vaihtelee pelistä ja pelikohtauksesta toiseen. - - - - 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. - Aika, joka kuluu yhden kuvaruudun emulointiin huomioimatta päivitysnopeuden rajoituksia tai v-synciä. Täysnopeuksista emulointia varten tämä saa olla enintään 16,67 ms. - - - DOCK - TELAKKA - - - VULKAN - VULKAN - - - OPENGL - OPENGL - - - - &Clear Recent Files - - - - - &Continue - - - - - &Pause - &Pysäytä - - - - Warning Outdated Game Format - Varoitus vanhentunut peliformaatti - - - 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.<br><br>For an explanation of the various Switch formats yuzu supports, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - Käytät purettua ROM kansioformaattia, joka on vanhentunut tallennusmuoto. Toisin kuin uudet formaatit kuten NCA, NAX, XCI tai NSP, käyttämäsi formaatti ei tue ikoneita eikä päivityksiä. <br><br>Lukeaksesi lisää yuzun tuetuista Switch formaateista <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>katso wikimme</a>. -Tätä viestiä ei näytetä uudelleen. - - - - - Error while loading ROM! - Virhe ladatessa ROMia! - - - - The ROM format is not supported. - ROM-formaattia ei tueta. - - - - An error occurred initializing the video core. - Videoydintä käynnistäessä tapahtui virhe - - - - Error while loading ROM! %1 - %1 signifies a numeric error code. - - - - - An unknown error occurred. Please see the log for more details. - Tuntematon virhe. Tarkista lokitiedosto lisätietoja varten. - - - - (64-bit) - - - - - (32-bit) - - - - - %1 %2 - %1 is the title name. %2 indicates if the title is 64-bit or 32-bit - - - - - Save Data - Tallennus - - - - Mod Data - Modin data - - - - Error Opening %1 Folder - Virhe avatessa kansiota %1 - - - - - Folder does not exist! - Kansiota ei ole olemassa! - - - - Error Opening Transferable Shader Cache - Virhe avattaessa siirrettävää Shader Cachea - - - - Failed to create the shader cache directory for this title. - - - - Contents - Sisällöt - - - Update - Päivitys - - - DLC - DLC - - - - Remove Entry - Poista merkintä - - - Remove Installed Game %1? - Poistataanko asennettu peli %1? - - - - - - - - - Successfully Removed - Onnistuneesti poistettu - - - - Successfully removed the installed base game. - Asennettu pohjapeli poistettiin onnistuneesti. - - - Error Removing %1 - Virhe poistaessa %1 - - - - The base game is not installed in the NAND and cannot be removed. - Pohjapeliä ei ole asennettu NAND-muistiin eikä sitä voida poistaa. - - - - Successfully removed the installed update. - Asennettu päivitys poistettiin onnistuneesti. - - - - There is no update installed for this title. - Tähän sovellukseen ei ole asennettu päivitystä. - - - - There are no DLC installed for this title. - Tähän sovellukseen ei ole asennettu DLC:tä. - - - - Successfully removed %1 installed DLC. - Asennettu DLC poistettu onnistuneesti %1  - - - - Delete OpenGL Transferable Shader Cache? - - - - - Delete Vulkan Transferable Shader Cache? - - - - - Delete All Transferable Shader Caches? - - - - - Remove Custom Game Configuration? - Poistataanko pelin mukautettu määritys? - - - - Remove Cache Storage? - - - - - Remove File - Poista tiedosto - - - - Remove Play Time Data - - - - - Reset play time? - - - - - - Error Removing Transferable Shader Cache - Virhe poistettaessa siirrettävää Shader Cachea - - - - - A shader cache for this title does not exist. - Shader cachea tälle sovellukselle ei ole olemassa. - - - - Successfully removed the transferable shader cache. - Siirrettävä Shadet Cache poistettiin onnistuneesti. - - - - Failed to remove the transferable shader cache. - Siirrettävän Shader Cachen poisto epäonnistui. - - - - Error Removing Vulkan Driver Pipeline Cache - - - - - Failed to remove the driver pipeline cache. - - - - - - Error Removing Transferable Shader Caches - - - - - Successfully removed the transferable shader caches. - - - - - Failed to remove the transferable shader cache directory. - - - - - - Error Removing Custom Configuration - Virhe poistaessa mukautettua määritystä. - - - - A custom configuration for this title does not exist. - Mukautettua määritystä tälle sovellukselle ei ole olemassa. - - - - Successfully removed the custom game configuration. - Pelin mukautettu määritys poistettiin onnistuneesti. - - - - Failed to remove the custom game configuration. - Pelin mukautetun määrityksen poistaminen epäonnistui. - - - - - RomFS Extraction Failed! - RomFS purkaminen epäonnistui - - - - There was an error copying the RomFS files or the user cancelled the operation. - RomFS tiedostoja kopioidessa tapahtui virhe, tai käyttäjä perui operaation. - - - - Full - Täysi - - - - Skeleton - Luuranko - - - - Select RomFS Dump Mode - Valitse RomFS dumppausmoodi - - - - Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. - Valitse kuinka haluat dumpata RomFS:n. <br>Täysi kopioi kaikki tiedostot uuteen kansioon kun taas <br>luuranko luo ainoastaan kansiorakenteen. - - - - There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root - - - - - Extracting RomFS... - Puretaan RomFS:ää - - - - - - - - Cancel - Peruuta - - - - RomFS Extraction Succeeded! - RomFs purettiin onnistuneesti! - - - - - - The operation completed successfully. - Operaatio suoritettiin onnistuneesti. - - - - Integrity verification couldn't be performed! - - - - - File contents were not checked for validity. - - - - - - Verifying integrity... - - - - - - Integrity verification succeeded! - - - - - - Integrity verification failed! - - - - - File contents may be corrupt. - - - - - - - - Create Shortcut - - - - - Do you want to launch the game in fullscreen? - - - - - Successfully created a shortcut to %1 - - - - - This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - - - - - Failed to create a shortcut to %1 - - - - - Create Icon - - - - - Cannot create icon file. Path "%1" does not exist and cannot be created. - - - - - Error Opening %1 - Virhe avatessa %1 - - - - Select Directory - Valitse kansio - - - - Properties - Ominaisuudet - - - - The game properties could not be loaded. - Pelin asetuksia ei saatu ladattua. - - - - Switch Executable (%1);;All Files (*.*) - %1 is an identifier for the Switch executable file extensions. - Switch tiedosto (%1);;Kaikki tiedostot (*.*) - - - - Load File - Lataa tiedosto - - - - Open Extracted ROM Directory - Avaa puretun ROMin kansio - - - - Invalid Directory Selected - Virheellinen kansio valittu - - - - The directory you have selected does not contain a 'main' file. - Valitsemasi kansio ei sisällä "main"-tiedostoa. - - - - Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - Asennettava Switch tiedosto (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submissions Package (*.nsp);;NX Cartridge Image (*.xci) - - - - Install Files - Asenna tiedostoja - - - - %n file(s) remaining - - - - - - - - Installing file "%1"... - Asennetaan tiedostoa "%1"... - - - - - Install Results - Asennustulokset - - - - To avoid possible conflicts, we discourage users from installing base games to the NAND. -Please, only use this feature to install updates and DLC. - - - - - %n file(s) were newly installed - - - - - - - - - %n file(s) were overwritten - - - - - - - - - %n file(s) failed to install - - - - - - - - - System Application - Järjestelmäohjelma - - - - System Archive - Järjestelmätiedosto - - - - System Application Update - Järjestelmäohjelman päivitys - - - - Firmware Package (Type A) - Firmware-paketti (A tyyppi) - - - - Firmware Package (Type B) - Firmware-paketti (B tyyppi) - - - - Game - Peli - - - - Game Update - Pelin päivitys - - - - Game DLC - Pelin DLC - - - - Delta Title - Delta nimike - - - - Select NCA Install Type... - Valitse NCA asennustyyppi... - - - - Please select the type of title you would like to install this NCA as: -(In most instances, the default 'Game' is fine.) - Valitse asennettavan NCA-nimikkeen tyyppi: -(Useimmissa tapauksissa oletustyyppi "Peli" toimii oikein) - - - - Failed to Install - Asennus epäonnistui - - - - The title type you selected for the NCA is invalid. - Valitsemasi nimiketyyppi on virheellinen - - - - File not found - Tiedostoa ei löytynyt - - - - File "%1" not found - Tiedostoa "%1" ei löytynyt - - - - OK - OK - - - - - Hardware requirements not met - - - - - - Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled. - - - - - Missing yuzu Account - yuzu-tili puuttuu - - - - The selected file is not a valid amiibo - - - - - The selected file is already on use - - - - - An unknown error occurred - - - - - - Verification failed for the following files: - -%1 - - - - - Keys not installed - - - - - Install decryption keys and restart eden before attempting to install firmware. - - - - - Select Dumped Firmware Source Location - - - - - Installing Firmware... - - - - - - - - Firmware install failed - - - - - Unable to locate potential firmware NCA files - - - - - Failed to delete one or more firmware file. - - - - - Firmware installation cancelled, firmware may be in bad state, restart eden or re-install firmware. - - - - - One or more firmware files failed to copy into NAND. - - - - - Firmware integrity verification failed! - - - - - Select Dumped Keys Location - - - - - - - Decryption Keys install failed - - - - - prod.keys is a required decryption key file. - - - - - One or more keys failed to copy. - - - - - Decryption Keys install succeeded - - - - - Decryption Keys were successfully installed - - - - - Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. - - - - - - - - - - - No firmware available - - - - - Please install the firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Controller Menu. - - - - - Controller Applet - - - - - Controller Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Home Menu. - - - - - - Home Menu Applet - - - - - - Home Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use Starter. - - - - - Starter Applet - - - - - Starter is not available. Please reinstall firmware. - - - - - Please install firmware to use the home menu. - - - - - %1 %2 - - - - - VOLUME: MUTE - - - - - VOLUME: %1% - Volume percentage (e.g. 50%) - - - - - Encryption keys are missing. - - - - - Are you sure you want to close eden? - - - - - - - eden - - - - - The currently running application has requested eden to not exit. - -Would you like to bypass this and exit anyway? - - - - In order to submit a game compatibility test case, you must link your yuzu account.<br><br/>To link your yuzu account, go to Emulation &gt; Configuration &gt; Web. - Lähettääksesi pelin toimivuusraportin sinun tulee yhdistää yuzu-tilisi. <br><br/> Liittääksesi yuzu-tilin valitse Emulaatio &gt; Asetukset &gt; Web. - - - - Error opening URL - Virhe avatessa URL-osoitetta - - - - Unable to open the URL "%1". - URL-osoitetta "%1". ei voitu avata - - - - TAS Recording - - - - - Overwrite file of player 1? - - - - - Invalid config detected - - - - - Handheld controller can't be used on docked mode. Pro controller will be selected. - - - - - Error - - - - - - The current game is not looking for amiibos - - - - - - Amiibo - - - - - Broken Vulkan Installation Detected - - - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://eden-emulator.github.io/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - - - - - Running a game - TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping - - - - - Unmute - - - - - Mute - - - - - Reset Volume - - - - - Game Updates Warning - - - - - The game you are trying to launch is known to have performance or booting issues when updates are applied. Please try increasing the memory layout to 6GB or 8GB if any issues occur.<br><br>Press "OK" to continue launching, or "Cancel" to cancel the launch. - - - - - Don't show again for this game - - - - - 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.<br><br>For an explanation of the various Switch formats eden supports, <a href='https://eden-emulator.github.io/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - - - - - eden 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: <a href='https://eden-emulator.github.io/help/reference/log-files/'>How to Upload the Log File</a>. - - - - - %1<br>Please redump your files or ask on Discord for help. - %1 signifies an error string. - - - - - Closing software... - - - - - Error Removing Contents - - - - - Error Removing Update - - - - - Error Removing DLC - - - - - Remove Installed Game Contents? - - - - - Remove Installed Game Update? - - - - - Remove Installed Game DLC? - - - - - In order to submit a game compatibility test case, you must link your eden account.<br><br/>To link your eden account, go to Emulation &gt; Configuration &gt; Web. - - - - - - The current amiibo has been removed - - - - - Amiibo File (%1);; All Files (*.*) - Amiibo tiedosto (%1);; Kaikki tiedostot (*.*) - - - - Load Amiibo - Lataa Amiibo - - - Error opening Amiibo data file - Virhe avattaessa Amiibo datatiedostoa - - - Unable to open Amiibo file "%1" for reading. - Amiibo tiedoston "%1" avaaminen lukemista varten epäonnistui. - - - Error reading Amiibo data file - Virhe luettaessa Amiibo datatiedostoa - - - Unable to fully read Amiibo data. Expected to read %1 bytes, but was only able to read %2 bytes. - Amiibon lukeminen epäonnistui. Ohjelma odotti lukevansa %1 tavua mutta onnistui lukemaan vain %2 tavua. - - - - Error loading Amiibo data - Virhe luettaessa Amiibo-dataa - - - Unable to load Amiibo data. - Amiibon dataa ei voitu lukea. - - - - Capture Screenshot - Tallenna kuvakaappaus - - - - PNG Image (*.png) - PNG-kuva (*.png) - - - - Update Available - - - - - Update %1 for Eden is available. -Would you like to download it? - - - - - TAS state: Running %1/%2 - - - - - TAS state: Recording %1 - - - - - TAS state: Idle %1/%2 - - - - - TAS State: Invalid - - - - - &Stop Running - - - - - &Start - &Käynnistä - - - - Stop R&ecording - - - - - R&ecord - - - - - Building: %n shader(s) - - - - - - - - Scale: %1x - %1 is the resolution scaling factor - - - - - Speed: %1% / %2% - Nopeus: %1% / %2% - - - - Speed: %1% - Nopeus: %1% - - - - Game: %1 FPS - Peli: %1 FPS - - - - Frame: %1 ms - Ruutuaika: %1 ms - - - - None - None - - - - SMAA - - - - - Nearest - - - - - Bilinear - - - - - Bicubic - - - - - Gaussian - - - - - ScaleForce - - - - - - FSR - - - - - Area - - - - - Docked - - - - - Handheld - Käsikonsolimoodi - - - - Normal - - - - - High - - - - - Extreme - - - - - Vulkan - - - - - OpenGL - - - - - Null - - - - - GLSL - - - - - GLASM - - - - - SPIRV - - - - - NO AA - - - - - FXAA - - - - The game you are trying to load requires additional files from your Switch to be dumped before playing.<br/><br/>For more information on dumping these files, please see the following wiki page: <a href='https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/'>Dumping System Archives and the Shared Fonts from a Switch Console</a>.<br/><br/>Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs. - Peli, jota yrität ladata vaatii, että dumppaat lisätiedostoja Switchistäsi ennen pelaamista. <br/><br/>Lue ohjeet näiden tiedostojen dumppaamiseen tältä wiki-sivulta: <a href='https://yuzu-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-switch-console/'>Dumping System Archives and the Shared Fonts from a Switch Console</a>.<br/><br/>Haluatko palata pelivalikkoon? Jatkaminen voi johtaa pelin kaatumiseen, tallennustiedostojen korruptoitumiseen tai muihin bugeihin. - - - yuzu was unable to locate a Switch system archive. %1 - yuzu ei löytänyt Switchin järjestelmätiedostoja: %1. - - - yuzu was unable to locate a Switch system archive: %1. %2 - yuzu ei löytänyt Switchin järjestelmätiedostoja: %1. %2 - - - System Archive Not Found - Järjestelmätiedostoja ei löytynyt - - - System Archive Missing - Järjestelmätiedosto puuttuu - - - yuzu was unable to locate the Switch shared fonts. %1 - yuzu ei havainnut Switchin shared fontteja. %1 - - - Shared Fonts Not Found - Jaettuja fontteja ei löytynyt - - - Shared Font Missing - Shared Font puuttuu - - - Fatal Error - Tuhoisa virhe - - - yuzu has encountered a fatal error, please see the log for more details. For more information on accessing the log, please see the following page: <a href='https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>How to Upload the Log File</a>.<br/><br/>Would you like to quit back to the game list? Continuing emulation may result in crashes, corrupted save data, or other bugs. - yuzu kohtasi tuhoisan virheen, lue lokitiedosto lisätietoja varten. Löydät lokitiedoston tämän sivun avulla: <a href='https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>How to Upload the Log File</a>.<br/><br/> Halutko palata takaisin pelivalikkoon. Jatkaminen voi johtaa pelin kaatumiseen, tallennustiedostojen korruptoitumiseen tai muihin bugeihin. - - - Fatal Error encountered - Tapahtui tuhoisa virhe - - - Confirm Key Rederivation - Vahvista avaimen uudelleenlaskenta - - - You are about to force rederive all of your keys. -If you do not know what this means or what you are doing, -this is a potentially destructive action. -Please make sure this is what you want -and optionally make backups. - -This will delete your autogenerated key files and re-run the key derivation module. - Olet pakottamassa avainten uudelleen laskentaa -Jos et tiedä mitä tämä tarkoittaa tai et tiedä mitä olet tekemässä -tämä voi olla tuhoisaa. -Varmista että haluat tehdä tämän -ja tee itsellesi varmuuskopiot. -Tämä poistaa automaattisesti generoidut avaimet ja ajaa avainten laskentamoduulin uudelleen. - - - Missing fuses - Sulakkeet puuttuvat - - - - Missing BOOT0 - - BOOT0 puuttuu - - - - Missing BCPKG2-1-Normal-Main - - BCPKG2-1-Normal-Main puuttuu - - - - Missing PRODINFO - - PRODINFO puuttuu - - - - Derivation Components Missing - Johdantokomponentit puuttuvat - - - Deriving keys... -This may take up to a minute depending -on your system's performance. - Johdetaan avaimia... -Tähän voi kulua jonkin aikaa -riippuen laitteesi suorituskyvystä. - - - Deriving Keys - Lasketaan avaimia - - - - Select RomFS Dump Target - Valitse RomFS dumppauskohde - - - - Please select which RomFS you would like to dump. - Valitse minkä RomFS:n haluat dumpata. - - - Are you sure you want to close yuzu? - Haluatko varmasti sulkea yuzun? - - - yuzu - yuzu - - - - Are you sure you want to stop the emulation? Any unsaved progress will be lost. - Haluatko varmasti lopettaa emuloinnin? Kaikki tallentamaton tiedo menetetään. - - - The currently running application has requested yuzu to not exit. - -Would you like to bypass this and exit anyway? - Tällä hetkellä käynnissä oleva sovellus on estänyt yuzua sulkeutumasta. - -Haluatko silti ohittaa tämän ja sulkea? + GRenderWindow - - + + OpenGL not available! openGL ei ole saatavilla! - yuzu has not been compiled with OpenGL support. - Yuzua ei ole koottu OpenGL-yhteensopivuuden kanssa. - - - + OpenGL shared contexts are not supported. - + - - eden has not been compiled with OpenGL support. - + + Eden has not been compiled with OpenGL support. + - - + + Error while initializing OpenGL! Virhe käynnistäessä OpenGL ydintä! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. - + - + Error while initializing OpenGL 4.6! - + - + Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 - + - + Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2 - + GameList - - Name - Nimi + + &Add New Game Directory + - - Compatibility - Yhteensopivuus - - - - Add-ons - Lisäosat - - - - File type - Tiedostotyyppi - - - - Size - Koko - - - + Favorite - + - + Start Game - + - + Start Game without Custom Configuration - + - + Open Save Data Location Avaa tallennuskansio - + Open Mod Data Location Avaa modien tallennuskansio - + Open Transferable Pipeline Cache - + - + + Link to Ryujinx + + + + Remove Poista - + Remove Installed Update Poista asennettu päivitys - + Remove All Installed DLC Poista kaikki asennetut DLC:t - + Remove Custom Configuration Poista mukautettu määritys - - Remove Play Time Data - - - - + Remove Cache Storage - + - + Remove OpenGL Pipeline Cache - + - + Remove Vulkan Pipeline Cache - + - + Remove All Pipeline Caches - + - + Remove All Installed Contents Poista kaikki asennettu sisältö - - + + Manage Play Time + + + + + Edit Play Time Data + + + + + Remove Play Time Data + + + + + Dump RomFS Dumppaa RomFS - + Dump RomFS to SDMC - + - + Verify Integrity - + - + Copy Title ID to Clipboard Kopioi nimike ID leikepöydälle - + Navigate to GameDB entry Siirry GameDB merkintään - + Create Shortcut - + - + Add to Desktop - + - + Add to Applications Menu - + - + Configure Game - + - - Play time - - - - Properties - Ominaisuudet - - - + Scan Subfolders Skannaa alakansiot - + Remove Game Directory Poista pelikansio - + ▲ Move Up ▲ Liiku ylös - + ▼ Move Down ▼ Liiku alas - + Open Directory Location Avaa hakemisto - + Clear Tyhjennä + + + Name + Nimi + + + + Compatibility + Yhteensopivuus + + + + Add-ons + Lisäosat + + + + File type + Tiedostotyyppi + + + + Size + Koko + + + + Play time + + GameListItemCompat - + + Ingame + + + + + Game starts, but crashes or major glitches prevent it from being completed. + + + + Perfect Täydellinen - Game functions flawless with no audio or graphical glitches, all tested functionality works as intended without -any workarounds needed. - Peli toimii täydellisesti ilman ääni- tai grafiikkaongelmia. + + Game can be played without issues. + - Great - Hyvä + + Playable + - Game functions with minor graphical or audio glitches and is playable from start to finish. May require some -workarounds. - Pelin voi pelata alusta loppuun mutta siinä esiintyy pieniä graafisia tai ääniongelmia. Peli saattaa vaatia toimiakseen lisätoimenpiteitä. + + Game functions with minor graphical or audio glitches and is playable from start to finish. + - Okay - Välttävä - - - Game functions with major graphical or audio glitches, but game is playable from start to finish with -workarounds. - Peli on pelattavissa alusta loppuun mutta siinä esiintyy merkittäviä ääni- ja grafiikkaongelmia. - - - Bad - Huono - - - Game functions, but with major graphical or audio glitches. Unable to progress in specific areas due to glitches -even with workarounds. - Peli toimii mutta siinä esiintyy merkittäviä ääni- ja grafiikkaongelmia. Peli ei ole pelattavissa alusta loppuun ongelmien vuoksi. - - - + Intro/Menu Intro/Valikko - Game is completely unplayable due to major graphical or audio glitches. Unable to progress past the Start -Screen. - Peliä ei voi pelata merkittävien ääni- ja grafiikkaongelmien vuoksi. Pelissä ei pääse aloitusvalikko pidemmälle. - - - - Ingame - - - - - Game starts, but crashes or major glitches prevent it from being completed. - - - - - Game can be played without issues. - - - - - Playable - - - - - Game functions with minor graphical or audio glitches and is playable from start to finish. - - - - + Game loads, but is unable to progress past the Start Screen. - + - + Won't Boot Ei käynnisty - + The game crashes when attempting to startup. Peli kaatuu käynnistettäessä. - + Not Tested Ei testattu - + The game has not yet been tested. Peliä ei ole vielä testattu @@ -7490,7 +6272,7 @@ Screen. GameListPlaceholder - + Double-click to add a new folder to the game list Tuplaklikkaa lisätäksesi uusi kansio pelilistaan. @@ -7498,20 +6280,17 @@ Screen. GameListSearchField - + %1 of %n result(s) - - - - + - + Filter: Suodatin: - + Enter pattern to filter Syötä suodatettava tekstipätkä @@ -7521,289 +6300,307 @@ Screen. Create Room - + Room Name - + Preferred Game - + Max Players - + Username - Nimimerkki + (Leave blank for open game) - + Password - + Port - + Room Description - + Load Previous Ban List - + Public - + Unlisted - + Host Room - + HostRoomWindow - + Error - + - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. + + Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid Eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. Debug Message: - + Hotkeys - + Audio Mute/Unmute - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Main Window - + - + Audio Volume Down - + - + Audio Volume Up - + - + Capture Screenshot - Tallenna kuvakaappaus + - + Change Adapting Filter - + - + Change Docked Mode - + - - Change GPU Accuracy - + + Change GPU Mode + - + Configure - Säädä + - + Configure Current Game - + - + Continue/Pause Emulation - + - + Exit Fullscreen - + - - Exit eden - + + Exit Eden + - + Fullscreen - + - + Load File - Lataa tiedosto + - + Load/Remove Amiibo - + - - Multiplayer Browse Public Game Lobby - + + Browse Public Game Lobby + - - Multiplayer Create Room - + + Create Room + - - Multiplayer Direct Connect to Room - + + Direct Connect to Room + - - Multiplayer Leave Room - + + Leave Room + - - Multiplayer Show Current Room - + + Show Current Room + - + Restart Emulation - + - + Stop Emulation - + - + TAS Record - + - + TAS Reset - + - + TAS Start/Stop - + - + Toggle Filter Bar - + - + Toggle Framerate Limit - + - + + Toggle Turbo Speed + + + + + Toggle Slow Speed + + + + Toggle Mouse Panning - + - + Toggle Renderdoc Capture - + - + Toggle Status Bar - + + + + + Toggle Performance Overlay + InstallDialog - + Please confirm these are the files you wish to install. Vahvista, että nämä ovat tiedostot jotka haluat asentaa. - + Installing an Update or DLC will overwrite the previously installed one. Päivityksen tai DLC:n asentaminen korvaa aiemmin asennetut. - + Install Asenna - + Install Files to NAND Asenna tiedosto NAND-muistiin @@ -7811,10 +6608,10 @@ Debug Message: LimitableInputDialog - - The text can't contain any of the following characters: + + The text can't contain any of the following characters: %1 - + @@ -7835,22 +6632,22 @@ Debug Message: Arvioitu aika 5m 4s - + Loading... Ladataan... - + Loading Shaders %1 / %2 Ladataan Shaderit %1 / %2 - + Launching... Käynnistetään... - + Estimated Time %1 Arvioitu aika %1 @@ -7860,83 +6657,83 @@ Debug Message: Public Room Browser - + Nickname - + Filters - + Search - + Games I Own - + Hide Empty Rooms - + Hide Full Rooms - + Refresh Lobby - + - + Password Required to Join - + - + Password: - + + + + + Players + - Players - + Room Name + - Room Name - + Preferred Game + - Preferred Game - - - - Host - + - + Refreshing - + - + Refresh List - + @@ -7954,357 +6751,1427 @@ Debug Message: &Recent Files - + - + + Open &Eden Folders + + + + &Emulation &Emulaatio - + &View &Katso - - - &Reset Window Size - - - - - &Debugging - - + &Reset Window Size + + + + + &Debugging + + + + + &Game List Mode + + + + + Game &Icon Size + + + + Reset Window Size to &720p - + - + Reset Window Size to 720p - + - + Reset Window Size to &900p - + - + Reset Window Size to 900p - + - + Reset Window Size to &1080p - + - + Reset Window Size to 1080p - + - + &Multiplayer - + - + &Tools - + - - &Amiibo - + + Am&iibo + - + + Launch &Applet + + + + &TAS - + - + &Create Home Menu Shortcut - + - + + Install &Firmware + + + + &Help &Apu - + &Install Files to NAND... - + - + L&oad File... - + - + Load &Folder... - + - + E&xit P&oistu - + + &Pause &Pysäytä - + &Stop &Lopeta - + &Verify Installed Contents - + - - &About eden - + + &About Eden + - - Open &eden Folder - - - - - Open &Controller Menu - - - - - Install Firmware - - - - - Install Decryption Keys - - - - - Open Home Menu - - - - - &Discord - - - - - Open &Setup - - - - - &Desktop - - - - - &Application Menu - - - - + Single &Window Mode - + - + Con&figure... - + - + Ctrl+, - + - - Display D&ock Widget Headers - + + Enable Overlay Display Applet + - + Show &Filter Bar - + - + Show &Status Bar - + - + Show Status Bar Näytä statuspalkki - + &Browse Public Game Lobby - + - + &Create Room - + - + &Leave Room - + - + &Direct Connect to Room - + - + &Show Current Room - + - + F&ullscreen - + - + &Restart - - - - - Load/Remove &Amiibo... - - - - - &Report Compatibility - - - - - Open &Mods Page - - - - - Open &Quickstart Guide - - - - - &FAQ - + + Load/Remove &Amiibo... + + + + + &Report Compatibility + + + + + Open &Mods Page + + + + + Open &Quickstart Guide + + + + + &FAQ + + + + &Capture Screenshot - + - - Open &Album - + + &Album + - + &Set Nickname and Owner - + - + &Delete Game Data - + - + &Restore Amiibo - + - + &Format Amiibo - + - - Open &Mii Editor - + + &Mii Editor + - + &Configure TAS... - + - + Configure C&urrent Game... - + - + + &Start &Käynnistä - + &Reset - + - + + R&ecord - + - - - MicroProfileDialog - - &MicroProfile - + + Open &Controller Menu + + + + + Install Decryption &Keys + + + + + &Home Menu + + + + + &Desktop + + + + + &Application Menu + + + + + &Root Data Folder + + + + + &NAND Folder + + + + + &SDMC Folder + + + + + &Mod Folder + + + + + &Log Folder + + + + + From Folder + + + + + From ZIP + + + + + &Eden Dependencies + + + + + &Data Manager + + + + + &Tree View + + + + + &Grid View + + + + + Game Icon Size + + + + + + + None + + + + + Show Game &Name + + + + + Show &Performance Overlay + + + + + Small (32x32) + + + + + Standard (64x64) + + + + + Large (128x128) + + + + + Full Size (256x256) + + + + + Broken Vulkan Installation Detected + + + + + Vulkan initialization failed during boot. + + + + + Running a game + TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping + + + + + Loading Web Applet... + + + + + + Disable Web Applet + + + + + 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.) + + + + + The amount of shaders currently being built + + + + + The current selected resolution scaling multiplier. + + + + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. + + + + + How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. + + + + + 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. + + + + + Unmute + + + + + Mute + + + + + Reset Volume + + + + + &Clear Recent Files + + + + + &Continue + + + + + Warning: Outdated Game Format + + + + + 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.<br>For an explanation of the various Switch formats Eden supports, out our user handbook. This message will not be shown again. + + + + + + Error while loading ROM! + + + + + The ROM format is not supported. + + + + + An error occurred initializing the video core. + + + + + Eden 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: <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>How to Upload the Log File</a>. + + + + + Error while loading ROM! %1 + %1 signifies a numeric error code. + + + + + %1<br>Please redump your files or ask on Discord/Stoat for help. + %1 signifies an error string. + + + + + An unknown error occurred. Please see the log for more details. + + + + + (64-bit) + + + + + (32-bit) + + + + + %1 %2 + %1 is the title name. %2 indicates if the title is 64-bit or 32-bit + + + + + Closing software... + + + + + Save Data + + + + + Mod Data + + + + + Error Opening %1 Folder + + + + + + Folder does not exist! + + + + + Remove Installed Game Contents? + + + + + Remove Installed Game Update? + + + + + Remove Installed Game DLC? + + + + + Remove Entry + + + + + Delete OpenGL Transferable Shader Cache? + + + + + Delete Vulkan Transferable Shader Cache? + + + + + Delete All Transferable Shader Caches? + + + + + Remove Custom Game Configuration? + + + + + Remove Cache Storage? + + + + + Remove File + + + + + Remove Play Time Data + + + + + Reset play time? + + + + + + RomFS Extraction Failed! + + + + + There was an error copying the RomFS files or the user cancelled the operation. + + + + + Full + + + + + Skeleton + + + + + Select RomFS Dump Mode + + + + + Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. + + + + + There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root + + + + + Extracting RomFS... + + + + + + Cancel + + + + + RomFS Extraction Succeeded! + + + + + The operation completed successfully. + + + + + Error Opening %1 + + + + + Select Directory + + + + + Properties + + + + + The game properties could not be loaded. + + + + + Switch Executable (%1);;All Files (*.*) + %1 is an identifier for the Switch executable file extensions. + + + + + Load File + + + + + Open Extracted ROM Directory + + + + + Invalid Directory Selected + + + + + The directory you have selected does not contain a 'main' file. + + + + + Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) + + + + + Install Files + + + + + %n file(s) remaining + + + + + Installing file "%1"... + + + + + + Install Results + + + + + To avoid possible conflicts, we discourage users from installing base games to the NAND. +Please, only use this feature to install updates and DLC. + + + + + %n file(s) were newly installed + + + + + + %n file(s) were overwritten + + + + + + %n file(s) failed to install + + + + + + System Application + + + + + System Archive + + + + + System Application Update + + + + + Firmware Package (Type A) + + + + + Firmware Package (Type B) + + + + + Game + + + + + Game Update + + + + + Game DLC + + + + + Delta Title + + + + + Select NCA Install Type... + + + + + Please select the type of title you would like to install this NCA as: +(In most instances, the default 'Game' is fine.) + + + + + Failed to Install + + + + + The title type you selected for the NCA is invalid. + + + + + File not found + + + + + File "%1" not found + + + + + OK + + + + + Function Disabled + + + + + Compatibility list reporting is currently disabled. Check back later! + + + + + Error opening URL + + + + + Unable to open the URL "%1". + + + + + TAS Recording + + + + + Overwrite file of player 1? + + + + + Invalid config detected + + + + + Handheld controller can't be used on docked mode. Pro controller will be selected. + + + + + + Amiibo + + + + + + The current amiibo has been removed + + + + + Error + + + + + + The current game is not looking for amiibos + + + + + Amiibo File (%1);; All Files (*.*) + + + + + Load Amiibo + + + + + Error loading Amiibo data + + + + + The selected file is not a valid amiibo + + + + + The selected file is already on use + + + + + An unknown error occurred + + + + + + Keys not installed + + + + + + Install decryption keys and restart Eden before attempting to install firmware. + + + + + Select Dumped Firmware Source Location + + + + + Select Dumped Firmware ZIP + + + + + Zipped Archives (*.zip) + + + + + Firmware cleanup failed + + + + + Failed to clean up extracted firmware cache. +Check write permissions in the system temp directory and try again. +OS reported error: %1 + + + + + No firmware available + + + + + Firmware Corrupted + + + + + Unknown applet + + + + + Applet doesn't map to a known value. + + + + + Record not found + + + + + Applet not found. Please reinstall firmware. + + + + + Capture Screenshot + + + + + PNG Image (*.png) + + + + + Update Available + + + + + Download %1? + + + + + TAS state: Running %1/%2 + + + + + TAS state: Recording %1 + + + + + TAS state: Idle %1/%2 + + + + + TAS State: Invalid + + + + + &Stop Running + + + + + Stop R&ecording + + + + + Building: %n shader(s) + + + + + Scale: %1x + %1 is the resolution scaling factor + + + + + Speed: %1% / %2% + + + + + Speed: %1% + + + + + Game: %1 FPS + + + + + Frame: %1 ms + + + + + + FSR + + + + + NO AA + + + + + VOLUME: MUTE + + + + + VOLUME: %1% + Volume percentage (e.g. 50%) + + + + + Derivation Components Missing + + + + + Decryption keys are missing. Install them now? + + + + + Wayland Detected! + + + + + Wayland is known to have significant performance issues and mysterious bugs. +It's recommended to use X11 instead. + +Would you like to force it for future launches? + + + + + Use X11 + + + + + Continue with Wayland + + + + + Don't show again + + + + + Restart Required + + + + + Restart Eden to apply the X11 backend. + + + + + Slow + + + + + Turbo + + + + + Unlocked + + + + + Select RomFS Dump Target + + + + + Please select which RomFS you would like to dump. + + + + + Are you sure you want to close Eden? + + + + + + + Eden + + + + + Are you sure you want to stop the emulation? Any unsaved progress will be lost. + + + + + The currently running application has requested Eden to not exit. + +Would you like to bypass this and exit anyway? + + + + + FXAA + + + + + SMAA + + + + + Nearest + + + + + Bilinear + + + + + Bicubic + + + + + Zero-Tangent + + + + + B-Spline + + + + + Mitchell + + + + + Spline-1 + + + + + Gaussian + + + + + Lanczos + + + + + ScaleForce + + + + + Area + + + + + MMPX + + + + + Docked + + + + + Handheld + + + + + Fast + + + + + Balanced + + + + + Accurate + + + + + Vulkan + + + + + OpenGL GLSL + + + + + OpenGL SPIRV + + + + + OpenGL GLASM + + + + + Null + MigrationWorker - - Data was migrated successfully. - - - - + Linking the old directory failed. You may need to re-run with administrative privileges on Windows. OS gave error: %1 - + - + + + +Note that your configuration and data will be shared with %1. +If this is not desirable, delete the following files: +%2 +%3 +%4 + + + + If you wish to clean up the files which were left in the old data location, you can do so by deleting the following directory: %1 - + + + + + Data was migrated successfully. + + + + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + @@ -8312,87 +8179,87 @@ If you wish to clean up the files which were left in the old data location, you Moderation - + Ban List - + - + Refreshing - + Unban - + + + + + Subject + - Subject - - - - Type - + - + Forum Username - + - + IP Address - + - + Refresh - + MultiplayerState - + Current connection status - + - + Not Connected. Click here to find a room! - + - + Not Connected - + - + Connected - + - + New Messages Received - + + + + + Error + - Error - - - - Failed to update the room information. Please check your Internet connection and try hosting the room again. Debug Message: - + @@ -8400,33 +8267,162 @@ Debug Message: Game already running - + Joining a room when the game is already running is discouraged and can cause the room feature not to work correctly. Proceed anyway? - + Leave Room - + You are about to close the room. Any network connections will be closed. - + Disconnect - + You are about to leave the room. Any network connections will be closed. - + + + + + NewUserDialog + + + + New User + + + + + Change Avatar + + + + + Set Image + + + + + UUID + + + + + Eden + + + + + Username + + + + + UUID must be 32 hex characters (0-9, A-F) + + + + + Generate + + + + + Select User Image + + + + + Image Formats (*.jpg *.jpeg *.png *.bmp) + + + + + No firmware available + + + + + Please install the firmware to use firmware avatars. + + + + + + Error loading archive + + + + + Archive is not available. Please install/reinstall firmware. + + + + + Could not locate RomFS. Your file or decryption keys may be corrupted. + + + + + Error extracting archive + + + + + Could not extract RomFS. Your file or decryption keys may be corrupted. + + + + + Error finding image directory + + + + + Failed to find image directory in the archive. + + + + + No images found + + + + + No avatar images were found in the archive. + + + + + + All Good + Tooltip + + + + + Must be 32 hex characters (0-9, a-f) + Tooltip + + + + + Must be between 1 and 32 characters + Tooltip + @@ -8434,7 +8430,7 @@ Proceed anyway? Dialog - + @@ -8453,73 +8449,201 @@ Proceed anyway? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - + + + + + PerformanceOverlay + + + Form + + + + + Frametime + + + + + 0 ms + + + + + + Min: 0 + + + + + + Max: 0 + + + + + + Avg: 0 + + + + + FPS + + + + + 0 fps + + + + + %1 fps + + + + + + Avg: %1 + + + + + + Min: %1 + + + + + + Max: %1 + + + + + %1 ms + PlayerControlPreview - + START/PAUSE - + + + + + ProfileAvatarDialog + + + Select + + + + + Cancel + + + + + Background Color + + + + + Select Firmware Avatar + QObject - - Installed SD Titles - Asennetut SD-sovellukset + + + + Migration + - - Installed NAND Titles - Asennetut NAND-sovellukset + + Clear Shader Cache + - - System Titles - Järjestelmäsovellukset + + Keep Old Data + - - Add New Game Directory - Lisää uusi pelikansio + + Clear Old Data + - - Favorites - + + Link Old Directory + + + + + + + + + + + + + No + + + + + You can manually re-trigger this prompt by deleting the new config directory: +%1 + + + + + Migrating + + + + + Migrating, this may take a while... + - - + + Shift Shift - - + + Ctrl Ctrl - - + + Alt Alt - - - - + + + + [not set] [ei asetettu] @@ -8529,15 +8653,15 @@ p, li { white-space: pre-wrap; } Hattu %1 %2 - - - - - - - - + + + + + + + + Axis %1%2 Akseli %1%2 @@ -8547,374 +8671,383 @@ p, li { white-space: pre-wrap; } Näppäin %1 - - - - - - + + + + + + [unknown] [tuntematon] - - - + + + Left - + - - - + + + Right - + - - - + + + Down - + - - - + + + Up - + - - + + Z - + - - + + R - + - - + + L - + - - ZR - - - - - ZL - - - - - SR - - - - - SL - - - - - Stick L - - - - - Stick R - - - - - + + A - + - - + + B - + - - + + X - + - - + + Y - + - - + + Start Käynnistä - - Plus - - - - - Minus - - - - - Capture - - - - - + + L1 - + - - + + L2 - + - - + + L3 - + - - + + R1 - + - - + + R2 - + - - + + R3 - + - - + + Circle - + - - + + Cross - + - - + + Square - + - - + + Triangle - + - - + + Share - + - - + + Options - + - - - %1%2%3Button %4 - - - - - - Home - - - - - Touch - - - - - Wheel - Indicates the mouse wheel - - - - - Backward - - - - - Forward - - - - - Task - - - - - Extra - - - - - + + [undefined] - + - - - [invalid] - - - - + %1%2 - + - - - %1%2Hat %3 - + + + [invalid] + - - + + %1%2Hat %3 + + + + - %1%2Axis %3 - - - - - - %1%2Axis %3,%4,%5 - - - - - %1%2%3%4 - - - - - - %1%2%3Hat %4 - - - - - - %1%2%3Axis %4 - - - - - - %1%2Motion %3 - - - - - %1%2Button %3 - + + %1%2Axis %3 + - - + + + %1%2Axis %3,%4,%5 + + + + + + %1%2Motion %3 + + + + + + %1%2Button %3 + + + + + [unused] [ei käytössä] - + + ZR + + + + + ZL + + + + + SR + + + + + SL + + + + + Stick L + + + + + Stick R + + + + + Plus + + + + + Minus + + + + + + Home + + + + + Capture + + + + + Touch + + + + + Wheel + Indicates the mouse wheel + + + + + Backward + + + + + Forward + + + + + Task + + + + + Extra + + + + + %1%2%3%4 + + + + + + %1%2%3Hat %4 + + + + + + %1%2%3Axis %4 + + + + + + %1%2%3Button %4 + + + + Not playing a game - + - + %1 is not playing a game - + - + %1 is playing %2 - + - - - - Migration - + + Play Time: %1 + - - - - - + + Never Played + - - - No - + + Version: %1 + - - You can manually re-trigger this prompt by deleting the new config directory: -%1 - + + Version: 1.0.0 + - - Migrating - + + Installed SD Titles + Asennetut SD-sovellukset - - Migrating, this may take a while... - + + Installed NAND Titles + Asennetut NAND-sovellukset + + + + System Titles + Järjestelmäsovellukset + + + + Add New Game Directory + Lisää uusi pelikansio + + + + Favorites + @@ -8922,112 +9055,898 @@ p, li { white-space: pre-wrap; } Amiibo Settings - + Amiibo Info - + Series - + Type - + Name - Nimi + Amiibo Data - + Custom Name - + Owner - + Creation Date - + dd/MM/yyyy - + Modification Date - + dd/MM/yyyy - + Game Data - + Game Id - + Mount Amiibo - + ... - ... + File Path - + - + No game data present - - - - - The following amiibo data will be formatted: - + - The following game data will removed: - + The following amiibo data will be formatted: + - Set nickname and owner: - + The following game data will removed: + + Set nickname and owner: + + + + Do you wish to restore this amiibo? - + + + + + QtCommon::Content + + + Game Requires Firmware + + + + + The game you are trying to launch requires firmware to boot or to get past the opening menu. Please <a href='https://yuzu-mirror.github.io/help/quickstart'>dump and install firmware</a>, or press "OK" to launch anyways. + + + + + Installing Firmware... + + + + + + + + + Cancel + + + + + Firmware Install Failed + + + + + Firmware Install Succeeded + + + + + Firmware integrity verification failed! + + + + + + Verification failed for the following files: + +%1 + + + + + + Verifying integrity... + + + + + + Integrity verification succeeded! + + + + + + The operation completed successfully. + + + + + + Integrity verification failed! + + + + + File contents may be corrupt or missing. + + + + + Integrity verification couldn't be performed + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity. + + + + + Select Dumped Keys Location + + + + + Decryption Keys install succeeded + + + + + Decryption Keys install failed + + + + + Orphaned Profiles Detected! + + + + + UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br> + + + + + Really clear data? + + + + + Important data may be lost! + + + + + Are you REALLY sure? + + + + + Once deleted, your data will NOT come back! +Only do this if you're 100% sure you want to delete this data. + + + + + Clearing... + + + + + Select Export Location + + + + + %1.zip + + + + + + Zipped Archives (*.zip) + + + + + Exporting data. This may take a while... + + + + + Exporting + + + + + Exported Successfully + + + + + Data was exported successfully. + + + + + Export Cancelled + + + + + Export was cancelled by the user. + + + + + Export Failed + + + + + Ensure you have write permissions on the targeted directory and try again. + + + + + Select Import Location + + + + + Import Warning + + + + + All previous data in this directory will be deleted. Are you sure you wish to proceed? + + + + + Importing data. This may take a while... + + + + + Importing + + + + + Imported Successfully + + + + + Data was imported successfully. + + + + + Import Cancelled + + + + + Import was cancelled by the user. + + + + + Import Failed + + + + + Ensure you have read permissions on the targeted directory and try again. + + + + + QtCommon::FS + + + Linked Save Data + + + + + Save data has been linked. + + + + + Failed to link save data + + + + + Could not link directory: + %1 +To: + %2 + + + + + Already Linked + + + + + This title is already linked to Ryujinx. Would you like to unlink it? + + + + + Failed to unlink old directory + + + + + + OS returned error: %1 + + + + + Failed to copy save data + + + + + Unlink Successful + + + + + Successfully unlinked Ryujinx save data. Save data has been kept intact. + + + + + Could not find Ryujinx installation + + + + + Could not find a valid Ryujinx installation. This may typically occur if you are using Ryujinx in portable mode. + +Would you like to manually select a portable folder to use? + + + + + Ryujinx Portable Location + + + + + Not a valid Ryujinx directory + + + + + The specified directory does not contain valid Ryujinx data. + + + + + + Could not find Ryujinx save data + + + + + QtCommon::Game + + + Error Removing Contents + + + + + Error Removing Update + + + + + Error Removing DLC + + + + + + + + + + Successfully Removed + + + + + Successfully removed the installed base game. + + + + + The base game is not installed in the NAND and cannot be removed. + + + + + Successfully removed the installed update. + + + + + There is no update installed for this title. + + + + + There are no DLCs installed for this title. + + + + + Successfully removed %1 installed DLC. + + + + + + Error Removing Transferable Shader Cache + + + + + + A shader cache for this title does not exist. + + + + + Successfully removed the transferable shader cache. + + + + + Failed to remove the transferable shader cache. + + + + + Error Removing Vulkan Driver Pipeline Cache + + + + + Failed to remove the driver pipeline cache. + + + + + + Error Removing Transferable Shader Caches + + + + + Successfully removed the transferable shader caches. + + + + + Failed to remove the transferable shader cache directory. + + + + + + Error Removing Custom Configuration + + + + + A custom configuration for this title does not exist. + + + + + Successfully removed the custom game configuration. + + + + + Failed to remove the custom game configuration. + + + + + Reset Metadata Cache + + + + + The metadata cache is already empty. + + + + + The operation completed successfully. + + + + + The metadata cache couldn't be deleted. It might be in use or non-existent. + + + + + Create Shortcut + + + + + Do you want to launch the game in fullscreen? + + + + + Shortcut Created + + + + + Successfully created a shortcut to %1 + + + + + Shortcut may be Volatile! + + + + + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? + + + + + Failed to Create Shortcut + + + + + Failed to create a shortcut to %1 + + + + + Create Icon + + + + + Cannot create icon file. Path "%1" does not exist and cannot be created. + + + + + No firmware available + + + + + Please install firmware to use the home menu. + + + + + Home Menu Applet + + + + + Home Menu is not available. Please reinstall firmware. + + + + + QtCommon::Mod + + + Mod Name + + + + + What should this mod be called? + + + + + RomFS + + + + + ExeFS/Patch + + + + + Cheat + + + + + Mod Type + + + + + Could not detect mod type automatically. Please manually specify the type of mod you downloaded. + +Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods. + + + + + + Mod Extract Failed + + + + + Failed to create temporary directory %1 + + + + + Zip file %1 is empty + + + + + QtCommon::Path + + + Error Opening Shader Cache + + + + + Failed to create or open shader cache for this title, ensure your app data directory has write permissions. + + + + + QtCommon::StringLookup + + + Contains game save data. DO NOT REMOVE UNLESS YOU KNOW WHAT YOU'RE DOING! + + + + + Contains Vulkan and OpenGL pipeline caches. Generally safe to remove. + + + + + Contains updates and DLC for games. + + + + + Contains firmware and applet data. + + + + + Contains game mods, patches, and cheats. + + + + + Decryption Keys were successfully installed + + + + + Unable to read key directory, aborting + + + + + One or more keys failed to copy. + + + + + Verify your keys file has a .keys extension and try again. + + + + + Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. + + + + + Successfully installed firmware version %1 + + + + + Unable to locate potential firmware NCA files + + + + + Failed to delete one or more firmware files. + + + + + One or more firmware files failed to copy into NAND. + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. Restart Eden or re-install firmware. + + + + + Firmware missing. Firmware is required to run certain games and use the Home Menu. + + + + + Firmware reported as present, but was unable to be read. Check for decryption keys and redump firmware if necessary. + + + + + Eden has detected user data for the following emulators: + + + + + Would you like to migrate your data for use in Eden? +Select the corresponding button to migrate data from that emulator. +This may take a while. + + + + + Clearing shader cache is recommended for all users. +Do not uncheck unless you know what you're doing. + + + + + Keeps the old data directory. This is recommended if you aren't +space-constrained and want to keep separate data for the old emulator. + + + + + Deletes the old data directory. +This is recommended on devices with space constraints. + + + + + Creates a filesystem link between the old directory and Eden directory. +This is recommended if you want to share data between emulators. + + + + + Ryujinx title database does not exist. + + + + + Invalid header on Ryujinx title database. + + + + + Invalid magic header on Ryujinx title database. + + + + + Invalid byte alignment on Ryujinx title database. + + + + + No items found in Ryujinx title database. + + + + + Title %1 not found in Ryujinx title database. + @@ -9035,27 +9954,27 @@ p, li { white-space: pre-wrap; } Controller Applet - + Supported Controller Types: - + Players: - + 1 - 8 - + P4 - + @@ -9066,9 +9985,9 @@ p, li { white-space: pre-wrap; } - + Pro Controller - + @@ -9079,9 +9998,9 @@ p, li { white-space: pre-wrap; } - + Dual Joycons - + @@ -9092,9 +10011,9 @@ p, li { white-space: pre-wrap; } - + Left Joycon - + @@ -9105,9 +10024,9 @@ p, li { white-space: pre-wrap; } - + Right Joycon - + @@ -9119,69 +10038,64 @@ p, li { white-space: pre-wrap; } Use Current Config - + P2 - + P1 - + - + Handheld Käsikonsolimoodi P3 - + P7 - + P8 - + P5 - + P6 - + Console Mode - + Docked - - - - - Not enough controllers - + Vibration - + @@ -9192,7 +10106,7 @@ p, li { white-space: pre-wrap; } Motion - + @@ -9202,124 +10116,129 @@ p, li { white-space: pre-wrap; } Create - + Controllers - + 1 - + 2 - + 4 - + 3 - + Connected - + 5 - + 7 - + 6 - + 8 - + - + + Not enough controllers + + + + GameCube Controller - + - + Poke Ball Plus - + - + NES Controller - + - + SNES Controller - + - + N64 Controller - + - + Sega Genesis - + QtErrorDisplay - - - + + + Error Code: %1-%2 (0x%3) - + - + An error has occurred. Please try again or contact the developer of the software. - + - + An error occurred on %1 at %2. Please try again or contact the developer of the software. - + - + An error has occurred. %1 %2 - + QtProfileSelectionDialog - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -9327,81 +10246,81 @@ Please try again or contact the developer of the software. %2 - - Profile Creator - - - - - Profile Icon Editor - - - - - Profile Nickname Editor - - - - - Who will receive the points? - - - - - Who is using Nintendo eShop? - - - - - Who is making this purchase? - - - - - Who is posting? - - - - - Select a user to link to a Nintendo Account. - - - - - Change settings for which user? - - - - - Format data for which user? - - - - - Which user will be transferred to another console? - - - - - Send save data for which user? - - - - - Select a user: - Valitse käyttäjä: - - - + Users Käyttäjät + + + Profile Creator + + Profile Selector Profiilivalitsin + + + Profile Icon Editor + + + + + Profile Nickname Editor + + + + + Who will receive the points? + + + + + Who is using Nintendo eShop? + + + + + Who is making this purchase? + + + + + Who is posting? + + + + + Select a user to link to a Nintendo Account. + + + + + Change settings for which user? + + + + + Format data for which user? + + + + + Which user will be transferred to another console? + + + + + Send save data for which user? + + + + + Select a user: + Valitse käyttäjä: + QtSoftwareKeyboardDialog @@ -9413,29 +10332,69 @@ Please try again or contact the developer of the software. Enter Text - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - + - - + + OK OK - + Cancel Peruuta + + RyujinxDialog + + + Ryujinx Link + + + + + Linking save data to Ryujinx lets both Ryujinx and Eden reference the same save files for your games. + +By selecting "From Eden", previous save data stored in Ryujinx will be deleted, and vice versa for "From Ryujinx". + + + + + From Eden + + + + + From Ryujinx + + + + + Cancel + + + + + Failed to link save data + + + + + OS returned error: %1 + + + SequenceDialog @@ -9445,177 +10404,31 @@ p, li { white-space: pre-wrap; } - WaitTreeCallstack + SetPlayTimeDialog - - Call stack - Call stack - - - - WaitTreeMutexInfo - - waiting for mutex 0x%1 - Odotetaan mutex 0x%1 + + Set Play Time Data + - has waiters: %1 - has waiters: %1 + + Hours: + - owner handle: 0x%1 - owner handle: 0x%1 - - - - WaitTreeObjectList - - waiting for all objects - Odotetaan kaikkia objekteja + + Minutes: + - waiting for one of the following objects - Odotetaan yhtä seuraavista objekteista - - - - WaitTreeSynchronizationObject - - - [%1] %2 - + + Seconds: + - - waited by no thread - waited by no thread - - - - WaitTreeThread - - - runnable - - - - - paused - pysäytetty - - - - sleeping - lepää - - - - waiting for IPC reply - odotetaan IPC-vastausta - - - - waiting for objects - Odotetaan objekteja - - - - waiting for condition variable - odotetaan condition variable - - - - waiting for address arbiter - odotetaan addres arbiter - - - - waiting for suspend resume - - - - - waiting - - - - - initialized - - - - - terminated - - - - - unknown - - - - - PC = 0x%1 LR = 0x%2 - PC = 0x%1 LR = 0x%2 - - - - ideal - ihanteellinen - - - - core %1 - ydin %1 - - - - processor = %1 - prosessori = %1 - - - ideal core = %1 - ihanteellinen ydin = %1 - - - - affinity mask = %1 - affinity mask = %1 - - - - thread id = %1 - thread id = %1 - - - - priority = %1(current) / %2(normal) - prioriteetti = %1(tämänhetkinen) / %2(normaali) - - - - last running ticks = %1 - viimeisimmät suoritetut tikit = %1 - - - not waiting for mutex - ei odota mutexia - - - - WaitTreeThreadList - - - waited by thread - odotus by thread - - - - WaitTreeWidget - - - &Wait Tree - + + Total play time reached maximum. + diff --git a/dist/languages/fr.ts b/dist/languages/fr.ts index a7443f8bd2..1339bd47ed 100644 --- a/dist/languages/fr.ts +++ b/dist/languages/fr.ts @@ -1,25 +1,15 @@ - - - + AboutDialog - - About yuzu - À propos de yuzu - - - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - <html><head/><body><span style=" font-size:28pt;">yuzu</span><p></body></html> - - About eden - + About Eden + À propos d'Eden - <html><head/><body><p><span style=" font-size:28pt;">eden</span></p></body></html> - + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> @@ -34,70 +24,57 @@ p, li { white-space: pre-wrap; } hr { height: 1px; border-width: 0; } li.unchecked::marker { content: "\2610"; } li.checked::marker { content: "\2612"; } -</style></head><body style=" font-family:'Adwaita Sans'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> - +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css"> +p, li { white-space: pre-wrap; } +hr { height: 1px; border-width: 0; } +li.unchecked::marker { content: "\2610"; } +li.checked::marker { content: "\2612"; } +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden est un émulateur expérimental open source pour la Nintendo Switch, sous licence GPLv3.0+, basé sur l’émulateur yuzu, dont le développement s’est arrêté en Mars 2024. <br /><br />Ce logiciel ne doit pas être utilisé pour jouer à des jeux que vous n’avez pas obtenus légalement.</span></p></body></html> - <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">This software should not be used to play games you have not legally obtained.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu est un émulateur expérimental open-source pour la Nintendo Switch sous licence GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Ce logiciel ne doit pas être utilisé pour jouer à des jeux que vous n'avez pas obtenus légalement.</span></p></body></html> - - - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Site Web</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Code Source</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributeurs</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licence</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Site web</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Code source</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributeurs</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Revolt</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licence</span></a></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. eden is not affiliated with Nintendo in any way.</span></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; est une marque déposée de Nintendo. yuzu n'est en aucun cas affilié à Nintendo.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. Eden is not affiliated with Nintendo in any way.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; est une marque déposée de Nintendo. Eden n’est en aucun cas affilié à Nintendo.</span></p></body></html> CalibrationConfigurationDialog - + Communicating with the server... Communication avec le serveur... - + Cancel Annuler - + Touch the top left corner <br>of your touchpad. - Touchez le coin supérieur gauche<br>de votre pavé tactile. + Touchez le coin supérieur gauche <br>de votre pavé tactile. - + Now touch the bottom right corner <br>of your touchpad. - Touchez le coin supérieur gauche<br> de votre pavé tactile. + Maintenant, touchez le coin inférieur droit <br>de votre pavé tactile. - + Configuration completed! Configuration terminée ! - + OK OK @@ -107,95 +84,95 @@ p, li { white-space: pre-wrap; } Room Window - Fenêtre du salon + Fenêtre du Salon Send Chat Message - Envoyer un message de chat + Envoyer un Message Send Message - Envoyer le message + Envoyer - + Members Membres - + %1 has joined %1 a rejoint - + %1 has left %1 a quitté - + %1 has been kicked %1 a été expulsé - + %1 has been banned %1 a été banni - + %1 has been unbanned %1 a été débanni - + View Profile - Voir le profil + Voir le Profil - - + + Block Player - Bloquer le joueur + Bloquer le Joueur - + When you block a player, you will no longer receive chat messages from them.<br><br>Are you sure you would like to block %1? Lorsque vous bloquez un joueur, vous ne recevrez plus de messages de chat de sa part.<br><br>Êtes-vous sûr de vouloir bloquer %1 ? - + Kick Expulser - + Ban Bannir - + Kick Player - Expulser le joueur + Expulser le Joueur - + Are you sure you would like to <b>kick</b> %1? Êtes-vous sûr de vouloir <b>expluser</b> %1 ? - + Ban Player - Bannir le joueur + Bannir le Joueur - + Are you sure you would like to <b>kick and ban</b> %1? This would ban both their forum username and their IP address. - Êtes-vous sûr de vouloir <b>expluser et bannir </b> %1 ? + Êtes-vous sûr de vouloir <b>expluser et bannir</b> %1 ? Cela bannirait à la fois son nom d'utilisateur du forum et son adresse IP. @@ -205,12 +182,12 @@ Cela bannirait à la fois son nom d'utilisateur du forum et son adresse IP. Room Window - Fenêtre du salon + Fenêtre du Salon Room Description - Description du salon + Description du Salon @@ -220,23 +197,23 @@ Cela bannirait à la fois son nom d'utilisateur du forum et son adresse IP. Leave Room - Quitter le salon + Quitter le Salon ClientRoomWindow - + Connected Connecté - + Disconnected Déconnecté - + %1 - %2 (%3/%4 members) - connected %1 - %2 (%3/%4 membres) - connecté @@ -246,7 +223,7 @@ Cela bannirait à la fois son nom d'utilisateur du forum et son adresse IP. Report Compatibility - Signaler la compatibilité + Signaler la Compatibilité @@ -257,17 +234,12 @@ Cela bannirait à la fois son nom d'utilisateur du forum et son adresse IP. Report Game Compatibility - Signaler la compatibilité d'un jeu - - - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of yuzu you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected yuzu account</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Si vous choisissez à soumettre un test d'essai à la liste de compatibilité yuzu<span style=" font-size:10pt; text-decoration: underline; color:#0000ff;"><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt;">, Les informations suivantes seront collectées et publiées sur le site : -</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Informations Système (Processeur / Carte Graphique / Système d'exploitation)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La version de yuzu que vous employez</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Le compte yuzu sous lequel vous êtes connecté</li></ul></body></html> + Signaler la Compatibilité d'un Jeu <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">eden Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of eden you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected eden account</li></ul></body></html> - + <html><head/><body><p><span style=" font-size:10pt;">Si vous choisissez de soumettre un cas de test à la </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">Liste de Compatibilité d'eden </span></a><span style=" font-size:10pt;">, Les informations suivantes seront collectées et affichées sur le site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Informations Matérielles (CPU / GPU / Système d'Exploitation)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Quelle version d'eden vous utilisez</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Le compte eden connecté</li></ul></body></html> @@ -277,17 +249,17 @@ Cela bannirait à la fois son nom d'utilisateur du forum et son adresse IP. Yes The game starts to output video or audio - Oui Le jeu commence à afficher la video ou à émettre du son + Oui Le jeu démarre avec l’affichage et le son No The game doesn't get past the "Launching..." screen - Non Le jeu ne fonctionne plus après après l'écran "de lancement" + Non Le jeu reste bloqué sur l’écran "Lancement..." Yes The game gets past the intro/menu and into gameplay - Oui Le jeu fonctionne après l'intro/menu et dans le gameplay + Oui Le jeu fonctionne après avoir passé l’intro et/ou le menu @@ -312,7 +284,7 @@ Cela bannirait à la fois son nom d'utilisateur du forum et son adresse IP. <html><head/><body><p>Does the game work without crashing, freezing or locking up during gameplay?</p></body></html> - <html><head/><body><p>Est-ce-que le jeu fonctionne sans crasher, freezer ou se verouiller pendant le gameplay ?</p></body></html> + <html><head/><body><p>Est-ce que le jeu crash, freeze ou se verrouille pendant le gameplay ?</p></body></html> @@ -322,7 +294,7 @@ Cela bannirait à la fois son nom d'utilisateur du forum et son adresse IP. No The game can't progress past a certain area - Non Le jeu ne peut pas progresser après un certain temps + Non Le jeu ne peut plus progresser après un certain point @@ -332,12 +304,12 @@ Cela bannirait à la fois son nom d'utilisateur du forum et son adresse IP. Major The game has major graphical errors - Majeur Le jeu a des erreurs graphiques majeures + Majeur Le jeu a des erreurs graphiques majeures Minor The game has minor graphical errors - Mineur Le jeu a des erreurs graphiques mineures + Mineur Le jeu a des erreurs graphiques mineures @@ -352,7 +324,7 @@ Cela bannirait à la fois son nom d'utilisateur du forum et son adresse IP. Major The game has major audio errors - Majeur Le jeu a des erreurs d'audio majeures + Majeur Le jeu a des erreurs d'audio majeures @@ -375,22 +347,22 @@ Cela bannirait à la fois son nom d'utilisateur du forum et son adresse IP. Merci de votre suggestion ! - + Submitting - Soumission en cours + Envoi - + Communication error Erreur de communication - + An error occurred while sending the Testcase Une erreur est survenue lors de l'envoi du cas-type - + Next Suivant @@ -398,350 +370,384 @@ Cela bannirait à la fois son nom d'utilisateur du forum et son adresse IP. ConfigurationShared - + % % - + Amiibo editor Éditeur d'Amiibo - + Controller configuration Configuration des manettes - + Data erase Effacement des données - + Error Erreur - + Net connect Connexion Internet - + Player select Sélection du joueur - + Software keyboard Clavier virtuel - + Mii Edit Édition de Mii - + Online web Web en ligne - + Shop Boutique - + Photo viewer Visionneuse de photos - + Offline web Web hors ligne - + Login share Partage d'identification - + Wifi web auth Authentification Wifi Web - + My page Ma page - + + Enable Overlay Applet + Activer l'applet d'overlay + + + + Enables Horizon's built-in overlay applet. Press and hold the home button for 1 second to show it. + + + + Output Engine: Moteur de Sortie : - + Output Device: Périphérique de sortie : - + Input Device: Périphérique d'entrée : - + Mute audio Couper le son - + Volume: Volume : - + Mute audio when in background Couper le son en arrière-plan - + Multicore CPU Emulation Émulation CPU Multicœur - - This option increases CPU emulation thread use from 1 to the Switch’s maximum of 4. -This is mainly a debug option and shouldn’t be disabled. - Cette option augmente l'utilisation du thread d'émulation CPU de 1 au maximum de 4 sur la Nintendo Switch. -Il s'agit principalement d'une option de débogage et ne devrait pas être désactivée. + + This option increases CPU emulation thread use from 1 to the maximum of 4. +This is mainly a debug option and shouldn't be disabled. + Cette option augmente l’utilisation des threads d’émulation CPU de 1 jusqu’à un maximum de 4. +Il s’agit principalement d’une option de débogage et elle ne devrait pas être désactivée. - + Memory Layout Disposition de la mémoire - - Increases the amount of emulated RAM from the stock 4GB of the retail Switch to the developer kit's 8/6GB. -It’s doesn’t improve stability or performance and is intended to let big texture mods fit in emulated RAM. -Enabling it will increase memory use. It is not recommended to enable unless a specific game with a texture mod needs it. - Augmente la quantité de RAM émulée de la Switch de détail de 4 Go à la mémoire vive de 8/6 Go du kit de développement. -Cela n'améliore ni la stabilité ni les performances et est destiné à permettre aux grands mods de textures de s'adapter à la RAM émulée. -L'activer augmentera l'utilisation de la mémoire. Il n'est pas recommandé de l'activer à moins qu'un jeu spécifique avec un mod de texture en ait besoin. + + Increases the amount of emulated RAM. +Doesn't affect performance/stability but may allow HD texture mods to load. + - + Limit Speed Percent Limiter la vitesse en pourcentage - - Controls the game's maximum rendering speed, but it’s up to each game if it runs faster or not. + + Controls the game's maximum rendering speed, but it's up to each game if it runs faster or not. 200% for a 30 FPS game is 60 FPS, and for a 60 FPS game it will be 120 FPS. Disabling it means unlocking the framerate to the maximum your PC can reach. - Contrôle la vitesse maximale de rendu du jeu, mais c'est à chaque jeu de décider s'il fonctionne plus vite ou non. -200% pour un jeu de 30 FPS signifie 60 FPS, et pour un jeu de 60 FPS, ce sera 120 FPS. -Le désactiver signifie déverrouiller le framerate à la valeur maximale que votre PC peut atteindre. + Contrôle la vitesse de rendu maximale du jeu, mais c’est chaque jeu qui décide s’il peut tourner plus vite ou non. +À 200 %, un jeu prévu pour 30 FPS tournera à 60 FPS, et un jeu prévu pour 60 FPS passera à 120 FPS. +Désactiver cette option signifie débloquer le framerate jusqu’au maximum que votre PC peut atteindre. - + + Turbo Speed + + + + + When the Turbo Speed hotkey is pressed, the speed will be limited to this percentage. + + + + + Slow Speed + + + + + When the Slow Speed hotkey is pressed, the speed will be limited to this percentage. + + + + Synchronize Core Speed - + Synchroniser la vitesse du noyau - - Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). -Compatibility varies by game; many (especially older ones) may not respond well. + + Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). Can help reduce stuttering at lower framerates. - + Synchronise la vitesse des cœurs CPU avec la vitesse de rendu maximale du jeu pour augmenter les FPS sans affecter la vitesse du jeu (animations, physique, etc.). +Peut aider à réduire les saccades à des framerates faibles. - + Accuracy: - Précision: + Précision : - - This setting controls the accuracy of the emulated CPU. -Don't change this unless you know what you are doing. - Ce paramètre contrôle la précision du CPU émulé. -Ne le changez pas à moins de savoir ce que vous faites. + + Change the accuracy of the emulated CPU (for debugging only). + Modifie la précision du CPU émulé (réservé au débogage). - - + + Backend: - Backend : + Arrière-plan : - - Fast CPU Time - + + CPU Overclock + Overclocking CPU - + Overclocks the emulated CPU to remove some FPS limiters. Weaker CPUs may see reduced performance, and certain games may behave improperly. Use Boost (1700MHz) to run at the Switch's highest native clock, or Fast (2000MHz) to run at 2x clock. - + Overclocke le CPU émulé pour supprimer certains limiteurs FPS. Les CPU plus faibles peuvent voir leurs performances réduites et certains jeux peuvent se comporter de manière incorrecte. +Utilisez Boost (1700 MHz) pour fonctionner à l'horloge native la plus élevée de la Switch, ou Fast (2000 MHz) pour fonctionner à l'horloge 2x - + + Custom CPU Ticks + Ticks CPU personnalisés + + + + Set a custom value of CPU ticks. Higher values can increase performance, but may cause deadlocks. A range of 77-21000 is recommended. + Définissez une valeur personnalisée pour les cycles CPU. Des valeurs plus élevées peuvent améliorer les performances, mais risquent de provoquer des blocages. Une plage de 77-21000 est recommandée. + + + + Enable Host MMU Emulation (fastmem) + Activer l'émulation MMU de l'hôte (fastmem) + + + + This optimization speeds up memory accesses by the guest program. +Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU. +Disabling this forces all memory accesses to use Software MMU Emulation. + Cette optimisation accélère les accès mémoire par le programme invité. +L'activer permet à l'invité de lire/écrire directement dans la mémoire et utilise le MMU de l'Hôte. +Désactiver cela force tous les accès mémoire à utiliser l'émulation logicielle de la MMU. + + + Unfuse FMA (improve performance on CPUs without FMA) Désactivation du FMA (améliore les performances des CPU sans FMA) - + This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support. Cette option améliore la vitesse en réduisant la précision des instructions de multiplication et addition fusionnées sur les processeurs qui ne prennent pas en charge nativement FMA. - + Faster FRSQRTE and FRECPE FRSQRTE et FRECPE plus rapides - + This option improves the speed of some approximate floating-point functions by using less accurate native approximations. Cette option améliore la vitesse de certaines fonctions à virgule flottante approximatives en utilisant des approximations natives moins précises. - + Faster ASIMD instructions (32 bits only) Instructions ASIMD plus rapides (32 bits seulement) - + This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes. Cette option améliore la vitesse des fonctions à virgule flottante ASIMD sur 32 bits en utilisant des modes d'arrondi incorrects. - + Inaccurate NaN handling Traitement NaN imprécis - + This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions. Cette option améliore la vitesse en supprimant la vérification des NaN. Veuillez noter que cela réduit également la précision de certaines instructions en virgule flottante. - + Disable address space checks Désactiver les vérifications de l'espace d'adresse - - This option improves speed by eliminating a safety check before every memory read/write in guest. -Disabling it may allow a game to read/write the emulator's memory. - Cette option améliore la vitesse en éliminant une vérification de sécurité avant chaque lecture/écriture en mémoire dans l'invité. -La désactivation de cette option peut permettre à un jeu de lire/écrire dans la mémoire de l'émulateur. + + This option improves speed by eliminating a safety check before every memory operation. +Disabling it may allow arbitrary code execution. + Cette option améliore la vitesse en supprimant une vérification de sécurité avant chaque opération mémoire. +La désactiver peut permettre l’exécution de code arbitraire. - + Ignore global monitor Ignorer le moniteur global - + 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. Cette option améliore la vitesse en se basant uniquement sur la sémantique de cmpxchg pour garantir la sécurité des instructions d'accès exclusif. Veuillez noter que cela peut entraîner des blocages et d'autres conditions de concurrence. - + API: API : - - Switches between the available graphics APIs. -Vulkan is recommended in most cases. - Permet de basculer entre les API graphiques disponibles. -Vulkan est recommandé dans la plupart des cas. + + Changes the output graphics API. +Vulkan is recommended. + Modifie l’API graphique utilisée en sortie. +Vulkan est recommandé. - + Device: Appareil : - - This setting selects the GPU to use with the Vulkan backend. - Ce paramètre sélectionne le GPU à utiliser avec le backend Vulkan. + + This setting selects the GPU to use (Vulkan only). + Ce paramètre permet de sélectionner le GPU à utiliser (Vulkan uniquement). - - Shader Backend: - Back-end des Shaders : - - - - The shader backend to use for the OpenGL renderer. -GLSL is the fastest in performance and the best in rendering accuracy. -GLASM is a deprecated NVIDIA-only backend that offers much better shader building performance at the cost of FPS and rendering accuracy. -SPIR-V compiles the fastest, but yields poor results on most GPU drivers. - Le backend de shader à utiliser pour le moteur de rendu OpenGL. -GLSL est le plus rapide en termes de performances et le meilleur en termes de précision de rendu. -GLASM est un backend obsolète réservé à NVIDIA qui offre de bien meilleures performances de construction de shaders au détriment des FPS et de la précision de rendu. -SPIR-V compile le plus rapidement, mais donne de mauvais résultats sur la plupart des pilotes de GPU. - - - + Resolution: Résolution : - - Forces the game to render at a different resolution. -Higher resolutions require much more VRAM and bandwidth. -Options lower than 1X can cause rendering issues. - Force le jeu à rendre à une résolution différente. -Les résolutions plus élevées nécessitent beaucoup plus de VRAM et de bande passante. -Les options inférieures à 1X peuvent causer des problèmes de rendu. + + Forces to render at a different resolution. +Higher resolutions require more VRAM and bandwidth. +Options lower than 1X can cause artifacts. + Force le rendu à une résolution différente. +Des résolutions plus élevées nécessitent plus de VRAM et de bande passante. +Des options inférieures à 1X peuvent provoquer des artefacts. - + Window Adapting Filter: - Filtre de fenêtre adaptatif + Filtre de fenêtre adaptatif : - + FSR Sharpness: Netteté FSR : - - Determines how sharpened the image will look while using FSR’s dynamic contrast. - Détermine à quel point l'image sera affinée lors de l'utilisation du contraste dynamique FSR. + + Determines how sharpened the image will look using FSR's dynamic contrast. + Détermine le niveau de netteté de l’image en utilisant le contraste dynamique de FSR. - + Anti-Aliasing Method: Méthode d'anticrénelage : - + The anti-aliasing method to use. SMAA offers the best quality. -FXAA has a lower performance impact and can produce a better and more stable picture under very low resolutions. - La méthode d'anti-aliasing à utiliser. +FXAA can produce a more stable picture in lower resolutions. + La méthode d’anticrénelage à utiliser. SMAA offre la meilleure qualité. -FXAA a un impact sur les performances plus faible et peut produire une image meilleure et plus stable sous des résolutions très basses. +FXAA peut produire une image plus stable à des résolutions plus faibles. - + Fullscreen Mode: Mode Plein écran : - + The method used to render the window in fullscreen. Borderless offers the best compatibility with the on-screen keyboard that some games request for input. Exclusive fullscreen may offer better performance and better Freesync/Gsync support. @@ -750,63 +756,54 @@ Sans bordure offre la meilleure compatibilité avec le clavier à l'écran Le mode plein écran exclusif peut offrir de meilleures performances et un meilleur support Freesync/Gsync. - + Aspect Ratio: Format : - - Stretches the game to fit the specified aspect ratio. -Switch games only support 16:9, so custom game mods are required to get other ratios. + + Stretches the renderer to fit the specified aspect ratio. +Most games only support 16:9, so modifications are required to get other ratios. Also controls the aspect ratio of captured screenshots. - Étire le jeu pour s'adapter au rapport d'aspect spécifié. -Les jeux de la Switch ne prennent en charge que le format 16:9, donc des mods personnalisés sont nécessaires pour obtenir d'autres rapports. -Contrôle également le rapport d'aspect des captures d'écran. + Étire le rendu pour correspondre au format d’image spécifié. +La plupart des jeux ne supportent que le format 16:9, donc des modifications sont nécessaires pour obtenir d’autres formats. +Contrôle également le format des captures d’écran. - - Use disk pipeline cache - Utiliser la cache de pipeline sur disque + + Use persistent pipeline cache + Conserver le cache du rendu graphique - + Allows saving shaders to storage for faster loading on following game boots. Disabling it is only intended for debugging. Permet de sauvegarder les shaders sur le stockage pour un chargement plus rapide lors des démarrages ultérieurs du jeu. Le désactiver est uniquement destiné au débogage. - - Optimize SPIRV output shader - + + Optimize SPIRV output + Optimiser la sortie SPIR‑V - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. This feature is experimental. - + Exécute une passe d'optimisation supplémentaire sur les shaders SPIRV générés. +Augmente le temps nécessaire à la compilation des shaders. +Peut légèrement améliorer les performances. +Cette fonctionnalité est expérimentale. - - Use asynchronous GPU emulation - Utiliser l'émulation GPU asynchrone - - - - Uses an extra CPU thread for rendering. -This option should always remain enabled. - Utilise un thread CPU supplémentaire pour le rendu. -Cette option doit toujours rester activée. - - - + NVDEC emulation: - Émulation NVDEC + Émulation NVDEC : - + Specifies how videos should be decoded. It can either use the CPU or the GPU for decoding, or perform no decoding at all (black screen on videos). In most cases, GPU decoding provides the best performance. @@ -815,1169 +812,1471 @@ Elles peuvent être décodées soit par le CPU, soit par le GPU, ou pas du tout Dans la plupart des cas, le décodage GPU offre les meilleures performances. - + ASTC Decoding Method: Méthode de décodage ASTC : - + This option controls how ASTC textures should be decoded. -CPU: Use the CPU for decoding, slowest but safest method. -GPU: Use the GPU's compute shaders to decode ASTC textures, recommended for most games and users. -CPU Asynchronously: Use the CPU to decode ASTC textures as they arrive. Completely eliminates ASTC decoding -stuttering at the cost of rendering issues while the texture is being decoded. +CPU: Use the CPU for decoding. +GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). +CPU Asynchronously: Use the CPU to decode ASTC textures on demand. EliminatesASTC decoding +stuttering but may present artifacts. Cette option contrôle la façon dont les textures ASTC doivent être décodées. -CPU : Utilise le CPU pour le décodage, méthode la plus lente mais la plus sûre. -GPU : Utilise les shaders de calcul du GPU pour décoder les textures ASTC, recommandé pour la plupart des jeux et des utilisateurs. -CPU de manière asynchrone : Utilise le CPU pour décoder les textures ASTC au fur et à mesure de leur arrivée. Élimine complètement le bégaiement du décodage ASTC au détriment de problèmes de rendu pendant que la texture est en cours de décodage. +CPU : Utiliser le CPU pour le décodage. +GPU : Utiliser les shaders de calcul du GPU pour décoder les textures ASTC (recommandé). +CPU asynchrone : Utiliser le CPU pour décoder les textures ASTC à la demande. Élimine les saccades liées au décodage ASTC, mais peut provoquer des artefacts. - + ASTC Recompression Method: Méthode de recompression ASTC : - - Almost all desktop and laptop dedicated GPUs lack support for ASTC textures, forcing the emulator to decompress to an intermediate format any card supports, RGBA8. -This option recompresses RGBA8 to either the BC1 or BC3 format, saving VRAM but negatively affecting image quality. - Presque toutes les cartes graphiques dédiées pour ordinateurs de bureau et portables ne prennent pas en charge les textures ASTC, obligeant l'émulateur à décompresser vers un format intermédiaire que toutes les cartes prennent en charge, RGBA8. -Cette option recomprime le RGBA8 en format BC1 ou BC3, économisant ainsi la VRAM mais affectant négativement la qualité de l'image. + + Most GPUs lack support for ASTC textures and must decompress to anintermediate format: RGBA8. +BC1/BC3: The intermediate format will be recompressed to BC1 or BC3 format, + saving VRAM but degrading image quality. + La plupart des GPU ne prennent pas en charge les textures ASTC et doivent les décompresser dans un format intermédiaire : RGBA8. +BC1/BC3 : Le format intermédiaire sera recompressé en BC1 ou BC3, ce qui économise de la VRAM mais dégrade la qualité de l’image. - + + Frame Pacing Mode (Vulkan only) + + + + + Controls how the emulator manages frame pacing to reduce stuttering and make the frame rate smoother and more consistent. + + + + VRAM Usage Mode: Mode d'utilisation de la VRAM : - - Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. Has no effect on integrated graphics. Aggressive mode may severely impact the performance of other applications such as recording software. - Sélectionne si l'émulateur doit privilégier la conservation de la mémoire ou utiliser au maximum la mémoire vidéo disponible pour les performances. N'a aucun effet sur les graphiques intégrés. Le mode agressif peut avoir un impact sévère sur les performances d'autres applications telles que les logiciels d'enregistrement. + + Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. +Aggressive mode may impact performance of other applications such as recording software. + Permet de choisir si l’émulateur doit privilégier la conservation de la mémoire ou utiliser au maximum la mémoire vidéo disponible pour les performances. +Le mode agressif peut affecter les performances d’autres applications, comme les logiciels d’enregistrement. - + + Skip CPU Inner Invalidation + Ignorer l'invalidation interne du CPU + + + + Skips certain cache invalidations during memory updates, reducing CPU usage and improving latency. This may cause soft-crashes. + Ignore certaines invalidations de cache lors des mises à jour de la mémoire, réduisant l’utilisation du CPU et améliorant la latence. Cela peut provoquer des plantages légers. + + + VSync Mode: Mode VSync : - + FIFO (VSync) does not drop frames or exhibit tearing but is limited by the screen refresh rate. -FIFO Relaxed is similar to FIFO but allows tearing as it recovers from a slow down. +FIFO Relaxed 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. - FIFO (VSync) ne perd pas de trames ni ne présente de déchirures, mais est limité par le taux de rafraîchissement de l'écran. -FIFO Relaxé est similaire à FIFO mais autorise les déchirures lorsqu'il récupère d'un ralentissement. -Mailbox peut avoir une latence plus faible que FIFO et ne présente pas de déchirures, mais peut perdre des trames. -Immédiat (sans synchronisation) présente simplement ce qui est disponible et peut présenter des déchirures. +Immediate (no synchronization) presents whatever is available and can exhibit tearing. + FIFO (VSync) ne perd pas d’images et n’entraîne pas de déchirement, mais est limité par la fréquence de rafraîchissement de l’écran. +FIFO Relaxed permet le déchirement car il compense un ralentissement. +Mailbox peut offrir une latence inférieure à FIFO et n’entraîne pas de déchirement, mais peut perdre des images. +Immediate (pas de synchronisation) affiche ce qui est disponible et peut provoquer du déchirement. - + + Sync Memory Operations + Synchroniser les opérations mémoire + + + + Ensures data consistency between compute and memory operations. +This option fixes issues in games, but may degrade performance. +Unreal Engine 4 games often see the most significant changes thereof. + Assure la cohérence des données entre les opérations de calcul et de mémoire. +Cette option corrige des problèmes dans les jeux, mais peut dégrader les performances. +Les jeux Unreal Engine 4 sont souvent ceux qui bénéficient le plus de ce réglage. + + + Enable asynchronous presentation (Vulkan only) - Activer la présentation asynchrone (uniquement pour Vulkan) + Activer la présentation asynchrone (Vulkan uniquement) - + Slightly improves performance by moving presentation to a separate CPU thread. Améliore légèrement les performances en déplaçant la présentation vers un thread CPU séparé. - + Force maximum clocks (Vulkan only) Forcer la fréquence d'horloge maximale (Vulkan uniquement) - + Runs work in the background while waiting for graphics commands to keep the GPU from lowering its clock speed. Les exécutions fonctionnent en arrière-plan en attendant les commandes graphiques pour empêcher le GPU de réduire sa vitesse de fréquence d'horloge. - + Anisotropic Filtering: Filtrage anisotropique : - + Controls the quality of texture rendering at oblique angles. -It’s a light setting and safe to set at 16x on most GPUs. - Contrôle la qualité du rendu des textures à des angles obliques. -C'est un paramètre léger et il est sûr de le régler à 16x sur la plupart des GPU. +Safe to set at 16x on most GPUs. + Contrôle la qualité du rendu des textures sous des angles obliques. +Il est sûr de le régler à 16x sur la plupart des GPU. - - Accuracy Level: - Niveau de Précision : + + GPU Mode: + Mode GPU : - - GPU emulation accuracy. -Most games render fine with Normal, but High is still required for some. -Particles tend to only render correctly with High accuracy. -Extreme should only be used for debugging. -This option can be changed while playing. -Some games may require booting on high to render properly. - Précision de l'émulation du GPU. -La plupart des jeux rendent bien avec "Normal", mais "High" est encore nécessaire pour certains. -Les particules ont tendance à ne rendre correctement qu'avec une précision élevée. -"Extreme" ne doit être utilisé que pour le débogage. -Cette option peut être modifiée pendant le jeu. -Certains jeux peuvent nécessiter un démarrage en "High" pour rendre correctement. + + Controls the GPU emulation mode. +Most games render fine with Fast or Balanced modes, but Accurate is still required for some. +Particles tend to only render correctly with Accurate mode. + - - Use asynchronous shader building (Hack) - Utiliser la compilation asynchrone des shaders (Hack) + + DMA Accuracy: + Précision du DMA : - - Enables asynchronous shader compilation, which may reduce shader stutter. -This feature is experimental. - Active la compilation asynchrone des shaders, ce qui peut réduire les saccades dues aux shaders. -Cette fonctionnalité est expérimentale. + + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. + Contrôle la précision des transferts DMA. Une précision plus élevée corrige certains problèmes dans certains jeux, mais peut réduire les performances. - Use Fast GPU Time (Hack) - Utiliser le Temps GPU Rapide (Hack) + + Enable asynchronous shader compilation + Activer la compilation asynchrone des shaders - Enables Fast GPU Time. This option will force most games to run at their highest native resolution. - Active le Temps GPU Rapide. Cette option forcera la plupart des jeux à utiliser leur plus grande résolution native. + + May reduce shader stutter. + Peut réduire les saccades dues aux shaders. - + + Fast GPU Time + Temps GPU rapide + + + + Overclocks the emulated GPU to increase dynamic resolution and render distance. +Use 256 for maximal performance and 512 for maximal graphics fidelity. + + + + + GPU Unswizzle + + + + + Accelerates BCn 3D texture decoding using GPU compute. +Disable if experiencing crashes or graphical glitches. + + + + + GPU Unswizzle Max Texture Size + + + + + Sets the maximum size (MiB) for GPU-based texture unswizzling. +While the GPU is faster for medium and large textures, the CPU may be more efficient for very small ones. +Adjust this to find the balance between GPU acceleration and CPU overhead. + + + + + GPU Unswizzle Stream Size + + + + + Sets the maximum amount of texture data (in MiB) processed per frame. +Higher values can reduce stutter during texture loading but may impact frame consistency. + + + + + GPU Unswizzle Chunk Size + + + + + Determines the number of depth slices processed in a single dispatch. +Increasing this can improve throughput on high-end GPUs but may cause TDR or driver timeouts on weaker hardware. + + + + Use Vulkan pipeline cache Utiliser le cache de pipeline Vulkan - + Enables GPU vendor-specific pipeline cache. This option can improve shader loading time significantly in cases where the Vulkan driver does not store pipeline cache files internally. Active le cache de pipeline spécifique au fournisseur de GPU. Cette option peut améliorer considérablement le temps de chargement des shaders dans les cas où le pilote Vulkan ne stocke pas les fichiers de cache de pipeline en interne. - + Enable Compute Pipelines (Intel Vulkan Only) - Activer les pipelines de calcul (uniquement pour Vulkan sur Intel) + Activer les pipelines de calcul (Vulkan sur Intel uniquement) - - Enable compute pipelines, required by some games. -This setting only exists for Intel proprietary drivers, and may crash if enabled. + + 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. - Activer les pipelines de calcul, requis par certains jeux. -Ce paramètre existe uniquement pour les pilotes propriétaires d'Intel et peut entraîner des plantages s'il est activé. + Requis par certains jeux. +Ce réglage n’existe que pour les pilotes propriétaires Intel et peut provoquer un plantage s’il est activé. Les pipelines de calcul sont toujours activés sur tous les autres pilotes. - + Enable Reactive Flushing Activer le Vidage Réactif - + Uses reactive flushing instead of predictive flushing, allowing more accurate memory syncing. Utilise une purge réactive au lieu d'une purge prédictive, permettant une synchronisation de la mémoire plus précise. - + Sync to framerate of video playback Synchro la fréquence d'image de la relecture du vidéo - + Run the game at normal speed during video playback, even when the framerate is unlocked. - Éxécuter le jeu à une vitesse normale pendant la relecture du vidéo, -même-ci la fréquence d'image est dévérouillée. + Éxécuter le jeu à une vitesse normale pendant la relecture du vidéo, même-ci la fréquence d'image est dévérouillée. - + Barrier feedback loops Boucles de rétroaction de barrière - + Improves rendering of transparency effects in specific games. Améliore le rendu des effets de transparence dans des jeux spécifiques. - + + Enable buffer history + + + + + Enables access to previous buffer states. +This option may improve rendering quality and performance consistency in some games. + + + + + Fix bloom effects + + + + + Removes bloom in Burnout. + + + + + Enable Legacy Rescale Pass + + + + + May fix rescale issues in some games by relying on behavior from the previous implementation. +Legacy behavior workaround that fixes line artifacts on AMD and Intel GPUs, and grey texture flicker on Nvidia GPUs in Luigis Mansion 3. + + + + + Extended Dynamic State + État dynamique étendu + + + + Controls the number of features that can be used in Extended Dynamic State. +Higher states allow for more features and can increase performance, but may cause additional graphical issues. + + + + + Vertex Input Dynamic State + + + + + Enables vertex input dynamic state feature for better quality and performance. + + + + + Sample Shading + Échantillonnage de shading + + + + Allows the fragment shader to execute per sample in a multi-sampled fragment instead of once per fragment. Improves graphics quality at the cost of performance. +Higher values improve quality but degrade performance. + Permet au shader de fragments de s’exécuter pour chaque échantillon dans un fragment multi-échantillonné, au lieu d’une seule fois par fragment. +Améliore la qualité graphique au prix de performances réduites. +Des valeurs plus élevées améliorent la qualité mais dégradent les performances. + + + RNG Seed Seed RNG - + Controls the seed of the random number generator. -Mainly used for speedrunning purposes. - Contrôle le seed du générateur de nombres aléatoires. Principalement utilisé à des fins de speedrunning. +Mainly used for speedrunning. + Contrôle la graine du générateur de nombres aléatoires. +Principalement utilisé pour le speedrun. - + Device Name Nom de l'appareil - - The name of the emulated Switch. - Le nom de la Nintendo Switch émulée. + + The name of the console. + Nom de la console. - + Custom RTC Date: Date RTC personnalisée : - - This option allows to change the emulated clock of the Switch. + + This option allows to change the clock of the console. Can be used to manipulate time in games. - Cette option permet de changer l'horloge émulée de la Switch. -Elle peut être utilisée pour manipuler le temps dans les jeux. + Cette option permet de modifier l’horloge de la console. +Peut être utilisée pour manipuler le temps dans les jeux. - + + The number of seconds from the current unix time + Nombre de secondes écoulées depuis le 1er janvier 1970. + + + Language: Langue : - - Note: this can be overridden when region setting is auto-select - Note : ceci peut être remplacé quand le paramètre de région est réglé sur automatique + + This option can be overridden when region setting is auto-select + Cette option peut être remplacée lorsque la région est sur auto. - + Region: Région : - - The region of the emulated Switch. - La région de la Nintendo Switch émulée. + + The region of the console. + Région de la console. - + Time Zone: Fuseau horaire : - - The time zone of the emulated Switch. - Le fuseau horaire de la Nintendo Switch émulée. + + The time zone of the console. + Fuseau horaire de la console. - + Sound Output Mode: Mode de sortie sonore : - + Console Mode: Mode console : - - Selects if the console is emulated in Docked or Handheld mode. + + Selects if the console is in Docked or Handheld mode. Games will change their resolution, details and supported controllers and depending on this setting. Setting to Handheld can help improve performance for low end systems. - Sélectionne si la console est émulée en mode TV ou Portable. -Les jeux changeront leur résolution, leurs détails et les contrôleurs pris en charge en fonction de ce paramètre. -Le réglage sur Portable peut aider à améliorer les performances pour les systèmes peu performants. + Choisit si la console est en mode Portable ou en mode Dock +Les jeux adaptent leur résolution, leurs paramètres graphiques et les manettes prises en charge selon ce réglage. +Passer en mode Portable peut améliorer les performances sur les systèmes peu puissants. - - Prompt for user on game boot - Demander un utilisateur au lancement d'un jeu + + Unit Serial + - Ask to select a user profile on each boot, useful if multiple people use yuzu on the same PC. - Demander de sélectionner un profil utilisateur à chaque démarrage, utile si plusieurs personnes utilisent yuzu sur le même PC. + + Battery Serial + - - Pause emulation when in background - Mettre en pause l’émulation lorsque mis en arrière-plan + + Debug knobs + - This setting pauses yuzu when focusing other windows. - Ce paramètre met en pause yuzu lorsque d'autres fenêtres sont au premier plan. + + Prompt for user profile on boot + Choisir l’utilisateur au démarrage. - - Fast GPU Time (Hack) - + + Useful if multiple people use the same PC. + Utile si plusieurs personnes utilisent le même PC. - - Overclocks the emulated GPU to increase dynamic resolution and render distance. -Use 128 for maximal performance and 512 for maximal graphics fidelity. - + + Pause when not in focus + Pause lorsque la fenêtre n’est pas active. - - Extended Dynamic State - + + Pauses emulation when focusing on other windows. + Met l’émulation en pause dès que l’utilisateur change de fenêtre. - - Enables the VkExtendedDynamicState* extensions. -Higher dynamic states will generally improve performance, but may cause issues on certain games or devices. - - - - - Provoking Vertex - - - - - Improves lighting and vertex handling in certain games. -Only Vulkan 1.0+ devices support this extension. - - - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - - Ask to select a user profile on each boot, useful if multiple people use eden on the same PC. - - - - - This setting pauses eden when focusing other windows. - - - - + Confirm before stopping emulation Confirmer avant d'arrêter l'émulation - - This setting overrides game prompts asking to confirm stopping the game. + + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - Ce paramètre remplace les invitations du jeu demandant de confirmer l'arrêt du jeu. -En l'activant, cela contourne de telles invitations et quitte directement l'émulation. + Ignore les demandes de confirmation pour arrêter l’émulation. +L’activer permet de contourner ces confirmations et de quitter directement l’émulation. - + Hide mouse on inactivity Cacher la souris en cas d'inactivité - - This setting hides the mouse after 2.5s of inactivity. - Ce paramètre masque la souris après 2,5 secondes d'inactivité. + + Hides the mouse after 2.5s of inactivity. + Cache le curseur après 2,5 secondes d’inactivité. - + Disable controller applet Désactiver l'applet du contrôleur - - Forcibly disables the use of the controller applet by guests. -When a guest attempts to open the controller applet, it is immediately closed. - Désactive de force l'utilisation de l'applet de contrôleur par les invités. -Lorsqu'un invité tente d'ouvrir l'applet de contrôleur, il est immédiatement fermé. + + Forcibly disables the use of the controller applet in emulated programs. +When a program attempts to open the controller applet, it is immediately closed. + Désactive de force le menu de configuration des manettes dans les programmes émulés. +Lorsqu’un programme tente d’ouvrir ce menu, il est immédiatement fermé. - + Check for updates - + Rechercher des mises à jours - + Whether or not to check for updates upon startup. - + Vérifier ou non les mises à jour au démarrage. - + Enable Gamemode Activer le mode jeu - + + Force X11 as Graphics Backend + Forcer X11 comme moteur graphique + + + Custom frontend Interface personnalisée - + Real applet Applet réel - + Never - + Jamais - + On Load - + Au chargement - + Always - + Toujours - + CPU CPU - + GPU GPU - + CPU Asynchronous CPU Asynchrone - + Uncompressed (Best quality) Non compressé (Meilleure qualité) - + BC1 (Low quality) BC1 (Basse qualité) - + BC3 (Medium quality) BC3 (Qualité moyenne) - - Conservative - Conservateur - - - - Aggressive - Agressif - - - - OpenGL - OpenGL - - - - Vulkan - Vulkan - - - - Null - Nul - - - - GLSL - GLSL - - - - GLASM (Assembly Shaders, NVIDIA Only) - GLASM (Shaders en Assembleur, NVIDIA Seulement) - - - - SPIR-V (Experimental, AMD/Mesa Only) - SPIR-V (Expérimental, AMD/Mesa uniquement) - - - - Normal - Normal - - - - High - Haut - - - - Extreme - Extême - - - + + Auto Auto - + + 30 FPS + + + + + 60 FPS + + + + + 90 FPS + + + + + 120 FPS + + + + + Conservative + Conservateur + + + + Aggressive + Agressif + + + + Vulkan + Vulkan + + + + OpenGL GLSL + OpenGL GLSL + + + + OpenGL GLASM (Assembly Shaders, NVIDIA Only) + + + + + OpenGL SPIR-V (Experimental, AMD/Mesa Only) + + + + + Null + Nul + + + + Fast + Rapide + + + + Balanced + Moyen + + + + Accurate Précis - - Unsafe - Risqué - - - - Paranoid (disables most optimizations) - Paranoïaque (désactive la plupart des optimisations) - - - - Dynarmic - Dynamique - - - - NCE - NCE - - - - Borderless Windowed - Fenêtré sans bordure - - - - Exclusive Fullscreen - Plein écran exclusif - - - - No Video Output - Pas de sortie vidéo - - - - CPU Video Decoding - Décodage Vidéo sur le CPU - - - - GPU Video Decoding (Default) - Décodage Vidéo sur le GPU (par défaut) - - - - 0.25X (180p/270p) [EXPERIMENTAL] - - - - - 0.5X (360p/540p) [EXPERIMENTAL] - 0.5X (360p/540p) [EXPERIMENTAL] - - - - 0.75X (540p/810p) [EXPERIMENTAL] - 0.75X (540p/810p) [EXPÉRIMENTAL] - - - - 1X (720p/1080p) - 1X (720p/1080p) - - - - 1.5X (1080p/1620p) [EXPERIMENTAL] - 1.5X (1080p/1620p) [EXPÉRIMENTAL] - - - - 2X (1440p/2160p) - 2X (1440p/2160p) - - - - 3X (2160p/3240p) - 3X (2160p/3240p) - - - - 4X (2880p/4320p) - 4X (2880p/4320p) - - - - 5X (3600p/5400p) - 5X (3600p/5400p) - - - - 6X (4320p/6480p) - 6X (4320p/6480p) - - - - 7X (5040p/7560p) - 7X (5040p/7560p) - - - - 8X (5760p/8640p) - 8X (5760p/8640p) - - - - Nearest Neighbor - Plus proche voisin - - - - Bilinear - Bilinéaire - - - - Bicubic - Bicubique - - - - Gaussian - Gaussien - - - - ScaleForce - ScaleForce - - - - AMD FidelityFX™️ Super Resolution - AMD FidelityFX™️ Super Resolution - - - - Area - - - - - None - Aucune - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Default (16:9) - Par défaut (16:9) - - - - Force 4:3 - Forcer le 4:3 - - - - Force 21:9 - Forcer le 21:9 - - - - Force 16:10 - Forcer le 16:10 - - - - Stretch to Window - Étirer à la fenêtre - - - - Automatic - Automatique - - - + + Default Par défaut - + + Unsafe (fast) + Insecure (rapide) + + + + Safe (stable) + Sûr (stable) + + + + Unsafe + Risqué + + + + Paranoid (disables most optimizations) + Paranoïaque (désactive la plupart des optimisations) + + + + Debugging + Débogage + + + + Dynarmic + Dynamique + + + + NCE + NCE + + + + Borderless Windowed + Fenêtré sans bordure + + + + Exclusive Fullscreen + Plein écran exclusif + + + + No Video Output + Pas de sortie vidéo + + + + CPU Video Decoding + Décodage Vidéo sur le CPU + + + + GPU Video Decoding (Default) + Décodage Vidéo sur le GPU (par défaut) + + + + 0.25X (180p/270p) [EXPERIMENTAL] + 0.25X (180p/270p) [EXPÉRIMENTAL] + + + + 0.5X (360p/540p) [EXPERIMENTAL] + 0.5X (360p/540p) [EXPERIMENTAL] + + + + 0.75X (540p/810p) [EXPERIMENTAL] + 0.75X (540p/810p) [EXPÉRIMENTAL] + + + + 1X (720p/1080p) + 1X (720p/1080p) + + + + 1.25X (900p/1350p) [EXPERIMENTAL] + 1,25X (900p/1350p) [EXPÉRIMENTAL] + + + + 1.5X (1080p/1620p) [EXPERIMENTAL] + 1.5X (1080p/1620p) [EXPÉRIMENTAL] + + + + 2X (1440p/2160p) + 2X (1440p/2160p) + + + + 3X (2160p/3240p) + 3X (2160p/3240p) + + + + 4X (2880p/4320p) + 4X (2880p/4320p) + + + + 5X (3600p/5400p) + 5X (3600p/5400p) + + + + 6X (4320p/6480p) + 6X (4320p/6480p) + + + + 7X (5040p/7560p) + 7X (5040p/7560p) + + + + 8X (5760p/8640p) + 8X (5760p/8640p) + + + + Nearest Neighbor + Plus proche voisin + + + + Bilinear + Bilinéaire + + + + Bicubic + Bicubique + + + + Gaussian + Gaussien + + + + Lanczos + Lanczos + + + + ScaleForce + ScaleForce + + + + AMD FidelityFX Super Resolution + AMD FidelityFX Super Resolution + + + + Area + Area (Par zone) + + + + MMPX + MMPX + + + + Zero-Tangent + Zero-Tangent + + + + B-Spline + B-Spline + + + + Mitchell + Mitchell + + + + Spline-1 + Spline-1 + + + + + None + Aucun + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Default (16:9) + Par défaut (16:9) + + + + Force 4:3 + Forcer le 4:3 + + + + Force 21:9 + Forcer le 21:9 + + + + Force 16:10 + Forcer le 16:10 + + + + Stretch to Window + Étirer à la fenêtre + + + + Automatic + Automatique + + + 2x 2x - + 4x 4x - + 8x 8x - + 16x 16x - + + 32x + 32x + + + + 64x + 64x + + + Japanese (日本語) Japonais (日本語) - + American English Anglais Américain - + French (français) Français (français) - + German (Deutsch) Allemand (Deutsch) - + Italian (italiano) Italien (italiano) - + Spanish (español) Espagnol (español) - + Chinese Chinois - + Korean (한국어) Coréen (한국어) - + Dutch (Nederlands) Néerlandais (Nederlands) - + Portuguese (português) Portugais (português) - + Russian (Русский) Russe (Русский) - + Taiwanese Taïwanais - + British English Anglais Britannique - + Canadian French Français Canadien - + Latin American Spanish Espagnol d'Amérique Latine - + Simplified Chinese Chinois Simplifié - + Traditional Chinese (正體中文) Chinois Traditionnel (正體中文) - + Brazilian Portuguese (português do Brasil) Portugais Brésilien (português do Brasil) - - + + Polish (polska) + + + + + Thai (แบบไทย) + + + + + Japan Japon - + USA É.-U.A. - + Europe Europe - + Australia Australie - + China Chine - + Korea Corée - + Taiwan Taïwan - + Auto (%1) Auto select time zone Auto (%1) - + Default (%1) Default time zone Par défaut (%1) - + CET CET - + CST6CDT CST6CDT - + Cuba Cuba - + EET EET - + Egypt Égypte - + Eire Eire - + EST EST - + EST5EDT EST5EDT - + GB GB - + GB-Eire GB-Eire - + GMT GMT - + GMT+0 GMT+0 - + GMT-0 GMT-0 - + GMT0 GMT0 - + Greenwich Greenwich - + Hongkong Hong Kong - + HST HST - + Iceland Islande - + Iran Iran - + Israel Israël - + Jamaica Jamaïque - + Kwajalein Kwajalein - + Libya Libye - + MET MET - + MST MST - + MST7MDT MST7MDT - + Navajo Navajo - + NZ NZ - + NZ-CHAT NZ-CHAT - + Poland Pologne - + Portugal Portugal - + PRC PRC - + PST8PDT PST8PDT - + ROC ROC - + ROK ROK - + Singapore Singapour - + Turkey Turquie - + UCT UCT - + Universal Universel - + UTC UTC - + W-SU W-SU - + WET WET - + Zulu Zulu - + Mono Mono - + Stereo Stéréo - + Surround Surround - + 4GB DRAM (Default) 4 GB DRAM (Par défaut) - + 6GB DRAM (Unsafe) 6 GB DRAM (Risqué) - + 8GB DRAM - + 8GO DRAM - + 10GB DRAM (Unsafe) - + 10GO DRAM (Insecure) - + 12GB DRAM (Unsafe) - + 12GO DRAM (Insecure) - - Low (128) - - - - - Medium (256) - - - - - High (512) - - - - 8GB DRAM (Unsafe) - 8 GB DRAM (Risqué) - - - + Docked Mode TV - + Handheld Mode Portable - + + + Off + Désactivé + + + Boost (1700MHz) - + Boost (1700MHz) - + Fast (2000MHz) - + Rapide (2000MHz) - + Always ask (Default) Toujours demander (par défaut) - + Only if game specifies not to stop Uniquement si le jeu précise de ne pas s'arrêter - + Never ask Jamais demander + + + + Medium (256) + Moyen (256) + + + + + High (512) + Élevé (512) + + + + Very Small (16 MB) + Très petit (16Mo) + + + + Small (32 MB) + Petit (32Mo) + + + + Normal (128 MB) + Normal (128Mo) + + + + Large (256 MB) + Large (256Mo) + + + + Very Large (512 MB) + Très large (512Mo) + + + + Very Low (4 MB) + Très faible (4 Mo) + + + + Low (8 MB) + Faible (8 Mo) + + + + Normal (16 MB) + Normal (16 Mo) + + + + Medium (32 MB) + Moyen (32 Mo) + + + + High (64 MB) + Élevé (64 Mo) + + + + Very Low (32) + Très faible (32) + + + + Low (64) + Faible (64) + + + + Normal (128) + Normal (128) + + + + Disabled + Désactivé + + + + ExtendedDynamicState 1 + État dynamique étendu 1 + + + + ExtendedDynamicState 2 + État dynamique étendu 2 + + + + ExtendedDynamicState 3 + État dynamique étendu 3 + + + + Tree View + Vue en liste + + + + Grid View + Vue en grille + ConfigureApplets @@ -2049,7 +2348,7 @@ Lorsqu'un invité tente d'ouvrir l'applet de contrôleur, il est Restaurer les paramètres par défaut - + Auto Auto @@ -2236,7 +2535,7 @@ Lorsqu'un invité tente d'ouvrir l'applet de contrôleur, il est <div style="white-space: nowrap">This optimization speeds up memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all memory accesses to use Software MMU Emulation.</div> @@ -2254,7 +2553,7 @@ Lorsqu'un invité tente d'ouvrir l'applet de contrôleur, il est <div style="white-space: nowrap">This optimization speeds up exclusive memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all exclusive memory accesses to use Software MMU Emulation.</div> @@ -2288,7 +2587,7 @@ Lorsqu'un invité tente d'ouvrir l'applet de contrôleur, il est <div style="white-space: nowrap">This optimization speeds up memory accesses by allowing invalid memory accesses to succeed.</div> - <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> + <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> <div style="white-space: nowrap">Cette optimisation accélère les accès à la mémoire en laissant les accès mémoire invalides aboutir.</div> @@ -2329,29 +2628,29 @@ Lorsqu'un invité tente d'ouvrir l'applet de contrôleur, il est S'enregistrer - - Open Log Location - Ouvrir l'emplacement du journal de logs - - - + Global Log Filter Filtre de log global - + When checked, the max size of the log increases from 100 MB to 1 GB - Lorsque la case est cochée, la taille maximum du relevé d'événements augmente de 100 Mo à 1 Go + Lorsque la case est cochée, la taille maximum du journal augmente de 100 Mo à 1 Go - + Enable Extended Logging** Activer la journalisation étendue** - + Show Log in Console - Afficher le relevé d'événements dans la console + Afficher le journal dans la console + + + + Open Log Location + Ouvrir l'emplacement du journal de logs @@ -2489,18 +2788,9 @@ Lorsqu'un invité tente d'ouvrir l'applet de contrôleur, il est Activer tous les types de contrôleurs - - Censor username in logs - - - - - **This will be reset automatically when eden closes. - - - - Enable Auto-Stub** - Activer l'Auto-Stub** + + Enable Auto-Stub + Activer le stub de GDB @@ -2509,8 +2799,8 @@ Lorsqu'un invité tente d'ouvrir l'applet de contrôleur, il est - Enable CPU Debugging - Activer le débogage CPU + Use dev.keys + @@ -2523,43 +2813,74 @@ Lorsqu'un invité tente d'ouvrir l'applet de contrôleur, il est Débogage - - Flush log output on each line - + + Battery Serial: + - - Enable FS Access Log - Activer la journalisation des accès du système de fichiers + + Bitmask for quick development toggles + - + + Set debug knobs (bitmask) + + + + + 16-bit debug knob set for quick development toggles + + + + + (bitmask) + + + + + Debug Knobs: + + + + + Unit Serial: + + + + Enable this to output the latest generated audio command list to the console. Only affects games using the audio renderer. Activez cette option pour afficher la dernière liste de commandes audio générée sur la console. N'affecte que les jeux utilisant le moteur de rendu audio. - - Enable Auto-Stub - - - - + Dump Audio Commands To Console** Déversez les commandes audio à la console** - + + Flush log output on each line + Force l’écriture immédiate des logs à chaque nouvelle ligne. + + + + Enable FS Access Log + Activer la journalisation des accès du système de fichiers + + + Enable Verbose Reporting Services** Activer les services de rapport verbeux** - **This will be reset automatically when yuzu closes. - **Ces options seront réinitialisées automatiquement lorsque yuzu fermera. + + Censor username in logs + Censurer le nom d'utilisateur dans les logs - - Web applet not compiled - Applet Web non compilé + + **This will be reset automatically when Eden closes. + **Ceci sera automatiquement réinitialisé à la fermeture d'Eden. @@ -2601,14 +2922,10 @@ Lorsqu'un invité tente d'ouvrir l'applet de contrôleur, il est ConfigureDialog - - yuzu Configuration - Configuration de yuzu - - eden Configuration - + Eden Configuration + Configuration d'Eden @@ -2616,88 +2933,88 @@ Lorsqu'un invité tente d'ouvrir l'applet de contrôleur, il est Certains paramètres ne sont disponibles que lorsqu'un jeu n'est pas en cours d'exécution. - + Applets Applets - - + + Audio Son - - + + CPU CPU - + Debug Débogage - + Filesystem Système de fichiers - - + + General Général - - + + Graphics Vidéo - + GraphicsAdvanced Graphismes avancés - - GraphicsExtensions - + + GraphicsExtra + - + Hotkeys Raccourcis clavier - - + + Controls Contrôles - + Profiles Profils - + Network Réseau - - + + System Système - + Game List Liste des jeux - + Web Web @@ -2727,9 +3044,10 @@ Lorsqu'un invité tente d'ouvrir l'applet de contrôleur, il est - - - + + + + ... ... @@ -2739,107 +3057,183 @@ Lorsqu'un invité tente d'ouvrir l'applet de contrôleur, il est Carte SD - + + Save Data + + + + Gamecard Cartouche de jeu - + Path Chemin - + Inserted Inséré - + Current Game Jeu en cours - + Patch Manager Gestionnaire de correctifs - + Dump Decompressed NSOs Extraire les fichiers NSOs décompressés - + Dump ExeFS Extraire l'ExeFS - + Mod Load Root Racine de chargement de mod - + Dump Root Extraire la racine - + Caching Mise en cache - + Cache Game List Metadata Mettre en cache la métadonnée de la liste des jeux - - - - + Reset Metadata Cache Mettre à zéro le cache des métadonnées - + Select Emulated NAND Directory... Sélectionner le répertoire NAND émulé... - + Select Emulated SD Directory... Sélectionner le répertoire SD émulé... - + + + Select Save Data Directory... + + + + Select Gamecard Path... Sélectionner le chemin de la cartouche de jeu... - + Select Dump Directory... Sélectionner le répertoire d'extraction... - + Select Mod Load Directory... Sélectionner le répertoire de mod... - - The metadata cache is already empty. - Le cache des métadonnées est déjà vide. + + Save Data Directory + - - The operation completed successfully. - L'opération s'est terminée avec succès. + + Choose an action for the save data directory: + - - The metadata cache couldn't be deleted. It might be in use or non-existent. - Le cache des métadonnées n'a pas pu être supprimé. Il pourrait être utilisé ou non-existant. + + Set Custom Path + + + + + Reset to NAND + + + + + Save data exists in both the old and new locations. + +Old: %1 +New: %2 + +Would you like to migrate saves from the old location? +WARNING: This will overwrite any conflicting saves in the new location! + + + + + Would you like to migrate your save data to the new location? + +From: %1 +To: %2 + + + + + Migrate Save Data + + + + + Migrating save data... + + + + + Cancel + Annuler + + + + + Migration Failed + + + + + Failed to create destination directory. + + + + + Failed to migrate save data: +%1 + + + + + Migration Complete + + + + + Save data has been migrated successfully. + +Would you like to delete the old save data? + @@ -2857,28 +3251,54 @@ Lorsqu'un invité tente d'ouvrir l'applet de contrôleur, il est - Linux - Linux + External Content + - + + Add directories to scan for DLCs and Updates without installing to NAND + + + + + Add Directory + + + + + Remove Selected + + + + Reset All Settings Réinitialiser tous les paramètres - yuzu - yuzu + + Eden + Eden - - eden - - - - + This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed? Ceci réinitialise tout les paramètres et supprime toutes les configurations par jeu. Cela ne va pas supprimer les répertoires de jeu, les profils, ou les profils d'entrée. Continuer ? + + + Select External Content Directory... + + + + + Directory Already Added + + + + + This directory is already in the list. + + ConfigureGraphics @@ -2908,33 +3328,33 @@ Lorsqu'un invité tente d'ouvrir l'applet de contrôleur, il est Couleur de l’arrière plan : - + % FSR sharpening percentage (e.g. 50%) % - + Off Désactivé - + VSync Off VSync Désactivée - + Recommended Recommandé - + On Activé - + VSync On VSync Activée @@ -2952,7 +3372,7 @@ Lorsqu'un invité tente d'ouvrir l'applet de contrôleur, il est Avancée - + Advanced Graphics Settings Paramètres Vidéo Avancés @@ -2962,24 +3382,38 @@ Lorsqu'un invité tente d'ouvrir l'applet de contrôleur, il est Form - + Formulaire - Extensions - + Extras + - - Vulkan Extension Settings - + + Hacks + - - While it's recommended to use state 3, some games may perform better on lower states. Setting to 0 (disabled) may also break games. -If your GPU is older (i.e. RX570/580 or older), it may not support these features. If this is the case, set the slider to 0 and uncheck all boxes. -These settings are experimental, and may cause black screens. If your games fail to boot or are stuck on a black screen, change these settings around. - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + + + + + % + Sample Shading percentage (e.g. 50%) + % + + + + Extended Dynamic State is disabled on macOS due to MoltenVK compatibility issues that cause black screens. + Le mode Extended Dynamic State est désactivé sur macOS en raison des problèmes de compatibilité avec MoltenVK qui provoquent des écrans noirs. @@ -3010,75 +3444,75 @@ These settings are experimental, and may cause black screens. If your games fail Restaurer les paramètres par défaut - + Action Action - + Hotkey Raccourci clavier - + Controller Hotkey Raccourci Manette - - - + + + Conflicting Key Sequence Séquence de touches conflictuelle - - + + The entered key sequence is already assigned to: %1 La séquence de touches entrée est déjà attribuée à : %1 - + [waiting] [en attente] - + Invalid Invalide - + Invalid hotkey settings Paramètres de raccourci invalides - + An error occurred. Please report this issue on github. Une erreur s'est produite. Veuillez signaler ce problème sur GitHub. - + Restore Default Restaurer les paramètres par défaut - + Clear Effacer - + Conflicting Button Sequence Séquence de bouton conflictuelle - + The default button sequence is already assigned to: %1 La séquence de bouton par défaut est déjà assignée à : %1 - + The default key sequence is already assigned to: %1 La séquence de touches par défaut est déjà attribuée à : %1 @@ -3398,12 +3832,8 @@ These settings are experimental, and may cause black screens. If your games fail - Requires restarting eden - - - - Requires restarting yuzu - Nécessite de redémarrer yuzu + Requires restarting Eden + Nécessite de redémarrer Eden. @@ -3553,30 +3983,19 @@ These settings are experimental, and may cause black screens. If your games fail - + Left Stick Stick Gauche - - - - - - - Up - Haut - - - - - - - - - - Left - Gauche + + + + + + + Down + Bas @@ -3590,14 +4009,25 @@ These settings are experimental, and may cause black screens. If your games fail Droite - - - - - - - Down - Bas + + + + + + + + Left + Gauche + + + + + + + + + Up + Haut @@ -3644,14 +4074,6 @@ These settings are experimental, and may cause black screens. If your games fail D-Pad Croix directionnelle - - - - - - SL - SL - @@ -3661,59 +4083,55 @@ These settings are experimental, and may cause black screens. If your games fail SR - - - - L - L + + + + + SL + SL - + ZL ZL + + + + + L + L + Minus Moins - - - - Capture - Capture - - + Plus Plus - - - Home - Home + + + + ZR + ZR - - + + R R - - - - - ZR - ZR - Motion 1 @@ -3724,6 +4142,18 @@ These settings are experimental, and may cause black screens. If your games fail Motion 2 Mouvement 2 + + + + Capture + Capture + + + + + Home + Home + Face Buttons @@ -3736,10 +4166,10 @@ These settings are experimental, and may cause black screens. If your games fail X - - - Y - Y + + + B + B @@ -3748,14 +4178,14 @@ These settings are experimental, and may cause black screens. If your games fail A - - - B - B + + + Y + Y - + Right Stick Stick Droit @@ -3770,242 +4200,242 @@ These settings are experimental, and may cause black screens. If your games fail Configurer - - - - + + + + Clear Effacer - - - - - + + + + + [not set] [non défini] - - - + + + Invert button Inverser les boutons - - + + Toggle button Bouton d'activation - + Turbo button Bouton Turbo - - + + Invert axis Inverser l'axe - - - + + + Set threshold Définir le seuil - - + + Choose a value between 0% and 100% Choisissez une valeur entre 0% et 100% - + Toggle axis Basculer les axes - + Set gyro threshold Définir le seuil du gyroscope - + Calibrate sensor Calibrer le capteur - + Map Analog Stick Mapper le stick analogique - + After pressing OK, first move your joystick horizontally, and then vertically. To invert the axes, first move your joystick vertically, and then horizontally. Après avoir appuyé sur OK, bougez d'abord votre joystick horizontalement, puis verticalement. Pour inverser les axes, bougez d'abord votre joystick verticalement, puis horizontalement. - + Center axis Axe central - - + + Deadzone: %1% Zone morte : %1% - - + + Modifier Range: %1% Modification de la course : %1% - - + + Pro Controller Manette Switch Pro - + Dual Joycons Deux Joycons - + Left Joycon Joycon gauche - + Right Joycon Joycon droit - + Handheld Mode Portable - + GameCube Controller Manette GameCube - + Poke Ball Plus Poké Ball Plus - + NES Controller Manette NES - + SNES Controller Manette SNES - + N64 Controller Manette N64 - + Sega Genesis Sega Genesis - + Start / Pause Start / Pause - + Z Z - + Control Stick Stick de contrôle - + C-Stick C-Stick - + Shake! Secouez ! - + [waiting] [en attente] - + New Profile Nouveau Profil - + Enter a profile name: Entrez un nom de profil : - - + + Create Input Profile Créer un profil d'entrée - + The given profile name is not valid! Le nom de profil donné est invalide ! - + Failed to create the input profile "%1" Échec de la création du profil d'entrée "%1" - + Delete Input Profile Supprimer le profil d'entrée - + Failed to delete the input profile "%1" Échec de la suppression du profil d'entrée "%1" - + Load Input Profile Charger le profil d'entrée - + Failed to load the input profile "%1" Échec du chargement du profil d'entrée "%1" - + Save Input Profile Sauvegarder le profil d'entrée - + Failed to save the input profile "%1" Échec de la sauvegarde du profil d'entrée "%1" @@ -4028,15 +4458,6 @@ Pour inverser les axes, bougez d'abord votre joystick verticalement, puis h Par défaut - - ConfigureLinuxTab - - - - Linux - Linux - - ConfigureMotionTouch @@ -4062,7 +4483,7 @@ Pour inverser les axes, bougez d'abord votre joystick verticalement, puis h - + Configure Configurer @@ -4092,111 +4513,93 @@ Pour inverser les axes, bougez d'abord votre joystick verticalement, puis h Port: - - Learn More - Plus d'informations - - - - + + Test Tester - + Add Server Ajouter un serveur - + Remove Server Retirer un serveur - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Plus d'informations</span></a> - - - + %1:%2 %1:%2 - yuzu - yuzu + + + + + + + Eden + Eden - - <a href='https://eden-emulator.github.io/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - - - - + Port number has invalid characters Le numéro de port contient des caractères invalides - - - - - - - eden - - - - + Port has to be in range 0 and 65353 Le port doit être entre 0 et 65353 - + IP address is not valid L'adresse IP n'est pas valide - + This UDP server already exists Ce serveur UDP existe déjà - + Unable to add more than 8 servers Impossible d'ajouter plus de 8 serveurs - + Testing Essai - + Configuring Configuration - + Test Successful Test réussi - + Successfully received data from the server. Données reçues du serveur avec succès. - + Test Failed Test échoué - + Could not receive valid data from the server.<br>Please verify that the server is set up correctly and the address and port are correct. Impossible de recevoir des données valides du serveur.<br>Veuillez vérifier que le serveur est correctement configuré et que l'adresse et le port sont corrects. - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. Le test UDP ou la configuration de l'étalonnage est en cours.<br>Veuillez attendre qu'ils se terminent. @@ -4323,9 +4726,9 @@ Les valeurs actuelles sont respectivement de %1% et %2%. Interface Réseau - - None - Aucun + + Enable Airplane Mode + Activer le mode avion @@ -4381,49 +4784,54 @@ Les valeurs actuelles sont respectivement de %1% et %2%. Certains paramètres ne sont disponibles que lorsqu'un jeu n'est pas en cours d'exécution. - + Add-Ons Extensions - + System Système - + CPU CPU - + Graphics Graphiques - + Adv. Graphics Adv. Graphiques - - GPU Extensions - + + Ext. Graphics + - + Audio Audio - + Input Profiles Profils d'entrée - Linux - Linux + Network + + + + + Applets + @@ -4444,15 +4852,110 @@ Les valeurs actuelles sont respectivement de %1% et %2%. Extensions - + + Import Mod from ZIP + + + + + Import Mod from Folder + + + + Patch Name Nom du patch - + Version Version + + + Mod Install Succeeded + + + + + Successfully installed all mods. + + + + + Mod Install Failed + + + + + Failed to install the following mods: + %1 +Check the log for details. + + + + + Mod Folder + + + + + Zipped Mod Location + + + + + Zipped Archives (*.zip) + + + + + Invalid Selection + + + + + Only mods, cheats, and patches can be deleted. +To delete NAND-installed updates, right-click the game in the game list and click Remove -> Remove Installed Update. + + + + + You are about to delete the following installed mods: + + + + + + +Once deleted, these can NOT be recovered. Are you 100% sure you want to delete them? + + + + + Delete add-on(s)? + + + + + Successfully deleted + + + + + Successfully deleted all selected mods. + + + + + &Delete + + + + + &Open in File Manager + + ConfigureProfileManager @@ -4482,32 +4985,17 @@ Les valeurs actuelles sont respectivement de %1% et %2%. Nom d'utilisateur - - Set Image - Mettre une image - - - + Add Ajouter - - Rename - Renommer - - - - Remove - Supprimer - - - + Profile management is available only when game is not running. La gestion de profil est disponible que lorsqu'un jeu n'est pas en cours d'exécution. - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -4515,100 +5003,80 @@ Les valeurs actuelles sont respectivement de %1% et %2%. %2 - - Enter Username - Entrez un nom d'utilisateur - - - + Users Utilisateurs - - Enter a username for the new user: - Entrez un nom d'utilisateur pour le nouvel utilisateur : - - - - Enter a new username: - Entrez un nouveau nom d'utilisateur : - - - - Select User Image - Sélectionner l'image de l'utilisateur - - - - JPEG Images (*.jpg *.jpeg) - Images JPEG (*.jpg *.jpeg) - - - + Error deleting image Erreur dans la suppression de l'image - + Error occurred attempting to overwrite previous image at: %1. Une erreur est survenue en essayant de changer l'image précédente à : %1. - + Error deleting file Erreur dans la suppression du fichier - + Unable to delete existing file: %1. Impossible de supprimer le fichier existant : %1. - + Error creating user image directory Erreur dans la création du répertoire d'image de l'utilisateur - + Unable to create directory %1 for storing user images. Impossible de créer le répertoire %1 pour stocker les images de l'utilisateur. - - Error copying user image - Erreur dans la copie de l'image de l'utilisateur + + Error saving user image + Erreur lors de l'enregistrement de la photo de profile - - Unable to copy image from %1 to %2 - Impossible de copier l'image de %1 à %2 + + Unable to save image to file + Impossible d’enregistrer l’image. - - Error resizing user image - Erreur de redimensionnement de l'image utilisateur + + &Edit + - - Unable to resize image - Impossible de redimensionner l'image + + &Delete + + + + + Edit User + ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. Supprimer cet utilisateur ? Toutes les données de l'utilisateur vont être supprimées. - + Confirm Delete Confirmer la suppression - + Name: %1 UUID: %2 Nom : %1 @@ -4661,7 +5129,7 @@ UUID : %2 - + Enable Activer @@ -4672,7 +5140,7 @@ UUID : %2 - + Not connected Non connecté @@ -4682,63 +5150,63 @@ UUID : %2 Restaurer les défauts - + Clear Effacer - + [not set] [non défini] - + Invert axis Inverser l'axe - - + + Deadzone: %1% Zone morte : %1% - + Error enabling ring input Erreur lors de l'activation de la saisie de l'anneau - + Direct Joycon driver is not enabled Le pilote direct Joycon n'est pas activé - + Configuring Configuration - + The current mapped device doesn't support the ring controller Le périphérique mappé actuel ne prend pas en charge le contrôleur en anneau - + The current mapped device doesn't have a ring attached L'appareil actuellement mappé n'a pas d'anneau attaché - + The current mapped device is not connected L'appareil actuellement mappé n'est pas connecté - + Unexpected driver result %1 Résultat de pilote inattendu %1 - + [waiting] [en attente] @@ -4762,7 +5230,7 @@ UUID : %2 Cœur - + Warning: "%1" is not a valid language for region "%2" Attention: "%1" n'est pas une langue valide pour la région "%2" @@ -4774,14 +5242,10 @@ UUID : %2 TAS TAS - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the yuzu website.</p></body></html> - <html><head/><body><p>Lit l'entrée du contrôleur à partir des scripts dans le même format que 'TAS-nx' <br/> Pour une explication plus détaillée, veuillez consulter le <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">page d'aide</span></a> sur le site Yuzu.</p></body></html> - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the eden website.</p></body></html> - + <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the user handbook.</p></body></html> + @@ -4814,17 +5278,22 @@ UUID : %2 Mettre en pause l'exécution pendant le chargement - + + Show recording dialog + + + + Script Directory Dossier de script - + Path Chemin - + ... ... @@ -4832,12 +5301,12 @@ UUID : %2 ConfigureTasDialog - + TAS Configuration Configuration du TAS - + Select TAS Load Directory... Sélectionner le dossier de chargement du TAS... @@ -4941,14 +5410,10 @@ Faites glisser les points pour modifier la position ou double-cliquez sur les ce Configure Touchscreen Configurer l'Écran Tactile - - Warning: The settings in this page affect the inner workings of yuzu's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - Avertissement : les paramètres de cette page affecte la fonctionnalité intrinsèque de l'écran tactile émulée de yuzu. Toute modification pourrait aboutir à un comportement non désiré, comme par exemple : l'écran tactile qui ne fonctionne plus, de manières partielle ou totale. N'utilisez cette page que si ne vous ne savez ce que vos faites. - - Warning: The settings in this page affect the inner workings of eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - + Warning: The settings in this page affect the inner workings of Eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. + Avertissement : Les paramètres de cette page affectent le fonctionnement interne de l'écran tactile émulé d'Eden. Les modifier peut entraîner un comportement indésirable, comme un écran tactile partiellement fonctionnel, voire complètement inutilisable. Vous ne devez utiliser cette page que si vous savez ce que vous faites. @@ -4979,64 +5444,43 @@ Faites glisser les points pour modifier la position ou double-cliquez sur les ce ConfigureUI - - - + + None Aucun - - - Small (32x32) - Petite (32x32) - - Standard (64x64) - Standard (64x64) - - - - Large (128x128) - Grande (128x128) - - - - Full Size (256x256) - Taille Maximale (256x256) - - - Small (24x24) Petite (24x24) - + Standard (48x48) Standard (48x48) - + Large (72x72) Grande (72x72) - + Filename Nom du fichier - + Filetype Type du fichier - + Title ID Identifiant du Titre - + Title Name Nom du Titre @@ -5105,71 +5549,66 @@ Faites glisser les points pour modifier la position ou double-cliquez sur les ce - Game Icon Size: - Taille de l'icône du jeu : - - - Folder Icon Size: Taille de l'icône du dossier : - + Row 1 Text: Texte rangée 1 : - + Row 2 Text: Texte rangée 2 : - + Screenshots Captures d'écran - + Ask Where To Save Screenshots (Windows Only) Demander où enregistrer les captures d'écran (Windows uniquement) - + Screenshots Path: Chemin du dossier des captures d'écran : - + ... ... - + TextLabel TextLabel - + Resolution: Résolution : - + Select Screenshots Path... Sélectionnez le chemin du dossier des captures d'écran... - + <System> <System> - + English Anglais - + Auto (%1 x %2, %3 x %4) Screenshot width value Auto (%1 x %2, %3 x %4) @@ -5267,170 +5706,178 @@ Faites glisser les points pour modifier la position ou double-cliquez sur les ce Web Web - - yuzu Web Service - Service Web yuzu - - - By providing your username and token, you agree to allow yuzu to collect additional usage data, which may include user identifying information. - En fournissant votre surnom et token, vous acceptez de permettre à yuzu de collecter des données d'utilisation supplémentaires, qui peuvent contenir des informations d'identification de l'utilisateur. - - eden Web Service - + Eden Web Service + Service Web d'Eden. - - By providing your username and token, you agree to allow eden to collect additional usage data, which may include user identifying information. - - - - - Verify - Vérifier - - - - Sign up - Se connecter - - - + Token: Token : - + Username: Pseudonyme : - - What is my token? - Qu'est ce que mon token ? + + Generate + Générer - + Web Service configuration can only be changed when a public room isn't being hosted. La configuration du service Web ne peut être modifiée que lorsqu'un salon publique n'est pas hébergée. - Telemetry - Télémétrie - - - Share anonymous usage data with the yuzu team - Partager les données d'utilisation anonymes avec l'équipe yuzu - - - Learn more - En savoir plus - - - Telemetry ID: - ID Télémétrie : - - - Regenerate - Regénérer - - - + Discord Presence Statut Discord - + Show Current Game in your Discord Status Afficher le jeu en cours dans le Statut Discord - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">En savoir plus</span></a> - - - - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Se connecter</span></a> - - - - <a href='https://evilperson1337.notion.site/Hosting-a-Room-Inside-of-Eden-20457c2edaf680108abac6215a79acdb'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - - - - - Warning - - - + - Verification is currently nonfunctional, instead generate a random 48-character string with only lowercase a-z. - - - - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">Quel est mon token ?</span></a> - - - Telemetry ID: 0x%1 - ID Télémétrie : 0x%1 - - - Unspecified - Non-spécifié - - - Token not verified - Token non vérifié - - - Token was not verified. The change to your token has not been saved. - Le token n'a pas été vérifié. Le changement à votre token n'a pas été enregistré. - - - - Unverified, please click Verify before saving configuration + All Good Tooltip - Non-verifié, veuillez clicker Verifier avant de sauvergarder la configuration + Tout est OK. - Verifying... - Vérification... - - - Verified + + Must be between 4-20 characters Tooltip - Vérifié + Doit comporter entre 4 et 20 caractères. - Verification failed + + Must be 48 characters, and lowercase a-z Tooltip - Échec de la vérification - - - Verification failed - Échec de la vérification - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - Échec de la vérification. Vérifiez si vous avez correctement entrez votre token, et que votre connection internet fonctionne. + Doit comporter 48 caractères, en minuscules (a-z). ControllerDialog - + Controller P1 Contrôleur joueur 1 - + &Controller P1 &Contrôleur joueur 1 + + DataDialog + + + Data Manager + Gestionnaire de données + + + + Deleting ANY data is IRREVERSABLE! + La suppression de TOUTES les données est IRRÉVERSIBLE ! + + + + Shaders + Shaders + + + + UserNAND + NAND utilisateur + + + + SysNAND + SysNAND + + + + Mods + Mods + + + + Saves + Sauvegardes + + + + DataWidget + + + Form + Form + + + + Tooltip + Infobulle + + + + Open with your system file manager + Ouvrir avec votre gestionnaire de fichiers système + + + + Delete all data in this directory. THIS IS 100% IRREVERSABLE! + Supprimer toutes les données de ce répertoire. CECI EST 100 % IRRÉVERSIBLE ! + + + + Export all data in this directory. This may take a while! + Exporter toutes les données de ce répertoire. Cela peut prendre un certain temps ! + + + + Import data for this directory. This may take a while, and will delete ALL EXISTING DATA! + Importer les données dans ce répertoire. Cela peut prendre un certain temps et supprimera TOUTES LES DONNÉES EXISTANTES ! + + + + Calculating... + Calcul en cours… + + + + DepsDialog + + + Eden Dependencies + Dépendances d'Eden + + + + <html><head/><body><p><span style=" font-size:28pt;">Eden Dependencies</span></p></body></html> + <html><head/><body><p><span style=" font-size:28pt;">Dépendances d'Eden</span></p></body></html> + + + + <html><head/><body><p>The projects that make Eden possible</p></body></html> + <html><head/><body><p>Les projets qui rendent Eden possible</p></body></html> + + + + Dependency + Dépendance + + + + Version + Version + + DirectConnect @@ -5492,1513 +5939,154 @@ Faites glisser les points pour modifier la position ou double-cliquez sur les ce Username is not valid. Must be 4 to 20 alphanumeric characters. - Le nom d'utilisateur n'est pas valide. Il doit être de 4 à 20 caractères alphanumériques. + Le nom d'utilisateur n'est pas valide. Il doit comporter entre 4 et 20 caractères alphanumériques. Room name is not valid. Must be 4 to 20 alphanumeric characters. - Le nom du salon n'est pas valide. Il doit être de 4 à 20 caractères alphanumériques. + Le nom du salon n'est pas valide. Il doit comporter entre 4 et 20 caractères alphanumériques. Username is already in use or not valid. Please choose another. - Le nom d'utilisateur est déjà utilisé ou n'est pas valide. Veuillez en sélectionner un autre. + Nom d'utilisateur déjà utilisé ou non valide. Veuillez en choisir un autre. IP is not a valid IPv4 address. - L'IP n'est pas une adresse IPv4 valide. + L'IP n'est pas une adresse IPv4 valide. Port must be a number between 0 to 65535. - Le port doit être un nombre compris entre 0 et 65535. + Le port doit être un numéro compris entre 0 et 65535. You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - Vous devez choisir un jeu préféré pour héberger un salon. Si vous n'avez pas encore de jeux dans votre liste de jeux, ajoutez un dossier de jeu en cliquant sur l'icône plus dans la liste de jeux. + Vous devez choisir un jeu préféré pour héberger un salon. Si vous n'avez pas encore de jeux dans votre liste, ajoutez un dossier de jeux en cliquant sur l'icône plus dans la liste des jeux. Unable to find an internet connection. Check your internet settings. - Impossible de trouver une connexion Internet. Vérifiez vos paramètres Internet. + Impossible de trouver une connexion Internet. Vérifiez vos paramètres Internet. Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - Impossible de se connecter à l'hôte. Vérifiez que les paramètres de connexion sont corrects. Si vous ne parvenez toujours pas à vous connecter, contactez l'hôte du salon et vérifiez que l'hôte a correctement configuré le port externe redirigé. + Impossible de se connecter au salon. Vérifiez que les paramètres de connexion sont corrects. Si vous ne pouvez toujours pas vous connecter, contactez l'hôte du salon et vérifiez que l'hôte est correctement configuré avec le port externe redirigé. Unable to connect to the room because it is already full. - Impossible de se connecter au salon car il est déjà plein. + Impossible de se connecter au salon car il est déjà plein. - Creating a room failed. Please retry. Restarting eden might be necessary. - + Creating a room failed. Please retry. Restarting Eden might be necessary. + La création du salon a échoué. Veuillez réessayer. Il peut être nécessaire de redémarrer Eden. The host of the room has banned you. Speak with the host to unban you or try a different room. - L'hôte du salon vous a banni. Parlez à l'hôte pour vous débannir ou essayez un autre salon. + L'hôte du salon vous a banni. Parlez avec l'hôte pour être débanni ou essayez un autre salon. - Version mismatch! Please update to the latest version of eden. If the problem persists, contact the room host and ask them to update the server. - + Version mismatch! Please update to the latest version of Eden. If the problem persists, contact the room host and ask them to update the server. + Mise à jour requise ! Veuillez mettre à jour vers la dernière version d'Eden. Si le problème persiste, contactez l'hôte du salon et demandez-lui de mettre à jour le serveur. Incorrect password. - Mot de passe incorrect. + Mot de passe incorrect. An unknown error occurred. If this error continues to occur, please open an issue - Une erreur inconnue s'est produite. Si cette erreur continue d'arriver, veuillez faire un rapport + Une erreur inconnue est survenue. Si cette erreur persiste, veuillez ouvrir un ticket. Connection to room lost. Try to reconnect. - Connexion au salon perdue. Essayez de vous reconnecter. + Connexion au salon perdue. Essayez de vous reconnecter. You have been kicked by the room host. - Vous avez été expulsé par l'hôte du salon. + Vous avez été expulsé par l'hôte du salon. IP address is already in use. Please choose another. - L'adresse IP est déjà utilisée. Veuillez en sélectionner une autre. + L'adresse IP est déjà utilisée. Veuillez en choisir une autre. You do not have enough permission to perform this action. - Vous ne disposez pas des autorisations suffisantes pour effectuer cette action. + Vous n'avez pas suffisamment de permissions pour effectuer cette action. The user you are trying to kick/ban could not be found. They may have left the room. - L'utilisateur que vous essayez d'exclure/bannir est introuvable. -Il a peut-être quitté la salon. + L'utilisateur que vous essayez d'expulser/banir n'a pas pu être trouvé. +Il se peut qu'il ait quitté le salon. No valid network interface is selected. Please go to Configure -> System -> Network and make a selection. - Aucune interface réseau valide n'est séléctionnée. -Veuillez aller dans Configurer -> Système -> Réseau et faites un choix. + Aucune interface réseau valide n'est sélectionnée. +Veuillez aller dans Configurer -> Système -> Réseau puis en choisir une. Error - Erreur - - - - GMainWindow - - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Anonymous data is collected</a> to help improve yuzu. <br/><br/>Would you like to share your usage data with us? - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Des données anonymes sont collectées</a> pour aider à améliorer yuzu. <br/><br/>Voulez-vous partager vos données d'utilisations avec nous ? - - - Telemetry - Télémétrie - - - - Broken Vulkan Installation Detected - Détection d'une installation Vulkan endommagée - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - L'initialisation de Vulkan a échoué lors du démarrage.<br><br>Cliquez <a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>ici pour obtenir des instructions pour résoudre le problème</a>. - - - - Running a game - TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping - Exécution d'un jeu - - - - Loading Web Applet... - Chargement de l'applet web... - - - - - Disable Web Applet - Désactiver l'applet web - - - - 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.) - La désactivation de l'applet Web peut entraîner un comportement indéfini et ne doit être utilisée qu'avec Super Mario 3D All-Stars. Voulez-vous vraiment désactiver l'applet Web ? -(Cela peut être réactivé dans les paramètres de débogage.) - - - - The amount of shaders currently being built - La quantité de shaders en cours de construction - - - - The current selected resolution scaling multiplier. - Le multiplicateur de mise à l'échelle de résolution actuellement sélectionné. - - - - Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. - Valeur actuelle de la vitesse de l'émulation. Des valeurs plus hautes ou plus basses que 100% indique que l'émulation fonctionne plus vite ou plus lentement qu'une véritable Switch. - - - - How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. - Combien d'image par seconde le jeu est en train d'afficher. Ceci vas varier de jeu en jeu et de scènes en scènes. - - - - 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. - Temps pris pour émuler une image par seconde de la switch, sans compter le limiteur d'image par seconde ou la synchronisation verticale. Pour une émulation à pleine vitesse, ceci devrait être au maximum à 16.67 ms. - - - - Unmute - Remettre le son - - - - Mute - Couper le son - - - - Reset Volume - Réinitialiser le volume - - - - &Clear Recent Files - &Effacer les fichiers récents - - - - &Continue - &Continuer - - - - &Pause - &Pause - - - - Warning Outdated Game Format - Avertissement : Le Format de jeu est dépassé - - - 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.<br><br>For an explanation of the various Switch formats yuzu supports, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - Vous utilisez le format de répertoire ROM déconstruit pour ce jeu, qui est un format obsolète remplacé par d'autres tels que NCA, NAX, XCI ou NSP. Les répertoires de ROM déconstruits ne contiennent pas d'icônes, de métadonnées ni de prise en charge des mises à jour.<br><br>Pour obtenir des explications sur les différents formats pris en charge par yuzu, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>consultez notre wiki</a>. Ce message ne s'affichera plus. - - - - - Error while loading ROM! - Erreur lors du chargement de la ROM ! - - - - The ROM format is not supported. - Le format de la ROM n'est pas supporté. - - - - An error occurred initializing the video core. - Une erreur s'est produite lors de l'initialisation du noyau dédié à la vidéo. - - - 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: <a href='https://yuzu-emu.org/help/reference/log-files/'>How to Upload the Log File</a>. - 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'informations. Pour savoir comment accéder aux logs, veuillez vous référer à la page suivante : <a href='https://yuzu-emu.org/help/reference/log-files/'>Comment partager un fichier de log </a>. - - - - Error while loading ROM! %1 - %1 signifies a numeric error code. - Erreur lors du chargement de la ROM ! %1 - - - %1<br>Please follow <a href='https://yuzu-emu.org/help/quickstart/'>the yuzu quickstart guide</a> to redump your files.<br>You can refer to the yuzu wiki</a> or the yuzu Discord</a> for help. - %1 signifies an error string. - %1<br>Veuillez suivre <a href='https://yuzu-emu.org/help/quickstart/'>le guide de démarrage rapide yuzu</a> pour retransférer vos fichiers.<br>Vous pouvez vous référer au wiki yuzu</a> ou le Discord yuzu</a> pour de l'assistance. - - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://eden-emulator.github.io/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - - - - - Game Updates Warning - - - - - The game you are trying to launch is known to have performance or booting issues when updates are applied. Please try increasing the memory layout to 6GB or 8GB if any issues occur.<br><br>Press "OK" to continue launching, or "Cancel" to cancel the launch. - - - - - Don't show again for this game - - - - - 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.<br><br>For an explanation of the various Switch formats eden supports, <a href='https://eden-emulator.github.io/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - - - - - eden 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: <a href='https://eden-emulator.github.io/help/reference/log-files/'>How to Upload the Log File</a>. - - - - - %1<br>Please redump your files or ask on Discord for help. - %1 signifies an error string. - - - - - An unknown error occurred. Please see the log for more details. - Une erreur inconnue est survenue. Veuillez consulter le journal des logs pour plus de détails. - - - - (64-bit) - (64-bit) - - - - (32-bit) - (32-bit) - - - - %1 %2 - %1 is the title name. %2 indicates if the title is 64-bit or 32-bit - %1 %2 - - - - Closing software... - Fermeture du logiciel... - - - - Save Data - Enregistrer les données - - - - Mod Data - Donnés du Mod - - - - Error Opening %1 Folder - Erreur dans l'ouverture du dossier %1. - - - - - Folder does not exist! - Le dossier n'existe pas ! - - - - Error Opening Transferable Shader Cache - Erreur lors de l'ouverture des Shader Cache Transferable - - - - Failed to create the shader cache directory for this title. - Impossible de créer le dossier de cache du shader pour ce jeu. - - - - Error Removing Contents - Erreur en enlevant le contenu - - - - Error Removing Update - Erreur en enlevant la Mise à Jour - - - - Error Removing DLC - Erreur en enlevant le DLC - - - - Remove Installed Game Contents? - Enlever les données du jeu installé ? - - - - Remove Installed Game Update? - Enlever la mise à jour du jeu installé ? - - - - Remove Installed Game DLC? - Enlever le DLC du jeu installé ? - - - - Remove Entry - Supprimer l'entrée - - - - - - - - - Successfully Removed - Supprimé avec succès - - - - Successfully removed the installed base game. - Suppression du jeu de base installé avec succès. - - - - The base game is not installed in the NAND and cannot be removed. - Le jeu de base n'est pas installé dans la NAND et ne peut pas être supprimé. - - - - Successfully removed the installed update. - Suppression de la mise à jour installée avec succès. - - - - There is no update installed for this title. - Il n'y a pas de mise à jour installée pour ce titre. - - - - There are no DLC installed for this title. - Il n'y a pas de DLC installé pour ce titre. - - - - Successfully removed %1 installed DLC. - Suppression de %1 DLC installé(s) avec succès. - - - - Delete OpenGL Transferable Shader Cache? - Supprimer la Cache OpenGL de Shader Transférable? - - - - Delete Vulkan Transferable Shader Cache? - Supprimer la Cache Vulkan de Shader Transférable? - - - - Delete All Transferable Shader Caches? - Supprimer Toutes les Caches de Shader Transférable? - - - - Remove Custom Game Configuration? - Supprimer la configuration personnalisée du jeu? - - - - Remove Cache Storage? - Supprimer le stockage du cache ? - - - - Remove File - Supprimer fichier - - - - Remove Play Time Data - Supprimer les données de temps de jeu - - - - Reset play time? - Réinitialiser le temps de jeu ? - - - - - Error Removing Transferable Shader Cache - Erreur lors de la suppression du cache de shader transférable - - - - - A shader cache for this title does not exist. - Un shader cache pour ce titre n'existe pas. - - - - Successfully removed the transferable shader cache. - Suppression du cache de shader transférable avec succès. - - - - Failed to remove the transferable shader cache. - Échec de la suppression du cache de shader transférable. - - - - Error Removing Vulkan Driver Pipeline Cache - Erreur lors de la suppression du cache de pipeline de pilotes Vulkan - - - - Failed to remove the driver pipeline cache. - Échec de la suppression du cache de pipeline de pilotes. - - - - - Error Removing Transferable Shader Caches - Erreur durant la Suppression des Caches de Shader Transférable - - - - Successfully removed the transferable shader caches. - Suppression des caches de shader transférable effectuée avec succès. - - - - Failed to remove the transferable shader cache directory. - Impossible de supprimer le dossier de la cache de shader transférable. - - - - - Error Removing Custom Configuration - Erreur lors de la suppression de la configuration personnalisée - - - - A custom configuration for this title does not exist. - Il n'existe pas de configuration personnalisée pour ce titre. - - - - Successfully removed the custom game configuration. - Suppression de la configuration de jeu personnalisée avec succès. - - - - Failed to remove the custom game configuration. - Échec de la suppression de la configuration personnalisée du jeu. - - - - - RomFS Extraction Failed! - L'extraction de la RomFS a échoué ! - - - - There was an error copying the RomFS files or the user cancelled the operation. - Une erreur s'est produite lors de la copie des fichiers RomFS ou l'utilisateur a annulé l'opération. - - - - Full - Plein - - - - Skeleton - Squelette - - - - Select RomFS Dump Mode - Sélectionnez le mode d'extraction de la RomFS - - - - Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. - Veuillez sélectionner la manière dont vous souhaitez que le fichier RomFS soit extrait.<br>Full copiera tous les fichiers dans le nouveau répertoire, tandis que<br>skeleton créera uniquement la structure de répertoires. - - - - There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root - Il n'y a pas assez d'espace libre dans %1 pour extraire la RomFS. Veuillez libérer de l'espace ou sélectionner un autre dossier d'extraction dans Émulation > Configurer > Système > Système de fichiers > Extraire la racine - - - - Extracting RomFS... - Extraction de la RomFS ... - - - - - - - - Cancel - Annuler - - - - RomFS Extraction Succeeded! - Extraction de la RomFS réussi ! - - - - - - The operation completed successfully. - L'opération s'est déroulée avec succès. - - - - Integrity verification couldn't be performed! - La vérification de l'intégrité n'a pas pu être effectuée ! - - - - File contents were not checked for validity. - La validité du contenu du fichier n'a pas été vérifiée. - - - - - Verifying integrity... - Vérification de l'intégrité... - - - - - Integrity verification succeeded! - La vérification de l'intégrité a réussi ! - - - - - Integrity verification failed! - La vérification de l'intégrité a échoué ! - - - - File contents may be corrupt. - Le contenu du fichier pourrait être corrompu. - - - - - - - Create Shortcut - Créer un raccourci - - - - Do you want to launch the game in fullscreen? - Voulez-vous lancer le jeu en plein écran ? - - - - Successfully created a shortcut to %1 - Création réussie d'un raccourci vers %1 - - - - This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - Cela créera un raccourci vers l'AppImage actuelle. Cela peut ne pas fonctionner correctement si vous mettez à jour. Continuer ? - - - - Failed to create a shortcut to %1 - Impossible de créer un raccourci vers %1 - - - - Create Icon - Créer une icône - - - - Cannot create icon file. Path "%1" does not exist and cannot be created. - Impossible de créer le fichier d'icône. Le chemin "%1" n'existe pas et ne peut pas être créé. - - - - Error Opening %1 - Erreur lors de l'ouverture %1 - - - - Select Directory - Sélectionner un répertoire - - - - Properties - Propriétés - - - - The game properties could not be loaded. - Les propriétés du jeu n'ont pas pu être chargées. - - - - Switch Executable (%1);;All Files (*.*) - %1 is an identifier for the Switch executable file extensions. - Exécutable Switch (%1);;Tous les fichiers (*.*) - - - - Load File - Charger un fichier - - - - Open Extracted ROM Directory - Ouvrir le dossier des ROM extraites - - - - Invalid Directory Selected - Destination sélectionnée invalide - - - - The directory you have selected does not contain a 'main' file. - Le répertoire que vous avez sélectionné ne contient pas de fichier "main". - - - - Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - Fichier Switch installable (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - - - - Install Files - Installer les fichiers - - - - %n file(s) remaining - - %n fichier restant - %n fichiers restants - - - - - Installing file "%1"... - Installation du fichier "%1" ... - - - - - Install Results - Résultats d'installation - - - - To avoid possible conflicts, we discourage users from installing base games to the NAND. -Please, only use this feature to install updates and DLC. - Pour éviter d'éventuels conflits, nous déconseillons aux utilisateurs d'installer des jeux de base sur la NAND. -Veuillez n'utiliser cette fonctionnalité que pour installer des mises à jour et des DLC. - - - - %n file(s) were newly installed - - - %n fichier a été nouvellement installé - %n fichiers ont été nouvellement installés - - - - - %n file(s) were overwritten - - - %n fichier a été écrasé - %n fichiers ont été écrasés - - - - - %n file(s) failed to install - - - %n fichier n'a pas pu être installé - %n fichiers n'ont pas pu être installés - - - - - System Application - Application Système - - - - System Archive - Archive Système - - - - System Application Update - Mise à jour de l'application système - - - - Firmware Package (Type A) - Paquet micrologiciel (Type A) - - - - Firmware Package (Type B) - Paquet micrologiciel (Type B) - - - - Game - Jeu - - - - Game Update - Mise à jour de jeu - - - - Game DLC - DLC de jeu - - - - Delta Title - Titre Delta - - - - Select NCA Install Type... - Sélectionner le type d'installation du NCA... - - - - Please select the type of title you would like to install this NCA as: -(In most instances, the default 'Game' is fine.) - Veuillez sélectionner le type de titre auquel vous voulez installer ce NCA : -(Dans la plupart des cas, le titre par défaut : 'Jeu' est correct.) - - - - Failed to Install - Échec de l'installation - - - - The title type you selected for the NCA is invalid. - Le type de titre que vous avez sélectionné pour le NCA n'est pas valide. - - - - File not found - Fichier non trouvé - - - - File "%1" not found - Fichier "%1" non trouvé - - - - OK - OK - - - - - Hardware requirements not met - Éxigences matérielles non respectées - - - - - Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled. - Votre système ne correspond pas aux éxigences matérielles. Les rapports de comptabilité ont été désactivés. - - - - Missing yuzu Account - Compte yuzu manquant - - - - In order to submit a game compatibility test case, you must link your eden account.<br><br/>To link your eden account, go to Emulation &gt; Configuration &gt; Web. - - - - - Install decryption keys and restart eden before attempting to install firmware. - - - - - Firmware installation cancelled, firmware may be in bad state, restart eden or re-install firmware. - - - - - Encryption keys are missing. - - - - - Are you sure you want to close eden? - - - - - - - eden - - - - - The currently running application has requested eden to not exit. - -Would you like to bypass this and exit anyway? - - - - In order to submit a game compatibility test case, you must link your yuzu account.<br><br/>To link your yuzu account, go to Emulation &gt; Configuration &gt; Web. - Pour soumettre un test de compatibilité pour un jeu, vous devez lier votre compte yuzu.<br><br/>Pour lier votre compte yuzu, aller à Emulation &gt; Configuration&gt; Web. - - - - Error opening URL - Erreur lors de l'ouverture de l'URL - - - - Unable to open the URL "%1". - Impossible d'ouvrir l'URL "%1". - - - - TAS Recording - Enregistrement TAS - - - - Overwrite file of player 1? - Écraser le fichier du joueur 1 ? - - - - Invalid config detected - Configuration invalide détectée - - - - Handheld controller can't be used on docked mode. Pro controller will be selected. - Le contrôleur portable ne peut pas être utilisé en mode TV. La manette pro sera sélectionné. - - - - - Amiibo - Amiibo - - - - - The current amiibo has been removed - L'amiibo actuel a été retiré - - - - Error Erreur - - - - The current game is not looking for amiibos - Le jeu actuel ne cherche pas d'amiibos. - - - - Amiibo File (%1);; All Files (*.*) - Fichier Amiibo (%1);; Tous les fichiers (*.*) - - - - Load Amiibo - Charger un Amiibo - - - - Error loading Amiibo data - Erreur lors du chargement des données Amiibo - - - - The selected file is not a valid amiibo - Le fichier choisi n'est pas un amiibo valide - - - - The selected file is already on use - Le fichier sélectionné est déjà utilisé - - - - An unknown error occurred - Une erreur inconnue s'est produite - - - - - Verification failed for the following files: - -%1 - La vérification a échoué pour les fichiers suivants : - -%1 - - - - Keys not installed - Clés non installées - - - Install decryption keys and restart yuzu before attempting to install firmware. - Installez les clés de décryptage et redémarrez yuzu avant d'essayer d'installer le firmware. - - - - Select Dumped Firmware Source Location - Sélectionnez l'emplacement de la source du firmware extrait - - - - Installing Firmware... - Installation du firmware... - - - - - - - Firmware install failed - L'installation du firmware a échoué - - - - Unable to locate potential firmware NCA files - Impossible de localiser les fichiers NCA du potentiel firmware - - - - Failed to delete one or more firmware file. - Échec de la suppression d'un ou plusieurs fichiers du firmware. - - - Firmware installation cancelled, firmware may be in bad state, restart yuzu or re-install firmware. - L'installation du firmware a été annulée, le firmware peut être dans un état défectueux. Redémarrez yuzu ou réinstallez le firmware. - - - - One or more firmware files failed to copy into NAND. - Un ou plusieurs fichiers du firmware n'ont pas pu être copiés dans la NAND. - - - - Firmware integrity verification failed! - La vérification de l'intégrité du firmware a échoué ! - - - - Select Dumped Keys Location - Sélectionner l'emplacement des clés extraites - - - - - - Decryption Keys install failed - L'installation des clés de décryptage a échoué - - - - prod.keys is a required decryption key file. - prod.keys est un fichier de clés de décryptage requis - - - - One or more keys failed to copy. - Une ou plusieurs clés n'ont pas pu être copiées. - - - - Decryption Keys install succeeded - L'installation des clés de décryptage a réussi - - - - Decryption Keys were successfully installed - Les clés de décryptage ont été installées avec succès - - - - Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. - L'initialisation des clés de décryptage a échoué. Vérifiez que vos outils de dump sont à jour et re-dumpez les clés. - - - - - - - - - - No firmware available - Pas de firmware disponible - - - - Please install the firmware to use the Album applet. - Veuillez installer le firmware pour utiliser l'applet de l'album. - - - - Album Applet - Applet de l'album - - - - Album applet is not available. Please reinstall firmware. - L'applet de l'album n'est pas disponible. Veuillez réinstaller le firmware. - - - - Please install the firmware to use the Cabinet applet. - Veuillez installer le firmware pour utiliser l'applet du cabinet. - - - - Cabinet Applet - Applet du cabinet - - - - Cabinet applet is not available. Please reinstall firmware. - L'applet du cabinet n'est pas disponible. Veuillez réinstaller le firmware. - - - - Please install the firmware to use the Mii editor. - Veuillez installer le firmware pour utiliser l'éditeur Mii. - - - - Mii Edit Applet - Applet de l'éditeur Mii - - - - Mii editor is not available. Please reinstall firmware. - L'éditeur Mii n'est pas disponible. Veuillez réinstaller le firmware. - - - - Please install the firmware to use the Controller Menu. - Veuillez installer le firmware pour utiliser le menu des manettes. - - - - Controller Applet - Applet Contrôleur - - - - Controller Menu is not available. Please reinstall firmware. - Le menu des manettes n'est pas disponible. Veuillez réinstaller le firmware. - - - - Please install the firmware to use the Home Menu. - - - - - - Home Menu Applet - - - - - - Home Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use Starter. - - - - - Starter Applet - - - - - Starter is not available. Please reinstall firmware. - - - - - Please install firmware to use the home menu. - - - - - Capture Screenshot - Capture d'écran - - - - PNG Image (*.png) - Image PNG (*.png) - - - - Update Available - - - - - Update %1 for Eden is available. -Would you like to download it? - - - - - TAS state: Running %1/%2 - État du TAS : En cours d'exécution %1/%2 - - - - TAS state: Recording %1 - État du TAS : Enregistrement %1 - - - - TAS state: Idle %1/%2 - État du TAS : Inactif %1:%2 - - - - TAS State: Invalid - État du TAS : Invalide - - - - &Stop Running - &Stopper l'exécution - - - - &Start - &Start - - - - Stop R&ecording - Stopper l'en&registrement - - - - R&ecord - En&registrer - - - - Building: %n shader(s) - - Compilation: %n shader - Compilation : %n shaders - - - - - Scale: %1x - %1 is the resolution scaling factor - Échelle : %1x - - - - Speed: %1% / %2% - Vitesse : %1% / %2% - - - - Speed: %1% - Vitesse : %1% - - - Game: %1 FPS (Unlocked) - Jeu : %1 IPS (Débloqué) - - - - Game: %1 FPS - Jeu : %1 FPS - - - - Frame: %1 ms - Frame : %1 ms - - - - %1 %2 - %1 %2 - - - - - FSR - FSR - - - - NO AA - AUCUN AA - - - - VOLUME: MUTE - VOLUME : MUET - - - - VOLUME: %1% - Volume percentage (e.g. 50%) - VOLUME : %1% - - - - Derivation Components Missing - Composants de dérivation manquants - - - Encryption keys are missing. <br>Please follow <a href='https://yuzu-emu.org/help/quickstart/'>the yuzu quickstart guide</a> to get all your keys, firmware and games. - Les clés de chiffrement sont manquantes. <br>Veuillez suivre <a href='https://yuzu-emu.org/help/quickstart/'>le guide de démarrage rapide yuzu</a> pour obtenir toutes vos clés, firmware et jeux. - - - - Select RomFS Dump Target - Sélectionner la cible d'extraction du RomFS - - - - Please select which RomFS you would like to dump. - Veuillez sélectionner quel RomFS vous voulez extraire. - - - Are you sure you want to close yuzu? - Êtes vous sûr de vouloir fermer yuzu ? - - - yuzu - yuzu - - - - Are you sure you want to stop the emulation? Any unsaved progress will be lost. - Êtes-vous sûr d'arrêter l'émulation ? Tout progrès non enregistré sera perdu. - - - The currently running application has requested yuzu to not exit. - -Would you like to bypass this and exit anyway? - L'application en cours a demandé à yuzu de ne pas quitter. - -Voulez-vous ignorer ceci and quitter quand même ? - - - - None - Aucune - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Nearest - Le plus proche - - - - Bilinear - Bilinéaire - - - - Bicubic - Bicubique - - - - Gaussian - Gaussien - - - - ScaleForce - ScaleForce - - - - Area - - - - - Docked - Mode TV - - - - Handheld - Mode Portable - - - - Normal - Normal - - - - High - Haut - - - - Extreme - Extême - - - - Vulkan - Vulkan - - - - OpenGL - OpenGL - - - - Null - Nul - - - - GLSL - GLSL - - - - GLASM - GLASM - - - - SPIRV - SPIRV - GRenderWindow - - + + OpenGL not available! OpenGL n'est pas disponible ! - + OpenGL shared contexts are not supported. Les contextes OpenGL partagés ne sont pas pris en charge. - yuzu has not been compiled with OpenGL support. - yuzu n'a pas été compilé avec le support OpenGL. + + Eden has not been compiled with OpenGL support. + Eden n'a pas été compilé avec le support OpenGL - - eden has not been compiled with OpenGL support. - - - - - + + Error while initializing OpenGL! Erreur lors de l'initialisation d'OpenGL ! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. Votre GPU peut ne pas prendre en charge OpenGL, ou vous n'avez pas les derniers pilotes graphiques. - + Error while initializing OpenGL 4.6! Erreur lors de l'initialisation d'OpenGL 4.6 ! - + Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 Votre GPU peut ne pas prendre en charge OpenGL 4.6 ou vous ne disposez pas du dernier pilote graphique: %1 - + Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2 Votre GPU peut ne pas prendre en charge une ou plusieurs extensions OpenGL requises. Veuillez vous assurer que vous disposez du dernier pilote graphique.<br><br>GL Renderer :<br>%1<br><br>Extensions non prises en charge :<br>%2 @@ -7006,192 +6094,208 @@ Voulez-vous ignorer ceci and quitter quand même ? GameList - + + &Add New Game Directory + + + + Favorite Préférer - + Start Game Démarrer le jeu - + Start Game without Custom Configuration Démarrer le jeu sans configuration personnalisée - + Open Save Data Location Ouvrir l'emplacement des données de sauvegarde - + Open Mod Data Location Ouvrir l'emplacement des données des mods - + Open Transferable Pipeline Cache Ouvrir le cache de pipelines transférable - + + Link to Ryujinx + Lier à Ryujinx + + + Remove Supprimer - + Remove Installed Update Supprimer mise à jour installée - + Remove All Installed DLC Supprimer tous les DLC installés - + Remove Custom Configuration Supprimer la configuration personnalisée - - Remove Play Time Data - Supprimer les données de temps de jeu - - - + Remove Cache Storage Supprimer le stockage du cache - + Remove OpenGL Pipeline Cache Supprimer le cache de pipelines OpenGL - + Remove Vulkan Pipeline Cache Supprimer le cache de pipelines Vulkan - + Remove All Pipeline Caches Supprimer tous les caches de pipelines - + Remove All Installed Contents Supprimer tout le contenu installé - - + + Manage Play Time + Gérer le Temps de Jeu + + + + Edit Play Time Data + Modifier les Données de Temps de Jeu + + + + Remove Play Time Data + Supprimer les données de temps de jeu + + + + Dump RomFS Extraire la RomFS - + Dump RomFS to SDMC Décharger RomFS vers SDMC - + Verify Integrity Vérifier l'intégrité - + Copy Title ID to Clipboard Copier l'ID du titre dans le Presse-papiers - + Navigate to GameDB entry Accédez à l'entrée GameDB - + Create Shortcut Créer un raccourci - + Add to Desktop Ajouter au bureau - + Add to Applications Menu Ajouter au menu des applications - + Configure Game - + Configurer le jeux - Properties - Propriétés - - - + Scan Subfolders Scanner les sous-dossiers - + Remove Game Directory Supprimer le répertoire du jeu - + ▲ Move Up ▲ Monter - + ▼ Move Down ▼ Descendre - + Open Directory Location Ouvrir l'emplacement du répertoire - + Clear Effacer - + Name Nom - + Compatibility Compatibilité - + Add-ons Extensions - + File type Type de fichier - + Size Taille - + Play time Temps de jeu @@ -7199,62 +6303,62 @@ Voulez-vous ignorer ceci and quitter quand même ? GameListItemCompat - + Ingame En jeu - + Game starts, but crashes or major glitches prevent it from being completed. Le jeu se lance, mais crash ou des bugs majeurs l'empêchent d'être complété. - + Perfect Parfait - + Game can be played without issues. Le jeu peut être joué sans problèmes. - + Playable Jouable - + Game functions with minor graphical or audio glitches and is playable from start to finish. Le jeu fonctionne avec des glitchs graphiques ou audio mineurs et est jouable du début à la fin. - + Intro/Menu Intro/Menu - + Game loads, but is unable to progress past the Start Screen. Le jeu charge, mais ne peut pas progresser après le menu de démarrage. - + Won't Boot Ne démarre pas - + The game crashes when attempting to startup. Le jeu crash au lancement. - + Not Tested Non testé - + The game has not yet been tested. Le jeu n'a pas encore été testé. @@ -7262,7 +6366,7 @@ Voulez-vous ignorer ceci and quitter quand même ? GameListPlaceholder - + Double-click to add a new folder to the game list Double-cliquez pour ajouter un nouveau dossier à la liste de jeux @@ -7270,20 +6374,17 @@ Voulez-vous ignorer ceci and quitter quand même ? GameListSearchField - + %1 of %n result(s) - - %1 sur %n résultat - %1 sur %n résultats - + %1 sur %n résultat%1 sur %n résultats%1 sur %n résultat(s) - + Filter: Filtre : - + Enter pattern to filter Entrez un motif à filtrer @@ -7359,233 +6460,242 @@ Voulez-vous ignorer ceci and quitter quand même ? HostRoomWindow - + Error Erreur - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. + + Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid Eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. Debug Message: - - - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid yuzu account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. -Debug Message: - Échec de l'annonce du salon dans le hall public. Pour héberger un salon publiquement, vous devez avoir un compte yuzu valide configuré dans Emulation -> Configurer -> Web. Si vous ne souhaitez pas publier un salon dans le hall public, sélectionnez plutôt Non Répertorié. -Message de débogage : + Échec de l'annonce du salon dans le hall public. Pour héberger un salon publiquement, vous devez configurer un compte Eden valide dans Émulation -> Configuration -> Web. Si vous ne souhaitez pas publier le salon dans le hall public, sélectionnez "Non répertorié" à la place. +Message de débogage : Hotkeys - + Audio Mute/Unmute Désactiver/Activer le son - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Main Window Fenêtre Principale - + Audio Volume Down Baisser le volume audio - + Audio Volume Up Augmenter le volume audio - + Capture Screenshot Prendre une capture d'ecran - + Change Adapting Filter Modifier le filtre d'adaptation - + Change Docked Mode Changer le mode de la station d'accueil - - Change GPU Accuracy - Modifier la précision du GPU + + Change GPU Mode + - + Configure - Configurer + Configurer - + Configure Current Game - + Configurer le jeu actuel - + Continue/Pause Emulation Continuer/Suspendre l'Émulation - + Exit Fullscreen Quitter le plein écran - Exit yuzu - Quitter yuzu + + Exit Eden + Fermer Eden - - Exit eden - - - - + Fullscreen Plein écran - + Load File Charger un fichier - + Load/Remove Amiibo Charger/Supprimer un Amiibo - - Multiplayer Browse Public Game Lobby - Multijoueur parcourir le menu des jeux publics + + Browse Public Game Lobby + - - Multiplayer Create Room - Multijoueur créer un salon + + Create Room + - - Multiplayer Direct Connect to Room - Multijoueur connexion directe au salon + + Direct Connect to Room + - - Multiplayer Leave Room - Multijoueur quitter le salon + + Leave Room + - - Multiplayer Show Current Room - Multijoueur afficher le salon actuel + + Show Current Room + - + Restart Emulation Redémarrer l'Émulation - + Stop Emulation Arrêter l'Émulation - + TAS Record Enregistrement TAS - + TAS Reset Réinitialiser le TAS - + TAS Start/Stop Démarrer/Arrêter le TAS - + Toggle Filter Bar Activer la barre de filtre - + Toggle Framerate Limit Activer la limite de fréquence d'images - + + Toggle Turbo Speed + + + + + Toggle Slow Speed + + + + Toggle Mouse Panning Activer le panoramique de la souris - + Toggle Renderdoc Capture Activer la capture renderdoc - + Toggle Status Bar Activer la barre d'état + + + Toggle Performance Overlay + + InstallDialog - + Please confirm these are the files you wish to install. Veuillez confirmer que ce sont les fichiers que vous souhaitez installer. - + Installing an Update or DLC will overwrite the previously installed one. L'installation d'une mise à jour ou d'un DLC écrasera celle précédemment installée. - + Install Installer - + Install Files to NAND Installer des fichiers sur la NAND @@ -7593,8 +6703,8 @@ Message de débogage : LimitableInputDialog - - The text can't contain any of the following characters: + + The text can't contain any of the following characters: %1 Le texte ne peut contenir aucun des caractères suivants : %1 @@ -7618,22 +6728,22 @@ Message de débogage : Temps Estimé 5m 4s - + Loading... Chargement... - + Loading Shaders %1 / %2 Chargement des shaders %1 / %2 - + Launching... Lancement... - + Estimated Time %1 Temps Estimé %1 @@ -7682,42 +6792,42 @@ Message de débogage : Rafraichir le menu - + Password Required to Join Mot de passe requis pour rejoindre - + Password: Mot de passe : - + Players Joueurs - + Room Name Nom du salon - + Preferred Game Jeu préféré - + Host Hôte - + Refreshing Rafraîchissement - + Refresh List Rafraîchir la liste @@ -7740,362 +6850,1434 @@ Message de débogage : &Fichiers récents - + + Open &Eden Folders + Ouvrir &les dossiers Eden + + + &Emulation &Émulation - + &View &Vue - + &Reset Window Size &Réinitialiser la taille de la fenêtre - + &Debugging &Débogage - + + &Game List Mode + + + + + Game &Icon Size + + + + Reset Window Size to &720p &Réinitialiser la taille de la fenêtre à 720p - + Reset Window Size to 720p Réinitialiser la taille de la fenêtre à 720p - + Reset Window Size to &900p Réinitialiser la taille de la fenêtre à &900p - + Reset Window Size to 900p Réinitialiser la taille de la fenêtre à 900p - + Reset Window Size to &1080p Réinitialiser la taille de la fenêtre à &1080p - + Reset Window Size to 1080p Réinitialiser la taille de la fenêtre à 1080p - + &Multiplayer &Multijoueur - + &Tools &Outils - - &Amiibo - &Amiibo + + Am&iibo + Am&iibo - + + Launch &Applet + + + + &TAS &TAS - + &Create Home Menu Shortcut - + &Créer un Raccourci du Menu d'Accueil - + + Install &Firmware + Installer le &Firmware + + + &Help &Aide - + &Install Files to NAND... &Installer des fichiers sur la NAND... - + L&oad File... &Charger un fichier... - + Load &Folder... &Charger un dossier - + E&xit Q&uitter - + + &Pause &Pause - + &Stop &Arrêter - + &Verify Installed Contents &Vérifier les contenus installés - - &About eden - + + &About Eden + &À propos d'Eden - - Open &eden Folder - - - - - Open Home Menu - - - - - &Discord - - - - - Open &Setup - - - - - &Desktop - - - - - &Application Menu - - - - &About yuzu - &À propos de yuzu - - - + Single &Window Mode &Mode fenêtre unique - + Con&figure... &Configurer... - + Ctrl+, - + Ctrl+, - - Display D&ock Widget Headers - &Afficher les en-têtes du widget Dock + + Enable Overlay Display Applet + - + Show &Filter Bar &Afficher la barre de filtre - + Show &Status Bar &Afficher la barre d'état - + Show Status Bar Afficher la barre d'état - + &Browse Public Game Lobby &Parcourir le menu des jeux publics - + &Create Room &Créer un salon - + &Leave Room &Quitter le salon - + &Direct Connect to Room &Connexion directe au salon - + &Show Current Room &Afficher le salon actuel - + F&ullscreen P&lein écran - + &Restart &Redémarrer - + Load/Remove &Amiibo... Charger/Retirer un &Amiibo… - + &Report Compatibility &Signaler la compatibilité - + Open &Mods Page Ouvrir la &page des mods - + Open &Quickstart Guide Ouvrir le &guide de démarrage rapide - + &FAQ &FAQ - Open &yuzu Folder - Ouvrir le &dossier de Yuzu - - - + &Capture Screenshot &Capture d'écran - - Open &Album - Ouvrir l'&album + + &Album + - + &Set Nickname and Owner &Définir le surnom et le propriétaire - + &Delete Game Data &Supprimer les données du jeu - + &Restore Amiibo &Restaurer l'amiibo - + &Format Amiibo &Formater l'amiibo - - Open &Mii Editor - Ouvrir l'&éditeur Mii + + &Mii Editor + - + &Configure TAS... &Configurer TAS... - + Configure C&urrent Game... Configurer le j&eu actuel... - + + &Start &Démarrer - + &Reset &Réinitialiser - + + R&ecord En&registrer - + Open &Controller Menu Ouvrir le &menu des manettes - - Install Firmware - Installer le firmware + + Install Decryption &Keys + Installer les &clés de déchiffrement - - Install Decryption Keys - Installer les clés de décryptage + + &Home Menu + - - - MicroProfileDialog - - &MicroProfile - &MicroProfile + + &Desktop + &Bureau + + + + &Application Menu + &Menu de l'Application + + + + &Root Data Folder + &Dossier de Données (Root) Principal. + + + + &NAND Folder + &Dossier NAND + + + + &SDMC Folder + &Dossier SDMC + + + + &Mod Folder + &Dossier Mod + + + + &Log Folder + &Dossier Log + + + + From Folder + Depuis un dossier + + + + From ZIP + Depuis une archive ZIP + + + + &Eden Dependencies + Dépendances d'&Eden + + + + &Data Manager + &Gestionnaire de données + + + + &Tree View + + + + + &Grid View + + + + + Game Icon Size + + + + + + + None + Aucun + + + + Show Game &Name + + + + + Show &Performance Overlay + + + + + Small (32x32) + + + + + Standard (64x64) + + + + + Large (128x128) + + + + + Full Size (256x256) + + + + + Broken Vulkan Installation Detected + + + + + Vulkan initialization failed during boot. + + + + + Running a game + TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping + + + + + Loading Web Applet... + + + + + + Disable Web Applet + + + + + 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.) + + + + + The amount of shaders currently being built + + + + + The current selected resolution scaling multiplier. + + + + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. + + + + + How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. + + + + + 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. + + + + + Unmute + Remettre le son + + + + Mute + Couper le son + + + + Reset Volume + Réinitialiser le volume + + + + &Clear Recent Files + + + + + &Continue + &Continuer + + + + Warning: Outdated Game Format + + + + + 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.<br>For an explanation of the various Switch formats Eden supports, out our user handbook. This message will not be shown again. + + + + + + Error while loading ROM! + + + + + The ROM format is not supported. + + + + + An error occurred initializing the video core. + + + + + Eden 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: <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>How to Upload the Log File</a>. + + + + + Error while loading ROM! %1 + %1 signifies a numeric error code. + + + + + %1<br>Please redump your files or ask on Discord/Stoat for help. + %1 signifies an error string. + + + + + An unknown error occurred. Please see the log for more details. + + + + + (64-bit) + (64-bit) + + + + (32-bit) + (32-bit) + + + + %1 %2 + %1 is the title name. %2 indicates if the title is 64-bit or 32-bit + + + + + Closing software... + Fermeture du logiciel... + + + + Save Data + Données de sauvegarde + + + + Mod Data + + + + + Error Opening %1 Folder + + + + + + Folder does not exist! + + + + + Remove Installed Game Contents? + + + + + Remove Installed Game Update? + + + + + Remove Installed Game DLC? + + + + + Remove Entry + + + + + Delete OpenGL Transferable Shader Cache? + + + + + Delete Vulkan Transferable Shader Cache? + + + + + Delete All Transferable Shader Caches? + + + + + Remove Custom Game Configuration? + + + + + Remove Cache Storage? + + + + + Remove File + + + + + Remove Play Time Data + + + + + Reset play time? + Réinitialiser le temps de jeu ? + + + + + RomFS Extraction Failed! + L'extraction de la RomFS a échoué ! + + + + There was an error copying the RomFS files or the user cancelled the operation. + + + + + Full + + + + + Skeleton + + + + + Select RomFS Dump Mode + + + + + Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. + + + + + There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root + + + + + Extracting RomFS... + + + + + + Cancel + Annuler + + + + RomFS Extraction Succeeded! + Extraction de la RomFS réussi ! + + + + The operation completed successfully. + + + + + Error Opening %1 + + + + + Select Directory + + + + + Properties + Propriétés + + + + The game properties could not be loaded. + + + + + Switch Executable (%1);;All Files (*.*) + %1 is an identifier for the Switch executable file extensions. + + + + + Load File + + + + + Open Extracted ROM Directory + + + + + Invalid Directory Selected + + + + + The directory you have selected does not contain a 'main' file. + + + + + Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) + + + + + Install Files + + + + + %n file(s) remaining + + + + + Installing file "%1"... + + + + + + Install Results + + + + + To avoid possible conflicts, we discourage users from installing base games to the NAND. +Please, only use this feature to install updates and DLC. + + + + + %n file(s) were newly installed + + + + + + %n file(s) were overwritten + + + + + + %n file(s) failed to install + + + + + + System Application + + + + + System Archive + + + + + System Application Update + + + + + Firmware Package (Type A) + + + + + Firmware Package (Type B) + + + + + Game + Jeu + + + + Game Update + + + + + Game DLC + + + + + Delta Title + + + + + Select NCA Install Type... + + + + + Please select the type of title you would like to install this NCA as: +(In most instances, the default 'Game' is fine.) + + + + + Failed to Install + Échec de l'installation + + + + The title type you selected for the NCA is invalid. + + + + + File not found + Fichier non trouvé + + + + File "%1" not found + + + + + OK + OK + + + + Function Disabled + + + + + Compatibility list reporting is currently disabled. Check back later! + + + + + Error opening URL + + + + + Unable to open the URL "%1". + + + + + TAS Recording + + + + + Overwrite file of player 1? + + + + + Invalid config detected + + + + + Handheld controller can't be used on docked mode. Pro controller will be selected. + + + + + + Amiibo + Amiibo + + + + + The current amiibo has been removed + + + + + Error + Erreur + + + + + The current game is not looking for amiibos + + + + + Amiibo File (%1);; All Files (*.*) + + + + + Load Amiibo + Charger un Amiibo + + + + Error loading Amiibo data + + + + + The selected file is not a valid amiibo + + + + + The selected file is already on use + + + + + An unknown error occurred + + + + + + Keys not installed + + + + + + Install decryption keys and restart Eden before attempting to install firmware. + + + + + Select Dumped Firmware Source Location + + + + + Select Dumped Firmware ZIP + + + + + Zipped Archives (*.zip) + + + + + Firmware cleanup failed + + + + + Failed to clean up extracted firmware cache. +Check write permissions in the system temp directory and try again. +OS reported error: %1 + + + + + No firmware available + + + + + Firmware Corrupted + Firmware corrompu + + + + Unknown applet + + + + + Applet doesn't map to a known value. + + + + + Record not found + + + + + Applet not found. Please reinstall firmware. + + + + + Capture Screenshot + + + + + PNG Image (*.png) + + + + + Update Available + + + + + Download %1? + + + + + TAS state: Running %1/%2 + + + + + TAS state: Recording %1 + + + + + TAS state: Idle %1/%2 + + + + + TAS State: Invalid + + + + + &Stop Running + + + + + Stop R&ecording + + + + + Building: %n shader(s) + + + + + Scale: %1x + %1 is the resolution scaling factor + + + + + Speed: %1% / %2% + + + + + Speed: %1% + + + + + Game: %1 FPS + + + + + Frame: %1 ms + + + + + + FSR + FSR + + + + NO AA + + + + + VOLUME: MUTE + VOLUME : MUET + + + + VOLUME: %1% + Volume percentage (e.g. 50%) + + + + + Derivation Components Missing + + + + + Decryption keys are missing. Install them now? + + + + + Wayland Detected! + Wayland détecté ! + + + + Wayland is known to have significant performance issues and mysterious bugs. +It's recommended to use X11 instead. + +Would you like to force it for future launches? + + + + + Use X11 + + + + + Continue with Wayland + + + + + Don't show again + + + + + Restart Required + + + + + Restart Eden to apply the X11 backend. + + + + + Slow + + + + + Turbo + + + + + Unlocked + + + + + Select RomFS Dump Target + + + + + Please select which RomFS you would like to dump. + + + + + Are you sure you want to close Eden? + + + + + + + Eden + Eden + + + + Are you sure you want to stop the emulation? Any unsaved progress will be lost. + + + + + The currently running application has requested Eden to not exit. + +Would you like to bypass this and exit anyway? + + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Nearest + Au plus proche + + + + Bilinear + Bilinéaire + + + + Bicubic + Bicubique + + + + Zero-Tangent + Zero-Tangente + + + + B-Spline + B-Spline + + + + Mitchell + Mitchell + + + + Spline-1 + Spline-1 + + + + Gaussian + Gaussien + + + + Lanczos + Lanczos + + + + ScaleForce + ScaleForce + + + + Area + + + + + MMPX + + + + + Docked + Mode TV + + + + Handheld + Mode Portable + + + + Fast + + + + + Balanced + + + + + Accurate + + + + + Vulkan + Vulkan + + + + OpenGL GLSL + + + + + OpenGL SPIRV + + + + + OpenGL GLASM + + + + + Null + MigrationWorker - - Data was migrated successfully. - - - - + Linking the old directory failed. You may need to re-run with administrative privileges on Windows. OS gave error: %1 - + La liaison de l'ancien répertoire a échoué. Vous devrez peut-être réexécuter avec des privilèges administratifs sous Windows. +L'OS a renvoyé l'erreur : %1 - + + + +Note that your configuration and data will be shared with %1. +If this is not desirable, delete the following files: +%2 +%3 +%4 + + +Note votre configuration et vos données seront partagé avec %1. +Si cela n'est pas convenable, supprimez les fichiers suivants : +%2 +%3 +%4 + + + If you wish to clean up the files which were left in the old data location, you can do so by deleting the following directory: %1 - + + +Si vous souhaitez supprimer les fichiers qui ont été laissés dans l'ancien emplacement de données, vous pouvez le faire en supprimant le répertoire suivant : +%1 + + + + Data was migrated successfully. + Les données ont été migré avec succès + + + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + @@ -8112,7 +8294,7 @@ If you wish to clean up the files which were left in the old data location, you - + Refreshing Rafraîchissement @@ -8122,27 +8304,27 @@ If you wish to clean up the files which were left in the old data location, you Débannir - + Subject Sujet - + Type Type - + Forum Username Nom d'utilisateur du forum - + IP Address Adresse IP - + Refresh Rafraîchir @@ -8150,37 +8332,37 @@ If you wish to clean up the files which were left in the old data location, you MultiplayerState - + Current connection status État actuel de la connexion - + Not Connected. Click here to find a room! Pas connecté. Cliquez ici pour trouver un salon ! - + Not Connected Non Connecté - + Connected Connecté - + New Messages Received Nouveaux messages reçus - + Error Erreur - + Failed to update the room information. Please check your Internet connection and try hosting the room again. Debug Message: Impossible de mettre à jour les informations du salon. Veuillez vérifier votre connexion internet et d'héberger le salon à nouveau. @@ -8189,90 +8371,6 @@ Message de Débogage : NetworkMessage - - Username is not valid. Must be 4 to 20 alphanumeric characters. - Le nom d'utilisateur n'est pas valide. Il doit être de 4 à 20 caractères alphanumériques. - - - Room name is not valid. Must be 4 to 20 alphanumeric characters. - Le nom du salon n'est pas valide. Il doit être de 4 à 20 caractères alphanumériques. - - - Username is already in use or not valid. Please choose another. - Le nom d'utilisateur est déjà utilisé ou n'est pas valide. Veuillez en sélectionner un autre. - - - IP is not a valid IPv4 address. - L'IP n'est pas une adresse IPv4 valide. - - - Port must be a number between 0 to 65535. - Le port doit être un nombre compris entre 0 et 65535. - - - You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - Vous devez choisir un jeu préféré pour héberger un salon. Si vous n'avez pas encore de jeux dans votre liste de jeux, ajoutez un dossier de jeu en cliquant sur l'icône plus dans la liste de jeux. - - - Unable to find an internet connection. Check your internet settings. - Impossible de trouver une connexion Internet. Vérifiez vos paramètres Internet. - - - Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - Impossible de se connecter à l'hôte. Vérifiez que les paramètres de connexion sont corrects. Si vous ne parvenez toujours pas à vous connecter, contactez l'hôte du salon et vérifiez que l'hôte a correctement configuré le port externe redirigé. - - - Unable to connect to the room because it is already full. - Impossible de se connecter au salon car il est déjà plein. - - - Creating a room failed. Please retry. Restarting yuzu might be necessary. - La création d'un salon a échoué. Veuillez réessayer. Peut être que vous devriez redémarrer yuzu. - - - The host of the room has banned you. Speak with the host to unban you or try a different room. - L'hôte du salon vous a banni. Parlez à l'hôte pour vous débannir ou essayez un autre salon. - - - Version mismatch! Please update to the latest version of yuzu. If the problem persists, contact the room host and ask them to update the server. - Décalage de version ! Veuillez faire la mettre à jour vers la dernière version de yuzu. Si le problème persiste, contactez l'hôte du salon et demandez lui de mettre à jour le serveur. - - - Incorrect password. - Mot de passe incorrect. - - - An unknown error occurred. If this error continues to occur, please open an issue - Une erreur inconnue s'est produite. Si cette erreur continue d'arriver, veuillez faire un rapport - - - Connection to room lost. Try to reconnect. - Connexion au salon perdue. Essayez de vous reconnecter. - - - You have been kicked by the room host. - Vous avez été expulsé par l'hôte du salon. - - - IP address is already in use. Please choose another. - L'adresse IP est déjà utilisée. Veuillez en sélectionner une autre. - - - You do not have enough permission to perform this action. - Vous ne disposez pas des autorisations suffisantes pour effectuer cette action. - - - The user you are trying to kick/ban could not be found. -They may have left the room. - L'utilisateur que vous essayez d'exclure/bannir est introuvable. -Il a peut-être quitté la salon. - - - No valid network interface is selected. -Please go to Configure -> System -> Network and make a selection. - Aucune interface réseau valide n'est séléctionnée. -Veuillez aller dans Configurer -> Système -> Réseau et faites un choix. - Game already running @@ -8307,10 +8405,132 @@ Continuer quand même ? - NetworkMessage::ErrorManager + NewUserDialog - Error - Erreur + + + New User + + + + + Change Avatar + + + + + Set Image + + + + + UUID + + + + + Eden + + + + + Username + + + + + UUID must be 32 hex characters (0-9, A-F) + + + + + Generate + + + + + Select User Image + + + + + Image Formats (*.jpg *.jpeg *.png *.bmp) + + + + + No firmware available + + + + + Please install the firmware to use firmware avatars. + + + + + + Error loading archive + + + + + Archive is not available. Please install/reinstall firmware. + + + + + Could not locate RomFS. Your file or decryption keys may be corrupted. + + + + + Error extracting archive + + + + + Could not extract RomFS. Your file or decryption keys may be corrupted. + + + + + Error finding image directory + + + + + Failed to find image directory in the archive. + + + + + No images found + + + + + No avatar images were found in the archive. + + + + + + All Good + Tooltip + + + + + Must be 32 hex characters (0-9, a-f) + Tooltip + + + + + Must be between 1 and 32 characters + Tooltip + @@ -8337,7 +8557,7 @@ Continuer quand même ? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -8346,83 +8566,199 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> + + PerformanceOverlay + + + Form + + + + + Frametime + + + + + 0 ms + + + + + + Min: 0 + + + + + + Max: 0 + + + + + + Avg: 0 + + + + + FPS + + + + + 0 fps + + + + + %1 fps + + + + + + Avg: %1 + + + + + + Min: %1 + + + + + + Max: %1 + + + + + %1 ms + + + PlayerControlPreview - + START/PAUSE Démarrer/Pause + + ProfileAvatarDialog + + + Select + + + + + Cancel + + + + + Background Color + + + + + Select Firmware Avatar + + + QObject - - %1 is not playing a game - %1 ne joue pas à un jeu + + + + Migration + Migration - - %1 is playing %2 - %1 joue à %2 + + Clear Shader Cache + Supprimer le cache de shader - - Not playing a game - Ne joue pas à un jeu + + Keep Old Data + Garder les anciennes données - - Installed SD Titles - Titres installés sur la SD + + Clear Old Data + Supprimer les anciennes données - - Installed NAND Titles - Titres installés sur la NAND + + Link Old Directory + Associer l’Ancien Répertoire - - System Titles - Titres Système + + + + + + + - - Add New Game Directory - Ajouter un nouveau répertoire de jeu + + + No + Non - - Favorites - Favoris + + You can manually re-trigger this prompt by deleting the new config directory: +%1 + Vous pouvez relancer manuellement cette invite en supprimant le nouveau répertoire de configuration : +%1 + + + + Migrating + Migration + + + + Migrating, this may take a while... + Migration, cela peut prendre un certain temps... - - + + Shift Maj - - + + Ctrl Ctrl - - + + Alt Alt - - - - + + + + [not set] [non défini] @@ -8432,15 +8768,15 @@ p, li { white-space: pre-wrap; } Chapeau %1 %2 - - - - - - - - + + + + + + + + Axis %1%2 Axe %1%2 @@ -8450,359 +8786,383 @@ p, li { white-space: pre-wrap; } Bouton %1 - - - - - - + + + + + + [unknown] [inconnu] - - - + + + Left Gauche - - - + + + Right Droite - - - + + + Down Bas - - - + + + Up Haut - - + + Z Z - - + + R R - - + + L L - - + + A A - - + + B B - - + + X X - - + + Y Y - - + + Start Start - - + + L1 L1 - - + + L2 L2 - - + + L3 L3 - - + + R1 R1 - - + + R2 R2 - - + + R3 R3 - - + + Circle Cercle - - + + Cross Croix - - + + Square Carré - - + + Triangle Triangle - - + + Share Partager - - + + Options Options - - + + [undefined] [non défini] - + %1%2 %1%2 - - + + [invalid] [invalide] - - + + %1%2Hat %3 %1%2Chapeau %3 - - - + + + %1%2Axis %3 %1%2Axe %3 - - + + %1%2Axis %3,%4,%5 %1%2Axe %3,%4,%5 - - + + %1%2Motion %3 %1%2Mouvement %3 - - + + %1%2Button %3 %1%2Bouton %3 - - + + [unused] [inutilisé] - + ZR ZR - + ZL ZL - + SR SR - + SL SL - + Stick L Stick Gauche - + Stick R Stick Droit - + Plus Plus - + Minus Moins - - + + Home Home - + Capture Capture - + Touch Tactile - + Wheel Indicates the mouse wheel Molette - + Backward Reculer - + Forward Avancer - + Task Tâche - + Extra Extra - + %1%2%3%4 %1%2%3%4 - - + + %1%2%3Hat %4 %1%2%3Chapeau %4 - - + + %1%2%3Axis %4 %1%2%3Axe %4 - - + + %1%2%3Button %4 %1%2%3Bouton %4 - - - - Migration - + + Not playing a game + Ne joue pas à un jeu - - - - - + + %1 is not playing a game + %1 ne joue pas à un jeu - - - No - + + %1 is playing %2 + %1 joue à %2 - - You can manually re-trigger this prompt by deleting the new config directory: -%1 - + + Play Time: %1 + - - Migrating - + + Never Played + - - Migrating, this may take a while... - + + Version: %1 + + + + + Version: 1.0.0 + + + + + Installed SD Titles + Titres installés sur la SD + + + + Installed NAND Titles + Titres installés sur la NAND + + + + System Titles + Titres Système + + + + Add New Game Directory + Ajouter un nouveau répertoire de jeu + + + + Favorites + Favoris @@ -8893,31 +9253,828 @@ p, li { white-space: pre-wrap; } Chemin du fichier - + No game data present Aucune données de jeu présent - + The following amiibo data will be formatted: Les données de cet Amiibo vont être formatées : - + The following game data will removed: Les données de ce jeu vont être enlevés : - + Set nickname and owner: Mettre un surnom et un propriétaire - + Do you wish to restore this amiibo? Voulez-vous restaurer cet Amiibo ? + + QtCommon::Content + + + Game Requires Firmware + Le jeu nécessite un firmware + + + + The game you are trying to launch requires firmware to boot or to get past the opening menu. Please <a href='https://yuzu-mirror.github.io/help/quickstart'>dump and install firmware</a>, or press "OK" to launch anyways. + Le jeu que vous essayez de lancer nécessite un firmware pour démarrer ou pour passer le menu d’ouverture. Veuillez <a href='https://yuzu-mirror.github.io/help/quickstart'>dumper et installer le firmware</a>, ou appuyez sur « OK » pour lancer quand même. + + + + Installing Firmware... + Installation du firmware... + + + + + + + + Cancel + Annuler + + + + Firmware Install Failed + Installation du firmware échoué + + + + Firmware Install Succeeded + Installation du firmware réussi + + + + Firmware integrity verification failed! + Échec de la vérification de l'intégrité du firmware ! + + + + + Verification failed for the following files: + +%1 + La vérification a échoué pour les fichiers suivants : + +%1 + + + + + Verifying integrity... + Vérification de l'intégrité... + + + + + Integrity verification succeeded! + La vérification de l'intégrité réussi ! + + + + + The operation completed successfully. + L'opération s'est déroulée avec succès. + + + + + Integrity verification failed! + La vérification de l'intégrité a échoué ! + + + + File contents may be corrupt or missing. + Le contenu d'un fichier peut être corrompu or manquant. + + + + Integrity verification couldn't be performed + La vérification de l'intégrité n'a pas pu être effectuée + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity. + Installation du firmware annulée, le firmware est peut-être en mauvais état ou corrompu. Impossible de vérifier la validité du contenu du fichier. + + + + Select Dumped Keys Location + Sélectionner Emplacement Clés Extraites + + + + Decryption Keys install succeeded + Installation des clés de décryptage avec succès + + + + Decryption Keys install failed + Installation des clés de décryptage échoué + + + + Orphaned Profiles Detected! + Profils orphelins détectés ! + + + + UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br> + DES CHOSES GRAVES INATTENDUES PEUVENT SURVENIR SI VOUS NE LISEZ PAS CECI !<br>Eden a détecté les répertoires de sauvegarde suivants sans profil associé :<br>%1<br><br>Les profils suivants sont valides :<br>%2<br><br>Cliquez sur « OK » pour ouvrir votre dossier de sauvegarde et corriger vos profils.<br>Astuce : copiez le contenu du dossier le plus volumineux ou le plus récemment modifié ailleurs, supprimez tous les profils orphelins et déplacez le contenu copié vers le profil correct.<br><br>Toujours confus ? Consultez la <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>page d’aide</a>.<br> + + + + Really clear data? + Vraiment effacer les données ? + + + + Important data may be lost! + Des données importantes peuvent être perdues ! + + + + Are you REALLY sure? + Êtes-vous VRAIMENT sûr ? + + + + Once deleted, your data will NOT come back! +Only do this if you're 100% sure you want to delete this data. + Une fois supprimées, vos données NE POURRONT PAS être récupérées ! +Ne faites cela que si vous êtes sûr à 100 % de vouloir supprimer ces données. + + + + Clearing... + Suppression en cours… + + + + Select Export Location + Sélectionner l’emplacement d’exportation + + + + %1.zip + %1.zip + + + + + Zipped Archives (*.zip) + Archives compressées (*.zip) + + + + Exporting data. This may take a while... + Exportation des données en cours. Cela peut prendre un certain temps… + + + + Exporting + Exportation en cours… + + + + Exported Successfully + Exportation réussie + + + + Data was exported successfully. + Les données ont été exportées avec succès. + + + + Export Cancelled + Exportation annulée + + + + Export was cancelled by the user. + L’exportation a été annulée par l’utilisateur. + + + + Export Failed + Échec de l’exportation + + + + Ensure you have write permissions on the targeted directory and try again. + Assurez-vous d’avoir les permissions d’écriture sur le répertoire ciblé et réessayez. + + + + Select Import Location + Sélectionner l’emplacement d’importation + + + + Import Warning + Avertissement d’importation + + + + All previous data in this directory will be deleted. Are you sure you wish to proceed? + Toutes les données précédentes de ce répertoire seront supprimées. Êtes-vous sûr de vouloir continuer ? + + + + Importing data. This may take a while... + Importation des données en cours. Cela peut prendre un certain temps… + + + + Importing + Importation en cours… + + + + Imported Successfully + Importation réussie + + + + Data was imported successfully. + Les données ont été importées avec succès. + + + + Import Cancelled + Importation annulée + + + + Import was cancelled by the user. + L’importation a été annulée par l’utilisateur. + + + + Import Failed + Échec de l’importation + + + + Ensure you have read permissions on the targeted directory and try again. + Assurez-vous d’avoir les permissions de lecture sur le répertoire ciblé et réessayez. + + + + QtCommon::FS + + + Linked Save Data + Données de sauvegarde liées + + + + Save data has been linked. + Les données de sauvegarde ont été liées. + + + + Failed to link save data + Échec de la liaison des données de sauvegarde + + + + Could not link directory: + %1 +To: + %2 + Impossible de lier le répertoire : + %1 +To: + %2 + + + + Already Linked + Déjà lié + + + + This title is already linked to Ryujinx. Would you like to unlink it? + Ce titre est déjà lié à Ryujinx. Voulez‑vous le délier ? + + + + Failed to unlink old directory + Impossible de délier l’ancien répertoire + + + + + OS returned error: %1 + Le système a renvoyé l’erreur : %1 + + + + Failed to copy save data + Échec de la copie des données de sauvegarde + + + + Unlink Successful + Déliaison réussie + + + + Successfully unlinked Ryujinx save data. Save data has been kept intact. + Les données de sauvegarde Ryujinx ont été déliennées avec succès. Les données de sauvegarde ont été conservées intactes. + + + + Could not find Ryujinx installation + + + + + Could not find a valid Ryujinx installation. This may typically occur if you are using Ryujinx in portable mode. + +Would you like to manually select a portable folder to use? + + + + + Ryujinx Portable Location + + + + + Not a valid Ryujinx directory + + + + + The specified directory does not contain valid Ryujinx data. + + + + + + Could not find Ryujinx save data + + + + + QtCommon::Game + + + Error Removing Contents + Erreur Suppression Contenu + + + + Error Removing Update + Erreur Suppression Mise à jour + + + + Error Removing DLC + Erreur Suppression DLC + + + + + + + + + Successfully Removed + Supprimé avec succès + + + + Successfully removed the installed base game. + Le jeu de base installé a été supprimé avec succès. + + + + The base game is not installed in the NAND and cannot be removed. + Le jeu de base n'est pas installé dans la NAND et ne peut pas être supprimé. + + + + Successfully removed the installed update. + La mise à jour installée a été supprimée avec succès. + + + + There is no update installed for this title. + Il n'y a pas de mise à jour installée pour ce titre. + + + + There are no DLCs installed for this title. + Il n'y a pas de DLCs installés pour ce titre. + + + + Successfully removed %1 installed DLC. + Suppression de %1 DLC installé(s) avec succès. + + + + + Error Removing Transferable Shader Cache + Erreur Suppression Cache Shader transférable + + + + + A shader cache for this title does not exist. + Un shader cache pour ce titre n'existe pas. + + + + Successfully removed the transferable shader cache. + Suppression du cache de shader transférable réussi avec succès. + + + + Failed to remove the transferable shader cache. + Échec de la suppression du cache de shader transférable. + + + + Error Removing Vulkan Driver Pipeline Cache + Erreur Suppression Cache de pipeline Pilotes Vulkan + + + + Failed to remove the driver pipeline cache. + Échec de la suppression du cache de pipeline de pilotes. + + + + + Error Removing Transferable Shader Caches + Erreur Suppression Caches Shader Transférable + + + + Successfully removed the transferable shader caches. + Suppression des caches de shader transférable effectuée avec succès. + + + + Failed to remove the transferable shader cache directory. + Impossible de supprimer le dossier de cache de shader transférable. + + + + + Error Removing Custom Configuration + Erreur Suppression Configuration Personnalisée + + + + A custom configuration for this title does not exist. + Il n'existe pas de configuration personnalisée pour ce titre. + + + + Successfully removed the custom game configuration. + La configuration personnalisée du jeu a été supprimée avec succès. + + + + Failed to remove the custom game configuration. + Échec de la suppression de la configuration personnalisée du jeu. + + + + Reset Metadata Cache + Réinitialiser le cache des métadonnées + + + + The metadata cache is already empty. + Le cache des métadonnées est déjà vide. + + + + The operation completed successfully. + L'opération s'est déroulée avec succès. + + + + The metadata cache couldn't be deleted. It might be in use or non-existent. + Le cache des métadonnées n'a pas pu être supprimé. Il est peut-être en cours d'utilisation ou inexistant. + + + + Create Shortcut + Créer un raccourci + + + + Do you want to launch the game in fullscreen? + Voulez-vous lancer le jeu en plein écran ? + + + + Shortcut Created + Raccourcis crée + + + + Successfully created a shortcut to %1 + Création d'un raccourci vers %1 réussi avec succès + + + + Shortcut may be Volatile! + Les raccourcis peuvent être instables ! + + + + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? + Cela créera un raccourci vers l'AppImage actuel. Cela peut ne pas fonctionner correctement si vous effectuez une mise à jour. Continuer ? + + + + Failed to Create Shortcut + Échec de la création du raccourci + + + + Failed to create a shortcut to %1 + Échec de la création d'un raccourci vers %1 + + + + Create Icon + Créer une icône + + + + Cannot create icon file. Path "%1" does not exist and cannot be created. + Impossible de créer le fichier icône. Le chemin "%1" n'existe pas et ne peut être créé. + + + + No firmware available + Pas de firmware disponible + + + + Please install firmware to use the home menu. + Veuillez installer un firmware pour utiliser le menu d'accueil + + + + Home Menu Applet + Applet Menu d'accueil + + + + Home Menu is not available. Please reinstall firmware. + Le menu d'accueil n'est pas disponible. Veuillez réinstaller le firmware + + + + QtCommon::Mod + + + Mod Name + + + + + What should this mod be called? + + + + + RomFS + + + + + ExeFS/Patch + + + + + Cheat + + + + + Mod Type + + + + + Could not detect mod type automatically. Please manually specify the type of mod you downloaded. + +Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods. + + + + + + Mod Extract Failed + + + + + Failed to create temporary directory %1 + + + + + Zip file %1 is empty + + + + + QtCommon::Path + + + Error Opening Shader Cache + Erreur lors de l’ouverture du cache des shaders + + + + Failed to create or open shader cache for this title, ensure your app data directory has write permissions. + Impossible de créer ou d’ouvrir le cache des shaders pour ce titre. Assurez-vous que votre répertoire de données de l’application dispose des permissions d’écriture. + + + + QtCommon::StringLookup + + + Contains game save data. DO NOT REMOVE UNLESS YOU KNOW WHAT YOU'RE DOING! + Contient des données de sauvegarde de jeu. NE SUPPRIMEZ PAS SAUF SI VOUS SAVEZ CE QUE VOUS FAITES ! + + + + Contains Vulkan and OpenGL pipeline caches. Generally safe to remove. + Contient les caches de pipeline Vulkan et OpenGL. Peut être supprimé sans risque. + + + + Contains updates and DLC for games. + Contient les mises à jour et les DLC des jeux. + + + + Contains firmware and applet data. + Contient les données du firmware et des applets. + + + + Contains game mods, patches, and cheats. + Contient les mods, les patchs et les cheats. + + + + Decryption Keys were successfully installed + Les Clés de Déchiffrement ont été installées avec succès + + + + Unable to read key directory, aborting + Impossible de lire le répertoire des clés, abandon + + + + One or more keys failed to copy. + Une ou plusieurs clés n’ont pas pu être copiées. + + + + Verify your keys file has a .keys extension and try again. + Vérifiez que votre fichier de clés a l’extension .keys et réessayez. + + + + Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. + Échec de l’initialisation des Clés de Déchiffrement. Vérifiez que vos outils d’extraction sont à jour et ré-extrayez les clés. + + + + Successfully installed firmware version %1 + Version du Firmware %1 installée avec succès + + + + Unable to locate potential firmware NCA files + Impossible de localiser les fichiers NCA de Firmware potentiels + + + + Failed to delete one or more firmware files. + Échec de suppression d’un ou plusieurs fichiers Firmware. + + + + One or more firmware files failed to copy into NAND. + Un ou plusieurs fichiers Firmware n’ont pas pu être copiés dans la NAND. + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. Restart Eden or re-install firmware. + Installation du Firmware annulée, le firmware peut être corrompu ou dans un état incorrect. Redémarrez Eden ou réinstallez le Firmware. + + + + Firmware missing. Firmware is required to run certain games and use the Home Menu. + + + + + Firmware reported as present, but was unable to be read. Check for decryption keys and redump firmware if necessary. + + + + + Eden has detected user data for the following emulators: + Eden a détecté des données utilisateur pour les émulateurs suivants : + + + + Would you like to migrate your data for use in Eden? +Select the corresponding button to migrate data from that emulator. +This may take a while. + Voulez‑vous migrer vos données pour les utiliser dans Eden ? +Sélectionnez le bouton correspondant pour migrer les données depuis cet émulateur. +Cette opération peut prendre un certain temps. + + + + Clearing shader cache is recommended for all users. +Do not uncheck unless you know what you're doing. + Il est recommandé de vider le cache des shaders pour tous les utilisateurs. +Ne décochez pas cette option sauf si vous savez ce que vous faites. + + + + Keeps the old data directory. This is recommended if you aren't +space-constrained and want to keep separate data for the old emulator. + Conserve l’ancien répertoire de données. Cela est recommandé si vous n’avez pas de problème d’espace et que vous souhaitez conserver les données séparées pour l’ancien émulateur. + + + + Deletes the old data directory. +This is recommended on devices with space constraints. + Supprime l’ancien répertoire de données. +Ceci est recommandé sur les appareils disposant de peu d’espace. + + + + Creates a filesystem link between the old directory and Eden directory. +This is recommended if you want to share data between emulators. + Crée un lien de système de fichiers entre l’ancien répertoire et le répertoire Eden. +Ceci est recommandé si vous souhaitez partager les données entre les émulateurs. + + + + Ryujinx title database does not exist. + La base de données des titres Ryujinx n’existe pas. + + + + Invalid header on Ryujinx title database. + En-tête invalide dans la base de données des titres Ryujinx. + + + + Invalid magic header on Ryujinx title database. + En-tête magique invalide dans la base de données des titres Ryujinx. + + + + Invalid byte alignment on Ryujinx title database. + Alignement des octets invalide dans la base de données des titres Ryujinx. + + + + No items found in Ryujinx title database. + Aucun élément trouvé dans la base de données des titres Ryujinx. + + + + Title %1 not found in Ryujinx title database. + Le titre %1 est introuvable dans la base de données des titres Ryujinx. + + QtControllerSelectorDialog @@ -8954,7 +10111,7 @@ p, li { white-space: pre-wrap; } - + Pro Controller Manette Switch Pro @@ -8967,7 +10124,7 @@ p, li { white-space: pre-wrap; } - + Dual Joycons Deux Joycons @@ -8980,7 +10137,7 @@ p, li { white-space: pre-wrap; } - + Left Joycon Joycon gauche @@ -8993,7 +10150,7 @@ p, li { white-space: pre-wrap; } - + Right Joycon Joycon droit @@ -9022,7 +10179,7 @@ p, li { white-space: pre-wrap; } - + Handheld Mode Portable @@ -9143,32 +10300,32 @@ p, li { white-space: pre-wrap; } Pas assez de manettes. - + GameCube Controller Manette GameCube - + Poke Ball Plus Poké Ball Plus - + NES Controller Manette NES - + SNES Controller Manette SNES - + N64 Controller Manette N64 - + Sega Genesis Sega Genesis @@ -9176,28 +10333,28 @@ p, li { white-space: pre-wrap; } QtErrorDisplay - - - + + + Error Code: %1-%2 (0x%3) Code d'erreur : %1-%2 (0x%3) - + An error has occurred. Please try again or contact the developer of the software. Une erreur s'est produite. Veuillez essayer à nouveau ou contactez le développeur du logiciel. - + An error occurred on %1 at %2. Please try again or contact the developer of the software. Une erreur s'est produite le %1 à %2. Veuillez essayer à nouveau ou contactez le développeur du logiciel. - + An error has occurred. %1 @@ -9213,7 +10370,7 @@ Veuillez essayer à nouveau ou contactez le développeur du logiciel. QtProfileSelectionDialog - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -9221,7 +10378,7 @@ Veuillez essayer à nouveau ou contactez le développeur du logiciel. - + Users Utilisateurs @@ -9314,7 +10471,7 @@ Veuillez essayer à nouveau ou contactez le développeur du logiciel.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -9323,17 +10480,59 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - - + + OK OK - + Cancel Annuler + + RyujinxDialog + + + Ryujinx Link + Liaison Ryujinx + + + + Linking save data to Ryujinx lets both Ryujinx and Eden reference the same save files for your games. + +By selecting "From Eden", previous save data stored in Ryujinx will be deleted, and vice versa for "From Ryujinx". + Lier les données de sauvegarde à Ryujinx permet à la fois à Ryujinx et à Eden de référencer les mêmes fichiers de sauvegarde pour vos jeux. + +En sélectionnant « Depuis Eden », les données de sauvegarde précédemment stockées dans Ryujinx seront supprimées, et inversement pour « Depuis Ryujinx ». + + + + From Eden + Depuis Eden + + + + From Ryujinx + Depuis Ryujinx + + + + Cancel + Annuler + + + + Failed to link save data + + + + + OS returned error: %1 + + + SequenceDialog @@ -9343,143 +10542,31 @@ p, li { white-space: pre-wrap; } - WaitTreeCallstack + SetPlayTimeDialog - - Call stack - Pile d'exécution - - - - WaitTreeSynchronizationObject - - - [%1] %2 - [%1] %2 + + Set Play Time Data + Définir les Données de Temps de Jeu - - waited by no thread - attendu par aucun thread - - - - WaitTreeThread - - - runnable - runnable + + Hours: + Heures : - - paused - en pause + + Minutes: + Minutes : - - sleeping - en veille + + Seconds: + Secondes : - - waiting for IPC reply - en attente de réponse IPC - - - - waiting for objects - En attente d'objets - - - - waiting for condition variable - en attente de la variable conditionnelle - - - - waiting for address arbiter - En attente de l'adresse arbitre - - - - waiting for suspend resume - waiting for suspend resume - - - - waiting - en attente - - - - initialized - initialisé - - - - terminated - terminated - - - - unknown - inconnu - - - - PC = 0x%1 LR = 0x%2 - PC = 0x%1 LR = 0x%2 - - - - ideal - idéal - - - - core %1 - cœur %1 - - - - processor = %1 - Processeur = %1 - - - - affinity mask = %1 - masque d'affinité = %1 - - - - thread id = %1 - id du fil = %1 - - - - priority = %1(current) / %2(normal) - priorité = %1(courant) / %2(normal) - - - - last running ticks = %1 - dernier tick en cours = %1 - - - - WaitTreeThreadList - - - waited by thread - attendu par un fil - - - - WaitTreeWidget - - - &Wait Tree - &Wait Tree + + Total play time reached maximum. + Le temps de jeu total a atteint le maximum. diff --git a/dist/languages/hu.ts b/dist/languages/hu.ts index 42922c3ea1..ad9a959bb8 100644 --- a/dist/languages/hu.ts +++ b/dist/languages/hu.ts @@ -1,25 +1,15 @@ - - - + AboutDialog - - About yuzu - A yuzuról - - - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - - About eden - + About Eden + - <html><head/><body><p><span style=" font-size:28pt;">eden</span></p></body></html> - + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> + @@ -34,70 +24,50 @@ p, li { white-space: pre-wrap; } hr { height: 1px; border-width: 0; } li.unchecked::marker { content: "\2610"; } li.checked::marker { content: "\2612"; } -</style></head><body style=" font-family:'Adwaita Sans'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> - +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> + - <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">This software should not be used to play games you have not legally obtained.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">A yuzu egy kísérleti, nyílt forráskódú Nintendo Switch emulátor, amely a GPLv3.0+ licenc alatt áll.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Ezt a szoftvert ne használd, ha nem legálisan szerezted meg a játékaidat.</span></p></body></html> - - - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Weboldal</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Forráskód</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Közreműködők</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licensz</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. eden is not affiliated with Nintendo in any way.</span></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; a Nintendo védjegye. A yuzu semmilyen módon nem áll kapcsolatban a Nintendóval. + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. Eden is not affiliated with Nintendo in any way.</span></p></body></html> + CalibrationConfigurationDialog - + Communicating with the server... Kommunikálás a szerverrel... - + Cancel Mégse - + Touch the top left corner <br>of your touchpad. Nyomd meg a bal felső sarkot <br>a touchpaden. - + Now touch the bottom right corner <br>of your touchpad. Most pedig nyomd meg a jobb alsó sarkot <br>a touchpaden. - + Configuration completed! Beállitás befejezve! - + OK OK @@ -120,78 +90,78 @@ p, li { white-space: pre-wrap; } Üzenet küldése - + Members Tagok - + %1 has joined %1 csatlakozott - + %1 has left %1 kilépett - + %1 has been kicked %1 ki lett rúgva - + %1 has been banned %1 ki lett tiltva - + %1 has been unbanned %1 tiltása feloldva - + View Profile Profil megtekintése - - + + Block Player Játékos blokkolása - + When you block a player, you will no longer receive chat messages from them.<br><br>Are you sure you would like to block %1? Ha blokkolsz egy játékost, akkor nem kaphatsz tőle üzeneteket.<br><br>Biztos, hogy blokkolni szeretnéd őt: %1? - + Kick Kirúgás - + Ban Kitiltás - + Kick Player Játékos kirúgása - + Are you sure you would like to <b>kick</b> %1? Biztos, hogy ki szeretnéd <b>rúgni</b> %1-t? - + Ban Player Játékos kitiltása - + Are you sure you would like to <b>kick and ban</b> %1? This would ban both their forum username and their IP address. @@ -226,17 +196,17 @@ Ez kitiltaná a fórum felhasználóneve és az IP címe alapján. ClientRoomWindow - + Connected Csatlakozva - + Disconnected Lecsatlakozva - + %1 - %2 (%3/%4 members) - connected %1 - %2 (%3/%4 tag) - csatlakozva @@ -259,14 +229,10 @@ Ez kitiltaná a fórum felhasználóneve és az IP címe alapján. Report Game Compatibility Játék kompatibilitásának jelentése - - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of yuzu you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected yuzu account</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Ha úgy döntesz, hogy tesztesetet küldesz a </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu kompatibilitási listára</span></a><span style=" font-size:10pt;">,a következő információkat gyűjtjük és jelenítjük meg az oldalon:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardverinformáció (CPU / GPU / operációs rendszer)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">A yuzu futtatott verziója</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">A csatlakoztatott yuzu-fiók</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">eden Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of eden you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected eden account</li></ul></body></html> - + @@ -336,7 +302,7 @@ Ez kitiltaná a fórum felhasználóneve és az IP címe alapján. Minor The game has minor graphical errors - Enyhe A játéknak enyhe grafikai problémái vannak  + Enyhe A játéknak enyhe grafikai problémái vannak  @@ -374,22 +340,22 @@ Ez kitiltaná a fórum felhasználóneve és az IP címe alapján. Köszönjük a jelentést! - + Submitting Beküldés - + Communication error Kommunikációs probléma - + An error occurred while sending the Testcase Probléma lépett fel a tesztelési jelentés küldése során - + Next Következő @@ -397,349 +363,370 @@ Ez kitiltaná a fórum felhasználóneve és az IP címe alapján. ConfigurationShared - + % % - + Amiibo editor Amiibo szerkesztő - + Controller configuration Vezérlő konfiguráció - + Data erase Adat törlése - + Error Hiba - + Net connect - + - + Player select Játékos kiválasztása - + Software keyboard Szoftver billenytűzet - + Mii Edit Mii szerkesztés - + Online web Online web - + Shop Bolt - + Photo viewer Képnézegető - + Offline web Offline web - + Login share Bejelentkezés megosztása - + Wifi web auth - + - + My page Az oldalam - + + Enable Overlay Applet + + + + + Enables Horizon's built-in overlay applet. Press and hold the home button for 1 second to show it. + + + + Output Engine: Kimeneti motor: - + Output Device: Kimeneti eszköz: - + Input Device: Bemeneti eszköz: - + Mute audio Hang némítása - + Volume: Hangerő: - + Mute audio when in background Hang némítása, amikor háttérben van - + Multicore CPU Emulation Többmagos CPU emuláció - - This option increases CPU emulation thread use from 1 to the Switch’s maximum of 4. -This is mainly a debug option and shouldn’t be disabled. - Ez az opció növeli a CPU emulációs szál használatát 1-ről a Switch maximális értékére, ami 4. -Ez főként egy hibakeresési opció, és nem javasolt letiltani. + + This option increases CPU emulation thread use from 1 to the maximum of 4. +This is mainly a debug option and shouldn't be disabled. + - + Memory Layout Memóriaelrendezés - - Increases the amount of emulated RAM from the stock 4GB of the retail Switch to the developer kit's 8/6GB. -It’s doesn’t improve stability or performance and is intended to let big texture mods fit in emulated RAM. -Enabling it will increase memory use. It is not recommended to enable unless a specific game with a texture mod needs it. - Növeli az emulált RAM mennyiségét a kiskereskedelmi Switch alapértelmezett 4GB-járól a fejlesztői kit 8/6GB-jára. -Nem javítja a stabilitást vagy a teljesítményt, kizárólag arra szolgál, hogy a nagy textúra modok beleférjenek az emulált RAM-ba. -Az engedélyezése megnövelt memóriahasználattal jár. Nem ajánlott engedélyezni, kivéve ha egy adott játék textúra modja nem igényli. + + Increases the amount of emulated RAM. +Doesn't affect performance/stability but may allow HD texture mods to load. + - + Limit Speed Percent Sebesség korlátozása - - Controls the game's maximum rendering speed, but it’s up to each game if it runs faster or not. + + Controls the game's maximum rendering speed, but it's up to each game if it runs faster or not. 200% for a 30 FPS game is 60 FPS, and for a 60 FPS game it will be 120 FPS. Disabling it means unlocking the framerate to the maximum your PC can reach. - Szabályozza a játék maximális renderelési sebességét, de játékfüggő, hogy gyorsabban fut, vagy nem. -A 200% egy 30 FPS-el futó játéknál 60 FPS-t jelent, egy 60 FPS-es játéknál pedig 120 FPS-t. -Ennek kikapcsolása feloldja a képkocka korlátozását. + - + + Turbo Speed + + + + + When the Turbo Speed hotkey is pressed, the speed will be limited to this percentage. + + + + + Slow Speed + + + + + When the Slow Speed hotkey is pressed, the speed will be limited to this percentage. + + + + Synchronize Core Speed - + - - Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). -Compatibility varies by game; many (especially older ones) may not respond well. + + Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). Can help reduce stuttering at lower framerates. - + - + Accuracy: Pontosság: - - This setting controls the accuracy of the emulated CPU. -Don't change this unless you know what you are doing. - Ez a beállítás szabályozza az emulált CPU pontosságát. -Ne változtasd meg, kivéve ha tudod mit csinálsz. + + Change the accuracy of the emulated CPU (for debugging only). + - - + + Backend: Backend: - - Fast CPU Time - + + CPU Overclock + - + Overclocks the emulated CPU to remove some FPS limiters. Weaker CPUs may see reduced performance, and certain games may behave improperly. Use Boost (1700MHz) to run at the Switch's highest native clock, or Fast (2000MHz) to run at 2x clock. - + - + + Custom CPU Ticks + + + + + Set a custom value of CPU ticks. Higher values can increase performance, but may cause deadlocks. A range of 77-21000 is recommended. + + + + + Enable Host MMU Emulation (fastmem) + + + + + This optimization speeds up memory accesses by the guest program. +Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU. +Disabling this forces all memory accesses to use Software MMU Emulation. + + + + Unfuse FMA (improve performance on CPUs without FMA) FMA kikapcsolása (javítja a teljesítményt FMA nélküli CPU-kon) - + This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support. Ez az opció a fused-multiply-add utasítások pontosságának csökkentésével javítja a sebességet olyan CPU-k esetén, amelyek nem rendelkeznek natív FMA támogatással. - + Faster FRSQRTE and FRECPE Gyorsabb FRSQRTE és FRECPE - + This option improves the speed of some approximate floating-point functions by using less accurate native approximations. Ez az opció javítja néhány közelítő lebegőpontos függvény sebességét azáltal, hogy kevésbé pontos natív megközelítést használ. - + Faster ASIMD instructions (32 bits only) Gyorsabb ASIMD utasítások (csak 32 bit) - + This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes. Ez az opció növeli a 32 bites ASIMD lebegőpontos függvények sebességét a helytelen kerekítési módok használatával. - + Inaccurate NaN handling Pontatlan NaN kezelés - + This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions. Ez az opció növeli a sebességet a NaN ellenőrzés kihagyásával. Kérjük, vedd figyelembe, hogy ez bizonyos lebegőpontos utasítások pontosságát is csökkenti. - + Disable address space checks Címtartomány-ellenőrzések kikapcsolása - - This option improves speed by eliminating a safety check before every memory read/write in guest. -Disabling it may allow a game to read/write the emulator's memory. - Ez az opció javítja a sebességet azáltal, hogy kiiktatja a biztonsági ellenőrzést minden memóriaolvasás/írás előtt a vendégben. -A letiltása lehetővé teheti, hogy egy játék olvassa/írja az emulátor memóriáját. + + This option improves speed by eliminating a safety check before every memory operation. +Disabling it may allow arbitrary code execution. + - + Ignore global monitor Globális monitorozás mellőzése - + 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. - + - + API: API: - - Switches between the available graphics APIs. -Vulkan is recommended in most cases. - Váltás az elérhető grafikai API-k között. -A Vulkan a legtöbb esetben ajánlott. + + Changes the output graphics API. +Vulkan is recommended. + - + Device: Eszköz: - - This setting selects the GPU to use with the Vulkan backend. - Ez a beállítás kiválasztja a Vulkan backendhez használandó GPU-t. + + This setting selects the GPU to use (Vulkan only). + - - Shader Backend: - Árnyékoló Backend: - - - - The shader backend to use for the OpenGL renderer. -GLSL is the fastest in performance and the best in rendering accuracy. -GLASM is a deprecated NVIDIA-only backend that offers much better shader building performance at the cost of FPS and rendering accuracy. -SPIR-V compiles the fastest, but yields poor results on most GPU drivers. - Az OpenGL renderelőhöz használandó árnyékoló backend. -A GLSL nyútja a leggyorsabb teljesítményt és a legjobb renderelési pontosságot. -A GLASM egy elavult NVIDIA-specifikus backend, amely sokkal jobb árnyékoló építési teljesítményt nyújt a képkocka sebességének és a renderelési pontosságnak árán. -Az SPIR-V fordít leggyorsabban, de gyenge eredményeket produkál a legtöbb GPU illesztőprogramon. - - - + Resolution: Felbontás: - - Forces the game to render at a different resolution. -Higher resolutions require much more VRAM and bandwidth. -Options lower than 1X can cause rendering issues. - A játékot más felbontáson való renderelésre kényszeríti. -A magasabb felbontások sokkal több VRAM-ot és sávszélességet igényelnek. -Az 1X-esnél alacsonyabb beállítások renderelési problémákat okozhatnak. + + Forces to render at a different resolution. +Higher resolutions require more VRAM and bandwidth. +Options lower than 1X can cause artifacts. + - + Window Adapting Filter: Ablakadaptív szűrő: - + FSR Sharpness: FSR élesség: - - Determines how sharpened the image will look while using FSR’s dynamic contrast. - Meghatározza, milyen éles lesz a kép az FSR dinamikus kontraszt használata közben. + + Determines how sharpened the image will look using FSR's dynamic contrast. + - + Anti-Aliasing Method: Élsimítási módszer: - + The anti-aliasing method to use. SMAA offers the best quality. -FXAA has a lower performance impact and can produce a better and more stable picture under very low resolutions. - A használandó élsimítási módszer. -SMAA nyútja a legjobb minőséget. -FXAA kisebb hatással van a teljesítményre, és nagyon alacsony felbontások esetén jobb és stabilabb képet eredményezhet. +FXAA can produce a more stable picture in lower resolutions. + - + Fullscreen Mode: Teljes képernyős mód: - + The method used to render the window in fullscreen. Borderless offers the best compatibility with the on-screen keyboard that some games request for input. Exclusive fullscreen may offer better performance and better Freesync/Gsync support. @@ -748,63 +735,49 @@ A borderless (szegély nélküli) biztosítja a legjobb kompatibilitást a képe Az exkluzív teljes képernyő jobb teljesítményt és jobb Freesync/Gsync támogatást kínálhat. - + Aspect Ratio: Képarány: - - Stretches the game to fit the specified aspect ratio. -Switch games only support 16:9, so custom game mods are required to get other ratios. + + Stretches the renderer to fit the specified aspect ratio. +Most games only support 16:9, so modifications are required to get other ratios. Also controls the aspect ratio of captured screenshots. - Megnyújtja a játékot a kívánt képarányhoz. -A Switch játékok csak a 16:9 képarányt támogatják, így más arányokhoz egyéni játékmodokra van szükség. -Szabályozza a rögzített képernyőképek képarányát is. + - - Use disk pipeline cache - Lemez pipeline gyorsítótár használata + + Use persistent pipeline cache + - + Allows saving shaders to storage for faster loading on following game boots. Disabling it is only intended for debugging. Lehetővé teszi az árnyékolók tárolását a gyorsabb betöltés érdekében a következő játékindításokkor. Kikapcsolása csak hibakeresésre szolgál. - - Optimize SPIRV output shader - + + Optimize SPIRV output + - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. This feature is experimental. - + - - Use asynchronous GPU emulation - Aszinkron GPU-emuláció használata - - - - Uses an extra CPU thread for rendering. -This option should always remain enabled. - Egy extra CPU szálat használ a rendereléshez. -Az opció bekapcsolva tartása erősen javasolt. - - - + NVDEC emulation: NVDEC emuláció: - + Specifies how videos should be decoded. It can either use the CPU or the GPU for decoding, or perform no decoding at all (black screen on videos). In most cases, GPU decoding provides the best performance. @@ -813,1167 +786,1449 @@ A dekódoláshoz használhatja a CPU-t vagy a GPU-t, vagy egyáltalán nem vége A legtöbb esetben a GPU dekódolás nyújtja a legjobb teljesítményt. - + ASTC Decoding Method: ASTC dekódoló módszer: - + This option controls how ASTC textures should be decoded. -CPU: Use the CPU for decoding, slowest but safest method. -GPU: Use the GPU's compute shaders to decode ASTC textures, recommended for most games and users. -CPU Asynchronously: Use the CPU to decode ASTC textures as they arrive. Completely eliminates ASTC decoding -stuttering at the cost of rendering issues while the texture is being decoded. - Ez az opció szabályozza az ASTC textúrák dekódolásának módját. -CPU: A CPU-t használja a dekódoláshoz, ez a leglassabb, de legbiztonságosabb módszer. -GPU: A GPU számítási árnyékolóit használja az ASTC textúrák dekódolásához, a legtöbb játék és felhasználó számára ajánlott. -CPU Aszinkron: A CPU-t használja az ASTC textúrák dekódolásához, amint megérkeznek. Teljesen megszünteti az ASTC dekódolás -akadozását, de a textúra dekódolása közben renderelési problémákat okozhat. +CPU: Use the CPU for decoding. +GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). +CPU Asynchronously: Use the CPU to decode ASTC textures on demand. EliminatesASTC decoding +stuttering but may present artifacts. + - + ASTC Recompression Method: ASTC újraszűrési módszer: - - Almost all desktop and laptop dedicated GPUs lack support for ASTC textures, forcing the emulator to decompress to an intermediate format any card supports, RGBA8. -This option recompresses RGBA8 to either the BC1 or BC3 format, saving VRAM but negatively affecting image quality. - Szinte egyik asztali és laptop dedikált GPU sem támogatja az ASTC textúrákat, ezért az emulátornak köztes formátumba kell dekompresszálnia, amit bármelyik kártya támogat, RGBA8 formátumba. -Ez az opció az RGBA8-at BC1 vagy BC3 formátumra tömöríti vissza, ami VRAM-ot takarít meg, de negatívan befolyásolja a képminőséget. + + Most GPUs lack support for ASTC textures and must decompress to anintermediate format: RGBA8. +BC1/BC3: The intermediate format will be recompressed to BC1 or BC3 format, + saving VRAM but degrading image quality. + - + + Frame Pacing Mode (Vulkan only) + + + + + Controls how the emulator manages frame pacing to reduce stuttering and make the frame rate smoother and more consistent. + + + + VRAM Usage Mode: VRAM használati mód: - - Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. Has no effect on integrated graphics. Aggressive mode may severely impact the performance of other applications such as recording software. - Kiválasztja, hogy az emulátor a teljesítmény érdekében inkább takarékoskodjon a memóriával, vagy maximálisan kihasználja a rendelkezésre álló videomemóriát. Integrált grafikára nincs hatással. Az agresszív üzemmód jelentősen befolyásolhatja más alkalmazások, például a rögzítő szoftverek teljesítményét. + + Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. +Aggressive mode may impact performance of other applications such as recording software. + - + + Skip CPU Inner Invalidation + + + + + Skips certain cache invalidations during memory updates, reducing CPU usage and improving latency. This may cause soft-crashes. + + + + VSync Mode: VSync mód: - + FIFO (VSync) does not drop frames or exhibit tearing but is limited by the screen refresh rate. -FIFO Relaxed is similar to FIFO but allows tearing as it recovers from a slow down. +FIFO Relaxed 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. - A FIFO (VSync) nem dob el képkockákat, és nem jelentkezik képszakadás, de a képernyő frissítési sebessége korlátozza. -A FIFO Relaxed hasonlóan működik, mint a FIFO, de jelentkezhet képszakadás miután visszaáll a lassulásból. -A Mailboxnak a FIFO-nál kisebb lehet a késleltetése és nem jelentkezik képszakadás, de képkockákat dobhat el. -Az azonnali (nincs szinkronizálás) azt jeleníti meg, ami éppen elérhető, ezért előfordulhat képszakadás. +Immediate (no synchronization) presents whatever is available and can exhibit tearing. + - + + Sync Memory Operations + + + + + Ensures data consistency between compute and memory operations. +This option fixes issues in games, but may degrade performance. +Unreal Engine 4 games often see the most significant changes thereof. + + + + Enable asynchronous presentation (Vulkan only) Aszinkron prezentálás engedélyezése (csak Vulkan) - + Slightly improves performance by moving presentation to a separate CPU thread. Kicsit javítja a teljesítményt azáltal, hogy a megjelenítést külön CPU szálra helyezi át. - + Force maximum clocks (Vulkan only) Maximális órajelek kényszerítése (csak Vulkan) - + Runs work in the background while waiting for graphics commands to keep the GPU from lowering its clock speed. A háttérben fut, miközben várja a grafikai parancsokat, hogy a GPU ne csökkentse az órajelét. - + Anisotropic Filtering: Anizotropikus szűrés: - + Controls the quality of texture rendering at oblique angles. -It’s a light setting and safe to set at 16x on most GPUs. - A textúra megjelenítés minőségét szabályozza ferde szögeknél. -Ez egy könnyű beállítás és a legtöbb GPU-n biztonságos 16x-osra állítani. +Safe to set at 16x on most GPUs. + - - Accuracy Level: - Pontossági szint: + + GPU Mode: + - - GPU emulation accuracy. -Most games render fine with Normal, but High is still required for some. -Particles tend to only render correctly with High accuracy. -Extreme should only be used for debugging. -This option can be changed while playing. -Some games may require booting on high to render properly. - GPU emuláció pontossága. -A legtöbb játék Normál módban jól renderel, de néhányhoz még mindig szükséges a Magas pontosság. -A részecskék általában csak Magas pontossággal renderelnek helyesen. -Az Extrém csak hibakereséshez használandó. -Ez az opció játék közben is megváltoztatható. -Néhány játékhoz szükséges lehet a Magas beállításon való indítás a megfelelő rendereléshez. + + Controls the GPU emulation mode. +Most games render fine with Fast or Balanced modes, but Accurate is still required for some. +Particles tend to only render correctly with Accurate mode. + - - Use asynchronous shader building (Hack) - Aszinkron árnyékoló építés használata (Hack) + + DMA Accuracy: + - - Enables asynchronous shader compilation, which may reduce shader stutter. -This feature is experimental. - Engedélyezi az aszinkron árnyékoló fordítást, ami csökkentheti az akadást. -Ez a funkció kísérleti jellegű. + + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. + - Use Fast GPU Time (Hack) - Gyors GPU-idő használata (Hack) + + Enable asynchronous shader compilation + - Enables Fast GPU Time. This option will force most games to run at their highest native resolution. - Engedélyezi a gyors GPU-időt. Ez az opció arra kényszeríti a legtöbb játékot, hogy a legnagyobb natív felbontásban fusson. + + May reduce shader stutter. + - + + Fast GPU Time + + + + + Overclocks the emulated GPU to increase dynamic resolution and render distance. +Use 256 for maximal performance and 512 for maximal graphics fidelity. + + + + + GPU Unswizzle + + + + + Accelerates BCn 3D texture decoding using GPU compute. +Disable if experiencing crashes or graphical glitches. + + + + + GPU Unswizzle Max Texture Size + + + + + Sets the maximum size (MiB) for GPU-based texture unswizzling. +While the GPU is faster for medium and large textures, the CPU may be more efficient for very small ones. +Adjust this to find the balance between GPU acceleration and CPU overhead. + + + + + GPU Unswizzle Stream Size + + + + + Sets the maximum amount of texture data (in MiB) processed per frame. +Higher values can reduce stutter during texture loading but may impact frame consistency. + + + + + GPU Unswizzle Chunk Size + + + + + Determines the number of depth slices processed in a single dispatch. +Increasing this can improve throughput on high-end GPUs but may cause TDR or driver timeouts on weaker hardware. + + + + Use Vulkan pipeline cache Vulkan pipeline gyorsítótár használata. - + Enables GPU vendor-specific pipeline cache. This option can improve shader loading time significantly in cases where the Vulkan driver does not store pipeline cache files internally. - + - + Enable Compute Pipelines (Intel Vulkan Only) - + - - Enable compute pipelines, required by some games. -This setting only exists for Intel proprietary drivers, and may crash if enabled. + + 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. - + - + Enable Reactive Flushing Reaktív ürítés használata - + Uses reactive flushing instead of predictive flushing, allowing more accurate memory syncing. Reaktív ürítést használ a prediktív ürítés helyett, ami pontosabb memóriaszinkronizálást tesz lehetővé. - + Sync to framerate of video playback Szinkronizálás a videolejátszás képkockasebességéhez - + Run the game at normal speed during video playback, even when the framerate is unlocked. A játék futtatása normál sebességgel videolejátszás közben, még akkor is, ha a képkockasebesség fel van oldva. - + Barrier feedback loops - + - + Improves rendering of transparency effects in specific games. Javítja az átlátszósági effektek megjelenítését bizonyos játékokban. - + + Enable buffer history + + + + + Enables access to previous buffer states. +This option may improve rendering quality and performance consistency in some games. + + + + + Fix bloom effects + + + + + Removes bloom in Burnout. + + + + + Enable Legacy Rescale Pass + + + + + May fix rescale issues in some games by relying on behavior from the previous implementation. +Legacy behavior workaround that fixes line artifacts on AMD and Intel GPUs, and grey texture flicker on Nvidia GPUs in Luigis Mansion 3. + + + + + Extended Dynamic State + + + + + Controls the number of features that can be used in Extended Dynamic State. +Higher states allow for more features and can increase performance, but may cause additional graphical issues. + + + + + Vertex Input Dynamic State + + + + + Enables vertex input dynamic state feature for better quality and performance. + + + + + Sample Shading + + + + + Allows the fragment shader to execute per sample in a multi-sampled fragment instead of once per fragment. Improves graphics quality at the cost of performance. +Higher values improve quality but degrade performance. + + + + RNG Seed - + - + Controls the seed of the random number generator. -Mainly used for speedrunning purposes. - A véletlenszám-generátor magját vezérli. -Főként speedrunning célokra használatos. +Mainly used for speedrunning. + - + Device Name Eszköznév - - The name of the emulated Switch. - Az emulált Switch neve. + + The name of the console. + - + Custom RTC Date: Egyéni RTC dátum: - - This option allows to change the emulated clock of the Switch. + + This option allows to change the clock of the console. Can be used to manipulate time in games. - Ez az opció lehetővé teszi a Switch emulált órájának megváltoztatását. -Használható idő manipulálására játékokban. + - + + The number of seconds from the current unix time + + + + Language: Nyelv: - - Note: this can be overridden when region setting is auto-select - Megjegyzés: ez felülírható, ha a régióbeállítás automatikus kiválasztású. + + This option can be overridden when region setting is auto-select + - + Region: Régió: - - The region of the emulated Switch. - Az emulált Switch régiója. + + The region of the console. + - + Time Zone: Időzóna: - - The time zone of the emulated Switch. - Az emulált Switch időzónája. + + The time zone of the console. + - + Sound Output Mode: Hangkimeneti mód: - + Console Mode: Konzol mód: - - Selects if the console is emulated in Docked or Handheld mode. + + Selects if the console is in Docked or Handheld mode. Games will change their resolution, details and supported controllers and depending on this setting. Setting to Handheld can help improve performance for low end systems. - Kiválasztja, hogy a konzol Dokkolt vagy Kézi módban legyen emulálva. -A játékok felbontása, részletei és támogatott vezérlői ennek a beállításnak a függvényében változnak. -A Kézi beállítás segíthet javítani a teljesítményt az alacsony teljesítményű rendszerek esetében. + - - Prompt for user on game boot - Felhasználói kérelem a játék indításakor + + Unit Serial + - Ask to select a user profile on each boot, useful if multiple people use yuzu on the same PC. - Minden induláskor kérdezze meg a használni kívánt profilt, ez akkor lehet hasznos, ha több ember használja ugyanazt a számítógépet. + + Battery Serial + - - Pause emulation when in background - Emuláció szüneteltetése a háttérben + + Debug knobs + - This setting pauses yuzu when focusing other windows. - Ez a beállítás szünetelteti a yuzu-t, amíg más ablak van fókuszban. + + Prompt for user profile on boot + - - Fast GPU Time (Hack) - + + Useful if multiple people use the same PC. + - - Overclocks the emulated GPU to increase dynamic resolution and render distance. -Use 128 for maximal performance and 512 for maximal graphics fidelity. - + + Pause when not in focus + - - Extended Dynamic State - + + Pauses emulation when focusing on other windows. + - - Enables the VkExtendedDynamicState* extensions. -Higher dynamic states will generally improve performance, but may cause issues on certain games or devices. - - - - - Provoking Vertex - - - - - Improves lighting and vertex handling in certain games. -Only Vulkan 1.0+ devices support this extension. - - - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - - Ask to select a user profile on each boot, useful if multiple people use eden on the same PC. - - - - - This setting pauses eden when focusing other windows. - - - - + Confirm before stopping emulation Emuláció leállításának megerősítése - - This setting overrides game prompts asking to confirm stopping the game. + + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - Ez a beállítás felülbírálja a játék utasításait, amelyek megerősítést kérnek a játék leállításához. -Az engedélyezése megkerüli az ilyen jellegű utasításokat, és közvetlenül kilép az emulációból. + - + Hide mouse on inactivity Egér elrejtése inaktivitáskor - - This setting hides the mouse after 2.5s of inactivity. - Ez a beállítás 2.5 másodperc inaktivitás után elrejti az egérmutatót. + + Hides the mouse after 2.5s of inactivity. + - + Disable controller applet Vezérlő applet letiltása - - Forcibly disables the use of the controller applet by guests. -When a guest attempts to open the controller applet, it is immediately closed. - Kényszeresen letiltja a vezérlő applet használatát a vendégek számára. -Ha egy vendég megpróbálja megnyitni a vezérlő appletet, az azonnal bezárul. + + Forcibly disables the use of the controller applet in emulated programs. +When a program attempts to open the controller applet, it is immediately closed. + - + Check for updates - + - + Whether or not to check for updates upon startup. - + - + Enable Gamemode Játékmód engedélyezése - + + Force X11 as Graphics Backend + + + + Custom frontend Egyéni frontend - + Real applet Valódi applet - + Never - + - + On Load - + - + Always - + - + CPU CPU - + GPU GPU - + CPU Asynchronous CPU aszinkron - + Uncompressed (Best quality) Tömörítetlen (legjobb minőség) - + BC1 (Low quality) BC1 (alacsony minőség) - + BC3 (Medium quality) BC3 (közepes minőség) - - Conservative - Takarékos - - - - Aggressive - Aggresszív - - - - OpenGL - OpenGL - - - - Vulkan - Vulkan - - - - Null - Null - - - - GLSL - GLSL - - - - GLASM (Assembly Shaders, NVIDIA Only) - GLASM (Assembly Shaders, csak NVIDIA) - - - - SPIR-V (Experimental, AMD/Mesa Only) - SPIR-V (kísérleti, csak AMD/Mesa) - - - - Normal - Normál - - - - High - Magas - - - - Extreme - Extrém - - - + + Auto Automatikus - + + 30 FPS + + + + + 60 FPS + + + + + 90 FPS + + + + + 120 FPS + + + + + Conservative + Takarékos + + + + Aggressive + Aggresszív + + + + Vulkan + Vulkan + + + + OpenGL GLSL + + + + + OpenGL GLASM (Assembly Shaders, NVIDIA Only) + + + + + OpenGL SPIR-V (Experimental, AMD/Mesa Only) + + + + + Null + Null + + + + Fast + + + + + Balanced + + + + + Accurate Pontos - - Unsafe - Nem biztonságos - - - - Paranoid (disables most optimizations) - Paranoid (a legtöbb optimalizálást letiltja) - - - - Dynarmic - Dinamikus - - - - NCE - NCE - - - - Borderless Windowed - Szegély nélküli ablak - - - - Exclusive Fullscreen - Exkluzív teljes képernyő - - - - No Video Output - Nincs videokimenet - - - - CPU Video Decoding - CPU videódekódolás - - - - GPU Video Decoding (Default) - GPU videódekódolás (alapértelmezett) - - - - 0.25X (180p/270p) [EXPERIMENTAL] - - - - - 0.5X (360p/540p) [EXPERIMENTAL] - 0.5X (360p/540p) [KÍSÉRLETI] - - - - 0.75X (540p/810p) [EXPERIMENTAL] - 0.75X (540p/810p) [KÍSÉRLETI] - - - - 1X (720p/1080p) - 1X (720p/1080p) - - - - 1.5X (1080p/1620p) [EXPERIMENTAL] - 1.5X (1080p/1620p) [KÍSÉRLETI] - - - - 2X (1440p/2160p) - 2X (1440p/2160p) - - - - 3X (2160p/3240p) - 3X (2160p/3240p) - - - - 4X (2880p/4320p) - 4X (2880p/4320p) - - - - 5X (3600p/5400p) - 5X (3600p/5400p) - - - - 6X (4320p/6480p) - 6X (4320p/6480p) - - - - 7X (5040p/7560p) - 7X (5040p/7560p) - - - - 8X (5760p/8640p) - 8X (5760p/8640p) - - - - Nearest Neighbor - Legközelebbi szomszéd - - - - Bilinear - Bilineáris - - - - Bicubic - Bikubikus - - - - Gaussian - Gauss-féle - - - - ScaleForce - ScaleForce - - - - AMD FidelityFX™️ Super Resolution - AMD FidelityFX™️ Super Resolution - - - - Area - - - - - None - Nincs - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Default (16:9) - Alapértelmezett (16:9) - - - - Force 4:3 - 4:3 kényszerítése - - - - Force 21:9 - 21:9 kényszerítése - - - - Force 16:10 - 16:10 kényszerítése - - - - Stretch to Window - Ablakhoz nyújtás - - - - Automatic - Automatikus - - - + + Default Alapértelmezett - + + Unsafe (fast) + + + + + Safe (stable) + + + + + Unsafe + Nem biztonságos + + + + Paranoid (disables most optimizations) + Paranoid (a legtöbb optimalizálást letiltja) + + + + Debugging + + + + + Dynarmic + Dinamikus + + + + NCE + NCE + + + + Borderless Windowed + Szegély nélküli ablak + + + + Exclusive Fullscreen + Exkluzív teljes képernyő + + + + No Video Output + Nincs videokimenet + + + + CPU Video Decoding + CPU videódekódolás + + + + GPU Video Decoding (Default) + GPU videódekódolás (alapértelmezett) + + + + 0.25X (180p/270p) [EXPERIMENTAL] + + + + + 0.5X (360p/540p) [EXPERIMENTAL] + 0.5X (360p/540p) [KÍSÉRLETI] + + + + 0.75X (540p/810p) [EXPERIMENTAL] + 0.75X (540p/810p) [KÍSÉRLETI] + + + + 1X (720p/1080p) + 1X (720p/1080p) + + + + 1.25X (900p/1350p) [EXPERIMENTAL] + + + + + 1.5X (1080p/1620p) [EXPERIMENTAL] + 1.5X (1080p/1620p) [KÍSÉRLETI] + + + + 2X (1440p/2160p) + 2X (1440p/2160p) + + + + 3X (2160p/3240p) + 3X (2160p/3240p) + + + + 4X (2880p/4320p) + 4X (2880p/4320p) + + + + 5X (3600p/5400p) + 5X (3600p/5400p) + + + + 6X (4320p/6480p) + 6X (4320p/6480p) + + + + 7X (5040p/7560p) + 7X (5040p/7560p) + + + + 8X (5760p/8640p) + 8X (5760p/8640p) + + + + Nearest Neighbor + Legközelebbi szomszéd + + + + Bilinear + Bilineáris + + + + Bicubic + Bikubikus + + + + Gaussian + Gauss-féle + + + + Lanczos + + + + + ScaleForce + ScaleForce + + + + AMD FidelityFX Super Resolution + + + + + Area + + + + + MMPX + + + + + Zero-Tangent + + + + + B-Spline + + + + + Mitchell + + + + + Spline-1 + + + + + + None + Nincs + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Default (16:9) + Alapértelmezett (16:9) + + + + Force 4:3 + 4:3 kényszerítése + + + + Force 21:9 + 21:9 kényszerítése + + + + Force 16:10 + 16:10 kényszerítése + + + + Stretch to Window + Ablakhoz nyújtás + + + + Automatic + Automatikus + + + 2x 2x - + 4x 4x - + 8x 8x - + 16x 16x - + + 32x + + + + + 64x + + + + Japanese (日本語) Japán (日本語) - + American English Amerikai angol - + French (français) Francia (français) - + German (Deutsch) Német (Deutsch) - + Italian (italiano) Olasz (italiano) - + Spanish (español) Spanyol (español) - + Chinese Kínai - + Korean (한국어) Koreai (한국어) - + Dutch (Nederlands) Holland (Nederlands) - + Portuguese (português) Portugál (português) - + Russian (Русский) Orosz (Русский) - + Taiwanese Tajvani - + British English Brit Angol - + Canadian French Kanadai francia - + Latin American Spanish Latin-amerikai spanyol - + Simplified Chinese Egyszerűsített kínai - + Traditional Chinese (正體中文) Hagyományos kínai (正體中文) - + Brazilian Portuguese (português do Brasil) Brazíliai portugál (português do Brasil) - - + + Polish (polska) + + + + + Thai (แบบไทย) + + + + + Japan Japán - + USA USA - + Europe Európa - + Australia Ausztrália - + China Kína - + Korea Korea - + Taiwan Tajvan - + Auto (%1) Auto select time zone Automatikus (%1) - + Default (%1) Default time zone Alapértelmezett (%1) - + CET CET - + CST6CDT CST6CDT - + Cuba Kuba - + EET EET - + Egypt Egyiptom - + Eire Eire - + EST EST - + EST5EDT EST5EDT - + GB GB - + GB-Eire GB-Eire - + GMT GMT - + GMT+0 GMT+0 - + GMT-0 GMT-0 - + GMT0 GMT0 - + Greenwich Greenwich - + Hongkong Hongkong - + HST HST - + Iceland Izland - + Iran Irán - + Israel Izrael - + Jamaica Jamaika - + Kwajalein Kwajalein - + Libya Líbia - + MET MET - + MST MST - + MST7MDT MST7MDT - + Navajo Navahó - + NZ NZ - + NZ-CHAT NZ-CHAT - + Poland Lengyelország - + Portugal Portugália - + PRC PRC - + PST8PDT PST8PDT - + ROC ROC - + ROK ROK - + Singapore Szingapúr - + Turkey Törökország - + UCT UCT - + Universal Univerzális - + UTC UTC - + W-SU W-SU - + WET WET - + Zulu Zulu - + Mono Mono - + Stereo Sztereó - + Surround Térhangzás - + 4GB DRAM (Default) 4GB DRAM (Alapértelmezett) - + 6GB DRAM (Unsafe) 6GB DRAM (Nem biztonságos) - + 8GB DRAM - + - + 10GB DRAM (Unsafe) - + - + 12GB DRAM (Unsafe) - + - - Low (128) - - - - - Medium (256) - - - - - High (512) - - - - 8GB DRAM (Unsafe) - 8GB DRAM (Nem biztonságos) - - - + Docked Dokkolt - + Handheld Kézi - + + + Off + + + + Boost (1700MHz) - + - + Fast (2000MHz) - + - + Always ask (Default) Mindig kérdezz rá (alapértelmezett) - + Only if game specifies not to stop Csak akkor, ha a játék kifejezetten kéri a folytatást. - + Never ask Soha ne kérdezz rá + + + + Medium (256) + + + + + + High (512) + + + + + Very Small (16 MB) + + + + + Small (32 MB) + + + + + Normal (128 MB) + + + + + Large (256 MB) + + + + + Very Large (512 MB) + + + + + Very Low (4 MB) + + + + + Low (8 MB) + + + + + Normal (16 MB) + + + + + Medium (32 MB) + + + + + High (64 MB) + + + + + Very Low (32) + + + + + Low (64) + + + + + Normal (128) + + + + + Disabled + + + + + ExtendedDynamicState 1 + + + + + ExtendedDynamicState 2 + + + + + ExtendedDynamicState 3 + + + + + Tree View + + + + + Grid View + + ConfigureApplets @@ -2045,7 +2300,7 @@ Ha egy vendég megpróbálja megnyitni a vezérlő appletet, az azonnal bezárul Visszaállítás - + Auto Automatikus @@ -2117,19 +2372,19 @@ Ha egy vendég megpróbálja megnyitni a vezérlő appletet, az azonnal bezárul <div style="white-space: nowrap">Enabling it inlines accesses to PageTable::pointers into emitted code.</div> <div style="white-space: nowrap">Disabling this forces all memory accesses to go through the Memory::Read/Memory::Write functions.</div> - + Enable inline page tables - + <div>This optimization avoids dispatcher lookups by allowing emitted basic blocks to jump directly to other basic blocks if the destination PC is static.</div> - + @@ -2141,7 +2396,7 @@ Ha egy vendég megpróbálja megnyitni a vezérlő appletet, az azonnal bezárul <div>This optimization avoids dispatcher lookups by keeping track potential return addresses of BL instructions. This approximates what happens with a return stack buffer on a real CPU.</div> - + @@ -2153,7 +2408,7 @@ Ha egy vendég megpróbálja megnyitni a vezérlő appletet, az azonnal bezárul <div>Enable a two-tiered dispatch system. A faster dispatcher written in assembly has a small MRU cache of jump destinations is used first. If that fails, dispatch falls back to the slower C++ dispatcher.</div> - + @@ -2208,21 +2463,21 @@ Ha egy vendég megpróbálja megnyitni a vezérlő appletet, az azonnal bezárul <div style="white-space: nowrap">When enabled, a misalignment is only triggered when an access crosses a page boundary.</div> <div style="white-space: nowrap">When disabled, a misalignment is triggered on all misaligned accesses.</div> - + Enable misalignment check reduction - + <div style="white-space: nowrap">This optimization speeds up memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all memory accesses to use Software MMU Emulation.</div> - + @@ -2233,10 +2488,10 @@ Ha egy vendég megpróbálja megnyitni a vezérlő appletet, az azonnal bezárul <div style="white-space: nowrap">This optimization speeds up exclusive memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all exclusive memory accesses to use Software MMU Emulation.</div> - + @@ -2249,7 +2504,7 @@ Ha egy vendég megpróbálja megnyitni a vezérlő appletet, az azonnal bezárul <div style="white-space: nowrap">This optimization speeds up exclusive memory accesses by the guest program.</div> <div style="white-space: nowrap">Enabling it reduces the overhead of fastmem failure of exclusive memory accesses.</div> - + @@ -2260,9 +2515,9 @@ Ha egy vendég megpróbálja megnyitni a vezérlő appletet, az azonnal bezárul <div style="white-space: nowrap">This optimization speeds up memory accesses by allowing invalid memory accesses to succeed.</div> - <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> + <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> - + @@ -2298,39 +2553,39 @@ Ha egy vendég megpróbálja megnyitni a vezérlő appletet, az azonnal bezárul Naplózás - - Open Log Location - Naplózási hely megnyitása - - - + Global Log Filter Globális naplózási szűrő - + When checked, the max size of the log increases from 100 MB to 1 GB Ha be van jelölve, a napló maximális mérete 100 MB-ról 1 GB-ra nő. - + Enable Extended Logging** Bővített naplózás engedélyezése - + Show Log in Console Napló mutatása a Konzolban + + + Open Log Location + Naplózási hely megnyitása + Homebrew - + Arguments String - + @@ -2425,7 +2680,7 @@ Ha egy vendég megpróbálja megnyitni a vezérlő appletet, az azonnal bezárul <html><head/><body><p>When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.</p></body></html> - + @@ -2458,18 +2713,9 @@ Ha egy vendég megpróbálja megnyitni a vezérlő appletet, az azonnal bezárul Összes vezérlőtípus engedélyezése - - Censor username in logs - - - - - **This will be reset automatically when eden closes. - - - - Enable Auto-Stub** - Auto-Stub engedélyezése** + + Enable Auto-Stub + @@ -2478,13 +2724,13 @@ Ha egy vendég megpróbálja megnyitni a vezérlő appletet, az azonnal bezárul - Enable CPU Debugging - CPU hibakeresés engedélyezése + Use dev.keys + Enable Debug Asserts - + @@ -2492,43 +2738,74 @@ Ha egy vendég megpróbálja megnyitni a vezérlő appletet, az azonnal bezárul Hibakeresés - - Flush log output on each line - + + Battery Serial: + - - Enable FS Access Log - FS hozzáférési napló engedélyezése + + Bitmask for quick development toggles + - + + Set debug knobs (bitmask) + + + + + 16-bit debug knob set for quick development toggles + + + + + (bitmask) + + + + + Debug Knobs: + + + + + Unit Serial: + + + + Enable this to output the latest generated audio command list to the console. Only affects games using the audio renderer. - + - - Enable Auto-Stub - - - - + Dump Audio Commands To Console** Audioparancsok kimentése a Konzolba** - + + Flush log output on each line + + + + + Enable FS Access Log + FS hozzáférési napló engedélyezése + + + Enable Verbose Reporting Services** Részletes jelentést nyújtó szolgáltatások engedélyezése** - **This will be reset automatically when yuzu closes. - **Ez automatikusan visszaáll, amikor a yuzu leáll. + + Censor username in logs + - - Web applet not compiled - + + **This will be reset automatically when Eden closes. + @@ -2570,14 +2847,10 @@ Ha egy vendég megpróbálja megnyitni a vezérlő appletet, az azonnal bezárul ConfigureDialog - - yuzu Configuration - yuzu konfigurálása - - eden Configuration - + Eden Configuration + @@ -2585,88 +2858,88 @@ Ha egy vendég megpróbálja megnyitni a vezérlő appletet, az azonnal bezárul Néhány beállítás csak akkor érhető el, amikor nem fut játék. - + Applets Appletek - - + + Audio Hang - - + + CPU CPU - + Debug Hibakeresés - + Filesystem Fájlrendszer - - + + General Általános - - + + Graphics Grafika - + GraphicsAdvanced Haladó grafika - - GraphicsExtensions - + + GraphicsExtra + - + Hotkeys Gyorsgombok - - + + Controls Irányítás - + Profiles Profilok - + Network Hálózat - - + + System Rendszer - + Game List Játéklista - + Web Web @@ -2696,9 +2969,10 @@ Ha egy vendég megpróbálja megnyitni a vezérlő appletet, az azonnal bezárul - - - + + + + ... ... @@ -2708,107 +2982,183 @@ Ha egy vendég megpróbálja megnyitni a vezérlő appletet, az azonnal bezárul SD kártya - + + Save Data + + + + Gamecard Játékkártya - + Path Útvonal - + Inserted Behelyezve - + Current Game Jelenlegi játék - + Patch Manager Patch kezelő - + Dump Decompressed NSOs - + - + Dump ExeFS ExeFS kimentése - + Mod Load Root Mod betöltési gyökér - + Dump Root Kimentési gyökér - + Caching Gyorsítótárazás - + Cache Game List Metadata Játéklista metaadatainak gyorsítótárazása - - - - + Reset Metadata Cache Metaadat gyorsítótár visszaállítása - + Select Emulated NAND Directory... Emulált NAND könyvtár kiválasztása... - + Select Emulated SD Directory... Emulált SD könyvtár kiválasztása... - + + + Select Save Data Directory... + + + + Select Gamecard Path... Játékkártya könyvtár kiválasztása... - + Select Dump Directory... Kimentési mappa kiválasztása... - + Select Mod Load Directory... Mod betöltő könyvtár kiválasztása... - - The metadata cache is already empty. - A metaadat gyórsítótár már üres. + + Save Data Directory + - - The operation completed successfully. - A művelet sikeresen végrehajtva. + + Choose an action for the save data directory: + - - The metadata cache couldn't be deleted. It might be in use or non-existent. - A metaadat gyórsítótárat nem lehetett törölni. Lehetséges, hogy használatban van, vagy nem létezik. + + Set Custom Path + + + + + Reset to NAND + + + + + Save data exists in both the old and new locations. + +Old: %1 +New: %2 + +Would you like to migrate saves from the old location? +WARNING: This will overwrite any conflicting saves in the new location! + + + + + Would you like to migrate your save data to the new location? + +From: %1 +To: %2 + + + + + Migrate Save Data + + + + + Migrating save data... + + + + + Cancel + + + + + + Migration Failed + + + + + Failed to create destination directory. + + + + + Failed to migrate save data: +%1 + + + + + Migration Complete + + + + + Save data has been migrated successfully. + +Would you like to delete the old save data? + @@ -2826,28 +3176,54 @@ Ha egy vendég megpróbálja megnyitni a vezérlő appletet, az azonnal bezárul - Linux - Linux + External Content + - + + Add directories to scan for DLCs and Updates without installing to NAND + + + + + Add Directory + + + + + Remove Selected + + + + Reset All Settings Összes beállítás visszaállítása - yuzu - yuzu + + Eden + - - eden - - - - + This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed? Ez visszaállítja az összes beállítást és törli az összes játékonkénti konfigurációkat. Ez nem fogja kitörölni a játék könyvtárakat, profilokat, se a beviteli profilokat. Folytatja? + + + Select External Content Directory... + + + + + Directory Already Added + + + + + This directory is already in the list. + + ConfigureGraphics @@ -2877,33 +3253,33 @@ Ha egy vendég megpróbálja megnyitni a vezérlő appletet, az azonnal bezárul Háttérszín: - + % FSR sharpening percentage (e.g. 50%) % - + Off Ki - + VSync Off VSync Ki - + Recommended Ajánlott - + On Be - + VSync On VSync Be @@ -2921,7 +3297,7 @@ Ha egy vendég megpróbálja megnyitni a vezérlő appletet, az azonnal bezárul Haladó - + Advanced Graphics Settings Haladó grafikai beállítások @@ -2931,24 +3307,38 @@ Ha egy vendég megpróbálja megnyitni a vezérlő appletet, az azonnal bezárul Form - Forma + - Extensions - + Extras + - - Vulkan Extension Settings - + + Hacks + - - While it's recommended to use state 3, some games may perform better on lower states. Setting to 0 (disabled) may also break games. -If your GPU is older (i.e. RX570/580 or older), it may not support these features. If this is the case, set the slider to 0 and uncheck all boxes. -These settings are experimental, and may cause black screens. If your games fail to boot or are stuck on a black screen, change these settings around. - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + + + + + % + Sample Shading percentage (e.g. 50%) + + + + + Extended Dynamic State is disabled on macOS due to MoltenVK compatibility issues that cause black screens. + @@ -2979,75 +3369,75 @@ These settings are experimental, and may cause black screens. If your games fail Visszaállítás - + Action Akció - + Hotkey Gyorsgomb - + Controller Hotkey Vezérlő gyorsgomb - - - + + + Conflicting Key Sequence Ütköző kulcssorozat - - + + The entered key sequence is already assigned to: %1 A megadott kulcssorozat már hozzá van rendelve ehhez: %1 - + [waiting] [várakozás] - + Invalid Érvénytelen - + Invalid hotkey settings Érvénytelen gyorsbillentyű beállítások - + An error occurred. Please report this issue on github. Hiba történt. Kérjük, jelentsd ezt a problémát a GitHubon. - + Restore Default Alapértelmezés - + Clear Törlés - + Conflicting Button Sequence Ütköző gombsor - + The default button sequence is already assigned to: %1 Az alapértelmezett gombsor már hozzá van rendelve ehhez: %1 - + The default key sequence is already assigned to: %1 Az alapértelmezett kulcssorozat már hozzá van rendelve ehhez: %1 @@ -3367,12 +3757,8 @@ These settings are experimental, and may cause black screens. If your games fail - Requires restarting eden - - - - Requires restarting yuzu - Yuzu újraindítása szükséges + Requires restarting Eden + @@ -3522,30 +3908,19 @@ These settings are experimental, and may cause black screens. If your games fail - + Left Stick Bal kar - - - - - - - Up - Fel - - - - - - - - - - Left - Balra + + + + + + + Down + Le @@ -3559,14 +3934,25 @@ These settings are experimental, and may cause black screens. If your games fail Jobbra - - - - - - - Down - Le + + + + + + + + Left + Balra + + + + + + + + + Up + Fel @@ -3613,14 +3999,6 @@ These settings are experimental, and may cause black screens. If your games fail D-Pad D-Pad - - - - - - SL - SL - @@ -3630,73 +4008,81 @@ These settings are experimental, and may cause black screens. If your games fail SR - - - - L - L + + + + + SL + SL - + ZL ZL + + + + + L + L + Minus Mínusz + + + + + Plus + Plusz + + + + + + ZR + ZR + + + + + + + R + R + + + + Motion 1 + + + + + Motion 2 + + Capture Rögzítés - - - - - Plus - Plusz - Home Home - - - - - - R - R - - - - - - ZR - ZR - - - - Motion 1 - - - - - Motion 2 - - Face Buttons - + @@ -3705,10 +4091,10 @@ These settings are experimental, and may cause black screens. If your games fail X - - - Y - Y + + + B + B @@ -3717,14 +4103,14 @@ These settings are experimental, and may cause black screens. If your games fail A - - - B - B + + + Y + Y - + Right Stick Jobb kar @@ -3739,242 +4125,242 @@ These settings are experimental, and may cause black screens. If your games fail Konfigurálás - - - - + + + + Clear Törlés - - - - - + + + + + [not set] [nincs beáll.] - - - + + + Invert button Fordított gomb - - + + Toggle button Gomb váltása - + Turbo button Turbó gomb - - + + Invert axis Fordított tengely - - - + + + Set threshold Küszöbérték beállítása - - + + Choose a value between 0% and 100% Válassz egy 0% és 100% közötti értéket - + Toggle axis Tengely váltása - + Set gyro threshold Gyro küszöbérték beállítása - + Calibrate sensor Szenzor kalibrálása - + Map Analog Stick - + - + After pressing OK, first move your joystick horizontally, and then vertically. To invert the axes, first move your joystick vertically, and then horizontally. Az OK megnyomása után először mozgasd a kart vízszintesen, majd függőlegesen. A tengely megfordításához mozgasd a kart először függőlegesen, majd vízszintesen. - + Center axis Középtengely - - + + Deadzone: %1% Holttér: %1% - - + + Modifier Range: %1% Módosító tartomány: %1% - - + + Pro Controller Pro kontroller - + Dual Joycons Dual Joycon - + Left Joycon Bal Joycon - + Right Joycon Jobb Joycon - + Handheld Kézi - + GameCube Controller GameCube kontroller - + Poke Ball Plus Poke Ball Plus - + NES Controller NES kontroller - + SNES Controller SNES kontroller - + N64 Controller N64 kontroller - + Sega Genesis Sega Genesis - + Start / Pause Indítás / Szünet - + Z Z - + Control Stick - + - + C-Stick - + - + Shake! Rázd! - + [waiting] [várakozás] - + New Profile Új profil - + Enter a profile name: Add meg a profil nevét: - - + + Create Input Profile Beviteli profil létrehozása - + The given profile name is not valid! A megadott profilnév érvénytelen! - + Failed to create the input profile "%1" A "%1" beviteli profilt nem sikerült létrehozni - + Delete Input Profile Beviteli profil törlése - + Failed to delete the input profile "%1" A "%1" beviteli profilt nem sikerült eltávolítani - + Load Input Profile Beviteli profil betöltése - + Failed to load the input profile "%1" A "%1" beviteli profilt nem sikerült betölteni - + Save Input Profile Beviteli profil mentése - + Failed to save the input profile "%1" A "%1" beviteli profilt nem sikerült elmenteni @@ -3997,15 +4383,6 @@ A tengely megfordításához mozgasd a kart először függőlegesen, majd vízs Alap - - ConfigureLinuxTab - - - - Linux - Linux - - ConfigureMotionTouch @@ -4031,7 +4408,7 @@ A tengely megfordításához mozgasd a kart először függőlegesen, majd vízs - + Configure Konfigurálás @@ -4061,111 +4438,93 @@ A tengely megfordításához mozgasd a kart először függőlegesen, majd vízs Port: - - Learn More - Tudj meg többet - - - - + + Test Teszt - + Add Server Szerver hozzáadása - + Remove Server Szerver eltávolítása - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Tudj meg többet</span></a> - - - + %1:%2 %1:%2 - yuzu - yuzu + + + + + + + Eden + - - <a href='https://eden-emulator.github.io/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - - - - + Port number has invalid characters A port érvénytelen karaktereket tartalmaz - - - - - - - eden - - - - + Port has to be in range 0 and 65353 A portnak 0 és 65353 közötti tartományban kell lennie. - + IP address is not valid Érvénytelen IP-cím - + This UDP server already exists Ez az UDP szerver már létezik - + Unable to add more than 8 servers 8-nál több kiszolgálót nem lehet hozzáadni - + Testing Tesztelés - + Configuring Konfigurálás - + Test Successful Sikeres teszt - + Successfully received data from the server. Az adatok sikeresen beérkeztek a kiszolgálótól. - + Test Failed Sikertelen teszt - + Could not receive valid data from the server.<br>Please verify that the server is set up correctly and the address and port are correct. Nem lehetett érvényes adatot fogadni a szervertől. <br>Ellenőrizd, hogy a szerver megfelelően van-e beállítva, valamint a cím és a port helyes. - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. UDP tesztelés vagy a kalibrálás konfigurálása folyamatban van.<br>Kérjük, várj, amíg befejeződik. @@ -4229,7 +4588,7 @@ A tengely megfordításához mozgasd a kart először függőlegesen, majd vízs Stick decay - + @@ -4292,9 +4651,9 @@ A jelenlegi érték %1% és %2%. Hálózati adapter - - None - Nincs + + Enable Airplane Mode + @@ -4350,49 +4709,54 @@ A jelenlegi érték %1% és %2%. Néhány beállítás csak akkor érhető el, amikor nem fut játék. - + Add-Ons Kiegészítők - + System Rendszer - + CPU CPU - + Graphics Grafika - + Adv. Graphics Haladó graf. - - GPU Extensions - + + Ext. Graphics + - + Audio Hang - + Input Profiles Beviteli profilok - Linux - Linux + Network + + + + + Applets + @@ -4413,15 +4777,110 @@ A jelenlegi érték %1% és %2%. Kiegészítők - + + Import Mod from ZIP + + + + + Import Mod from Folder + + + + Patch Name Patch név - + Version Verzió + + + Mod Install Succeeded + + + + + Successfully installed all mods. + + + + + Mod Install Failed + + + + + Failed to install the following mods: + %1 +Check the log for details. + + + + + Mod Folder + + + + + Zipped Mod Location + + + + + Zipped Archives (*.zip) + + + + + Invalid Selection + + + + + Only mods, cheats, and patches can be deleted. +To delete NAND-installed updates, right-click the game in the game list and click Remove -> Remove Installed Update. + + + + + You are about to delete the following installed mods: + + + + + + +Once deleted, these can NOT be recovered. Are you 100% sure you want to delete them? + + + + + Delete add-on(s)? + + + + + Successfully deleted + + + + + Successfully deleted all selected mods. + + + + + &Delete + + + + + &Open in File Manager + + ConfigureProfileManager @@ -4451,32 +4910,17 @@ A jelenlegi érték %1% és %2%. Felhasználónév - - Set Image - Kép beállítása - - - + Add Hozzáadás - - Rename - Átnevezés - - - - Remove - Eltávolítás - - - + Profile management is available only when game is not running. A profilkezelés játék közben nem érhető el. - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -4484,100 +4928,80 @@ A jelenlegi érték %1% és %2%. %2 - - Enter Username - Felhasználónév megadása - - - + Users Felhasználók - - Enter a username for the new user: - Add meg az új felhasználó nevét: - - - - Enter a new username: - Add meg az új felhasználóneved: - - - - Select User Image - Felhasználói kép kiválasztása - - - - JPEG Images (*.jpg *.jpeg) - JPEG képek (*.jpg *.jpeg) - - - + Error deleting image Hiba történt a kép törlése során - + Error occurred attempting to overwrite previous image at: %1. Hiba történt az előző kép felülírása során: %1. - + Error deleting file Hiba történt a fájl törlés során - + Unable to delete existing file: %1. A meglévő fájl törlése nem lehetséges: %1. - + Error creating user image directory Hiba történt a felhasználó kép könyvtárának létrehozásakor - + Unable to create directory %1 for storing user images. Nem sikerült létrehozni a(z) %1 könyvtárat a felhasználó képeinek tárolásához. - - Error copying user image - Hiba történt a felhasználói kép másolásakor + + Error saving user image + - - Unable to copy image from %1 to %2 - Nem sikerült kimásolni a képet innen %1 ide %2 + + Unable to save image to file + - - Error resizing user image - Hiba történt a felhasználói kép átméretezésekor + + &Edit + - - Unable to resize image - A kép nem méretezhető át + + &Delete + + + + + Edit User + ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. Törlöd a felhasználót? Minden felhasználói adat törölve lesz. - + Confirm Delete Törlés megerősítése - + Name: %1 UUID: %2 Név: %1 @@ -4630,7 +5054,7 @@ UUID: %2 - + Enable Engedélyezés @@ -4641,7 +5065,7 @@ UUID: %2 - + Not connected Nincs csatlakoztatva @@ -4651,63 +5075,63 @@ UUID: %2 Visszaállítás - + Clear Törlés - + [not set] [nincs beáll.] - + Invert axis Fordított tengely - - + + Deadzone: %1% Holttér: %1% - + Error enabling ring input Hiba a ring bemenet engedélyezésekor - + Direct Joycon driver is not enabled Direct Joycon illesztő nincs engedélyezve - + Configuring Konfigurálás - + The current mapped device doesn't support the ring controller A jelenleg hozzárendelt eszköz nem támogatja a ring vezérlőt. - + The current mapped device doesn't have a ring attached A jelenleg hozzárendelt eszközhöz nincs ring csatolva. - + The current mapped device is not connected A jelenleg hozzárendelt eszköz nincs csatlakoztatva - + Unexpected driver result %1 Váratlan illesztőprogram eredmény %1 - + [waiting] [várakozás] @@ -4731,7 +5155,7 @@ UUID: %2 Mag - + Warning: "%1" is not a valid language for region "%2" Figyelmeztetés: A(z) "%1" nyelv nem érvényes a(z) "%2" régióra @@ -4743,14 +5167,10 @@ UUID: %2 TAS TAS - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the yuzu website.</p></body></html> - <html><head/><body><p>A TAS-nx szkriptekkel megegyező formátumban olvassa a vezérlő bemenetét a szkriptekből.<br/>Részletesebb magyarázatért tekintsd meg a yuzu weboldal <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">súgó oldalát.</span></a></p></body></html> - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the eden website.</p></body></html> - + <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the user handbook.</p></body></html> + @@ -4760,7 +5180,7 @@ UUID: %2 WARNING: This is an experimental feature.<br/>It will not play back scripts frame perfectly with the current, imperfect syncing method. - + @@ -4783,17 +5203,22 @@ UUID: %2 Végrehajtás szüneteltetése terhelés közben - + + Show recording dialog + + + + Script Directory Szkript könyvtár - + Path Útvonal - + ... ... @@ -4801,12 +5226,12 @@ UUID: %2 ConfigureTasDialog - + TAS Configuration TAS konfigurálása - + Select TAS Load Directory... TAS betöltési könyvtár kiválasztása... @@ -4910,14 +5335,10 @@ Húzd a pontokat a pozíció megváltoztatásához, vagy kattints duplán a táb Configure Touchscreen Érintőképernyő konfigurálása - - Warning: The settings in this page affect the inner workings of yuzu's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - Figyelem: Az ezen az oldalon található beállítások hatással vannak a yuzu emulált érintőképernyő belső működésére. Azok megváltoztatása nem kívánt viselkedést eredményezhet, például az érintőképernyő részlegesen vagy egyáltalán nem működik. Ezt az oldalt csak akkor használd, ha tudod mit csinálsz. - - Warning: The settings in this page affect the inner workings of eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - + Warning: The settings in this page affect the inner workings of Eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. + @@ -4948,64 +5369,43 @@ Húzd a pontokat a pozíció megváltoztatásához, vagy kattints duplán a táb ConfigureUI - - - + + None Nincs - - - Small (32x32) - Kicsi (32x32) - - Standard (64x64) - Szabványos (64x64) - - - - Large (128x128) - Nagy (128x128) - - - - Full Size (256x256) - Teljes méret (256x256) - - - Small (24x24) Kicsi (24x24) - + Standard (48x48) Szabványos (48x48) - + Large (72x72) Nagy (72x72) - + Filename Fájlnév - + Filetype Fájltípus - + Title ID Játék azonosító - + Title Name Játék neve @@ -5074,71 +5474,66 @@ Húzd a pontokat a pozíció megváltoztatásához, vagy kattints duplán a táb - Game Icon Size: - Játék ikonméret: - - - Folder Icon Size: Mappa ikonméret: - + Row 1 Text: 1. sor szövege: - + Row 2 Text: 2. sor szövege: - + Screenshots Képernyőmentések - + Ask Where To Save Screenshots (Windows Only) Kérdezze meg a képernyőmentések útvonalát (csak Windowson) - + Screenshots Path: Képernyőmentések útvonala: - + ... ... - + TextLabel - + - + Resolution: Felbontás: - + Select Screenshots Path... Képernyőmentések útvonala... - + <System> <System> - + English Angol - + Auto (%1 x %2, %3 x %4) Screenshot width value Automatikus (%1 x %2, %3 x %4) @@ -5236,170 +5631,178 @@ Húzd a pontokat a pozíció megváltoztatásához, vagy kattints duplán a táb Web Web - - yuzu Web Service - yuzu webszolgáltatás - - - By providing your username and token, you agree to allow yuzu to collect additional usage data, which may include user identifying information. - A felhasználóneved és tokened megadásával hozzájárulsz ahhoz, hogy a yuzu további felhasználási adatokat gyűjtsön, melyek felhasználói azonosításra alkalmas információkat tartalmazhatnak. - - eden Web Service - + Eden Web Service + - - By providing your username and token, you agree to allow eden to collect additional usage data, which may include user identifying information. - - - - - Verify - Megerősítés - - - - Sign up - Regisztráció - - - + Token: Token: - + Username: Felhasználónév: - - What is my token? - Mi a tokenem? + + Generate + - + Web Service configuration can only be changed when a public room isn't being hosted. A webes szolgáltatás konfigurációja csak akkor módosítható, ha nincs nyilvános szoba megnyitva. - Telemetry - Telemetria - - - Share anonymous usage data with the yuzu team - Névtelen felhasználási adat megosztása a yuzu csapatával - - - Learn more - Tudj meg többet - - - Telemetry ID: - Telemetria azonosító: - - - Regenerate - Helyreállítás - - - + Discord Presence Discord jelenlét - + Show Current Game in your Discord Status Jelenlegi játék megjelenítése a Discord állapotodban - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Tudj meg többet</span></a> - - - - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Regisztráció</span></a> - - - - <a href='https://evilperson1337.notion.site/Hosting-a-Room-Inside-of-Eden-20457c2edaf680108abac6215a79acdb'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - - - - - Warning - - - + - Verification is currently nonfunctional, instead generate a random 48-character string with only lowercase a-z. - - - - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">Mi a tokenem?</span></a> - - - Telemetry ID: 0x%1 - Telemetria ID: 0x%1 - - - Unspecified - Nem meghatározott - - - Token not verified - Token nincs megerősítve - - - Token was not verified. The change to your token has not been saved. - Token nincs megerősítve. A változtatások nem lettek elmentve. - - - - Unverified, please click Verify before saving configuration + All Good Tooltip - Nincs megerősítve, kattints a Megerősítés gombra mielőtt elmentenéd a konfigurációt + - Verifying... - Megerősítés... - - - Verified + + Must be between 4-20 characters Tooltip - Megerősítve + - Verification failed + + Must be 48 characters, and lowercase a-z Tooltip - Sikertelen megerősítés - - - Verification failed - Sikertelen megerősítés - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - Sikertelen megerősítés. Győződj meg róla, hogy helyesen írtad be a tokened, és van internetkapcsolatod. + ControllerDialog - + Controller P1 Kontroller P1 - + &Controller P1 &Kontroller P1 + + DataDialog + + + Data Manager + + + + + Deleting ANY data is IRREVERSABLE! + + + + + Shaders + + + + + UserNAND + + + + + SysNAND + + + + + Mods + + + + + Saves + + + + + DataWidget + + + Form + + + + + Tooltip + + + + + Open with your system file manager + + + + + Delete all data in this directory. THIS IS 100% IRREVERSABLE! + + + + + Export all data in this directory. This may take a while! + + + + + Import data for this directory. This may take a while, and will delete ALL EXISTING DATA! + + + + + Calculating... + + + + + DepsDialog + + + Eden Dependencies + + + + + <html><head/><body><p><span style=" font-size:28pt;">Eden Dependencies</span></p></body></html> + + + + + <html><head/><body><p>The projects that make Eden possible</p></body></html> + + + + + Dependency + + + + + Version + + + DirectConnect @@ -5461,1497 +5864,152 @@ Húzd a pontokat a pozíció megváltoztatásához, vagy kattints duplán a táb Username is not valid. Must be 4 to 20 alphanumeric characters. - Érvénytelen felhasználónév. 4-20 alfanumerikus karakterből kell állnia. + Room name is not valid. Must be 4 to 20 alphanumeric characters. - Érvénytelen szobanév. 4-20 alfanumerikus karakterből kell állnia. + Username is already in use or not valid. Please choose another. - A felhasználónév már használatban van, vagy érvénytelen. Próbálj megadni egy másikat. + IP is not a valid IPv4 address. - Az IP nem érvényes IPv4 cím. + Port must be a number between 0 to 65535. - A port csak 0 és 65535 közötti szám lehet. + You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - A szoba létrehozásához ki kell választanod egy Preferált játékot. Ha még nem szerepel a listádban egyetlen játék sem, adj hozzá egy játékmappát a játéklistában a plusz ikonra kattintva. + Unable to find an internet connection. Check your internet settings. - Nem található internetkapcsolat. Ellenőrizd az internetbeállításokat. + Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - Nem sikerült csatlakozni a házigazdához. Ellenőrizd, hogy a kapcsolat beállításai helyesek-e. Ha még mindig nem tudsz csatlakozni, lépj kapcsolatba a gazdával, hogy ellenőrizze, megfelelően van-e konfigurálva a külső port továbbítása. + Unable to connect to the room because it is already full. - Nem lehetett csatlakozni a szobához, mert már megtelt. + - Creating a room failed. Please retry. Restarting eden might be necessary. - + Creating a room failed. Please retry. Restarting Eden might be necessary. + The host of the room has banned you. Speak with the host to unban you or try a different room. - A szoba házigazdája kitiltott téged. Beszélj a házigazdával, hogy feloldjon téged, vagy csatlakozz másik szobához. + - Version mismatch! Please update to the latest version of eden. If the problem persists, contact the room host and ask them to update the server. - + Version mismatch! Please update to the latest version of Eden. If the problem persists, contact the room host and ask them to update the server. + Incorrect password. - Helytelen jelszó. + An unknown error occurred. If this error continues to occur, please open an issue - Ismeretlen hiba történt. Amennyiben a hiba továbbra is fennáll, nyiss egy hibajegyet. + Connection to room lost. Try to reconnect. - Megszakadt a kapcsolat a szobával. Próbálj újracsatlakozni. + You have been kicked by the room host. - A szoba házigazdája kirúgott téged. + IP address is already in use. Please choose another. - Az IP-cím már használatban van. Kérjük, válassz egy másikat. + You do not have enough permission to perform this action. - Nincs elég jogosultságod a művelet végrehajtásához. + The user you are trying to kick/ban could not be found. They may have left the room. - A felhasználó, akit ki akarsz rúgni/tiltani, nem található. -Lehet, hogy elhagyta a szobát. + No valid network interface is selected. Please go to Configure -> System -> Network and make a selection. - Nincs kiválasztva érvényes hálózati adapter. -Látogasd meg a Konfigurálás -> Rendszer -> Hálózat menüpontokat a beállításhoz. + Error - Hiba - - - - GMainWindow - - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Anonymous data is collected</a> to help improve yuzu. <br/><br/>Would you like to share your usage data with us? - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Névtelen adatok begyűjtve</a> a yuzu fejlesztésének segítéséhez. <br/><br/>Szeretnéd megosztani velünk a felhasználási adataidat? - - - Telemetry - Telemetria - - - - Broken Vulkan Installation Detected - Hibás Vulkan telepítés észlelve - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - A Vulkan inicializálása sikertelen volt az indulás során. <br><br>Kattints ide<a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>a probléma megoldásához szükséges instrukciókhoz</a>. - - - - Running a game - TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping - Játék közben - - - - Loading Web Applet... - Web applet betöltése... - - - - - Disable Web Applet - Web applet letiltása - - - - 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.) - 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.) - - - - The amount of shaders currently being built - A jelenleg készülő árnyékolók mennyisége - - - - The current selected resolution scaling multiplier. - A jelenleg kiválasztott felbontás skálázási aránya. - - - - Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. - Jelenlegi emuláció sebessége. 100%-nál magasabb vagy alacsonyabb érték azt jelzi, hogy mennyivel gyorsabb vagy lassabb a Switch-nél. - - - - How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. - A másodpercenként megjelenített képkockák számát mutatja. Ez játékonként és jelenetenként eltérő lehet. - - - - 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. - 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. - - - - Unmute - Némítás feloldása - - - - Mute - Némítás - - - - Reset Volume - Hangerő visszaállítása - - - - &Clear Recent Files - &Legutóbbi fájlok törlése - - - - &Continue - &Folytatás - - - - &Pause - &Szünet - - - - Warning Outdated Game Format - Figyelmeztetés: Elavult játékformátum - - - 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.<br><br>For an explanation of the various Switch formats yuzu supports, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - 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.<br><br>A yuzu által támogatott Switch formátumok ismertetéséhez <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>látogasd meg wikinket</a>. Ez az üzenet nem jelenik meg újra. - - - - - Error while loading ROM! - Hiba történt a ROM betöltése során! - - - - The ROM format is not supported. - A ROM formátum nem támogatott. - - - - An error occurred initializing the video core. - Hiba történt a videómag inicializálásakor. - - - - Error while loading ROM! %1 - %1 signifies a numeric error code. - Hiba történt a ROM betöltése során! %1 - - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://eden-emulator.github.io/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - - - - - Game Updates Warning - - - - - The game you are trying to launch is known to have performance or booting issues when updates are applied. Please try increasing the memory layout to 6GB or 8GB if any issues occur.<br><br>Press "OK" to continue launching, or "Cancel" to cancel the launch. - - - - - Don't show again for this game - - - - - 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.<br><br>For an explanation of the various Switch formats eden supports, <a href='https://eden-emulator.github.io/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - - - - - eden 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: <a href='https://eden-emulator.github.io/help/reference/log-files/'>How to Upload the Log File</a>. - - - - - %1<br>Please redump your files or ask on Discord for help. - %1 signifies an error string. - - - - - An unknown error occurred. Please see the log for more details. - Ismeretlen hiba történt. Nyisd meg a logot a részletekért. - - - - (64-bit) - (64-bit) - - - - (32-bit) - (32-bit) - - - - %1 %2 - %1 is the title name. %2 indicates if the title is 64-bit or 32-bit - %1 %2 - - - - Closing software... - Szoftver bezárása... - - - - Save Data - Mentett adat - - - - Mod Data - Modolt adat - - - - Error Opening %1 Folder - Hiba törént a(z) %1 mappa megnyitása során - - - - - Folder does not exist! - A mappa nem létezik! - - - - Error Opening Transferable Shader Cache - Hiba az áthelyezhető árnyékoló gyorsítótár megnyitásakor - - - - Failed to create the shader cache directory for this title. - Nem sikerült létrehozni az árnyékoló gyorsítótár könyvtárat ehhez a játékhoz. - - - - Error Removing Contents - Hiba történt a játéktartalom eltávolítása során - - - - Error Removing Update - Hiba történt a frissítés eltávolítása során - - - - Error Removing DLC - Hiba történt a DLC eltávolítása során - - - - Remove Installed Game Contents? - Törlöd a telepített játéktartalmat? - - - - Remove Installed Game Update? - Törlöd a telepített játékfrissítést? - - - - Remove Installed Game DLC? - Törlöd a telepített DLC-t? - - - - Remove Entry - Bejegyzés törlése - - - - - - - - - Successfully Removed - Sikeresen eltávolítva - - - - Successfully removed the installed base game. - A telepített alapjáték sikeresen el lett távolítva. - - - - The base game is not installed in the NAND and cannot be removed. - Az alapjáték nincs telepítve a NAND-ra, ezért nem törölhető. - - - - Successfully removed the installed update. - A telepített frissítés sikeresen el lett távolítva. - - - - There is no update installed for this title. - Nincs telepítve frissítés ehhez a játékhoz. - - - - There are no DLC installed for this title. - Nincs telepítve DLC ehhez a játékhoz. - - - - Successfully removed %1 installed DLC. - %1 telepített DLC sikeresen eltávolítva. - - - - Delete OpenGL Transferable Shader Cache? - Törlöd az OpenGL áthelyezhető shader gyorsítótárat? - - - - Delete Vulkan Transferable Shader Cache? - Törlöd a Vulkan áthelyezhető shader gyorsítótárat? - - - - Delete All Transferable Shader Caches? - Törlöd az összes áthelyezhető árnyékoló gyorsítótárat? - - - - Remove Custom Game Configuration? - Törlöd az egyéni játék konfigurációt? - - - - Remove Cache Storage? - Törlöd a gyorsítótárat? - - - - Remove File - Fájl eltávolítása - - - - Remove Play Time Data - Játékidő törlése - - - - Reset play time? - Visszaállítod a játékidőt? - - - - - Error Removing Transferable Shader Cache - Hiba az áthelyezhető árnyékoló gyorsítótár eltávolításakor - - - - - A shader cache for this title does not exist. - Ehhez a játékhoz nem létezik árnyékoló gyorsítótár. - - - - Successfully removed the transferable shader cache. - Az áthelyezhető árnyékoló gyorsítótár sikeresen eltávolítva. - - - - Failed to remove the transferable shader cache. - Nem sikerült eltávolítani az áthelyezhető árnyékoló gyorsítótárat. - - - - Error Removing Vulkan Driver Pipeline Cache - Hiba a Vulkan driver pipeline gyorsítótár eltávolításakor - - - - Failed to remove the driver pipeline cache. - - - - - - Error Removing Transferable Shader Caches - Hiba az áthelyezhető árnyékoló gyorsítótár eltávolításakor - - - - Successfully removed the transferable shader caches. - Az áthelyezhető shader gyorsítótár sikeresen eltávolítva. - - - - Failed to remove the transferable shader cache directory. - Nem sikerült eltávolítani az áthelyezhető árnyékoló gyorsítótár könyvtárat. - - - - - Error Removing Custom Configuration - Hiba történt az egyéni konfiguráció törlése során - - - - A custom configuration for this title does not exist. - Nem létezik egyéni konfiguráció ehhez a játékhoz. - - - - Successfully removed the custom game configuration. - Egyéni játék konfiguráció sikeresen eltávolítva. - - - - Failed to remove the custom game configuration. - Nem sikerült eltávolítani az egyéni játék konfigurációt. - - - - - RomFS Extraction Failed! - RomFS kicsomagolása sikertelen! - - - - There was an error copying the RomFS files or the user cancelled the operation. - Hiba történt a RomFS fájlok másolása közben, vagy a felhasználó megszakította a műveletet. - - - - Full - Teljes - - - - Skeleton - Szerkezet - - - - Select RomFS Dump Mode - RomFS kimentési mód kiválasztása - - - - Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. - - - - - There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root - 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ó > Konfigurálás > Rendszer > Fájlrendszer > Kimentési gyökér menüpontban. - - - - Extracting RomFS... - RomFS kicsomagolása... - - - - - - - - Cancel - Mégse - - - - RomFS Extraction Succeeded! - RomFS kibontása sikeres volt! - - - - - - The operation completed successfully. - A művelet sikeresen végrehajtva. - - - - Integrity verification couldn't be performed! - Az integritás ellenőrzését nem lehetett elvégezni! - - - - File contents were not checked for validity. - A fájl tartalmának érvényessége nem lett ellenőrizve. - - - - - Verifying integrity... - Integritás ellenőrzése... - - - - - Integrity verification succeeded! - Integritás ellenőrzése sikeres! - - - - - Integrity verification failed! - Az integritás ellenőrzése sikertelen! - - - - File contents may be corrupt. - A fájl tartalma sérült lehet. - - - - - - - Create Shortcut - Parancsikon létrehozása - - - - Do you want to launch the game in fullscreen? - Szeretnéd teljes képernyőn elindítani a játékot? - - - - Successfully created a shortcut to %1 - Parancsikon sikeresen létrehozva ide %1 - - - - This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - 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? - - - - Failed to create a shortcut to %1 - Nem sikerült létrehozni a parancsikont: %1 - - - - Create Icon - Ikon létrehozása - - - - Cannot create icon file. Path "%1" does not exist and cannot be created. - Nem hozható létre az ikonfájl. Az útvonal "%1" nem létezik és nem is hozható létre. - - - - Error Opening %1 - Hiba a %1 megnyitásakor - - - - Select Directory - Könyvtár kiválasztása - - - - Properties - Tulajdonságok - - - - The game properties could not be loaded. - A játék tulajdonságait nem sikerült betölteni. - - - - Switch Executable (%1);;All Files (*.*) - %1 is an identifier for the Switch executable file extensions. - Switch állományok(%1);;Minden fájl (*.*) - - - - Load File - Fájl betöltése - - - - Open Extracted ROM Directory - Kicsomagolt ROM könyvár megnyitása - - - - Invalid Directory Selected - Érvénytelen könyvtár kiválasztva - - - - The directory you have selected does not contain a 'main' file. - A kiválasztott könyvtár nem tartalmaz 'main' fájlt. - - - - Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - Telepíthető Switch fájl (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - - - - Install Files - Fájlok telepítése - - - - %n file(s) remaining - - %n fájl van hátra - - - - - Installing file "%1"... - "%1" fájl telepítése... - - - - - Install Results - Telepítés eredménye - - - - To avoid possible conflicts, we discourage users from installing base games to the NAND. -Please, only use this feature to install updates and DLC. - 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. - - - - %n file(s) were newly installed - - - %n fájl lett frissen telepítve - - - - - - %n file(s) were overwritten - - - %n fájl lett felülírva - - - - - - %n file(s) failed to install - - - %n fájl telepítése sikertelen - - - - - System Application - Rendszeralkalmazás - - - - System Archive - Rendszerarchívum - - - - System Application Update - Rendszeralkalmazás frissítés - - - - Firmware Package (Type A) - Firmware csomag (A típus) - - - - Firmware Package (Type B) - Firmware csomag (B típus) - - - - Game - Játék - - - - Game Update - Játékfrissítés - - - - Game DLC - Játék DLC - - - - Delta Title - - - - - Select NCA Install Type... - NCA telepítési típus kiválasztása... - - - - Please select the type of title you would like to install this NCA as: -(In most instances, the default 'Game' is fine.) - 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 "Játék" megfelelő.) - - - - Failed to Install - Nem sikerült telepíteni - - - - The title type you selected for the NCA is invalid. - Az NCA-hoz kiválasztott címtípus érvénytelen. - - - - File not found - Fájl nem található - - - - File "%1" not found - "%1" fájl nem található - - - - OK - OK - - - - - Hardware requirements not met - A hardverkövetelmények nem teljesülnek - - - - - Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled. - Az eszközöd nem felel meg az ajánlott hardverkövetelményeknek. A kompatibilitás jelentése letiltásra került. - - - - Missing yuzu Account - Hiányzó yuzu fiók - - - - In order to submit a game compatibility test case, you must link your eden account.<br><br/>To link your eden account, go to Emulation &gt; Configuration &gt; Web. - - - - - Install decryption keys and restart eden before attempting to install firmware. - - - - - Firmware installation cancelled, firmware may be in bad state, restart eden or re-install firmware. - - - - - Encryption keys are missing. - - - - - Are you sure you want to close eden? - - - - - - - eden - - - - - The currently running application has requested eden to not exit. - -Would you like to bypass this and exit anyway? - - - - In order to submit a game compatibility test case, you must link your yuzu account.<br><br/>To link your yuzu account, go to Emulation &gt; Configuration &gt; Web. - A játék kompatibilitási teszteset beküldéséhez csatolnod kell a yuzu fiókodat.<br><br/>A yuzu fiókod csatolásához menj az Emuláció &gt; Konfigurálás &gt; Web menüpontra. - - - - Error opening URL - Hiba történt az URL megnyitása során - - - - Unable to open the URL "%1". - Hiba történt az URL megnyitása során: "%1". - - - - TAS Recording - TAS felvétel - - - - Overwrite file of player 1? - Felülírod az 1. játékos fájlját? - - - - Invalid config detected - Érvénytelen konfig észlelve - - - - Handheld controller can't be used on docked mode. Pro controller will be selected. - A kézi vezérlés nem használható dokkolt módban. Helyette a Pro kontroller lesz kiválasztva. - - - - - Amiibo - Amiibo - - - - - The current amiibo has been removed - A jelenlegi amiibo el lett távolítva - - - - Error - Hiba - - - - - The current game is not looking for amiibos - A jelenlegi játék nem keres amiibo-kat - - - - Amiibo File (%1);; All Files (*.*) - Amiibo fájl (%1);; Minden fájl (*.*) - - - - Load Amiibo - Amiibo betöltése - - - - Error loading Amiibo data - Amiibo adatok betöltése sikertelen - - - - The selected file is not a valid amiibo - A kiválasztott fájl nem érvényes amiibo - - - - The selected file is already on use - A kiválasztott fájl már használatban van - - - - An unknown error occurred - Ismeretlen hiba történt - - - - - Verification failed for the following files: - -%1 - Az alábbi fájlok ellenőrzése sikertelen volt: - -%1 - - - - Keys not installed - Nincsenek telepítve kulcsok - - - Install decryption keys and restart yuzu before attempting to install firmware. - Telepítsd a visszafejtési kulcsokat, majd indítsd újra a yuzut, mielőtt megpróbálnád telepíteni a firmware-t. - - - - Select Dumped Firmware Source Location - Kimentett Firmware célhelyének kiválasztása - - - - Installing Firmware... - Firmware telepítése... - - - - - - - Firmware install failed - Firmware telepítése sikertelen - - - - Unable to locate potential firmware NCA files - Nem találhatóak potenciális firmware NCA fájlok - - - - Failed to delete one or more firmware file. - Nem sikerült törölni egy vagy több firmware fájlt. - - - Firmware installation cancelled, firmware may be in bad state, restart yuzu or re-install firmware. - A firmware telepítése megszakadt, előfordulhat, hogy a firmware hibás. Indítsd újra a yuzu-t vagy telepítsd újra a firmware-t. - - - - One or more firmware files failed to copy into NAND. - Egy vagy több firmware fájlt nem sikerült átmásolni a NAND-ba. - - - - Firmware integrity verification failed! - Firmware integritás ellenőrzése sikertelen! - - - - Select Dumped Keys Location - Kimentett kulcsok helyének kiválasztása - - - - - - Decryption Keys install failed - A visszafejtési kulcsok telepítése sikertelen volt - - - - prod.keys is a required decryption key file. - A prod.keys egy szükséges dekódoló kulcsfájl. - - - - One or more keys failed to copy. - Egy vagy több kulcs másolása sikertelen. - - - - Decryption Keys install succeeded - A visszafejtési kulcsok telepítése sikeres volt. - - - - Decryption Keys were successfully installed - A visszafejtési kulcsok sikeresen telepítve lettek - - - - Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. - A visszafejtési kulcsok inicializálása sikertelen. Ellenőrizd, hogy a kimentési eszközeid (dumping tools) naprakészek, és mentsd ki a kulcsokat újra. - - - - - - - - - - No firmware available - Nincs elérhető firmware - - - - Please install the firmware to use the Album applet. - Kérjük, telepítsd a firmware-t az Album applet használatához. - - - - Album Applet - Album applet - - - - Album applet is not available. Please reinstall firmware. - Album applet nem elérhető. Kérjük, telepítsd újra a firmware-t. - - - - Please install the firmware to use the Cabinet applet. - Kérjük, telepítsd a firmware-t a kabinet applet használatához. - - - - Cabinet Applet - Kabinet applet - - - - Cabinet applet is not available. Please reinstall firmware. - Kabinet applet nem elérhető. Kérjük, telepítsd újra a firmware-t. - - - - Please install the firmware to use the Mii editor. - Kérjük, telepítsd a firmware-t a Mii-szerkesztő használatához. - - - - Mii Edit Applet - Mii szerkesztő applet - - - - Mii editor is not available. Please reinstall firmware. - A Mii szerkesztő nem elérhető. Kérjük, telepítsd újra a firmware-t. - - - - Please install the firmware to use the Controller Menu. - Kérjük, telepítsd a firmware-t a vezérlő menü használatához. - - - - Controller Applet - Vezérlő applet - - - - Controller Menu is not available. Please reinstall firmware. - A vezérlő menü nem érhető el. Kérjük, telepítsd újra a firmware-t. - - - - Please install the firmware to use the Home Menu. - - - - - - Home Menu Applet - - - - - - Home Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use Starter. - - - - - Starter Applet - - - - - Starter is not available. Please reinstall firmware. - - - - - Please install firmware to use the home menu. - - - - - Capture Screenshot - Képernyőkép készítése - - - - PNG Image (*.png) - PNG kép (*.png) - - - - Update Available - - - - - Update %1 for Eden is available. -Would you like to download it? - - - - - TAS state: Running %1/%2 - TAS állapot: %1/%2 futtatása - - - - TAS state: Recording %1 - TAS állapot: %1 felvétele - - - - TAS state: Idle %1/%2 - TAS állapot: Tétlen %1/%2 - - - - TAS State: Invalid - TAS állapot: Érvénytelen - - - - &Stop Running - &Futás leállítása - - - - &Start - &Indítás - - - - Stop R&ecording - F&elvétel leállítása - - - - R&ecord - F&elvétel - - - - Building: %n shader(s) - - Létrehozás: %n árnyékoló - - - - - Scale: %1x - %1 is the resolution scaling factor - Skálázás: %1x - - - - Speed: %1% / %2% - Sebesség: %1% / %2% - - - - Speed: %1% - Sebesség: %1% - - - Game: %1 FPS (Unlocked) - Játék: %1 FPS (Feloldva) - - - - Game: %1 FPS - Játék: %1 FPS - - - - Frame: %1 ms - Képkocka: %1 ms - - - - %1 %2 - %1 %2 - - - - - FSR - FSR - - - - NO AA - Nincs élsimítás - - - - VOLUME: MUTE - HANGERŐ: NÉMÍTVA - - - - VOLUME: %1% - Volume percentage (e.g. 50%) - HANGERŐ: %1% - - - - Derivation Components Missing - - - - Encryption keys are missing. <br>Please follow <a href='https://yuzu-emu.org/help/quickstart/'>the yuzu quickstart guide</a> to get all your keys, firmware and games. - Hiányzó titkosítókulcsok.<br>Kérjük, kövesd <a href='https://yuzu-emu.org/help/quickstart/'>a yuzu gyorstájékoztatót</a>a kulcsok, firmware és játékok beszerzéséhez. - - - - Select RomFS Dump Target - RomFS kimentési cél kiválasztása - - - - Please select which RomFS you would like to dump. - Kérjük, válaszd ki melyik RomFS-t szeretnéd kimenteni. - - - Are you sure you want to close yuzu? - Biztosan be akarod zárni a yuzut? - - - yuzu - yuzu - - - - Are you sure you want to stop the emulation? Any unsaved progress will be lost. - Biztos le akarod állítani az emulációt? Minden nem mentett adat el fog veszni. - - - The currently running application has requested yuzu to not exit. - -Would you like to bypass this and exit anyway? - Az éppen futó alkalmazás azt kérte a yuzu-tól, hogy ne lépjen ki. - -Mégis ki szeretnél lépni? - - - - None - Nincs - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Nearest - Legközelebbi - - - - Bilinear - Bilineáris - - - - Bicubic - Bikubikus - - - - Gaussian - Gauss-féle - - - - ScaleForce - ScaleForce - - - - Area - - - - - Docked - Dokkolt - - - - Handheld - Kézi - - - - Normal - Normál - - - - High - Magas - - - - Extreme - Extrém - - - - Vulkan - Vulkan - - - - OpenGL - OpenGL - - - - Null - Null - - - - GLSL - GLSL - - - - GLASM - GLASM - - - - SPIRV - SPIRV + GRenderWindow - - + + OpenGL not available! OpenGL nem elérhető! - + OpenGL shared contexts are not supported. - + - - eden has not been compiled with OpenGL support. - + + Eden has not been compiled with OpenGL support. + - - + + Error while initializing OpenGL! Hiba történt az OpenGL inicializálása során! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. Lehetséges, hogy a GPU-d nem támogatja az OpenGL-t, vagy nem a legfrissebb grafikus illesztőprogram van telepítve. - + Error while initializing OpenGL 4.6! Hiba történt az OpenGL 4.6 inicializálása során! - + Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 Lehetséges, hogy a GPU-d nem támogatja az OpenGL 4.6-ot, vagy nem a legfrissebb grafikus illesztőprogram van telepítve.<br><br>GL Renderer:<br>%1 - + Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2 Előfordulhat, hogy a GPU-d nem támogat egy vagy több szükséges OpenGL kiterjesztést. Győződj meg róla, hogy a legújabb videokártya-illesztőprogramot használod.<br><br>GL Renderer:<br>%1<br><br>Nem támogatott kiterjesztések:<br>%2 @@ -6959,192 +6017,208 @@ Mégis ki szeretnél lépni? GameList - + + &Add New Game Directory + + + + Favorite Kedvenc - + Start Game Játék indítása - + Start Game without Custom Configuration Játék indítása egyéni konfiguráció nélkül - + Open Save Data Location Mentett adatok helyének megnyitása - + Open Mod Data Location Modadatok helyének megnyitása - + Open Transferable Pipeline Cache Áthelyezhető pipeline gyorsítótár megnyitása - + + Link to Ryujinx + + + + Remove Eltávolítás - + Remove Installed Update Telepített frissítés eltávolítása - + Remove All Installed DLC Összes telepített DLC eltávolítása - + Remove Custom Configuration Egyéni konfiguráció eltávolítása - - Remove Play Time Data - Játékidő törlése - - - + Remove Cache Storage Gyorsítótár ürítése - + Remove OpenGL Pipeline Cache OpenGL Pipeline gyorsítótár eltávolítása - + Remove Vulkan Pipeline Cache Vulkan pipeline gyorsítótár eltávolítása - + Remove All Pipeline Caches Az összes Pipeline gyorsítótár törlése - + Remove All Installed Contents Összes telepített tartalom törlése - - + + Manage Play Time + + + + + Edit Play Time Data + + + + + Remove Play Time Data + Játékidő törlése + + + + Dump RomFS RomFS kimentése - + Dump RomFS to SDMC RomFS kimentése SDMC-re - + Verify Integrity Integritás ellenőrzése - + Copy Title ID to Clipboard Játék címének vágólapra másolása - + Navigate to GameDB entry GameDB bejegyzéshez navigálás - + Create Shortcut Parancsikon létrehozása - + Add to Desktop Asztalhoz adás - + Add to Applications Menu Alkalmazások menühöz adás - + Configure Game - + - Properties - Tulajdonságok - - - + Scan Subfolders Almappák szkennelése - + Remove Game Directory Játékkönyvtár eltávolítása - + ▲ Move Up ▲ Feljebb mozgatás - + ▼ Move Down ▼ Lejjebb mozgatás - + Open Directory Location Könyvtár helyének megnyitása - + Clear Törlés - + Name Név - + Compatibility Kompatibilitás - + Add-ons Kiegészítők - + File type Fájltípus - + Size Méret - + Play time Játékidő @@ -7152,62 +6226,62 @@ Mégis ki szeretnél lépni? GameListItemCompat - + Ingame Játékban - + Game starts, but crashes or major glitches prevent it from being completed. A játék elindul, de összeomlik, vagy súlyos hibák miatt nem fejezhető be. - + Perfect Tökéletes - + Game can be played without issues. A játék problémamentesen játszható. - + Playable Játszható - + Game functions with minor graphical or audio glitches and is playable from start to finish. A játék kisebb grafikai- és hanghibákkal végigjátszható. - + Intro/Menu Bevezető/Menü - + Game loads, but is unable to progress past the Start Screen. A játék betölt, de nem jut tovább a Kezdőképernyőn. - + Won't Boot Nem indul - + The game crashes when attempting to startup. A játék összeomlik indításkor. - + Not Tested Nem tesztelt - + The game has not yet been tested. Ez a játék még nem lett tesztelve. @@ -7215,7 +6289,7 @@ Mégis ki szeretnél lépni? GameListPlaceholder - + Double-click to add a new folder to the game list Dupla kattintással új mappát adhatsz hozzá a játéklistához. @@ -7223,19 +6297,17 @@ Mégis ki szeretnél lépni? GameListSearchField - + %1 of %n result(s) - - %1 a(z) %n találatból - + %1 a(z) %n találatból%1 a(z) %n találatból - + Filter: Szűrés: - + Enter pattern to filter Adj meg egy mintát a szűréshez @@ -7311,233 +6383,241 @@ Mégis ki szeretnél lépni? HostRoomWindow - + Error Hiba - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. + + Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid Eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. Debug Message: - - - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid yuzu account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. -Debug Message: - Nem sikerült bejelenteni a szobát a nyilvános lobbiban. Ahhoz, hogy egy szobát nyilvánosan létrehozhass, érvényes yuzu-fiókkal kell rendelkezned, amelyet az Emuláció -> Konfigurálás -> Web menüpontban kell beállítanod. Ha nem szeretnél egy szobát közzétenni a nyilvános lobbiban, akkor válaszd helyette a Nem listázott lehetőséget. -Hibakereső üzenet: + Hotkeys - + Audio Mute/Unmute Hang némítása/feloldása - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Main Window Főablak - + Audio Volume Down Hangerő csökkentése - + Audio Volume Up Hangerő növelése - + Capture Screenshot Képernyőkép készítése - + Change Adapting Filter Ablakadaptív szűrő módosítása - + Change Docked Mode Dokkolt mód módosítása - - Change GPU Accuracy - GPU pontosság módosítása + + Change GPU Mode + - + Configure - Konfigurálás + - + Configure Current Game - + - + Continue/Pause Emulation Emuláció folytatása/szüneteltetése - + Exit Fullscreen Kilépés a teljes képernyőből - Exit yuzu - Kilépés a yuzuból + + Exit Eden + - - Exit eden - - - - + Fullscreen Teljes képernyő - + Load File Fájl betöltése - + Load/Remove Amiibo Amiibo betöltése/törlése - - Multiplayer Browse Public Game Lobby - Multiplayer nyilvános játéklobbi böngészése + + Browse Public Game Lobby + - - Multiplayer Create Room - Multiplayer szoba létrehozása + + Create Room + - - Multiplayer Direct Connect to Room - Multiplayer közvetlen kapcsolódás szobához + + Direct Connect to Room + - - Multiplayer Leave Room - Multiplayer szoba elhagyása + + Leave Room + - - Multiplayer Show Current Room - Multiplayer jelenlegi szoba megjelenítése + + Show Current Room + - + Restart Emulation Emuláció újraindítása - + Stop Emulation Emulácíó leállítása - + TAS Record TAS felvétel - + TAS Reset TAS visszaállítása - + TAS Start/Stop TAS indítása/leállítása - + Toggle Filter Bar Szűrősáv kapcsoló - + Toggle Framerate Limit Képfrissítési korlát kapcsoló - + + Toggle Turbo Speed + + + + + Toggle Slow Speed + + + + Toggle Mouse Panning Egérpásztázás kapcsoló - + Toggle Renderdoc Capture Renderdoc felvétel kapcsoló - + Toggle Status Bar Állapotsáv kapcsoló + + + Toggle Performance Overlay + + InstallDialog - + Please confirm these are the files you wish to install. Kérjük, erősítsd meg, hogy ezeket a fájlokat szeretnéd telepíteni. - + Installing an Update or DLC will overwrite the previously installed one. Egy frissítés vagy DLC telepítése felülírja a korábban telepítettet. - + Install Telepítés - + Install Files to NAND Fájlok telepítése a NAND-ra @@ -7545,8 +6625,8 @@ Hibakereső üzenet: LimitableInputDialog - - The text can't contain any of the following characters: + + The text can't contain any of the following characters: %1 A szöveg nem tartalmazhatja a következő karakterek egyikét sem: %1 @@ -7570,22 +6650,22 @@ Hibakereső üzenet: Hátralévő idő 5p 4mp - + Loading... Betöltés... - + Loading Shaders %1 / %2 Árnyékolók betöltése %1 / %2 - + Launching... Indítás... - + Estimated Time %1 Hátralévő idő %1 @@ -7634,42 +6714,42 @@ Hibakereső üzenet: Lobbi frissítése - + Password Required to Join A csatlakozáshoz jelszó szükséges - + Password: Jelszó: - + Players Játékosok - + Room Name Szoba neve - + Preferred Game Preferált játék - + Host Házigazda - + Refreshing Frissítés - + Refresh List Lista frissítése @@ -7692,362 +6772,1424 @@ Hibakereső üzenet: &Legutóbbi fájlok - + + Open &Eden Folders + + + + &Emulation &Emuláció - + &View &Nézet - + &Reset Window Size &Ablakméret visszaállítása - + &Debugging &Hibakeresés - + + &Game List Mode + + + + + Game &Icon Size + + + + Reset Window Size to &720p Ablakfelbontás visszaállítása erre: &720p - + Reset Window Size to 720p Ablakfelbontás visszaállítása 720p-re - + Reset Window Size to &900p Ablakfelbontás visszaállítása erre: &900p - + Reset Window Size to 900p Ablakfelbontás visszaállítása 900p-re - + Reset Window Size to &1080p Ablakfelbontás visszaállítása erre: &1080p - + Reset Window Size to 1080p Ablakfelbontás visszaállítása 1080p-re - + &Multiplayer &Multiplayer - + &Tools &Eszközök - - &Amiibo - &Amiibo + + Am&iibo + - + + Launch &Applet + + + + &TAS &TAS - + &Create Home Menu Shortcut - + - + + Install &Firmware + + + + &Help &Segítség - + &Install Files to NAND... &Fájlok telepítése a NAND-ra... - + L&oad File... F&ájl betöltése... - + Load &Folder... &Mappa betöltése... - + E&xit K&ilépés - + + &Pause &Szünet - + &Stop &Leállítás - + &Verify Installed Contents &Telepített tartalom ellenőrzése - - &About eden - + + &About Eden + - - Open &eden Folder - - - - - Open Home Menu - - - - - &Discord - - - - - Open &Setup - - - - - &Desktop - - - - - &Application Menu - - - - &About yuzu - &A yuzuról - - - + Single &Window Mode &Egyablakos mód - + Con&figure... Kon&figurálás... - + Ctrl+, - + - - Display D&ock Widget Headers - D&ock Widget fejlécek megjelenítése + + Enable Overlay Display Applet + - + Show &Filter Bar &Szűrősáv mutatása - + Show &Status Bar &Állapotsáv mutatása - + Show Status Bar Állapotsáv mutatása - + &Browse Public Game Lobby &Nyilvános játéklobbi böngészése - + &Create Room &Szoba létrehozása - + &Leave Room &Szoba elhagyása - + &Direct Connect to Room &Közvetlen csatlakozás szobához - + &Show Current Room &Jelenlegi szoba megjelenítése - + F&ullscreen T&eljes képernyő - + &Restart &Újraindítás - + Load/Remove &Amiibo... &Amiibo betöltése/törlése... - + &Report Compatibility &Kompatibilitás jelentése - + Open &Mods Page &Modok oldal megnyitása - + Open &Quickstart Guide &Gyorstájékoztató megnyitása - + &FAQ &GYIK - Open &yuzu Folder - &yuzu mappa megnyitása - - - + &Capture Screenshot &Képernyőkép készítése - - Open &Album - &Album megnyitása + + &Album + - + &Set Nickname and Owner &Becenév és tulajdonos beállítása - + &Delete Game Data &Játékadatok törlése - + &Restore Amiibo &Amiibo helyreállítása - + &Format Amiibo &Amiibo formázása - - Open &Mii Editor - &Mii szerkesztő megnyitása + + &Mii Editor + - + &Configure TAS... &TAS konfigurálása... - + Configure C&urrent Game... J&elenlegi játék konfigurálása... - + + &Start &Indítás - + &Reset &Visszaállítás - + + R&ecord F&elvétel - + Open &Controller Menu &Vezérlő menü megnyitása - - Install Firmware - Firmware telepítése + + Install Decryption &Keys + - - Install Decryption Keys - Visszafejtési kulcsok telepítése + + &Home Menu + - - - MicroProfileDialog - - &MicroProfile - &Mikroprofil + + &Desktop + + + + + &Application Menu + + + + + &Root Data Folder + + + + + &NAND Folder + + + + + &SDMC Folder + + + + + &Mod Folder + + + + + &Log Folder + + + + + From Folder + + + + + From ZIP + + + + + &Eden Dependencies + + + + + &Data Manager + + + + + &Tree View + + + + + &Grid View + + + + + Game Icon Size + + + + + + + None + + + + + Show Game &Name + + + + + Show &Performance Overlay + + + + + Small (32x32) + + + + + Standard (64x64) + + + + + Large (128x128) + + + + + Full Size (256x256) + + + + + Broken Vulkan Installation Detected + + + + + Vulkan initialization failed during boot. + + + + + Running a game + TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping + + + + + Loading Web Applet... + + + + + + Disable Web Applet + + + + + 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.) + + + + + The amount of shaders currently being built + + + + + The current selected resolution scaling multiplier. + + + + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. + + + + + How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. + + + + + 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. + + + + + Unmute + + + + + Mute + + + + + Reset Volume + + + + + &Clear Recent Files + + + + + &Continue + + + + + Warning: Outdated Game Format + + + + + 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.<br>For an explanation of the various Switch formats Eden supports, out our user handbook. This message will not be shown again. + + + + + + Error while loading ROM! + + + + + The ROM format is not supported. + + + + + An error occurred initializing the video core. + + + + + Eden 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: <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>How to Upload the Log File</a>. + + + + + Error while loading ROM! %1 + %1 signifies a numeric error code. + + + + + %1<br>Please redump your files or ask on Discord/Stoat for help. + %1 signifies an error string. + + + + + An unknown error occurred. Please see the log for more details. + + + + + (64-bit) + + + + + (32-bit) + + + + + %1 %2 + %1 is the title name. %2 indicates if the title is 64-bit or 32-bit + + + + + Closing software... + + + + + Save Data + + + + + Mod Data + + + + + Error Opening %1 Folder + + + + + + Folder does not exist! + + + + + Remove Installed Game Contents? + + + + + Remove Installed Game Update? + + + + + Remove Installed Game DLC? + + + + + Remove Entry + + + + + Delete OpenGL Transferable Shader Cache? + + + + + Delete Vulkan Transferable Shader Cache? + + + + + Delete All Transferable Shader Caches? + + + + + Remove Custom Game Configuration? + + + + + Remove Cache Storage? + + + + + Remove File + + + + + Remove Play Time Data + + + + + Reset play time? + + + + + + RomFS Extraction Failed! + + + + + There was an error copying the RomFS files or the user cancelled the operation. + + + + + Full + + + + + Skeleton + + + + + Select RomFS Dump Mode + + + + + Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. + + + + + There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root + + + + + Extracting RomFS... + + + + + + Cancel + + + + + RomFS Extraction Succeeded! + + + + + The operation completed successfully. + + + + + Error Opening %1 + + + + + Select Directory + + + + + Properties + + + + + The game properties could not be loaded. + + + + + Switch Executable (%1);;All Files (*.*) + %1 is an identifier for the Switch executable file extensions. + + + + + Load File + + + + + Open Extracted ROM Directory + + + + + Invalid Directory Selected + + + + + The directory you have selected does not contain a 'main' file. + + + + + Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) + + + + + Install Files + + + + + %n file(s) remaining + + + + + Installing file "%1"... + + + + + + Install Results + + + + + To avoid possible conflicts, we discourage users from installing base games to the NAND. +Please, only use this feature to install updates and DLC. + + + + + %n file(s) were newly installed + + + + + + %n file(s) were overwritten + + + + + + %n file(s) failed to install + + + + + + System Application + + + + + System Archive + + + + + System Application Update + + + + + Firmware Package (Type A) + + + + + Firmware Package (Type B) + + + + + Game + + + + + Game Update + + + + + Game DLC + + + + + Delta Title + + + + + Select NCA Install Type... + + + + + Please select the type of title you would like to install this NCA as: +(In most instances, the default 'Game' is fine.) + + + + + Failed to Install + + + + + The title type you selected for the NCA is invalid. + + + + + File not found + + + + + File "%1" not found + + + + + OK + + + + + Function Disabled + + + + + Compatibility list reporting is currently disabled. Check back later! + + + + + Error opening URL + + + + + Unable to open the URL "%1". + + + + + TAS Recording + + + + + Overwrite file of player 1? + + + + + Invalid config detected + + + + + Handheld controller can't be used on docked mode. Pro controller will be selected. + + + + + + Amiibo + + + + + + The current amiibo has been removed + + + + + Error + + + + + + The current game is not looking for amiibos + + + + + Amiibo File (%1);; All Files (*.*) + + + + + Load Amiibo + + + + + Error loading Amiibo data + + + + + The selected file is not a valid amiibo + + + + + The selected file is already on use + + + + + An unknown error occurred + + + + + + Keys not installed + + + + + + Install decryption keys and restart Eden before attempting to install firmware. + + + + + Select Dumped Firmware Source Location + + + + + Select Dumped Firmware ZIP + + + + + Zipped Archives (*.zip) + + + + + Firmware cleanup failed + + + + + Failed to clean up extracted firmware cache. +Check write permissions in the system temp directory and try again. +OS reported error: %1 + + + + + No firmware available + + + + + Firmware Corrupted + + + + + Unknown applet + + + + + Applet doesn't map to a known value. + + + + + Record not found + + + + + Applet not found. Please reinstall firmware. + + + + + Capture Screenshot + + + + + PNG Image (*.png) + + + + + Update Available + + + + + Download %1? + + + + + TAS state: Running %1/%2 + + + + + TAS state: Recording %1 + + + + + TAS state: Idle %1/%2 + + + + + TAS State: Invalid + + + + + &Stop Running + + + + + Stop R&ecording + + + + + Building: %n shader(s) + + + + + Scale: %1x + %1 is the resolution scaling factor + + + + + Speed: %1% / %2% + + + + + Speed: %1% + + + + + Game: %1 FPS + + + + + Frame: %1 ms + + + + + + FSR + + + + + NO AA + + + + + VOLUME: MUTE + + + + + VOLUME: %1% + Volume percentage (e.g. 50%) + + + + + Derivation Components Missing + + + + + Decryption keys are missing. Install them now? + + + + + Wayland Detected! + + + + + Wayland is known to have significant performance issues and mysterious bugs. +It's recommended to use X11 instead. + +Would you like to force it for future launches? + + + + + Use X11 + + + + + Continue with Wayland + + + + + Don't show again + + + + + Restart Required + + + + + Restart Eden to apply the X11 backend. + + + + + Slow + + + + + Turbo + + + + + Unlocked + + + + + Select RomFS Dump Target + + + + + Please select which RomFS you would like to dump. + + + + + Are you sure you want to close Eden? + + + + + + + Eden + + + + + Are you sure you want to stop the emulation? Any unsaved progress will be lost. + + + + + The currently running application has requested Eden to not exit. + +Would you like to bypass this and exit anyway? + + + + + FXAA + + + + + SMAA + + + + + Nearest + + + + + Bilinear + + + + + Bicubic + + + + + Zero-Tangent + + + + + B-Spline + + + + + Mitchell + + + + + Spline-1 + + + + + Gaussian + + + + + Lanczos + + + + + ScaleForce + + + + + Area + + + + + MMPX + + + + + Docked + + + + + Handheld + + + + + Fast + + + + + Balanced + + + + + Accurate + + + + + Vulkan + + + + + OpenGL GLSL + + + + + OpenGL SPIRV + + + + + OpenGL GLASM + + + + + Null + MigrationWorker - - Data was migrated successfully. - - - - + Linking the old directory failed. You may need to re-run with administrative privileges on Windows. OS gave error: %1 - + - + + + +Note that your configuration and data will be shared with %1. +If this is not desirable, delete the following files: +%2 +%3 +%4 + + + + If you wish to clean up the files which were left in the old data location, you can do so by deleting the following directory: %1 - + + + + + Data was migrated successfully. + + + + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + @@ -8064,7 +8206,7 @@ If you wish to clean up the files which were left in the old data location, you - + Refreshing Frissítés @@ -8074,27 +8216,27 @@ If you wish to clean up the files which were left in the old data location, you Tiltás feloldása - + Subject Tárgy - + Type Típus - + Forum Username Fórum felhasználónév - + IP Address IP-cím - + Refresh Frissítés @@ -8102,37 +8244,37 @@ If you wish to clean up the files which were left in the old data location, you MultiplayerState - + Current connection status Jelenlegi kapcsolat állapota - + Not Connected. Click here to find a room! Nincs csatlakozva. Kattints ide a szobák kereséséhez. - + Not Connected Nincs csatlakozva - + Connected Csatlakozva - + New Messages Received Új üzenetek érkeztek - + Error Hiba - + Failed to update the room information. Please check your Internet connection and try hosting the room again. Debug Message: Nem sikerült frissíteni a szoba adatait. Kérjük, ellenőrizd az internetkapcsolatod, és próbáld újra a szoba létrehozását. @@ -8141,90 +8283,6 @@ Hibakereső üzenet: NetworkMessage - - Username is not valid. Must be 4 to 20 alphanumeric characters. - Érvénytelen felhasználónév. 4-20 alfanumerikus karakterből kell állnia. - - - Room name is not valid. Must be 4 to 20 alphanumeric characters. - Érvénytelen szobanév. 4-20 alfanumerikus karakterből kell állnia. - - - Username is already in use or not valid. Please choose another. - A felhasználónév már használatban van, vagy érvénytelen. Próbálj megadni egy másikat. - - - IP is not a valid IPv4 address. - Az IP nem érvényes IPv4 cím. - - - Port must be a number between 0 to 65535. - A port csak 0 és 65535 közötti szám lehet. - - - You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - A szoba létrehozásához ki kell választanod egy Preferált játékot. Ha még nem szerepel a listádban egyetlen játék sem, adj hozzá egy játékmappát a játéklistában a plusz ikonra kattintva. - - - Unable to find an internet connection. Check your internet settings. - Nem található internetkapcsolat. Ellenőrizd az internetbeállításokat. - - - Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - Nem sikerült csatlakozni a házigazdához. Ellenőrizd, hogy a kapcsolat beállításai helyesek-e. Ha még mindig nem tudsz csatlakozni, lépj kapcsolatba a gazdával, hogy ellenőrizze, megfelelően van-e konfigurálva a külső port továbbítása. - - - Unable to connect to the room because it is already full. - Nem lehetett csatlakozni a szobához, mert már megtelt. - - - Creating a room failed. Please retry. Restarting yuzu might be necessary. - Szoba létrehozása sikertelen. Próbáld újra. A yuzu újraindítására szükség lehet. - - - The host of the room has banned you. Speak with the host to unban you or try a different room. - A szoba házigazdája kitiltott téged. Beszélj a házigazdával, hogy feloldjon téged, vagy csatlakozz másik szobához. - - - Version mismatch! Please update to the latest version of yuzu. If the problem persists, contact the room host and ask them to update the server. - Verzió eltérés! Kérjük, frissítsd a yuzut a legújabb verzióra. Ha a probléma továbbra is fennáll, vedd fel a kapcsolatot a házigazdával és kérd meg, hogy frissítse a szervert. - - - Incorrect password. - Helytelen jelszó. - - - An unknown error occurred. If this error continues to occur, please open an issue - Ismeretlen hiba történt. Amennyiben a hiba továbbra is fennáll, nyiss egy hibajegyet. - - - Connection to room lost. Try to reconnect. - Megszakadt a kapcsolat a szobával. Próbálj újracsatlakozni. - - - You have been kicked by the room host. - A szoba házigazdája kirúgott téged. - - - IP address is already in use. Please choose another. - Az IP-cím már használatban van. Kérjük, válassz egy másikat. - - - You do not have enough permission to perform this action. - Nincs elég jogosultságod a művelet végrehajtásához. - - - The user you are trying to kick/ban could not be found. -They may have left the room. - A felhasználó, akit ki akarsz rúgni/tiltani, nem található. -Lehet, hogy elhagyta a szobát. - - - No valid network interface is selected. -Please go to Configure -> System -> Network and make a selection. - Nincs kiválasztva érvényes hálózati adapter. -Látogasd meg a Konfigurálás -> Rendszer -> Hálózat menüpontokat a beállításhoz. - Game already running @@ -8259,10 +8317,132 @@ Mindenképp folytatod? - NetworkMessage::ErrorManager + NewUserDialog - Error - Hiba + + + New User + + + + + Change Avatar + + + + + Set Image + + + + + UUID + + + + + Eden + + + + + Username + + + + + UUID must be 32 hex characters (0-9, A-F) + + + + + Generate + + + + + Select User Image + + + + + Image Formats (*.jpg *.jpeg *.png *.bmp) + + + + + No firmware available + + + + + Please install the firmware to use firmware avatars. + + + + + + Error loading archive + + + + + Archive is not available. Please install/reinstall firmware. + + + + + Could not locate RomFS. Your file or decryption keys may be corrupted. + + + + + Error extracting archive + + + + + Could not extract RomFS. Your file or decryption keys may be corrupted. + + + + + Error finding image directory + + + + + Failed to find image directory in the archive. + + + + + No images found + + + + + No avatar images were found in the archive. + + + + + + All Good + Tooltip + + + + + Must be 32 hex characters (0-9, a-f) + Tooltip + + + + + Must be between 1 and 32 characters + Tooltip + @@ -8289,7 +8469,7 @@ Mindenképp folytatod? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -8298,101 +8478,214 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> + + PerformanceOverlay + + + Form + + + + + Frametime + + + + + 0 ms + + + + + + Min: 0 + + + + + + Max: 0 + + + + + + Avg: 0 + + + + + FPS + + + + + 0 fps + + + + + %1 fps + + + + + + Avg: %1 + + + + + + Min: %1 + + + + + + Max: %1 + + + + + %1 ms + + + PlayerControlPreview - + START/PAUSE INDÍTÁS/SZÜNET + + ProfileAvatarDialog + + + Select + + + + + Cancel + + + + + Background Color + + + + + Select Firmware Avatar + + + QObject - - %1 is not playing a game - %1 éppen nem játszik + + + + Migration + - - %1 is playing %2 - %1 ezzel játszik: %2 + + Clear Shader Cache + - - Not playing a game - Nincs játékban + + Keep Old Data + - - Installed SD Titles - Telepített SD játékok + + Clear Old Data + - - Installed NAND Titles - Telepített NAND játékok + + Link Old Directory + - - System Titles - Rendszercímek + + + + + - - Add New Game Directory - Új játékkönyvtár hozzáadása + + + No + - - Favorites - Kedvencek + + You can manually re-trigger this prompt by deleting the new config directory: +%1 + + + + + Migrating + + + + + Migrating, this may take a while... + - - + + Shift Shift - - + + Ctrl Ctrl - - + + Alt Alt - - - - + + + + [not set] [nincs beáll.] Hat %1 %2 - + - - - - - - - - + + + + + + + + Axis %1%2 Tengely %1%2 @@ -8402,359 +8695,383 @@ p, li { white-space: pre-wrap; } Gomb %1 - - - - - - + + + + + + [unknown] [ismeretlen] - - - + + + Left Balra - - - + + + Right Jobbra - - - + + + Down Le - - - + + + Up Fel - - + + Z Z - - + + R R - - + + L L - - + + A A - - + + B B - - + + X X - - + + Y Y - - + + Start Start - - + + L1 L1 - - + + L2 L2 - - + + L3 L3 - - + + R1 R1 - - + + R2 R2 - - + + R3 R3 - - + + Circle Kör - - + + Cross Kereszt - - + + Square Négyzet - - + + Triangle Háromszög - - + + Share Megosztás - - + + Options Opciók - - + + [undefined] [nem definiált] - + %1%2 %1%2 - - + + [invalid] [érvénytelen] - - + + %1%2Hat %3 - + - - - + + + %1%2Axis %3 %1%2Tengely %3 - - + + %1%2Axis %3,%4,%5 %1%2Tengely %3,%4,%5 - - + + %1%2Motion %3 - + - - + + %1%2Button %3 %1%2Gomb %3 - - + + [unused] [nem használt] - + ZR ZR - + ZL ZL - + SR SR - + SL SL - + Stick L Kar L - + Stick R Kar R - + Plus Plusz - + Minus Mínusz - - + + Home Home - + Capture Rögzítés - + Touch Érintés - + Wheel Indicates the mouse wheel - + - + Backward Hátra - + Forward Előre - + Task Feladat - + Extra Extra - + %1%2%3%4 %1%2%3%4 - - + + %1%2%3Hat %4 - + - - + + %1%2%3Axis %4 %1%2%3Tengely %4 - - + + %1%2%3Button %4 %1%2%3Gomb %4 - - - - Migration - + + Not playing a game + Nincs játékban - - - - - + + %1 is not playing a game + %1 éppen nem játszik - - - No - + + %1 is playing %2 + %1 ezzel játszik: %2 - - You can manually re-trigger this prompt by deleting the new config directory: -%1 - + + Play Time: %1 + - - Migrating - + + Never Played + - - Migrating, this may take a while... - + + Version: %1 + + + + + Version: 1.0.0 + + + + + Installed SD Titles + Telepített SD játékok + + + + Installed NAND Titles + Telepített NAND játékok + + + + System Titles + Rendszercímek + + + + Add New Game Directory + Új játékkönyvtár hozzáadása + + + + Favorites + Kedvencek @@ -8772,7 +9089,7 @@ p, li { white-space: pre-wrap; } Series - + @@ -8845,31 +9162,817 @@ p, li { white-space: pre-wrap; } Fájl elérési útja - + No game data present Nincs elérhető játékadat. - + The following amiibo data will be formatted: Az alábbi amiibo adatok formázva lesznek: - + The following game data will removed: Az alábbi játékadat törlésre kerül: - + Set nickname and owner: Becenév és tulajdonos beállítása: - + Do you wish to restore this amiibo? Szeretnéd visszaállítani ezt az amiibót? + + QtCommon::Content + + + Game Requires Firmware + + + + + The game you are trying to launch requires firmware to boot or to get past the opening menu. Please <a href='https://yuzu-mirror.github.io/help/quickstart'>dump and install firmware</a>, or press "OK" to launch anyways. + + + + + Installing Firmware... + + + + + + + + + Cancel + + + + + Firmware Install Failed + + + + + Firmware Install Succeeded + + + + + Firmware integrity verification failed! + + + + + + Verification failed for the following files: + +%1 + + + + + + Verifying integrity... + + + + + + Integrity verification succeeded! + + + + + + The operation completed successfully. + + + + + + Integrity verification failed! + + + + + File contents may be corrupt or missing. + + + + + Integrity verification couldn't be performed + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity. + + + + + Select Dumped Keys Location + + + + + Decryption Keys install succeeded + + + + + Decryption Keys install failed + + + + + Orphaned Profiles Detected! + + + + + UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br> + + + + + Really clear data? + + + + + Important data may be lost! + + + + + Are you REALLY sure? + + + + + Once deleted, your data will NOT come back! +Only do this if you're 100% sure you want to delete this data. + + + + + Clearing... + + + + + Select Export Location + + + + + %1.zip + + + + + + Zipped Archives (*.zip) + + + + + Exporting data. This may take a while... + + + + + Exporting + + + + + Exported Successfully + + + + + Data was exported successfully. + + + + + Export Cancelled + + + + + Export was cancelled by the user. + + + + + Export Failed + + + + + Ensure you have write permissions on the targeted directory and try again. + + + + + Select Import Location + + + + + Import Warning + + + + + All previous data in this directory will be deleted. Are you sure you wish to proceed? + + + + + Importing data. This may take a while... + + + + + Importing + + + + + Imported Successfully + + + + + Data was imported successfully. + + + + + Import Cancelled + + + + + Import was cancelled by the user. + + + + + Import Failed + + + + + Ensure you have read permissions on the targeted directory and try again. + + + + + QtCommon::FS + + + Linked Save Data + + + + + Save data has been linked. + + + + + Failed to link save data + + + + + Could not link directory: + %1 +To: + %2 + + + + + Already Linked + + + + + This title is already linked to Ryujinx. Would you like to unlink it? + + + + + Failed to unlink old directory + + + + + + OS returned error: %1 + + + + + Failed to copy save data + + + + + Unlink Successful + + + + + Successfully unlinked Ryujinx save data. Save data has been kept intact. + + + + + Could not find Ryujinx installation + + + + + Could not find a valid Ryujinx installation. This may typically occur if you are using Ryujinx in portable mode. + +Would you like to manually select a portable folder to use? + + + + + Ryujinx Portable Location + + + + + Not a valid Ryujinx directory + + + + + The specified directory does not contain valid Ryujinx data. + + + + + + Could not find Ryujinx save data + + + + + QtCommon::Game + + + Error Removing Contents + + + + + Error Removing Update + + + + + Error Removing DLC + + + + + + + + + + Successfully Removed + + + + + Successfully removed the installed base game. + + + + + The base game is not installed in the NAND and cannot be removed. + + + + + Successfully removed the installed update. + + + + + There is no update installed for this title. + + + + + There are no DLCs installed for this title. + + + + + Successfully removed %1 installed DLC. + + + + + + Error Removing Transferable Shader Cache + + + + + + A shader cache for this title does not exist. + + + + + Successfully removed the transferable shader cache. + + + + + Failed to remove the transferable shader cache. + + + + + Error Removing Vulkan Driver Pipeline Cache + + + + + Failed to remove the driver pipeline cache. + + + + + + Error Removing Transferable Shader Caches + + + + + Successfully removed the transferable shader caches. + + + + + Failed to remove the transferable shader cache directory. + + + + + + Error Removing Custom Configuration + + + + + A custom configuration for this title does not exist. + + + + + Successfully removed the custom game configuration. + + + + + Failed to remove the custom game configuration. + + + + + Reset Metadata Cache + + + + + The metadata cache is already empty. + + + + + The operation completed successfully. + + + + + The metadata cache couldn't be deleted. It might be in use or non-existent. + + + + + Create Shortcut + + + + + Do you want to launch the game in fullscreen? + + + + + Shortcut Created + + + + + Successfully created a shortcut to %1 + + + + + Shortcut may be Volatile! + + + + + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? + + + + + Failed to Create Shortcut + + + + + Failed to create a shortcut to %1 + + + + + Create Icon + + + + + Cannot create icon file. Path "%1" does not exist and cannot be created. + + + + + No firmware available + + + + + Please install firmware to use the home menu. + + + + + Home Menu Applet + + + + + Home Menu is not available. Please reinstall firmware. + + + + + QtCommon::Mod + + + Mod Name + + + + + What should this mod be called? + + + + + RomFS + + + + + ExeFS/Patch + + + + + Cheat + + + + + Mod Type + + + + + Could not detect mod type automatically. Please manually specify the type of mod you downloaded. + +Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods. + + + + + + Mod Extract Failed + + + + + Failed to create temporary directory %1 + + + + + Zip file %1 is empty + + + + + QtCommon::Path + + + Error Opening Shader Cache + + + + + Failed to create or open shader cache for this title, ensure your app data directory has write permissions. + + + + + QtCommon::StringLookup + + + Contains game save data. DO NOT REMOVE UNLESS YOU KNOW WHAT YOU'RE DOING! + + + + + Contains Vulkan and OpenGL pipeline caches. Generally safe to remove. + + + + + Contains updates and DLC for games. + + + + + Contains firmware and applet data. + + + + + Contains game mods, patches, and cheats. + + + + + Decryption Keys were successfully installed + + + + + Unable to read key directory, aborting + + + + + One or more keys failed to copy. + + + + + Verify your keys file has a .keys extension and try again. + + + + + Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. + + + + + Successfully installed firmware version %1 + + + + + Unable to locate potential firmware NCA files + + + + + Failed to delete one or more firmware files. + + + + + One or more firmware files failed to copy into NAND. + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. Restart Eden or re-install firmware. + + + + + Firmware missing. Firmware is required to run certain games and use the Home Menu. + + + + + Firmware reported as present, but was unable to be read. Check for decryption keys and redump firmware if necessary. + + + + + Eden has detected user data for the following emulators: + + + + + Would you like to migrate your data for use in Eden? +Select the corresponding button to migrate data from that emulator. +This may take a while. + + + + + Clearing shader cache is recommended for all users. +Do not uncheck unless you know what you're doing. + + + + + Keeps the old data directory. This is recommended if you aren't +space-constrained and want to keep separate data for the old emulator. + + + + + Deletes the old data directory. +This is recommended on devices with space constraints. + + + + + Creates a filesystem link between the old directory and Eden directory. +This is recommended if you want to share data between emulators. + + + + + Ryujinx title database does not exist. + + + + + Invalid header on Ryujinx title database. + + + + + Invalid magic header on Ryujinx title database. + + + + + Invalid byte alignment on Ryujinx title database. + + + + + No items found in Ryujinx title database. + + + + + Title %1 not found in Ryujinx title database. + + + QtControllerSelectorDialog @@ -8906,7 +10009,7 @@ p, li { white-space: pre-wrap; } - + Pro Controller Pro kontroller @@ -8919,7 +10022,7 @@ p, li { white-space: pre-wrap; } - + Dual Joycons Dual Joycon @@ -8932,7 +10035,7 @@ p, li { white-space: pre-wrap; } - + Left Joycon Bal Joycon @@ -8945,7 +10048,7 @@ p, li { white-space: pre-wrap; } - + Right Joycon Jobb Joycon @@ -8974,7 +10077,7 @@ p, li { white-space: pre-wrap; } - + Handheld Kézi @@ -9095,32 +10198,32 @@ p, li { white-space: pre-wrap; } Nincs elég vezérlő - + GameCube Controller GameCube kontroller - + Poke Ball Plus Poke Ball Plus - + NES Controller NES kontroller - + SNES Controller SNES kontroller - + N64 Controller N64 kontroller - + Sega Genesis Sega Genesis @@ -9128,28 +10231,28 @@ p, li { white-space: pre-wrap; } QtErrorDisplay - - - + + + Error Code: %1-%2 (0x%3) Hibakód: %1-%2 (0x%3) - + An error has occurred. Please try again or contact the developer of the software. Hiba történt. Kérjük, próbáld újra, vagy lépj kapcsolatba a szoftver fejlesztőjével. - + An error occurred on %1 at %2. Please try again or contact the developer of the software. Hiba történt %1 %2. Kérjük, próbáld újra, vagy lépj kapcsolatba a szoftver fejlesztőjével. - + An error has occurred. %1 @@ -9165,7 +10268,7 @@ Kérjük, próbáld újra, vagy lépj kapcsolatba a szoftver fejlesztőjével. QtProfileSelectionDialog - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -9173,7 +10276,7 @@ Kérjük, próbáld újra, vagy lépj kapcsolatba a szoftver fejlesztőjével. - + Users Felhasználók @@ -9266,7 +10369,7 @@ Kérjük, próbáld újra, vagy lépj kapcsolatba a szoftver fejlesztőjével.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -9275,17 +10378,57 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - - + + OK OK - + Cancel Mégse + + RyujinxDialog + + + Ryujinx Link + + + + + Linking save data to Ryujinx lets both Ryujinx and Eden reference the same save files for your games. + +By selecting "From Eden", previous save data stored in Ryujinx will be deleted, and vice versa for "From Ryujinx". + + + + + From Eden + + + + + From Ryujinx + + + + + Cancel + + + + + Failed to link save data + + + + + OS returned error: %1 + + + SequenceDialog @@ -9295,143 +10438,31 @@ p, li { white-space: pre-wrap; } - WaitTreeCallstack + SetPlayTimeDialog - - Call stack - - - - - WaitTreeSynchronizationObject - - - [%1] %2 - [%1] %2 + + Set Play Time Data + - - waited by no thread - nem vár egy szálra sem - - - - WaitTreeThread - - - runnable - futtatható + + Hours: + - - paused - szünetel + + Minutes: + - - sleeping - alszik + + Seconds: + - - waiting for IPC reply - IPC válaszra várakozás - - - - waiting for objects - várakozás objektumokra - - - - waiting for condition variable - várakozás állapotváltozóra - - - - waiting for address arbiter - várakozás címkiosztásra - - - - waiting for suspend resume - várakozás felfüggesztés folytatására - - - - waiting - várakozás - - - - initialized - inicializált - - - - terminated - megszakítva - - - - unknown - ismeretlen - - - - PC = 0x%1 LR = 0x%2 - PC = 0x%1 LR = 0x%2 - - - - ideal - ideális - - - - core %1 - mag %1 - - - - processor = %1 - processzor = %1 - - - - affinity mask = %1 - affinitás maszk = %1 - - - - thread id = %1 - szál azonosító = %1 - - - - priority = %1(current) / %2(normal) - prioritás = %1(jelenleg) / %2(normál) - - - - last running ticks = %1 - utolsó futó tickek = %1 - - - - WaitTreeThreadList - - - waited by thread - szálra várakozás - - - - WaitTreeWidget - - - &Wait Tree - &Várófa + + Total play time reached maximum. + diff --git a/dist/languages/id.ts b/dist/languages/id.ts index 18bfadbf91..26e9e4a601 100644 --- a/dist/languages/id.ts +++ b/dist/languages/id.ts @@ -1,25 +1,15 @@ - - - + AboutDialog - - About yuzu - Tentang yuzu - - - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - - About eden - + About Eden + Tentang Eden - <html><head/><body><p><span style=" font-size:28pt;">eden</span></p></body></html> - + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> @@ -34,70 +24,57 @@ p, li { white-space: pre-wrap; } hr { height: 1px; border-width: 0; } li.unchecked::marker { content: "\2610"; } li.checked::marker { content: "\2612"; } -</style></head><body style=" font-family:'Adwaita Sans'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> - +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css"> +p, li { white-space: pre-wrap; } +hr { height: 1px; border-width: 0; } +li.unchecked::marker { content: "\2610"; } +li.checked::marker { content: "\2612"; } +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden merupakan emulator eksperimental open-source untuk Nintendo Switch berlisensi GPLv3.0+ yang memiliki basis dari emulator yuzu setelah pengembangannya terhenti di Maret 2024. <br /><br /> Perangkat lunak ini tidak digunakan untuk memainkan game yang tidak Anda dapatkan secara legal. </span></p></body></html>  - <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">This software should not be used to play games you have not legally obtained.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu adalah emulator open-source eksperimental untuk Nintendo Switch yang berlisensi GPLv3.0+. </span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Software ini tidak boleh digunakan untuk memainkan game yang tidak kamu peroleh secara legal. </span></p></body></html> - - - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Situs web</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Kode Sumber</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Kontributor</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Lisensi</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. eden is not affiliated with Nintendo in any way.</span></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; merupakan merek dagang milik Nintendo. yuzu tidak berafiliasi dengan Nintendo dalam maksud apapun.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. Eden is not affiliated with Nintendo in any way.</span></p></body></html> + CalibrationConfigurationDialog - + Communicating with the server... Menghubungkan ke server... - + Cancel Batalkan - + Touch the top left corner <br>of your touchpad. Sentuh pojok kiri atas <br>dari touchpad kamu. - + Now touch the bottom right corner <br>of your touchpad. Sekarang sentuh pojok kanan bawah <br>dari touchpad kamu. - + Configuration completed! Konfigurasi selesai! - + OK OK @@ -120,78 +97,78 @@ p, li { white-space: pre-wrap; } Kirim Pesan - + Members Anggota - + %1 has joined %1 telah bergabung - + %1 has left %1 telah pergi - + %1 has been kicked %1 telah dikeluarkan - + %1 has been banned %1 telah dibanned - + %1 has been unbanned %1 telah diunbanned - + View Profile Lihat Profil - - + + Block Player Blokir Pemain - + When you block a player, you will no longer receive chat messages from them.<br><br>Are you sure you would like to block %1? Ketika kamu memblokir pemain, kamu tidak akan dapat menerima pesan dari mereka.<br><br>Apakah kamu yakin untuk melakukan blokir %1? - + Kick Keluarkan - + Ban Ban - + Kick Player Keluarkan Pemain - + Are you sure you would like to <b>kick</b> %1? Kamu yakin ingin <b>mengeluarkan</b> %1? - + Ban Player Ban Pemain - + Are you sure you would like to <b>kick and ban</b> %1? This would ban both their forum username and their IP address. @@ -226,17 +203,17 @@ Ini akan melarang nama pengguna forum mereka dan alamat IP mereka. ClientRoomWindow - + Connected Terhubung - + Disconnected Terputus - + %1 - %2 (%3/%4 members) - connected %1 - %2 (%3/%4 anggota) - terhubung @@ -259,14 +236,10 @@ Ini akan melarang nama pengguna forum mereka dan alamat IP mereka. Report Game Compatibility Laporkan Kekompatibelan Permainan - - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of yuzu you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected yuzu account</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Anda akan mengirimkan berkas hasil uji ke </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">Daftar Kekompatibelan yuzu</span></a><span style=" font-size:10pt;">, Informasi berikut akan dikumpulkan dan ditampilkan pada situs:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Informasi perangkat keras (CPU / GPU / Sistem Operasi)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Versi yuzu yang Anda jalankan</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Akun yuzu yang tersambung</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">eden Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of eden you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected eden account</li></ul></body></html> - + <html><head/><body><p><span style=" font-size:10pt;">Jika Anda memilih untuk mengirimkan uji kasus ke </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">List Kompatibilitas Eden</span></a><span style=" font-size:10pt;">, Berikut beberapa informasi yang akan diambil dan diperlihatkan di Situs:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Informasi Hardware (CPU / GPU / Sistem Operasi)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Versi Eden yang Anda jalankan</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Akun Eden yang terkoneksi</li></ul></body></html> @@ -374,22 +347,22 @@ Ini akan melarang nama pengguna forum mereka dan alamat IP mereka. Terima kasih atas pengajuan yang Anda kirimkan! - + Submitting Mengajukan - + Communication error Kesalahan komunikasi - + An error occurred while sending the Testcase Terjadi kesalahan saat mengirim Testcase - + Next Berikutnya @@ -397,350 +370,374 @@ Ini akan melarang nama pengguna forum mereka dan alamat IP mereka. ConfigurationShared - + % % - + Amiibo editor Pengubah Amiibo - + Controller configuration Konfigurasi pengontrol - + Data erase Hapus data - + Error Kesalahan - + Net connect Koneksi Terhubung - + Player select Pemain pilih - + Software keyboard Papan Ketik Perangkat Lunak - + Mii Edit Ubah Mii - + Online web Online web - + Shop Belanja - + Photo viewer Pemutar foto - + Offline web Offline web - + Login share Login berbagi - + Wifi web auth Otentikasi web Wifi - + My page Halaman saya - + + Enable Overlay Applet + + + + + Enables Horizon's built-in overlay applet. Press and hold the home button for 1 second to show it. + + + + Output Engine: Mesin Keluaran: - + Output Device: Perangkat Output: - + Input Device: Perangkat Masukan. - + Mute audio Matikan audio - + Volume: Volume: - + Mute audio when in background Bisukan audio saat berada di background - + Multicore CPU Emulation Emulasi CPU Multicore - - This option increases CPU emulation thread use from 1 to the Switch’s maximum of 4. -This is mainly a debug option and shouldn’t be disabled. - Opsi ini meningkatkan penggunaan utas emulasi CPU dari 1 menjadi maksimum Switch yaitu 4. -Ini terutama merupakan opsi debug dan sebaiknya tidak dinonaktifkan. + + This option increases CPU emulation thread use from 1 to the maximum of 4. +This is mainly a debug option and shouldn't be disabled. + - + Memory Layout Tata Letak Memori - - Increases the amount of emulated RAM from the stock 4GB of the retail Switch to the developer kit's 8/6GB. -It’s doesn’t improve stability or performance and is intended to let big texture mods fit in emulated RAM. -Enabling it will increase memory use. It is not recommended to enable unless a specific game with a texture mod needs it. - Meningkatkan jumlah RAM yang diemulasikan dari 4GB standar pada Switch ritel menjadi 8/6GB pada kit pengembang. -Ini tidak meningkatkan stabilitas atau performa dan dimaksudkan untuk memungkinkan mod tekstur besar masuk ke dalam RAM yang diemulasikan. -Mengaktifkannya akan meningkatkan penggunaan memori. Tidak disarankan untuk mengaktifkannya kecuali ada game tertentu dengan mod tekstur yang membutuhkannya. + + Increases the amount of emulated RAM. +Doesn't affect performance/stability but may allow HD texture mods to load. + - + Limit Speed Percent Persen Batas Kecepatan - - Controls the game's maximum rendering speed, but it’s up to each game if it runs faster or not. + + Controls the game's maximum rendering speed, but it's up to each game if it runs faster or not. 200% for a 30 FPS game is 60 FPS, and for a 60 FPS game it will be 120 FPS. Disabling it means unlocking the framerate to the maximum your PC can reach. - Mengontrol kecepatan rendering maksimum permainan, tetapi tergantung pada masing-masing permainan apakah berjalan lebih cepat atau tidak. -200% untuk permainan 30 FPS adalah 60 FPS, dan untuk permainan 60 FPS akan menjadi 120 FPS. -Menonaktifkannya berarti membuka kunci framerate ke maksimum yang dapat dicapai oleh PC Anda. + - + + Turbo Speed + + + + + When the Turbo Speed hotkey is pressed, the speed will be limited to this percentage. + + + + + Slow Speed + + + + + When the Slow Speed hotkey is pressed, the speed will be limited to this percentage. + + + + Synchronize Core Speed - + Sinkronisasi Kecepatan Inti - - Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). -Compatibility varies by game; many (especially older ones) may not respond well. + + Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). Can help reduce stuttering at lower framerates. - + - + Accuracy: Akurasi: - - This setting controls the accuracy of the emulated CPU. -Don't change this unless you know what you are doing. - Pengaturan ini mengontrol akurasi CPU yang diemulasikan. -Jangan mengubah ini kecuali Anda tahu apa yang Anda lakukan. + + Change the accuracy of the emulated CPU (for debugging only). + - - + + Backend: Backend: - - Fast CPU Time - + + CPU Overclock + - + Overclocks the emulated CPU to remove some FPS limiters. Weaker CPUs may see reduced performance, and certain games may behave improperly. Use Boost (1700MHz) to run at the Switch's highest native clock, or Fast (2000MHz) to run at 2x clock. - + Overclock emulasi CPU untuk menghapus beberapa limiter FPS. CPU yang lebih lemah dapat mengalami penurunan kinerja, dan game tertentu dapat berjalan tidak semestinya. +untuk menjalankan clock asli tertingi Switch, Gunakan Boost (1700MHz), atau Fast (2000MHz) untuk menjalankan 2x clock. - + + Custom CPU Ticks + Siklus CPU Kustom + + + + Set a custom value of CPU ticks. Higher values can increase performance, but may cause deadlocks. A range of 77-21000 is recommended. + + + + + Enable Host MMU Emulation (fastmem) + Aktifkan Emulasi Host MMU (memori cepat) + + + + This optimization speeds up memory accesses by the guest program. +Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU. +Disabling this forces all memory accesses to use Software MMU Emulation. + Opsi ini mempercepat akses memori oleh program tamu. +Saat diaktifkan, dapat menyebablkan reads/writes memori tamu dilakukan langsung ke memori dan memanfaatkan Host MMU. +Menonaktifkan opsi ini akan memaksa semua akses memori untuk menggunakan Emulasi MMU Perangkat Lunak. + + + Unfuse FMA (improve performance on CPUs without FMA) Pisahkan FMA (meningkatkan performa pada CPU tanpa FMA) - + This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support. Opsi ini meningkatkan kecepatan dengan mengurangi akurasi instruksi fused-multiply-add pada CPU tanpa dukungan FMA asli. - + Faster FRSQRTE and FRECPE FRSQRTE dan FRECPE lebih cepat - + This option improves the speed of some approximate floating-point functions by using less accurate native approximations. Opsi ini meningkatkan kecepatan beberapa fungsi titik mengambang perkiraan dengan menggunakan perkiraan asli yang kurang akurat. - + Faster ASIMD instructions (32 bits only) Instruksi ASIMD lebih cepat (hanya untuk 32 bits) - + This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes. Opsi ini meningkatkan kecepatan fungsi floating-point ASIMD 32 bit dengan menjalankannya dengan mode pembulatan yang salah. - + Inaccurate NaN handling Penanganan NaN tidak akurat - + This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions. Opsi ini meningkatkan kecepatan dengan menghilangkan pemeriksaan NaN. Harap dicatat ini juga mengurangi akurasi instruksi titik mengambang tertentu. - + Disable address space checks Matikan pengecekan adress space - - This option improves speed by eliminating a safety check before every memory read/write in guest. -Disabling it may allow a game to read/write the emulator's memory. - Opsi ini meningkatkan kecepatan dengan menghilangkan pemeriksaan keamanan sebelum setiap pembacaan/tulisan memori di dalam tamu. -Menonaktifkannya dapat memungkinkan sebuah permainan untuk membaca/menulis memori emulator. + + This option improves speed by eliminating a safety check before every memory operation. +Disabling it may allow arbitrary code execution. + - + Ignore global monitor Abaikan monitor global - + 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. Opsi ini meningkatkan kecepatan dengan hanya mengandalkan semantik cmpxchg untuk memastikan keamanan instruksi akses eksklusif. Harap dicatat ini dapat menyebabkan deadlock dan kondisi perlombaan lainnya. - + API: API: - - Switches between the available graphics APIs. -Vulkan is recommended in most cases. - Beralih antara API grafis yang tersedia. -Vulkan direkomendasikan dalam kebanyakan kasus. + + Changes the output graphics API. +Vulkan is recommended. + - + Device: Perangkat: - - This setting selects the GPU to use with the Vulkan backend. - Pengaturan ini memilih GPU yang akan digunakan dengan backend Vulkan. + + This setting selects the GPU to use (Vulkan only). + - - Shader Backend: - Backend Shader: - - - - The shader backend to use for the OpenGL renderer. -GLSL is the fastest in performance and the best in rendering accuracy. -GLASM is a deprecated NVIDIA-only backend that offers much better shader building performance at the cost of FPS and rendering accuracy. -SPIR-V compiles the fastest, but yields poor results on most GPU drivers. - The shader backend yang digunakan untuk renderer OpenGL. -GLSL adalah yang tercepat dalam kinerja dan yang terbaik dalam akurasi rendering. -GLASM adalah backend NVIDIA yang sudah tidak digunakan lagi yang menawarkan kinerja pembangunan shader yang jauh lebih baik dengan biaya FPS dan akurasi rendering. -SPIR-V mengompilasi yang tercepat, tetapi menghasilkan hasil yang buruk pada sebagian besar driver GPU. - - - + Resolution: Resolusi: - - Forces the game to render at a different resolution. -Higher resolutions require much more VRAM and bandwidth. -Options lower than 1X can cause rendering issues. - Memaksa permainan untuk merender pada resolusi yang berbeda. -Resolusi yang lebih tinggi membutuhkan VRAM dan bandwidth yang lebih banyak. -Opsi yang lebih rendah dari 1X dapat menyebabkan masalah rendering. + + Forces to render at a different resolution. +Higher resolutions require more VRAM and bandwidth. +Options lower than 1X can cause artifacts. + - + Window Adapting Filter: Filter Menyelaraskan dengan Layar: - + FSR Sharpness: Ketajaman FSR - - Determines how sharpened the image will look while using FSR’s dynamic contrast. - Menentukan seberapa tajam gambar akan terlihat saat menggunakan kontras dinamis FSR. + + Determines how sharpened the image will look using FSR's dynamic contrast. + - + Anti-Aliasing Method: Metode Anti-Aliasing: - + The anti-aliasing method to use. SMAA offers the best quality. -FXAA has a lower performance impact and can produce a better and more stable picture under very low resolutions. - Metode anti-aliasing yang digunakan. -SMAA menawarkan kualitas terbaik. -FXAA memiliki dampak kinerja yang lebih rendah dan dapat menghasilkan gambar yang lebih baik dan lebih stabil pada resolusi yang sangat rendah. +FXAA can produce a more stable picture in lower resolutions. + - + Fullscreen Mode: Mode Layar Penuh: - + The method used to render the window in fullscreen. Borderless offers the best compatibility with the on-screen keyboard that some games request for input. Exclusive fullscreen may offer better performance and better Freesync/Gsync support. @@ -749,63 +746,52 @@ Borderless menawarkan kompatibilitas terbaik dengan keyboard di layar yang dimin Layar penuh eksklusif mungkin menawarkan performa yang lebih baik dan dukungan Freesync/Gsync yang lebih baik. - + Aspect Ratio: Rasio Aspek: - - Stretches the game to fit the specified aspect ratio. -Switch games only support 16:9, so custom game mods are required to get other ratios. + + Stretches the renderer to fit the specified aspect ratio. +Most games only support 16:9, so modifications are required to get other ratios. Also controls the aspect ratio of captured screenshots. - Mengubah permainan agar sesuai dengan rasio aspek yang ditentukan. -Permainan Switch hanya mendukung 16:9, jadi mod permainan kustom diperlukan untuk mendapatkan rasio lainnya. -Juga mengontrol rasio aspek tangkapan layar yang diambil. + - - Use disk pipeline cache - Gunakan pipeline cache diska + + Use persistent pipeline cache + - + Allows saving shaders to storage for faster loading on following game boots. Disabling it is only intended for debugging. Memungkinkan penyimpanan shader untuk mempercepat pengambilan pada saat game berikutnya dimulai. Menonaktifkannya hanya dimaksudkan untuk debugging. - - Optimize SPIRV output shader - + + Optimize SPIRV output + - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. This feature is experimental. - + Menjalankan optimasi tambahan pada shader SPIR-V yang dibuat. +Akan meningkatkan waktu yang dibutuhkan untuk kompilasi shader. +Dapat meningkatkan sedikit performa. +Fitur ini eksperimental. - - Use asynchronous GPU emulation - Gunakan pengemulasian GPU yang asinkron - - - - Uses an extra CPU thread for rendering. -This option should always remain enabled. - Menggunakan satu benang CPU tambahan untuk merender. -Opsi ini harus tetap diaktifkan. - - - + NVDEC emulation: Emulasi NVDEC: - + Specifies how videos should be decoded. It can either use the CPU or the GPU for decoding, or perform no decoding at all (black screen on videos). In most cases, GPU decoding provides the best performance. @@ -814,1169 +800,1450 @@ Ini dapat menggunakan CPU atau GPU untuk dekode, atau tidak melakukan dekode sam Dalam kebanyakan kasus, dekode GPU memberikan kinerja terbaik. - + ASTC Decoding Method: ASTC Metode Dekoding: - + This option controls how ASTC textures should be decoded. -CPU: Use the CPU for decoding, slowest but safest method. -GPU: Use the GPU's compute shaders to decode ASTC textures, recommended for most games and users. -CPU Asynchronously: Use the CPU to decode ASTC textures as they arrive. Completely eliminates ASTC decoding -stuttering at the cost of rendering issues while the texture is being decoded. - Opsi ini mengontrol bagaimana tekstur ASTC harus didekode. -CPU: Gunakan CPU untuk dekode, metode paling lambat namun paling aman. -GPU: Gunakan compute shaders GPU untuk dekode tekstur ASTC, direkomendasikan untuk sebagian besar game dan pengguna. -CPU Asynchronous: Gunakan CPU untuk dekode tekstur ASTC saat tiba. Sepenuhnya menghilangkan stuttering dekode ASTC dengan biaya masalah rendering saat tekstur sedang didekode. +CPU: Use the CPU for decoding. +GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). +CPU Asynchronously: Use the CPU to decode ASTC textures on demand. EliminatesASTC decoding +stuttering but may present artifacts. + - + ASTC Recompression Method: ASTC Metode Pemampatan Ulang: - - Almost all desktop and laptop dedicated GPUs lack support for ASTC textures, forcing the emulator to decompress to an intermediate format any card supports, RGBA8. -This option recompresses RGBA8 to either the BC1 or BC3 format, saving VRAM but negatively affecting image quality. - Hampir semua GPU desktop dan laptop tidak mendukung tekstur ASTC, memaksa emulator untuk mendekompres ke format intermediate yang didukung oleh kartu apa pun, RGBA8. -Opsi ini merekompres RGBA8 ke format BC1 atau BC3, menghemat VRAM tetapi mempengaruhi kualitas gambar secara negatif. + + Most GPUs lack support for ASTC textures and must decompress to anintermediate format: RGBA8. +BC1/BC3: The intermediate format will be recompressed to BC1 or BC3 format, + saving VRAM but degrading image quality. + - + + Frame Pacing Mode (Vulkan only) + + + + + Controls how the emulator manages frame pacing to reduce stuttering and make the frame rate smoother and more consistent. + + + + VRAM Usage Mode: - + Mode Penggunaan VRAM: - - Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. Has no effect on integrated graphics. Aggressive mode may severely impact the performance of other applications such as recording software. - + + Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. +Aggressive mode may impact performance of other applications such as recording software. + - + + Skip CPU Inner Invalidation + Abaikan Invalidasi Internal CPU + + + + Skips certain cache invalidations during memory updates, reducing CPU usage and improving latency. This may cause soft-crashes. + + + + VSync Mode: Mode Sinkronisasi Vertikal - + FIFO (VSync) does not drop frames or exhibit tearing but is limited by the screen refresh rate. -FIFO Relaxed is similar to FIFO but allows tearing as it recovers from a slow down. +FIFO Relaxed 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. - FIFO (VSync) tidak menjatuhkan frame atau menunjukkan tearing tetapi terbatas oleh kecepatan refresh layar. -FIFO Relaxed mirip dengan FIFO tetapi memungkinkan tearing saat pulih dari perlambatan. -Mailbox dapat memiliki laten yang lebih rendah daripada FIFO dan tidak merobek tetapi mungkin menjatuhkan frame. -Immediate (tanpa sinkronisasi) hanya menampilkan apa pun yang tersedia dan dapat menunjukkan tearing. +Immediate (no synchronization) presents whatever is available and can exhibit tearing. + - + + Sync Memory Operations + Sinkronisasi Operasi Memori + + + + Ensures data consistency between compute and memory operations. +This option fixes issues in games, but may degrade performance. +Unreal Engine 4 games often see the most significant changes thereof. + + + + Enable asynchronous presentation (Vulkan only) Aktifkan presentasi asinkron (hanya Vulkan) - + Slightly improves performance by moving presentation to a separate CPU thread. Meningkatkan kinerja sedikit dengan memindahkan presentasi ke thread CPU terpisah. - + Force maximum clocks (Vulkan only) Paksa jam maximum (Vulkan only) - + Runs work in the background while waiting for graphics commands to keep the GPU from lowering its clock speed. Berjalan bekerja di latar belakang sambil menunggu perintah grafis untuk mencegah GPU agar tidak menurunkan kecepatan jamnya. - + Anisotropic Filtering: Anisotropic Filtering: - + Controls the quality of texture rendering at oblique angles. -It’s a light setting and safe to set at 16x on most GPUs. - Mengontrol kualitas rendering tekstur pada sudut miring. -Ini adalah pengaturan yang ringan dan aman untuk diatur pada 16x pada sebagian besar GPU. +Safe to set at 16x on most GPUs. + - - Accuracy Level: - Tingkat Akurasi: + + GPU Mode: + - - GPU emulation accuracy. -Most games render fine with Normal, but High is still required for some. -Particles tend to only render correctly with High accuracy. -Extreme should only be used for debugging. -This option can be changed while playing. -Some games may require booting on high to render properly. - Emulasi GPU yang akurat. -Sebagian besar game dirender dengan baik dengan pengaturan Normal, namun pengaturan High masih diperlukan untuk beberapa game. -Partikel cenderung hanya dirender dengan benar dengan akurasi High. -Pengaturan Extreme hanya digunakan untuk debugging. -Opsi ini dapat diubah saat bermain. -Beberapa game mungkin memerlukan pengaturan High untuk dirender dengan baik. + + Controls the GPU emulation mode. +Most games render fine with Fast or Balanced modes, but Accurate is still required for some. +Particles tend to only render correctly with Accurate mode. + - - Use asynchronous shader building (Hack) - Gunakan pembangunan shader asinkron (Hack) + + DMA Accuracy: + - - Enables asynchronous shader compilation, which may reduce shader stutter. -This feature is experimental. - Memungkinkan kompilasi shader asinkron, yang dapat mengurangi stutter shader. -Fitur ini bersifat eksperimental. + + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. + - Use Fast GPU Time (Hack) - Gunakan Waktu GPU Cepat (Hack) + + Enable asynchronous shader compilation + - Enables Fast GPU Time. This option will force most games to run at their highest native resolution. - Memungkinkan Waktu GPU Cepat. Opsi ini akan memaksa sebagian besar game berjalan pada resolusi asli tertinggi mereka. + + May reduce shader stutter. + - + + Fast GPU Time + + + + + Overclocks the emulated GPU to increase dynamic resolution and render distance. +Use 256 for maximal performance and 512 for maximal graphics fidelity. + + + + + GPU Unswizzle + + + + + Accelerates BCn 3D texture decoding using GPU compute. +Disable if experiencing crashes or graphical glitches. + + + + + GPU Unswizzle Max Texture Size + + + + + Sets the maximum size (MiB) for GPU-based texture unswizzling. +While the GPU is faster for medium and large textures, the CPU may be more efficient for very small ones. +Adjust this to find the balance between GPU acceleration and CPU overhead. + + + + + GPU Unswizzle Stream Size + + + + + Sets the maximum amount of texture data (in MiB) processed per frame. +Higher values can reduce stutter during texture loading but may impact frame consistency. + + + + + GPU Unswizzle Chunk Size + + + + + Determines the number of depth slices processed in a single dispatch. +Increasing this can improve throughput on high-end GPUs but may cause TDR or driver timeouts on weaker hardware. + + + + Use Vulkan pipeline cache Gunakan pipeline cache Vulkan - + Enables GPU vendor-specific pipeline cache. This option can improve shader loading time significantly in cases where the Vulkan driver does not store pipeline cache files internally. Memungkinkan cache pipeline spesifik vendor GPU. Opsi ini dapat meningkatkan waktu pemuatan shader secara signifikan dalam kasus di mana driver Vulkan tidak menyimpan file cache pipeline secara internal. - + Enable Compute Pipelines (Intel Vulkan Only) Aktifkan Pipa Komputasi (Hanya Intel Vulkan) - - Enable compute pipelines, required by some games. -This setting only exists for Intel proprietary drivers, and may crash if enabled. + + 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. - Aktifkan pipeline komputasi, yang diperlukan oleh beberapa permainan. -Pengaturan ini hanya ada untuk driver milik Intel, dan mungkin menyebabkan crash jika diaktifkan. -Pipeline komputasi selalu aktif pada semua driver lainnya. + - + Enable Reactive Flushing Aktifkan Reactive Flushing - + Uses reactive flushing instead of predictive flushing, allowing more accurate memory syncing. Menggunakan pemadatan reaktif alih-alih pemadatan prediktif, memungkinkan sinkronisasi memori yang lebih akurat. - + Sync to framerate of video playback Sinkronkan dengan kecepatan pemutaran video - + Run the game at normal speed during video playback, even when the framerate is unlocked. Jalankan permainan dengan kecepatan normal selama pemutaran video, bahkan ketika framerate tidak terkunci. - + Barrier feedback loops Loop umpan balik penghalang - + Improves rendering of transparency effects in specific games. Meningkatkan rendering efek transparansi dalam game tertentu. - + + Enable buffer history + + + + + Enables access to previous buffer states. +This option may improve rendering quality and performance consistency in some games. + + + + + Fix bloom effects + + + + + Removes bloom in Burnout. + + + + + Enable Legacy Rescale Pass + + + + + May fix rescale issues in some games by relying on behavior from the previous implementation. +Legacy behavior workaround that fixes line artifacts on AMD and Intel GPUs, and grey texture flicker on Nvidia GPUs in Luigis Mansion 3. + + + + + Extended Dynamic State + + + + + Controls the number of features that can be used in Extended Dynamic State. +Higher states allow for more features and can increase performance, but may cause additional graphical issues. + + + + + Vertex Input Dynamic State + + + + + Enables vertex input dynamic state feature for better quality and performance. + + + + + Sample Shading + + + + + Allows the fragment shader to execute per sample in a multi-sampled fragment instead of once per fragment. Improves graphics quality at the cost of performance. +Higher values improve quality but degrade performance. + + + + RNG Seed Benih RNG - + Controls the seed of the random number generator. -Mainly used for speedrunning purposes. - Mengontrol benih dari generator angka acak. -Biasanya digunakan untuk tujuan speedrunning. +Mainly used for speedrunning. + - + Device Name Nama Perangkat - - The name of the emulated Switch. - Nama dari Switch yang diemulasikan. + + The name of the console. + - + Custom RTC Date: Tanggal RTC Kustom: - - This option allows to change the emulated clock of the Switch. + + This option allows to change the clock of the console. Can be used to manipulate time in games. - Opsi ini memungkinkan untuk mengubah jam yang ditiru pada Switch. -Dapat digunakan untuk memanipulasi waktu dalam permainan. + - + + The number of seconds from the current unix time + + + + Language: Bahasa - - Note: this can be overridden when region setting is auto-select - Catatan: ini dapat diubah ketika pengaturan wilayah diotomatiskan + + This option can be overridden when region setting is auto-select + - + Region: Wilayah: - - The region of the emulated Switch. - Wilayah dari Switch yang diemulasikan. + + The region of the console. + - + Time Zone: Zona Waktu: - - The time zone of the emulated Switch. - Zona waktu dari Switch yang diemulasikan. + + The time zone of the console. + - + Sound Output Mode: Mode keluaran suara. - + Console Mode: Mode Konsol - - Selects if the console is emulated in Docked or Handheld mode. + + Selects if the console is in Docked or Handheld mode. Games will change their resolution, details and supported controllers and depending on this setting. Setting to Handheld can help improve performance for low end systems. - Memilih apakah konsol diemulasikan dalam mode Docked atau Handheld. -Permainan akan mengubah resolusi, detail, dan pengontrol yang didukung tergantung pada pengaturan ini. -Mengatur ke Handheld dapat membantu meningkatkan performa untuk sistem dengan spesifikasi rendah. + - - Prompt for user on game boot - Tanyakan pengguna ketika memulai permainan + + Unit Serial + - Ask to select a user profile on each boot, useful if multiple people use yuzu on the same PC. - Meminta untuk memilih profil pengguna setiap kali boot, berguna jika beberapa orang menggunakan yuzu pada PC yang sama. + + Battery Serial + - - Pause emulation when in background - Jeda pengemulasian ketika berada di latar + + Debug knobs + - This setting pauses yuzu when focusing other windows. - Pengaturan ini menjeda yuzu saat fokus ke jendela lain. + + Prompt for user profile on boot + - - Fast GPU Time (Hack) - + + Useful if multiple people use the same PC. + - - Overclocks the emulated GPU to increase dynamic resolution and render distance. -Use 128 for maximal performance and 512 for maximal graphics fidelity. - + + Pause when not in focus + - - Extended Dynamic State - + + Pauses emulation when focusing on other windows. + - - Enables the VkExtendedDynamicState* extensions. -Higher dynamic states will generally improve performance, but may cause issues on certain games or devices. - - - - - Provoking Vertex - - - - - Improves lighting and vertex handling in certain games. -Only Vulkan 1.0+ devices support this extension. - - - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - - Ask to select a user profile on each boot, useful if multiple people use eden on the same PC. - - - - - This setting pauses eden when focusing other windows. - - - - + Confirm before stopping emulation Konfirmasi sebelum menghentikan emulasi - - This setting overrides game prompts asking to confirm stopping the game. + + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - Pengaturan ini mengesampingkan perintah permainan yang meminta konfirmasi untuk menghentikan permainan. -Mengaktifkannya akan melewati peringatan tersebut dan langsung keluar dari emulasi. + - + Hide mouse on inactivity Sembunyikan mouse saat tidak aktif - - This setting hides the mouse after 2.5s of inactivity. - Pengaturan ini menyembunyikan kursor setelah 2.5 detik tidak aktif. + + Hides the mouse after 2.5s of inactivity. + - + Disable controller applet Nonaktifkan aplikasi pengontrol - - Forcibly disables the use of the controller applet by guests. -When a guest attempts to open the controller applet, it is immediately closed. - Mematikan paksa penggunaan aplikasi pengendali oleh tamu. -Ketika seorang tamu mencoba membuka aplikasi pengendali, aplikasi tersebut langsung ditutup. + + Forcibly disables the use of the controller applet in emulated programs. +When a program attempts to open the controller applet, it is immediately closed. + - + Check for updates - + Cek Pembaruan - + Whether or not to check for updates upon startup. - + - + Enable Gamemode Aktifkan Mode Permainan - + + Force X11 as Graphics Backend + + + + Custom frontend Tampilan depan kustom - + Real applet Aplikasi nyata - + Never - + Tidak Pernah - + On Load - + - + Always - + Selalu - + CPU CPU - + GPU GPU - + CPU Asynchronous CPU sinkron - + Uncompressed (Best quality) Tidak terkompresi (Kualitas Terbaik) - + BC1 (Low quality) BC1 (Kualitas rendah) - + BC3 (Medium quality) BC3 (Kualitas sedang) - - Conservative - - - - - Aggressive - - - - - OpenGL - OpenGL - - - - Vulkan - Vulkan - - - - Null - Null - - - - GLSL - GLSL - - - - GLASM (Assembly Shaders, NVIDIA Only) - GLASM (Shader perakit, hanya NVIDIA) - - - - SPIR-V (Experimental, AMD/Mesa Only) - SPIR-V (Eksperimental, Hanya AMD/Mesa) - - - - Normal - Normal - - - - High - Tinggi - - - - Extreme - Ekstrim - - - + + Auto Otomatis - + + 30 FPS + + + + + 60 FPS + + + + + 90 FPS + + + + + 120 FPS + + + + + Conservative + Konservatif + + + + Aggressive + Agresif + + + + Vulkan + Vulkan + + + + OpenGL GLSL + + + + + OpenGL GLASM (Assembly Shaders, NVIDIA Only) + + + + + OpenGL SPIR-V (Experimental, AMD/Mesa Only) + + + + + Null + Null + + + + Fast + + + + + Balanced + + + + + Accurate Akurat - - Unsafe - Berbahaya - - - - Paranoid (disables most optimizations) - Paranoid (menonaktifkan sebagian besar optimasi) - - - - Dynarmic - Dynarmic - - - - NCE - NCE - - - - Borderless Windowed - Layar Tanpa Batas - - - - Exclusive Fullscreen - Layar Penuh Eksklusif - - - - No Video Output - Tidak ada Keluaran Suara - - - - CPU Video Decoding - Penguraian Video menggunakan CPU - - - - GPU Video Decoding (Default) - Penguraian Video menggunakan GPU (Bawaan) - - - - 0.25X (180p/270p) [EXPERIMENTAL] - - - - - 0.5X (360p/540p) [EXPERIMENTAL] - 0.5X (360p/540p) [EKSPERIMENTAL] - - - - 0.75X (540p/810p) [EXPERIMENTAL] - 0.75X (540p/810p) [EKSPERIMENTAL] - - - - 1X (720p/1080p) - 1X (720p/1080p) - - - - 1.5X (1080p/1620p) [EXPERIMENTAL] - 1.5X (1080p/1620p) [EKSPERIMENTAL] - - - - 2X (1440p/2160p) - 2X (1440p/2160p) - - - - 3X (2160p/3240p) - 3X (2160p/3240p) - - - - 4X (2880p/4320p) - 4X (2880p/4320p) - - - - 5X (3600p/5400p) - 5X (3600p/5400p) - - - - 6X (4320p/6480p) - 6X (4320p/6480p) - - - - 7X (5040p/7560p) - 7X (5040p/7560p) - - - - 8X (5760p/8640p) - 8X (5760p/8640p) - - - - Nearest Neighbor - Nearest Neighbor - - - - Bilinear - Biliner - - - - Bicubic - Bikubik - - - - Gaussian - Gaussian - - - - ScaleForce - ScaleForce - - - - AMD FidelityFX™️ Super Resolution - AMD FidelityFX™️ Super Resolusi - - - - Area - - - - - None - Tak ada - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Default (16:9) - Bawaan (16:9) - - - - Force 4:3 - Paksa 4:3 - - - - Force 21:9 - Paksa 21:9 - - - - Force 16:10 - Paksa 16:10 - - - - Stretch to Window - Regangkan ke Layar - - - - Automatic - Otomatis - - - + + Default Bawaan - + + Unsafe (fast) + + + + + Safe (stable) + + + + + Unsafe + Berbahaya + + + + Paranoid (disables most optimizations) + Paranoid (menonaktifkan sebagian besar optimasi) + + + + Debugging + + + + + Dynarmic + Dynarmic + + + + NCE + NCE + + + + Borderless Windowed + Layar Tanpa Batas + + + + Exclusive Fullscreen + Layar Penuh Eksklusif + + + + No Video Output + Tidak ada Keluaran Suara + + + + CPU Video Decoding + Penguraian Video menggunakan CPU + + + + GPU Video Decoding (Default) + Penguraian Video menggunakan GPU (Bawaan) + + + + 0.25X (180p/270p) [EXPERIMENTAL] + + + + + 0.5X (360p/540p) [EXPERIMENTAL] + 0.5X (360p/540p) [EKSPERIMENTAL] + + + + 0.75X (540p/810p) [EXPERIMENTAL] + 0.75X (540p/810p) [EKSPERIMENTAL] + + + + 1X (720p/1080p) + 1X (720p/1080p) + + + + 1.25X (900p/1350p) [EXPERIMENTAL] + + + + + 1.5X (1080p/1620p) [EXPERIMENTAL] + 1.5X (1080p/1620p) [EKSPERIMENTAL] + + + + 2X (1440p/2160p) + 2X (1440p/2160p) + + + + 3X (2160p/3240p) + 3X (2160p/3240p) + + + + 4X (2880p/4320p) + 4X (2880p/4320p) + + + + 5X (3600p/5400p) + 5X (3600p/5400p) + + + + 6X (4320p/6480p) + 6X (4320p/6480p) + + + + 7X (5040p/7560p) + 7X (5040p/7560p) + + + + 8X (5760p/8640p) + 8X (5760p/8640p) + + + + Nearest Neighbor + Nearest Neighbor + + + + Bilinear + Biliner + + + + Bicubic + Bikubik + + + + Gaussian + Gaussian + + + + Lanczos + + + + + ScaleForce + ScaleForce + + + + AMD FidelityFX Super Resolution + + + + + Area + + + + + MMPX + + + + + Zero-Tangent + + + + + B-Spline + + + + + Mitchell + + + + + Spline-1 + + + + + + None + Tak ada + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Default (16:9) + Bawaan (16:9) + + + + Force 4:3 + Paksa 4:3 + + + + Force 21:9 + Paksa 21:9 + + + + Force 16:10 + Paksa 16:10 + + + + Stretch to Window + Regangkan ke Layar + + + + Automatic + Otomatis + + + 2x 2x - + 4x 4x - + 8x 8x - + 16x 16x - + + 32x + + + + + 64x + + + + Japanese (日本語) Jepang (日本語) - + American English Bahasa Inggris Amerika - + French (français) Prancis (français) - + German (Deutsch) Jerman (Deutsch) - + Italian (italiano) Italia (italiano) - + Spanish (español) Spanyol (español) - + Chinese Cina - + Korean (한국어) Korea (한국어) - + Dutch (Nederlands) Belanda (Nederlands) - + Portuguese (português) Portugis (português) - + Russian (Русский) Rusia (Русский) - + Taiwanese Taiwan - + British English Inggris Britania - + Canadian French Prancis Kanada - + Latin American Spanish Spanyol Amerika Latin - + Simplified Chinese Cina Sederhana - + Traditional Chinese (正體中文) Cina Tradisional (正體中文) - + Brazilian Portuguese (português do Brasil) Portugis Brazil (português do Brasil) - - + + Polish (polska) + + + + + Thai (แบบไทย) + + + + + Japan Jepang - + USA USA - + Europe Eropa - + Australia Australia - + China Tiongkok - + Korea Korea - + Taiwan Taiwan - + Auto (%1) Auto select time zone Auto (%1) - + Default (%1) Default time zone Bawaan (%1) - + CET CET - + CST6CDT CST6CDT - + Cuba Kuba - + EET EET - + Egypt Mesir - + Eire Éire - + EST EST - + EST5EDT EST5EDT - + GB GB - + GB-Eire GB-Éire - + GMT GMT - + GMT+0 GMT+0 - + GMT-0 GMT-0 - + GMT0 GMT0 - + Greenwich Greenwich - + Hongkong Hongkong - + HST HST - + Iceland Islandia - + Iran Iran - + Israel Israel - + Jamaica Jamaika - + Kwajalein Kwajalein - + Libya Libya - + MET MET - + MST MST - + MST7MDT MST7MDT - + Navajo Navajo - + NZ NZ - + NZ-CHAT NZ-CHAT - + Poland Polandia - + Portugal Portugal - + PRC PRC - + PST8PDT PST8PDT - + ROC ROC - + ROK ROK - + Singapore Singapura - + Turkey Turki - + UCT UCT - + Universal Universal - + UTC UTC - + W-SU W-SU - + WET WET - + Zulu Zulu - + Mono Mono - + Stereo Stereo - + Surround Surround - + 4GB DRAM (Default) 4GB DRAM (Bawaan) - + 6GB DRAM (Unsafe) 6GB DRAM (Tidak Aman) - + 8GB DRAM - + - + 10GB DRAM (Unsafe) - + - + 12GB DRAM (Unsafe) - + - - Low (128) - - - - - Medium (256) - - - - - High (512) - - - - 8GB DRAM (Unsafe) - 8GB DRAM (Tidak Aman) - - - + Docked Terpasang - + Handheld Jinjing - + + + Off + + + + Boost (1700MHz) - + - + Fast (2000MHz) - + - + Always ask (Default) Selalu tanyakan (Bawaan) - + Only if game specifies not to stop Hanya jika permainan menentukan untuk tidak berhenti - + Never ask Jangan pernah bertanya + + + + Medium (256) + + + + + + High (512) + + + + + Very Small (16 MB) + + + + + Small (32 MB) + + + + + Normal (128 MB) + + + + + Large (256 MB) + + + + + Very Large (512 MB) + + + + + Very Low (4 MB) + + + + + Low (8 MB) + + + + + Normal (16 MB) + + + + + Medium (32 MB) + + + + + High (64 MB) + + + + + Very Low (32) + + + + + Low (64) + + + + + Normal (128) + + + + + Disabled + + + + + ExtendedDynamicState 1 + + + + + ExtendedDynamicState 2 + + + + + ExtendedDynamicState 3 + + + + + Tree View + + + + + Grid View + + ConfigureApplets @@ -2048,7 +2315,7 @@ Ketika seorang tamu mencoba membuka aplikasi pengendali, aplikasi tersebut langs Kembalikan ke Semula - + Auto Otomatis @@ -2234,7 +2501,7 @@ Memungkinkan berbagai macam optimasi IR. <div style="white-space: nowrap">This optimization speeds up memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all memory accesses to use Software MMU Emulation.</div> @@ -2252,7 +2519,7 @@ Memungkinkan berbagai macam optimasi IR. <div style="white-space: nowrap">This optimization speeds up exclusive memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all exclusive memory accesses to use Software MMU Emulation.</div> @@ -2286,7 +2553,7 @@ Memungkinkan berbagai macam optimasi IR. <div style="white-space: nowrap">This optimization speeds up memory accesses by allowing invalid memory accesses to succeed.</div> - <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> + <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> <div style="white-space: nowrap">Optimasi ini mempercepat akses memori dengan memungkinkan akses memori yang tidak valid berhasil.</div> @@ -2327,30 +2594,30 @@ Memungkinkan berbagai macam optimasi IR. Pencatatan - - Open Log Location - Buka Lokasi Catatan - - - + Global Log Filter Catatan Penyaring Global - + When checked, the max size of the log increases from 100 MB to 1 GB Saat dicentang, ukuran maksimum log meningkat dari 100 MB menjadi 1 GB - + Enable Extended Logging** Aktifkan Pencatatan Yang Diperluas** - + Show Log in Console Tampilkan Catatan Di Konsol + + + Open Log Location + Buka Lokasi Catatan + Homebrew @@ -2487,18 +2754,9 @@ Memungkinkan berbagai macam optimasi IR. Aktifkan Semua Jenis Controller - - Censor username in logs - - - - - **This will be reset automatically when eden closes. - - - - Enable Auto-Stub** - Aktifkan Auto-Stub** + + Enable Auto-Stub + @@ -2507,8 +2765,8 @@ Memungkinkan berbagai macam optimasi IR. - Enable CPU Debugging - Nyalakan Pengawakutuan CPU + Use dev.keys + @@ -2521,43 +2779,74 @@ Memungkinkan berbagai macam optimasi IR. Pengawakutuan - - Flush log output on each line - + + Battery Serial: + - - Enable FS Access Log - Nyalakan Log Akses FS + + Bitmask for quick development toggles + - + + Set debug knobs (bitmask) + + + + + 16-bit debug knob set for quick development toggles + + + + + (bitmask) + + + + + Debug Knobs: + + + + + Unit Serial: + + + + Enable this to output the latest generated audio command list to the console. Only affects games using the audio renderer. Aktifkan ini untuk menghasilkan daftar perintah audio terbaru ke konsol. Hanya mempengaruhi permainan yang menggunakan renderer audio. - - Enable Auto-Stub - - - - + Dump Audio Commands To Console** Dump Perintah Audio Ke Console** - + + Flush log output on each line + + + + + Enable FS Access Log + Nyalakan Log Akses FS + + + Enable Verbose Reporting Services** Nyalakan Layanan Laporan Bertele-tele** - **This will be reset automatically when yuzu closes. - **Ini akan diatur ulang secara otomatis ketika yuzu ditutup. + + Censor username in logs + - - Web applet not compiled - Web applet tidak dikompilasi + + **This will be reset automatically when Eden closes. + @@ -2599,14 +2888,10 @@ Memungkinkan berbagai macam optimasi IR. ConfigureDialog - - yuzu Configuration - Komfigurasi yuzu - - eden Configuration - + Eden Configuration + @@ -2614,88 +2899,88 @@ Memungkinkan berbagai macam optimasi IR. Beberapa pengaturan hanya tersedia ketika permainan tidak sedang berjalan. - + Applets Applet - - + + Audio Audio - - + + CPU CPU - + Debug Awakutu - + Filesystem Sistem berkas - - + + General Umum - - + + Graphics Grafis - + GraphicsAdvanced GrafisLanjutan - - GraphicsExtensions - + + GraphicsExtra + - + Hotkeys Pintasan - - + + Controls Kendali - + Profiles Profil - + Network Jaringan - - + + System Sistem - + Game List Daftar Permainan - + Web Jejaring @@ -2725,9 +3010,10 @@ Memungkinkan berbagai macam optimasi IR. - - - + + + + ... ... @@ -2737,107 +3023,183 @@ Memungkinkan berbagai macam optimasi IR. Kartu SD - + + Save Data + + + + Gamecard Kartu Permainan - + Path Jalur - + Inserted Dimasukkan - + Current Game Permainan Saat Ini - + Patch Manager Manajer Tambalan - + Dump Decompressed NSOs Dump NSO yang Di-decompress - + Dump ExeFS Dump ExeFS - + Mod Load Root Mod Akar Pemuatan - + Dump Root Dump Akar - + Caching Menyangga - + Cache Game List Metadata Simpan Metadata Daftar Permainan - - - - + Reset Metadata Cache Atur Ulang Cache Metadata - + Select Emulated NAND Directory... Pilih Direktori NAND yang Diemulasikan... - + Select Emulated SD Directory... Pilih Direktori SD yang Diemulasikan... - + + + Select Save Data Directory... + + + + Select Gamecard Path... Pilih Jalur Kartu Permainan... - + Select Dump Directory... Pilih Jalur Dump... - + Select Mod Load Directory... Pilih Direktori Pemuatan Mod... - - The metadata cache is already empty. - Cache metadata sudah kosong. + + Save Data Directory + - - The operation completed successfully. - Operasi selesai dengan sukses. + + Choose an action for the save data directory: + - - The metadata cache couldn't be deleted. It might be in use or non-existent. - Cache metadata tidak dapat dihapus. Mungkin sedang dipakai atau memang tidak ada. + + Set Custom Path + + + + + Reset to NAND + + + + + Save data exists in both the old and new locations. + +Old: %1 +New: %2 + +Would you like to migrate saves from the old location? +WARNING: This will overwrite any conflicting saves in the new location! + + + + + Would you like to migrate your save data to the new location? + +From: %1 +To: %2 + + + + + Migrate Save Data + + + + + Migrating save data... + + + + + Cancel + + + + + + Migration Failed + + + + + Failed to create destination directory. + + + + + Failed to migrate save data: +%1 + + + + + Migration Complete + + + + + Save data has been migrated successfully. + +Would you like to delete the old save data? + @@ -2855,28 +3217,54 @@ Memungkinkan berbagai macam optimasi IR. - Linux - Linux + External Content + - + + Add directories to scan for DLCs and Updates without installing to NAND + + + + + Add Directory + + + + + Remove Selected + + + + Reset All Settings Atur Ulang Semua Pengaturan - yuzu - yuzu + + Eden + - - eden - - - - + This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed? Ini mengatur ulang semua pengaturan dan menghapus semua konfigurasi permainan. Ini tidak akan menghapus direktori permainan, profil, atau profil input. Lanjutkan? + + + Select External Content Directory... + + + + + Directory Already Added + + + + + This directory is already in the list. + + ConfigureGraphics @@ -2906,33 +3294,33 @@ Memungkinkan berbagai macam optimasi IR. Warna Latar: - + % FSR sharpening percentage (e.g. 50%) % - + Off Mati - + VSync Off VSync Mati - + Recommended Direkomendasikan - + On Nyala - + VSync On VSync Aktif @@ -2950,7 +3338,7 @@ Memungkinkan berbagai macam optimasi IR. Lanjutan - + Advanced Graphics Settings Pengaturan Grafis Lanjutan @@ -2960,24 +3348,38 @@ Memungkinkan berbagai macam optimasi IR. Form - + - Extensions - + Extras + - - Vulkan Extension Settings - + + Hacks + - - While it's recommended to use state 3, some games may perform better on lower states. Setting to 0 (disabled) may also break games. -If your GPU is older (i.e. RX570/580 or older), it may not support these features. If this is the case, set the slider to 0 and uncheck all boxes. -These settings are experimental, and may cause black screens. If your games fail to boot or are stuck on a black screen, change these settings around. - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + + + + + % + Sample Shading percentage (e.g. 50%) + + + + + Extended Dynamic State is disabled on macOS due to MoltenVK compatibility issues that cause black screens. + @@ -3008,75 +3410,75 @@ These settings are experimental, and may cause black screens. If your games fail Kembalikan ke Semula - + Action Tindakan - + Hotkey Pintasan - + Controller Hotkey Pemetaan Tombol Pemantau - - - + + + Conflicting Key Sequence Urutan Tombol yang Konflik - - + + The entered key sequence is already assigned to: %1 Urutan tombol yang dimasukkan sudah menerap ke: %1 - + [waiting] [menunggu] - + Invalid Tidak valid - + Invalid hotkey settings Pengaturan hotkey tidak valid - + An error occurred. Please report this issue on github. Terjadi kesalahan. Harap laporkan masalah ini di github. - + Restore Default Kembalikan ke Semula - + Clear Bersihkan - + Conflicting Button Sequence Sekuensi Tombol yang Bertentangan - + The default button sequence is already assigned to: %1 Urutan tombol bawaan sudah diterapkan ke: %1 - + The default key sequence is already assigned to: %1 Urutan tombol bawaan sudah diterapkan ke: %1 @@ -3396,12 +3798,8 @@ These settings are experimental, and may cause black screens. If your games fail - Requires restarting eden - - - - Requires restarting yuzu - Memerlukan mengulang yuzu + Requires restarting Eden + @@ -3469,47 +3867,47 @@ These settings are experimental, and may cause black screens. If your games fail Player 2 Profile - + Player 3 Profile - + Player 4 Profile - + Player 5 Profile - + Player 6 Profile - + Player 7 Profile - + Player 8 Profile - + Use global input configuration - + Player %1 profile - + @@ -3551,30 +3949,19 @@ These settings are experimental, and may cause black screens. If your games fail - + Left Stick Stik Kiri - - - - - - - Up - Atas - - - - - - - - - - Left - Kiri + + + + + + + Down + Bawah @@ -3588,14 +3975,25 @@ These settings are experimental, and may cause black screens. If your games fail Kanan - - - - - - - Down - Bawah + + + + + + + + Left + Kiri + + + + + + + + + Up + Atas @@ -3642,14 +4040,6 @@ These settings are experimental, and may cause black screens. If your games fail D-Pad D-Pad - - - - - - SL - SL - @@ -3659,59 +4049,55 @@ These settings are experimental, and may cause black screens. If your games fail SR - - - - L - L + + + + + SL + SL - + ZL ZL + + + + + L + L + Minus Kurang - - - - Capture - Tangkapan - - + Plus Tambah - - - Home - Home + + + + ZR + ZR - - + + R R - - - - - ZR - ZR - Motion 1 @@ -3722,6 +4108,18 @@ These settings are experimental, and may cause black screens. If your games fail Motion 2 Gerakan 2 + + + + Capture + Tangkapan + + + + + Home + Home + Face Buttons @@ -3734,10 +4132,10 @@ These settings are experimental, and may cause black screens. If your games fail X - - - Y - Y + + + B + B @@ -3746,21 +4144,21 @@ These settings are experimental, and may cause black screens. If your games fail A - - - B - B + + + Y + Y - + Right Stick Stik Kanan Mouse panning - + @@ -3768,242 +4166,242 @@ These settings are experimental, and may cause black screens. If your games fail Konfigurasi - - - - + + + + Clear Bersihkan - - - - - + + + + + [not set] [belum diatur] - - - + + + Invert button Balikkan tombol - - + + Toggle button Atur tombol - + Turbo button Tombol turbo - - + + Invert axis Balikkan poros - - - + + + Set threshold Atur batasan - - + + Choose a value between 0% and 100% Pilih sebuah angka diantara 0% dan 100% - + Toggle axis - + - + Set gyro threshold - + - + Calibrate sensor Kalibrasi sensor - + Map Analog Stick Petakan Stik Analog - + After pressing OK, first move your joystick horizontally, and then vertically. To invert the axes, first move your joystick vertically, and then horizontally. Setelah menekan OK, pertama gerakkan joystik secara mendatar, lalu tegak lurus. Untuk membalikkan sumbu, pertama gerakkan joystik secara tegak lurus, lalu mendatar. - + Center axis - + - - + + Deadzone: %1% Titik Mati: %1% - - + + Modifier Range: %1% Rentang Pengubah: %1% - - + + Pro Controller Kontroler Pro - + Dual Joycons Joycon Dual - + Left Joycon Joycon Kiri - + Right Joycon Joycon Kanan - + Handheld Jinjing - + GameCube Controller Kontroler GameCube - + Poke Ball Plus Poke Ball Plus - + NES Controller Kontroler NES - + SNES Controller Kontroler SNES - + N64 Controller Kontroler N64 - + Sega Genesis Sega Genesis - + Start / Pause Mulai / Jeda - + Z Z - + Control Stick Stik Kendali - + C-Stick C-Stick - + Shake! Getarkan! - + [waiting] [menunggu] - + New Profile Profil Baru - + Enter a profile name: Masukkan nama profil: - - + + Create Input Profile Ciptakan Profil Masukan - + The given profile name is not valid! Nama profil yang diberi tidak sah! - + Failed to create the input profile "%1" Gagal membuat profil masukan "%1" - + Delete Input Profile Hapus Profil Masukan - + Failed to delete the input profile "%1" Gagal menghapus profil masukan "%1" - + Load Input Profile Muat Profil Masukan - + Failed to load the input profile "%1" Gagal memuat profil masukan "%1" - + Save Input Profile Simpat Profil Masukan - + Failed to save the input profile "%1" Gagal menyimpan profil masukan "%1" @@ -4026,15 +4424,6 @@ Untuk membalikkan sumbu, pertama gerakkan joystik secara tegak lurus, lalu menda Bawaan - - ConfigureLinuxTab - - - - Linux - Linux - - ConfigureMotionTouch @@ -4060,7 +4449,7 @@ Untuk membalikkan sumbu, pertama gerakkan joystik secara tegak lurus, lalu menda - + Configure Konfigurasi @@ -4090,111 +4479,93 @@ Untuk membalikkan sumbu, pertama gerakkan joystik secara tegak lurus, lalu menda Port: - - Learn More - Pelajari Lebih Lanjut - - - - + + Test Uji coba - + Add Server Tambah Server - + Remove Server Hapus Server - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Pelajari lebih lanjut</span></a> - - - + %1:%2 %1:%2 - yuzu - yuzu + + + + + + + Eden + - - <a href='https://eden-emulator.github.io/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - - - - + Port number has invalid characters Terdapat karakter tidak sah di angka port - - - - - - - eden - - - - + Port has to be in range 0 and 65353 Port harus berada dalam jangkauan 0 dan 65353 - + IP address is not valid Alamat IP tidak sah - + This UDP server already exists Server UDP ini sudah ada - + Unable to add more than 8 servers Tidak dapat menambah lebih dari 8 server - + Testing Menguji - + Configuring Mengkonfigur - + Test Successful Tes Berhasil - + Successfully received data from the server. Berhasil menerima data dari server. - + Test Failed Uji coba Gagal - + Could not receive valid data from the server.<br>Please verify that the server is set up correctly and the address and port are correct. Tidak dapat menerima data yang sah dari server.<br>Mohon periksa bahwa server telah diatur dengan benar dan alamat dan port sudah sesuai. - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. Uji coba UDP atau kalibrasi konfigurasi sedang berjalan.<br>Mohon tunggu hingga selesai. @@ -4204,7 +4575,7 @@ Untuk membalikkan sumbu, pertama gerakkan joystik secara tegak lurus, lalu menda Configure mouse panning - + @@ -4243,32 +4614,32 @@ Untuk membalikkan sumbu, pertama gerakkan joystik secara tegak lurus, lalu menda Deadzone counterweight - + Counteracts a game's built-in deadzone - + Deadzone - + Stick decay - + Strength - + Minimum - + @@ -4279,22 +4650,22 @@ Untuk membalikkan sumbu, pertama gerakkan joystik secara tegak lurus, lalu menda Mouse panning works better with a deadzone of 0% and a range of 100%. Current values are %1% and %2% respectively. - + Emulated mouse is enabled. This is incompatible with mouse panning. - + Emulated mouse is enabled - + Real mouse input and mouse panning are incompatible. Please disable the emulated mouse in input advanced settings to allow mouse panning. - + @@ -4320,9 +4691,9 @@ Current values are %1% and %2% respectively. Antarmuka Jaringan - - None - Tak ada + + Enable Airplane Mode + @@ -4378,49 +4749,54 @@ Current values are %1% and %2% respectively. Beberapa pengaturan hanya tersedia ketika permainan tidak sedang berjalan. - + Add-Ons Pengaya (Add-On) - + System Sistem - + CPU CPU - + Graphics Grafis - + Adv. Graphics Ljtan. Grafik - - GPU Extensions - + + Ext. Graphics + - + Audio Audio - + Input Profiles Profil Masukan - Linux - Linux + Network + + + + + Applets + @@ -4441,15 +4817,110 @@ Current values are %1% and %2% respectively. Pengaya (Add-On) - + + Import Mod from ZIP + + + + + Import Mod from Folder + + + + Patch Name Nama Tambalan - + Version Versi + + + Mod Install Succeeded + + + + + Successfully installed all mods. + + + + + Mod Install Failed + + + + + Failed to install the following mods: + %1 +Check the log for details. + + + + + Mod Folder + + + + + Zipped Mod Location + + + + + Zipped Archives (*.zip) + + + + + Invalid Selection + + + + + Only mods, cheats, and patches can be deleted. +To delete NAND-installed updates, right-click the game in the game list and click Remove -> Remove Installed Update. + + + + + You are about to delete the following installed mods: + + + + + + +Once deleted, these can NOT be recovered. Are you 100% sure you want to delete them? + + + + + Delete add-on(s)? + + + + + Successfully deleted + + + + + Successfully deleted all selected mods. + + + + + &Delete + + + + + &Open in File Manager + + ConfigureProfileManager @@ -4479,32 +4950,17 @@ Current values are %1% and %2% respectively. Nama Pengguna - - Set Image - Atur Gambar - - - + Add Tambahkan - - Rename - Ubah Nama - - - - Remove - Singkirkan - - - + Profile management is available only when game is not running. Pengelolaan profil hanya tersedia saat permainan tidak dijalankan. - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -4512,103 +4968,83 @@ Current values are %1% and %2% respectively. %2 - - Enter Username - Masukkan Nama Pengguna - - - + Users Pengguna - - Enter a username for the new user: - Masukkan nama pengguna untuk pengguna baru: - - - - Enter a new username: - Masukkan nama pengguna baru: - - - - Select User Image - Pilih Gambar Pengguna - - - - JPEG Images (*.jpg *.jpeg) - Gambar JPEG (*.jpg *.jpeg) - - - + Error deleting image Kesalahan ketika menghapus gambar - + Error occurred attempting to overwrite previous image at: %1. Kesalahan saat mencoba menimpa gambar sebelumnya di: %1. - + Error deleting file Kesalahan saat menghapus berkas - + Unable to delete existing file: %1. Tak dapat menghapus berkas yang ada: %1. - + Error creating user image directory Kesalahan saat menciptakan direktori pengguna - + Unable to create directory %1 for storing user images. Tidak bisa menciptakan direktori %1 untuk menyimpan gambar pengguna. - - Error copying user image - Kesalahan ketika menyalin gambar pengguna + + Error saving user image + - - Unable to copy image from %1 to %2 - Gagal menyalin berkas dari %1 ke %2 + + Unable to save image to file + - - Error resizing user image - Kesalahan ketika mengubah ukuran gambar pengguna + + &Edit + - - Unable to resize image - Tidak dapat mengubah ukuran gambar + + &Delete + + + + + Edit User + ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. - + - + Confirm Delete Konfirmasi Penghapusan - + Name: %1 UUID: %2 - + @@ -4616,29 +5052,29 @@ UUID: %2 Configure Ring Controller - + 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. - + Virtual Ring Sensor Parameters - + Pull - + Push - + @@ -4648,27 +5084,27 @@ UUID: %2 Direct Joycon Driver - + Enable Ring Input - + - + Enable - + Ring Sensor Value - + - + Not connected Tidak terkoneksi @@ -4678,63 +5114,63 @@ UUID: %2 Kembalikan ke Semula - + Clear Bersihkan - + [not set] [belum diatur] - + Invert axis Balikkan poros - - + + Deadzone: %1% Titik Mati: %1% - + Error enabling ring input - + - + Direct Joycon driver is not enabled - + - + Configuring Mengkonfigur - + The current mapped device doesn't support the ring controller - - - - - The current mapped device doesn't have a ring attached - + + The current mapped device doesn't have a ring attached + + + + The current mapped device is not connected - + - + Unexpected driver result %1 - + - + [waiting] [menunggu] @@ -4758,9 +5194,9 @@ UUID: %2 Core - + Warning: "%1" is not a valid language for region "%2" - + @@ -4772,18 +5208,18 @@ UUID: %2 - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the eden website.</p></body></html> - + <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the user handbook.</p></body></html> + To check which hotkeys control the playback/recording, please refer to the Hotkey settings (Configure -> General -> Hotkeys). - + WARNING: This is an experimental feature.<br/>It will not play back scripts frame perfectly with the current, imperfect syncing method. - + @@ -4793,30 +5229,35 @@ UUID: %2 Enable TAS features - + Loop script - + Pause execution during loads - + - + + Show recording dialog + + + + Script Directory - + - + Path Jalur - + ... ... @@ -4824,14 +5265,14 @@ UUID: %2 ConfigureTasDialog - + TAS Configuration - + - + Select TAS Load Directory... - + @@ -4839,12 +5280,12 @@ UUID: %2 Configure Touchscreen Mappings - + Mapping: - + @@ -4865,12 +5306,12 @@ UUID: %2 Click the bottom area to add a point, then press a button to bind. Drag points to change position, or double-click table cells to edit values. - + Delete Point - + @@ -4932,14 +5373,10 @@ Drag points to change position, or double-click table cells to edit values.Configure Touchscreen Konfigurasi Layar Sentuh - - Warning: The settings in this page affect the inner workings of yuzu's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - Peringatan: Pengaturan pada halaman ini berpengaruh pada pusat kerja layar sentuh teremulasi yuzu. Mengubahnya mungkin akan berdampak pada perilaku tak diinginkan, seperti layar sentuh yang sebagiannya atau seluruhnya tidak berfungsi. Pergunakan halaman ini jika Anda tahu risikonya. - - Warning: The settings in this page affect the inner workings of eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - + Warning: The settings in this page affect the inner workings of Eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. + @@ -4970,64 +5407,43 @@ Drag points to change position, or double-click table cells to edit values. ConfigureUI - - - + + None Tak ada - - - Small (32x32) - Kecil (32x32) - - Standard (64x64) - Standar (64x64) - - - - Large (128x128) - Besar (128x128) - - - - Full Size (256x256) - Ukuran Penuh (256x256) - - - Small (24x24) Kecil (24x24) - + Standard (48x48) Standar (48x48) - + Large (72x72) Besar (72x72) - + Filename Nama Berkas - + Filetype Filetype - + Title ID ID Judul - + Title Name Nama Judul @@ -5072,7 +5488,7 @@ Drag points to change position, or double-click table cells to edit values. Show Compatibility List - + @@ -5082,88 +5498,83 @@ Drag points to change position, or double-click table cells to edit values. Show Size Column - + Show File Types Column - + Show Play Time Column - + - Game Icon Size: - Ukuran Ikon Game: - - - Folder Icon Size: Ukuran Ikon Folder: - + Row 1 Text: Teks Baris 1: - + Row 2 Text: Teks Baris 2: - + Screenshots Screenshot - + Ask Where To Save Screenshots (Windows Only) Menanya Dimana Untuk Menyimpan Screenshot (Hanya untuk Windows) - + Screenshots Path: Jalur Screenshot: - + ... ... - + TextLabel - + - + Resolution: Resolusi: - + Select Screenshots Path... Pilih Jalur Screenshot... - + <System> <System> - + English Bahasa Inggris - + Auto (%1 x %2, %3 x %4) Screenshot width value - + @@ -5258,176 +5669,184 @@ Drag points to change position, or double-click table cells to edit values.Web Jejaring - - yuzu Web Service - Layanan Web yuzu - - - By providing your username and token, you agree to allow yuzu to collect additional usage data, which may include user identifying information. - Dengan menyertakan nama pengguna dan token, Anda menyetujui untuk mengizinkan yuzu mengumpulkan data penggunaan tambahan, yang mungkin termasuk informasi pengenalan pengguna. - - eden Web Service - + Eden Web Service + - - By providing your username and token, you agree to allow eden to collect additional usage data, which may include user identifying information. - - - - - Verify - Verifikasi - - - - Sign up - Daftar - - - + Token: Token: - + Username: Nama Pengguna: - - What is my token? - Berapa token saya? + + Generate + - + Web Service configuration can only be changed when a public room isn't being hosted. - + - Telemetry - Telemetri - - - Share anonymous usage data with the yuzu team - Bagikan penggunaan data anonim dengan tim yuzu - - - Learn more - Pelajari lebih lanjut - - - Telemetry ID: - ID Telemetri: - - - Regenerate - Hasilkan Ulang - - - + Discord Presence Kehadiran Discord - + Show Current Game in your Discord Status Tampilkan Permainan Saat ini pada Status Discord Anda - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Pelajari lebih lanjut</span></a> - - - - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Daftar</span></a> - - - - <a href='https://evilperson1337.notion.site/Hosting-a-Room-Inside-of-Eden-20457c2edaf680108abac6215a79acdb'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - - - - - Warning - - - + - Verification is currently nonfunctional, instead generate a random 48-character string with only lowercase a-z. - - - - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">Berapa token saya?</span></a> - - - Telemetry ID: 0x%1 - ID Telemetri: 0x%1 - - - Unspecified - Tak dispesifikasikan - - - Token not verified - Token tak diverifikasi - - - Token was not verified. The change to your token has not been saved. - Token tidak terverifikasi. Perubahan ke token Anda tak tersimpan - - - - Unverified, please click Verify before saving configuration + All Good Tooltip - + - Verifying... - Memverifikasi... - - - Verified + + Must be between 4-20 characters Tooltip - Terverifikasi + - Verification failed + + Must be 48 characters, and lowercase a-z Tooltip - Verifikasi gagal - - - Verification failed - Verifikasi gagal - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - Pemverifikasian gagal. Periksa apakah token yang dimasukkan sudah benar dan apakah koneksi internet Anda berjalan. + ControllerDialog - + Controller P1 Kontroler P1 - + &Controller P1 %Kontroler P1 + + DataDialog + + + Data Manager + + + + + Deleting ANY data is IRREVERSABLE! + + + + + Shaders + + + + + UserNAND + + + + + SysNAND + + + + + Mods + + + + + Saves + + + + + DataWidget + + + Form + + + + + Tooltip + + + + + Open with your system file manager + + + + + Delete all data in this directory. THIS IS 100% IRREVERSABLE! + + + + + Export all data in this directory. This may take a while! + + + + + Import data for this directory. This may take a while, and will delete ALL EXISTING DATA! + + + + + Calculating... + + + + + DepsDialog + + + Eden Dependencies + + + + + <html><head/><body><p><span style=" font-size:28pt;">Eden Dependencies</span></p></body></html> + + + + + <html><head/><body><p>The projects that make Eden possible</p></body></html> + + + + + Dependency + + + + + Version + + + DirectConnect Direct Connect - + @@ -5437,22 +5856,22 @@ Drag points to change position, or double-click table cells to edit values. <html><head/><body><p>Server address of the host</p></body></html> - + Port - + <html><head/><body><p>Port number the host is listening on</p></body></html> - + Nickname - + @@ -5462,7 +5881,7 @@ Drag points to change position, or double-click table cells to edit values. Connect - + @@ -5470,12 +5889,12 @@ Drag points to change position, or double-click table cells to edit values. Connecting - + Connect - + @@ -5483,1468 +5902,152 @@ Drag points to change position, or double-click table cells to edit values. Username is not valid. Must be 4 to 20 alphanumeric characters. - + Room name is not valid. Must be 4 to 20 alphanumeric characters. - + Username is already in use or not valid. Please choose another. - + IP is not a valid IPv4 address. - + Port must be a number between 0 to 65535. - + You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - + Unable to find an internet connection. Check your internet settings. - + Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - + Unable to connect to the room because it is already full. - + - Creating a room failed. Please retry. Restarting eden might be necessary. - + Creating a room failed. Please retry. Restarting Eden might be necessary. + The host of the room has banned you. Speak with the host to unban you or try a different room. - + - Version mismatch! Please update to the latest version of eden. If the problem persists, contact the room host and ask them to update the server. - + Version mismatch! Please update to the latest version of Eden. If the problem persists, contact the room host and ask them to update the server. + Incorrect password. - + An unknown error occurred. If this error continues to occur, please open an issue - + Connection to room lost. Try to reconnect. - + You have been kicked by the room host. - + IP address is already in use. Please choose another. - + You do not have enough permission to perform this action. - + The user you are trying to kick/ban could not be found. They may have left the room. - + No valid network interface is selected. Please go to Configure -> System -> Network and make a selection. - + Error - Kesalahan - - - - GMainWindow - - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Anonymous data is collected</a> to help improve yuzu. <br/><br/>Would you like to share your usage data with us? - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Data anonim dikumpulkan</a> untuk membantu yuzu. <br/><br/>Apa Anda ingin membagi data penggunaan dengan kami? - - - Telemetry - Telemetri - - - - Broken Vulkan Installation Detected - - - - - Running a game - TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping - - - - - Loading Web Applet... - Memuat Applet Web... - - - - - Disable Web Applet - Matikan Applet Web - - - - 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.) - - - - - The amount of shaders currently being built - Jumlah shader yang sedang dibuat - - - - The current selected resolution scaling multiplier. - Pengali skala resolusi yang terpilih. - - - - Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. - Kecepatan emulasi saat ini. Nilai yang lebih tinggi atau rendah dari 100% menandakan pengemulasian berjalan lebih cepat atau lambat dibanding Switch aslinya. - - - - How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. - Berapa banyak frame per second (bingkai per detik) permainan akan ditampilkan. Ini akan berubah dari berbagai permainan dan pemandangan. - - - - 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. - Waktu yang diperlukan untuk mengemulasikan bingkai Switch, tak menghitung pembatas bingkai atau v-sync. Agar emulasi berkecepatan penuh, ini harus 16.67 mdtk. - - - - Unmute - Membunyikan - - - - Mute - Bisukan - - - - Reset Volume - Atur ulang tingkat suara - - - - &Clear Recent Files - &Bersihkan Berkas Baru-baru Ini - - - - &Continue - &Lanjutkan - - - - &Pause - &Jeda - - - - Warning Outdated Game Format - Peringatan Format Permainan yang Usang - - - 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.<br><br>For an explanation of the various Switch formats yuzu supports, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - 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.<br><br>Untuk penjelasan berbagai format Switch yang didukung yuzu, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>periksa wiki kami</a>. Pesan ini tidak akan ditampilkan lagi. - - - - - Error while loading ROM! - Kesalahan ketika memuat ROM! - - - - The ROM format is not supported. - Format ROM tak didukung. - - - - An error occurred initializing the video core. - Terjadi kesalahan ketika menginisialisasi inti video. - - - 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: <a href='https://yuzu-emu.org/help/reference/log-files/'>How to Upload the Log File</a>. - 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: <a href='https://yuzu-emu.org/help/reference/log-files/'>Cara Mengupload Berkas Catatan</a>. - - - - Error while loading ROM! %1 - %1 signifies a numeric error code. - - - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://eden-emulator.github.io/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - - - - - Game Updates Warning - - - - - The game you are trying to launch is known to have performance or booting issues when updates are applied. Please try increasing the memory layout to 6GB or 8GB if any issues occur.<br><br>Press "OK" to continue launching, or "Cancel" to cancel the launch. - - - - - Don't show again for this game - - - - - 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.<br><br>For an explanation of the various Switch formats eden supports, <a href='https://eden-emulator.github.io/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - - - - - eden 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: <a href='https://eden-emulator.github.io/help/reference/log-files/'>How to Upload the Log File</a>. - - - - - %1<br>Please redump your files or ask on Discord for help. - %1 signifies an error string. - - - - - An unknown error occurred. Please see the log for more details. - Terjadi kesalahan yang tak diketahui. Mohon lihat catatan untuk informasi lebih rinci. - - - - (64-bit) - (64-bit) - - - - (32-bit) - (32-bit) - - - - %1 %2 - %1 is the title name. %2 indicates if the title is 64-bit or 32-bit - %1 %2 - - - - Closing software... - - - - - Save Data - Simpan Data - - - - Mod Data - Mod Data - - - - Error Opening %1 Folder - Gagal Membuka Folder %1 - - - - - Folder does not exist! - Folder tak ada! - - - - Error Opening Transferable Shader Cache - Gagal Ketika Membuka Tembolok Shader yang Dapat Ditransfer - - - - Failed to create the shader cache directory for this title. - - - - - Error Removing Contents - Error saat menghapus konten - - - - Error Removing Update - Error saat menghapus Update - - - - Error Removing DLC - Error saat menghapus DLC - - - - Remove Installed Game Contents? - Hapus Konten Game yang terinstall? - - - - Remove Installed Game Update? - Hapus Update Game yang terinstall? - - - - Remove Installed Game DLC? - Hapus DLC Game yang terinstall? - - - - Remove Entry - Hapus Masukan - - - - - - - - - Successfully Removed - Berhasil menghapus - - - - Successfully removed the installed base game. - - - - - The base game is not installed in the NAND and cannot be removed. - - - - - Successfully removed the installed update. - - - - - There is no update installed for this title. - - - - - There are no DLC installed for this title. - Tidak ada DLC yang terinstall untuk judul ini. - - - - Successfully removed %1 installed DLC. - - - - - Delete OpenGL Transferable Shader Cache? - - - - - Delete Vulkan Transferable Shader Cache? - - - - - Delete All Transferable Shader Caches? - - - - - Remove Custom Game Configuration? - - - - - Remove Cache Storage? - - - - - Remove File - Hapus File - - - - Remove Play Time Data - - - - - Reset play time? - - - - - - Error Removing Transferable Shader Cache - Kesalahan Menghapus Transferable Shader Cache - - - - - A shader cache for this title does not exist. - Cache shader bagi judul ini tidak ada - - - - Successfully removed the transferable shader cache. - - - - - Failed to remove the transferable shader cache. - - - - - Error Removing Vulkan Driver Pipeline Cache - - - - - Failed to remove the driver pipeline cache. - - - - - - Error Removing Transferable Shader Caches - - - - - Successfully removed the transferable shader caches. - - - - - Failed to remove the transferable shader cache directory. - - - - - - Error Removing Custom Configuration - Kesalahan Menghapus Konfigurasi Buatan - - - - A custom configuration for this title does not exist. - - - - - Successfully removed the custom game configuration. - - - - - Failed to remove the custom game configuration. - - - - - - RomFS Extraction Failed! - Pengekstrakan RomFS Gagal! - - - - There was an error copying the RomFS files or the user cancelled the operation. - Terjadi kesalahan ketika menyalin berkas RomFS atau dibatalkan oleh pengguna. - - - - Full - Penuh - - - - Skeleton - Skeleton - - - - Select RomFS Dump Mode - Pilih Mode Dump RomFS - - - - Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. - Mohon pilih cara RomFS akan di-dump.<br>FPenuh akan menyalin seluruh berkas ke dalam direktori baru sementara <br>jerangkong hanya akan menciptakan struktur direktorinya saja. - - - - There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root - - - - - Extracting RomFS... - Mengekstrak RomFS... - - - - - - - - Cancel - Batal - - - - RomFS Extraction Succeeded! - Pengekstrakan RomFS Berhasil! - - - - - - The operation completed successfully. - Operasi selesai dengan sukses, - - - - Integrity verification couldn't be performed! - - - - - File contents were not checked for validity. - - - - - - Verifying integrity... - - - - - - Integrity verification succeeded! - Berhasil - - - - - Integrity verification failed! - Gagal - - - - File contents may be corrupt. - - - - - - - - Create Shortcut - Buat Pintasan - - - - Do you want to launch the game in fullscreen? - - - - - Successfully created a shortcut to %1 - - - - - This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - - - - - Failed to create a shortcut to %1 - - - - - Create Icon - Buat ikon - - - - Cannot create icon file. Path "%1" does not exist and cannot be created. - - - - - Error Opening %1 - Gagal membuka %1 - - - - Select Directory - Pilih Direktori - - - - Properties - Properti - - - - The game properties could not be loaded. - Properti permainan tak dapat dimuat. - - - - Switch Executable (%1);;All Files (*.*) - %1 is an identifier for the Switch executable file extensions. - Eksekutabel Switch (%1);;Semua Berkas (*.*) - - - - Load File - Muat Berkas - - - - Open Extracted ROM Directory - Buka Direktori ROM Terekstrak - - - - Invalid Directory Selected - Direktori Terpilih Tidak Sah - - - - The directory you have selected does not contain a 'main' file. - Direktori yang Anda pilih tak memiliki berkas 'utama.' - - - - Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - - - - - Install Files - Install File - - - - %n file(s) remaining - - - - - - - Installing file "%1"... - Memasang berkas "%1"... - - - - - Install Results - Hasil Install - - - - To avoid possible conflicts, we discourage users from installing base games to the NAND. -Please, only use this feature to install updates and DLC. - - - - - %n file(s) were newly installed - - - %n file(s) baru diinstall - - - - - - %n file(s) were overwritten - - - %n file(s) telah ditimpa - - - - - - %n file(s) failed to install - - - %n file(s) gagal di install - - - - - - System Application - Aplikasi Sistem - - - - System Archive - Arsip Sistem - - - - System Application Update - Pembaruan Aplikasi Sistem - - - - Firmware Package (Type A) - Paket Perangkat Tegar (Tipe A) - - - - Firmware Package (Type B) - Paket Perangkat Tegar (Tipe B) - - - - Game - Permainan - - - - Game Update - Pembaruan Permainan - - - - Game DLC - DLC Permainan - - - - Delta Title - Judul Delta - - - - Select NCA Install Type... - Pilih Tipe Pemasangan NCA... - - - - Please select the type of title you would like to install this NCA as: -(In most instances, the default 'Game' is fine.) - Mohon pilih jenis judul yang Anda ingin pasang sebagai NCA ini: -(Dalam kebanyakan kasus, pilihan bawaan 'Permainan' tidak apa-apa`.) - - - - Failed to Install - Gagal Memasang - - - - The title type you selected for the NCA is invalid. - Jenis judul yang Anda pilih untuk NCA tidak sah. - - - - File not found - Berkas tak ditemukan - - - - File "%1" not found - Berkas "%1" tak ditemukan - - - - OK - OK - - - - - Hardware requirements not met - - - - - - Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled. - - - - - Missing yuzu Account - Akun yuzu Hilang - - - - In order to submit a game compatibility test case, you must link your eden account.<br><br/>To link your eden account, go to Emulation &gt; Configuration &gt; Web. - - - - - Install decryption keys and restart eden before attempting to install firmware. - - - - - Firmware installation cancelled, firmware may be in bad state, restart eden or re-install firmware. - - - - - Encryption keys are missing. - - - - - Are you sure you want to close eden? - - - - - - - eden - - - - - The currently running application has requested eden to not exit. - -Would you like to bypass this and exit anyway? - - - - In order to submit a game compatibility test case, you must link your yuzu account.<br><br/>To link your yuzu account, go to Emulation &gt; Configuration &gt; Web. - Agar dapat mengirimkan berkas uju kompatibilitas permainan, Anda harus menautkan akun yuzu Anda.<br><br/>TUntuk mennautkan akun yuzu Anda, pergi ke Emulasi &gt; Konfigurasi &gt; Web. - - - - Error opening URL - Kesalahan saat membuka URL - - - - Unable to open the URL "%1". - Tidak dapat membuka URL "%1". - - - - TAS Recording - Rekaman TAS - - - - Overwrite file of player 1? - Timpa file pemain 1? - - - - Invalid config detected - Konfigurasi tidak sah terdeteksi - - - - Handheld controller can't be used on docked mode. Pro controller will be selected. - Kontroller jinjing tidak bisa digunakan dalam mode dock. Kontroller Pro akan dipilih - - - - - Amiibo - - - - - - The current amiibo has been removed - - - - - Error - Kesalahan - - - - - The current game is not looking for amiibos - - - - - Amiibo File (%1);; All Files (*.*) - Berkas Amiibo (%1);; Semua Berkas (*.*) - - - - Load Amiibo - Muat Amiibo - - - - Error loading Amiibo data - Gagal memuat data Amiibo - - - - The selected file is not a valid amiibo - - - - - The selected file is already on use - - - - - An unknown error occurred - - - - - - Verification failed for the following files: - -%1 - - - - - Keys not installed - - - - - Select Dumped Firmware Source Location - - - - - Installing Firmware... - - - - - - - - Firmware install failed - - - - - Unable to locate potential firmware NCA files - - - - - Failed to delete one or more firmware file. - - - - - One or more firmware files failed to copy into NAND. - - - - - Firmware integrity verification failed! - - - - - Select Dumped Keys Location - - - - - - - Decryption Keys install failed - - - - - prod.keys is a required decryption key file. - - - - - One or more keys failed to copy. - - - - - Decryption Keys install succeeded - - - - - Decryption Keys were successfully installed - - - - - Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. - - - - - - - - - - - No firmware available - - - - - Please install the firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Controller Menu. - - - - - Controller Applet - - - - - Controller Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Home Menu. - - - - - - Home Menu Applet - - - - - - Home Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use Starter. - - - - - Starter Applet - - - - - Starter is not available. Please reinstall firmware. - - - - - Please install firmware to use the home menu. - - - - - Capture Screenshot - Tangkapan Layar - - - - PNG Image (*.png) - Berkas PNG (*.png) - - - - Update Available - - - - - Update %1 for Eden is available. -Would you like to download it? - - - - - TAS state: Running %1/%2 - Status TAS: Berjalan %1/%2 - - - - TAS state: Recording %1 - Status TAS: Merekam %1 - - - - TAS state: Idle %1/%2 - Status TAS: Diam %1/%2 - - - - TAS State: Invalid - Status TAS: Tidak Valid - - - - &Stop Running - &Matikan - - - - &Start - &Mulai - - - - Stop R&ecording - Berhenti Mer&ekam - - - - R&ecord - R&ekam - - - - Building: %n shader(s) - - Membangun: %n shader(s) - - - - - Scale: %1x - %1 is the resolution scaling factor - Skala: %1x - - - - Speed: %1% / %2% - Kecepatan: %1% / %2% - - - - Speed: %1% - Kecepatan: %1% - - - - Game: %1 FPS - Permainan: %1 FPS - - - - Frame: %1 ms - Frame: %1 ms - - - - %1 %2 - %1 %2 - - - - - FSR - FSR - - - - NO AA - TANPA AA - - - - VOLUME: MUTE - VOLUME : SENYAP - - - - VOLUME: %1% - Volume percentage (e.g. 50%) - - - - - Derivation Components Missing - - - - - Select RomFS Dump Target - Pilih Target Dump RomFS - - - - Please select which RomFS you would like to dump. - Silahkan pilih jenis RomFS yang ingin Anda buang. - - - Are you sure you want to close yuzu? - Apakah anda yakin ingin menutup yuzu? - - - yuzu - yuzu - - - - Are you sure you want to stop the emulation? Any unsaved progress will be lost. - Apakah Anda yakin untuk menghentikan emulasi? Setiap progres yang tidak tersimpan akan hilang. - - - - None - Tak ada - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Nearest - Terdekat - - - - Bilinear - Biliner - - - - Bicubic - Bikubik - - - - Gaussian - Gaussian - - - - ScaleForce - ScaleForce - - - - Area - - - - - Docked - Terpasang - - - - Handheld - Jinjing - - - - Normal - Normal - - - - High - Tinggi - - - - Extreme - Ekstrim - - - - Vulkan - Vulkan - - - - OpenGL - OpenGL - - - - Null - Null - - - - GLSL - GLSL - - - - GLASM - - - - - SPIRV - + GRenderWindow - - + + OpenGL not available! OpenGL tidak tersedia! - + OpenGL shared contexts are not supported. - + - - eden has not been compiled with OpenGL support. - + + Eden has not been compiled with OpenGL support. + - - + + Error while initializing OpenGL! Terjadi kesalahan menginisialisasi OpenGL! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. VGA anda mungkin tidak mendukung OpenGL, atau anda tidak memiliki pemacu piranti (driver) grafis terbaharu. - + Error while initializing OpenGL 4.6! Terjadi kesalahan menginisialisasi OpenGL 4.6! - + Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 VGA anda mungkin tidak mendukung OpenGL 4.6, atau anda tidak memiliki pemacu piranti (driver) grafis terbaharu.<br><br>Pemuat GL:<br>%1 - + Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2 VGA anda mungkin tidak mendukung satu atau lebih ekstensi OpenGL. Mohon pastikan bahwa anda memiliki pemacu piranti (driver) grafis terbaharu.<br><br>Pemuat GL:<br>%1<br><br>Ekstensi yang tidak didukung:<br>%2 @@ -6952,255 +6055,271 @@ Would you like to download it? GameList - + + &Add New Game Directory + + + + Favorite Favorit - + Start Game Mulai permainan - + Start Game without Custom Configuration - + - + Open Save Data Location Buka Lokasi Data Penyimpanan - + Open Mod Data Location Buka Lokasi Data Mod - + Open Transferable Pipeline Cache - + - + + Link to Ryujinx + + + + Remove Singkirkan - + Remove Installed Update - + - + Remove All Installed DLC - + - + Remove Custom Configuration - + - - Remove Play Time Data - - - - + Remove Cache Storage - + - + Remove OpenGL Pipeline Cache - + - + Remove Vulkan Pipeline Cache - + - + Remove All Pipeline Caches - + - + Remove All Installed Contents Hapus semua konten terinstall. - - + + Manage Play Time + + + + + Edit Play Time Data + + + + + Remove Play Time Data + + + + + Dump RomFS Dump RomFS - + Dump RomFS to SDMC - + - + Verify Integrity - + - + Copy Title ID to Clipboard Salin Judul ID ke Clipboard. - + Navigate to GameDB entry Pindah ke tampilan GameDB - + Create Shortcut Buat pintasan - + Add to Desktop Menambahkan ke Desktop - + Add to Applications Menu - + - + Configure Game - + - Properties - Properti - - - + Scan Subfolders Memindai subfolder - + Remove Game Directory - + - + ▲ Move Up - + - + ▼ Move Down - + - + Open Directory Location Buka Lokasi Direktori - + Clear Bersihkan - + Name Nama - + Compatibility Kompatibilitas - + Add-ons Pengaya (Add-On) - + File type Tipe berkas - + Size Ukuran - + Play time - + GameListItemCompat - + Ingame - + - + Game starts, but crashes or major glitches prevent it from being completed. - + - + Perfect Sempurna - + Game can be played without issues. Permainan dapat dimainkan tanpa kendala. - + Playable - + - + Game functions with minor graphical or audio glitches and is playable from start to finish. - + - + Intro/Menu Awal/Menu - + Game loads, but is unable to progress past the Start Screen. - + - + Won't Boot Tidak Akan Berjalan - + The game crashes when attempting to startup. Gim rusak saat mencoba untuk memulai. - + Not Tested Belum dites - + The game has not yet been tested. Gim belum pernah dites. @@ -7208,7 +6327,7 @@ Would you like to download it? GameListPlaceholder - + Double-click to add a new folder to the game list Klik dua kali untuk menambahkan folder sebagai daftar permainan. @@ -7216,19 +6335,17 @@ Would you like to download it? GameListSearchField - + %1 of %n result(s) - - - + - + Filter: - + - + Enter pattern to filter Masukkan pola untuk memfilter @@ -7248,12 +6365,12 @@ Would you like to download it? Preferred Game - + Max Players - + @@ -7263,7 +6380,7 @@ Would you like to download it? (Leave blank for open game) - + @@ -7273,7 +6390,7 @@ Would you like to download it? Port - + @@ -7283,244 +6400,262 @@ Would you like to download it? Load Previous Ban List - + Public - + Unlisted - + Host Room - + HostRoomWindow - + Error Kesalahan - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. + + Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid Eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. Debug Message: - + Hotkeys - + Audio Mute/Unmute - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Main Window - + - + Audio Volume Down - + - + Audio Volume Up - + - + Capture Screenshot Tangkapan Layar - + Change Adapting Filter - + - + Change Docked Mode - + - - Change GPU Accuracy - + + Change GPU Mode + - + Configure - Konfigurasi + - + Configure Current Game - + - + Continue/Pause Emulation - + - + Exit Fullscreen - + - - Exit eden - + + Exit Eden + - + Fullscreen - + - + Load File Muat Berkas - + Load/Remove Amiibo - + - - Multiplayer Browse Public Game Lobby - + + Browse Public Game Lobby + - - Multiplayer Create Room - + + Create Room + - - Multiplayer Direct Connect to Room - + + Direct Connect to Room + - - Multiplayer Leave Room - + + Leave Room + - - Multiplayer Show Current Room - + + Show Current Room + - + Restart Emulation - + - + Stop Emulation - + - + TAS Record - + - + TAS Reset - + - + TAS Start/Stop - + - + Toggle Filter Bar - + - + Toggle Framerate Limit - + - + + Toggle Turbo Speed + + + + + Toggle Slow Speed + + + + Toggle Mouse Panning - + - + Toggle Renderdoc Capture - + - + Toggle Status Bar - + + + + + Toggle Performance Overlay + InstallDialog - - - Please confirm these are the files you wish to install. - - - Installing an Update or DLC will overwrite the previously installed one. - + Please confirm these are the files you wish to install. + - + + Installing an Update or DLC will overwrite the previously installed one. + + + + Install Install - + Install Files to NAND Install File ke NAND @@ -7528,10 +6663,10 @@ Debug Message: LimitableInputDialog - - The text can't contain any of the following characters: + + The text can't contain any of the following characters: %1 - + @@ -7539,12 +6674,12 @@ Debug Message: Loading Shaders 387 / 1628 - + Loading Shaders %v out of %m - + @@ -7552,24 +6687,24 @@ Debug Message: Waktu yang diperlukan 5m 4d - + Loading... Memuat... - + Loading Shaders %1 / %2 - + - + Launching... Memulai... - + Estimated Time %1 - + @@ -7577,18 +6712,18 @@ Debug Message: Public Room Browser - + Nickname - + Filters - + @@ -7598,62 +6733,62 @@ Debug Message: Games I Own - + Hide Empty Rooms - + Hide Full Rooms - + Refresh Lobby - + - + Password Required to Join Kata sandi diperlukan untuk bergabung - + Password: Kata sandi - + Players Pemain - + Room Name Nama Ruang - + Preferred Game - + - + Host - + - + Refreshing - + - + Refresh List - + @@ -7666,362 +6801,1432 @@ Debug Message: &File - + &Recent Files - + - + + Open &Eden Folders + + + + &Emulation &Emulasi - + &View - - - - - &Reset Window Size - - - - - &Debugging - + + &Reset Window Size + + + + + &Debugging + + + + + &Game List Mode + + + + + Game &Icon Size + + + + Reset Window Size to &720p Atur ulang ukuran bingkai ke &720p - + Reset Window Size to 720p Atur ulang ukuran bingkai ke 720p - + Reset Window Size to &900p Atur ulang ukuran bingkai ke &900p - + Reset Window Size to 900p Atur ulang ukuran bingkai ke 900p - + Reset Window Size to &1080p - + - + Reset Window Size to 1080p - + - + &Multiplayer - + - + &Tools - + - - &Amiibo - + + Am&iibo + - + + Launch &Applet + + + + &TAS - + - + &Create Home Menu Shortcut - + - + + Install &Firmware + + + + &Help - + - + &Install Files to NAND... - + - + L&oad File... - + - + Load &Folder... - + - + E&xit - + - + + &Pause &Jeda - + &Stop - + - + &Verify Installed Contents - + - - &About eden - + + &About Eden + - - Open &eden Folder - - - - - Open Home Menu - - - - - &Discord - - - - - Open &Setup - - - - - &Desktop - - - - - &Application Menu - - - - + Single &Window Mode - + - + Con&figure... - + - + Ctrl+, - + - - Display D&ock Widget Headers - + + Enable Overlay Display Applet + - + Show &Filter Bar - + - + Show &Status Bar - + - + Show Status Bar Munculkan Status Bar - + &Browse Public Game Lobby - + - + &Create Room - + - + &Leave Room - + - + &Direct Connect to Room - + - + &Show Current Room - + - + F&ullscreen - + - + &Restart - + - + Load/Remove &Amiibo... - + - + &Report Compatibility - + - + Open &Mods Page - + - + Open &Quickstart Guide Buka %Panduan cepat - + &FAQ - + - + &Capture Screenshot - + - - Open &Album - + + &Album + - + &Set Nickname and Owner - + - + &Delete Game Data - + - + &Restore Amiibo - + - + &Format Amiibo - + - - Open &Mii Editor - + + &Mii Editor + - + &Configure TAS... - + - + Configure C&urrent Game... - + - + + &Start &Mulai - + &Reset - + - + + R&ecord R&ekam - + Open &Controller Menu - + - - Install Firmware - + + Install Decryption &Keys + - - Install Decryption Keys - + + &Home Menu + - - - MicroProfileDialog - - &MicroProfile - + + &Desktop + + + + + &Application Menu + + + + + &Root Data Folder + + + + + &NAND Folder + + + + + &SDMC Folder + + + + + &Mod Folder + + + + + &Log Folder + + + + + From Folder + + + + + From ZIP + + + + + &Eden Dependencies + + + + + &Data Manager + + + + + &Tree View + + + + + &Grid View + + + + + Game Icon Size + + + + + + + None + + + + + Show Game &Name + + + + + Show &Performance Overlay + + + + + Small (32x32) + + + + + Standard (64x64) + + + + + Large (128x128) + + + + + Full Size (256x256) + + + + + Broken Vulkan Installation Detected + + + + + Vulkan initialization failed during boot. + + + + + Running a game + TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping + + + + + Loading Web Applet... + + + + + + Disable Web Applet + + + + + 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.) + + + + + The amount of shaders currently being built + + + + + The current selected resolution scaling multiplier. + + + + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. + + + + + How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. + + + + + 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. + + + + + Unmute + + + + + Mute + + + + + Reset Volume + + + + + &Clear Recent Files + + + + + &Continue + + + + + Warning: Outdated Game Format + + + + + 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.<br>For an explanation of the various Switch formats Eden supports, out our user handbook. This message will not be shown again. + + + + + + Error while loading ROM! + + + + + The ROM format is not supported. + + + + + An error occurred initializing the video core. + + + + + Eden 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: <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>How to Upload the Log File</a>. + + + + + Error while loading ROM! %1 + %1 signifies a numeric error code. + + + + + %1<br>Please redump your files or ask on Discord/Stoat for help. + %1 signifies an error string. + + + + + An unknown error occurred. Please see the log for more details. + + + + + (64-bit) + + + + + (32-bit) + + + + + %1 %2 + %1 is the title name. %2 indicates if the title is 64-bit or 32-bit + + + + + Closing software... + + + + + Save Data + + + + + Mod Data + + + + + Error Opening %1 Folder + + + + + + Folder does not exist! + + + + + Remove Installed Game Contents? + + + + + Remove Installed Game Update? + + + + + Remove Installed Game DLC? + + + + + Remove Entry + + + + + Delete OpenGL Transferable Shader Cache? + + + + + Delete Vulkan Transferable Shader Cache? + + + + + Delete All Transferable Shader Caches? + + + + + Remove Custom Game Configuration? + + + + + Remove Cache Storage? + + + + + Remove File + + + + + Remove Play Time Data + + + + + Reset play time? + + + + + + RomFS Extraction Failed! + + + + + There was an error copying the RomFS files or the user cancelled the operation. + + + + + Full + + + + + Skeleton + + + + + Select RomFS Dump Mode + + + + + Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. + + + + + There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root + + + + + Extracting RomFS... + + + + + + Cancel + + + + + RomFS Extraction Succeeded! + + + + + The operation completed successfully. + + + + + Error Opening %1 + + + + + Select Directory + + + + + Properties + + + + + The game properties could not be loaded. + + + + + Switch Executable (%1);;All Files (*.*) + %1 is an identifier for the Switch executable file extensions. + + + + + Load File + + + + + Open Extracted ROM Directory + + + + + Invalid Directory Selected + + + + + The directory you have selected does not contain a 'main' file. + + + + + Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) + + + + + Install Files + + + + + %n file(s) remaining + + + + + Installing file "%1"... + + + + + + Install Results + + + + + To avoid possible conflicts, we discourage users from installing base games to the NAND. +Please, only use this feature to install updates and DLC. + + + + + %n file(s) were newly installed + + + + + + %n file(s) were overwritten + + + + + + %n file(s) failed to install + + + + + + System Application + + + + + System Archive + + + + + System Application Update + + + + + Firmware Package (Type A) + + + + + Firmware Package (Type B) + + + + + Game + + + + + Game Update + + + + + Game DLC + + + + + Delta Title + + + + + Select NCA Install Type... + + + + + Please select the type of title you would like to install this NCA as: +(In most instances, the default 'Game' is fine.) + + + + + Failed to Install + + + + + The title type you selected for the NCA is invalid. + + + + + File not found + + + + + File "%1" not found + + + + + OK + + + + + Function Disabled + + + + + Compatibility list reporting is currently disabled. Check back later! + + + + + Error opening URL + + + + + Unable to open the URL "%1". + + + + + TAS Recording + + + + + Overwrite file of player 1? + + + + + Invalid config detected + + + + + Handheld controller can't be used on docked mode. Pro controller will be selected. + + + + + + Amiibo + + + + + + The current amiibo has been removed + + + + + Error + + + + + + The current game is not looking for amiibos + + + + + Amiibo File (%1);; All Files (*.*) + + + + + Load Amiibo + + + + + Error loading Amiibo data + + + + + The selected file is not a valid amiibo + + + + + The selected file is already on use + + + + + An unknown error occurred + + + + + + Keys not installed + + + + + + Install decryption keys and restart Eden before attempting to install firmware. + + + + + Select Dumped Firmware Source Location + + + + + Select Dumped Firmware ZIP + + + + + Zipped Archives (*.zip) + + + + + Firmware cleanup failed + + + + + Failed to clean up extracted firmware cache. +Check write permissions in the system temp directory and try again. +OS reported error: %1 + + + + + No firmware available + + + + + Firmware Corrupted + + + + + Unknown applet + + + + + Applet doesn't map to a known value. + + + + + Record not found + + + + + Applet not found. Please reinstall firmware. + + + + + Capture Screenshot + + + + + PNG Image (*.png) + + + + + Update Available + + + + + Download %1? + + + + + TAS state: Running %1/%2 + + + + + TAS state: Recording %1 + + + + + TAS state: Idle %1/%2 + + + + + TAS State: Invalid + + + + + &Stop Running + + + + + Stop R&ecording + + + + + Building: %n shader(s) + + + + + Scale: %1x + %1 is the resolution scaling factor + + + + + Speed: %1% / %2% + + + + + Speed: %1% + + + + + Game: %1 FPS + + + + + Frame: %1 ms + + + + + + FSR + + + + + NO AA + + + + + VOLUME: MUTE + + + + + VOLUME: %1% + Volume percentage (e.g. 50%) + + + + + Derivation Components Missing + + + + + Decryption keys are missing. Install them now? + + + + + Wayland Detected! + + + + + Wayland is known to have significant performance issues and mysterious bugs. +It's recommended to use X11 instead. + +Would you like to force it for future launches? + + + + + Use X11 + + + + + Continue with Wayland + + + + + Don't show again + + + + + Restart Required + + + + + Restart Eden to apply the X11 backend. + + + + + Slow + + + + + Turbo + + + + + Unlocked + + + + + Select RomFS Dump Target + + + + + Please select which RomFS you would like to dump. + + + + + Are you sure you want to close Eden? + + + + + + + Eden + + + + + Are you sure you want to stop the emulation? Any unsaved progress will be lost. + + + + + The currently running application has requested Eden to not exit. + +Would you like to bypass this and exit anyway? + + + + + FXAA + + + + + SMAA + + + + + Nearest + + + + + Bilinear + + + + + Bicubic + + + + + Zero-Tangent + + + + + B-Spline + + + + + Mitchell + + + + + Spline-1 + + + + + Gaussian + + + + + Lanczos + + + + + ScaleForce + + + + + Area + + + + + MMPX + + + + + Docked + + + + + Handheld + + + + + Fast + + + + + Balanced + + + + + Accurate + + + + + Vulkan + + + + + OpenGL GLSL + + + + + OpenGL SPIRV + + + + + OpenGL GLASM + + + + + Null + MigrationWorker - - Data was migrated successfully. - - - - + Linking the old directory failed. You may need to re-run with administrative privileges on Windows. OS gave error: %1 - + - + + + +Note that your configuration and data will be shared with %1. +If this is not desirable, delete the following files: +%2 +%3 +%4 + + + + If you wish to clean up the files which were left in the old data location, you can do so by deleting the following directory: %1 - + + + + + Data was migrated successfully. + + + + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + @@ -8029,87 +8234,87 @@ If you wish to clean up the files which were left in the old data location, you Moderation - + Ban List - + - + Refreshing - + Unban - + + + + + Subject + - Subject - - - - Type - + - + Forum Username - + - + IP Address Alamat IP - + Refresh - + MultiplayerState - + Current connection status - + - + Not Connected. Click here to find a room! - + - + Not Connected - + - + Connected Terhubung - + New Messages Received Pesan baru diterima - + Error Kesalahan - + Failed to update the room information. Please check your Internet connection and try hosting the room again. Debug Message: - + @@ -8123,7 +8328,7 @@ Debug Message: Joining a room when the game is already running is discouraged and can cause the room feature not to work correctly. Proceed anyway? - + @@ -8133,24 +8338,146 @@ Proceed anyway? You are about to close the room. Any network connections will be closed. - + Disconnect - + You are about to leave the room. Any network connections will be closed. - + - NetworkMessage::ErrorManager + NewUserDialog - Error - Kesalahan + + + New User + + + + + Change Avatar + + + + + Set Image + + + + + UUID + + + + + Eden + + + + + Username + + + + + UUID must be 32 hex characters (0-9, A-F) + + + + + Generate + + + + + Select User Image + + + + + Image Formats (*.jpg *.jpeg *.png *.bmp) + + + + + No firmware available + + + + + Please install the firmware to use firmware avatars. + + + + + + Error loading archive + + + + + Archive is not available. Please install/reinstall firmware. + + + + + Could not locate RomFS. Your file or decryption keys may be corrupted. + + + + + Error extracting archive + + + + + Could not extract RomFS. Your file or decryption keys may be corrupted. + + + + + Error finding image directory + + + + + Failed to find image directory in the archive. + + + + + No images found + + + + + No avatar images were found in the archive. + + + + + + All Good + Tooltip + + + + + Must be 32 hex characters (0-9, a-f) + Tooltip + + + + + Must be between 1 and 32 characters + Tooltip + @@ -8177,468 +8504,605 @@ Proceed anyway? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - + + + + + PerformanceOverlay + + + Form + + + + + Frametime + + + + + 0 ms + + + + + + Min: 0 + + + + + + Max: 0 + + + + + + Avg: 0 + + + + + FPS + + + + + 0 fps + + + + + %1 fps + + + + + + Avg: %1 + + + + + + Min: %1 + + + + + + Max: %1 + + + + + %1 ms + PlayerControlPreview - + START/PAUSE MULAI/JEDA + + ProfileAvatarDialog + + + Select + + + + + Cancel + + + + + Background Color + + + + + Select Firmware Avatar + + + QObject - - %1 is not playing a game - + + + + Migration + - - %1 is playing %2 - + + Clear Shader Cache + - - Not playing a game - + + Keep Old Data + - - Installed SD Titles - + + Clear Old Data + - - Installed NAND Titles - + + Link Old Directory + - - System Titles - + + + + + - - Add New Game Directory - Tambahkan direktori permainan + + + No + - - Favorites - + + You can manually re-trigger this prompt by deleting the new config directory: +%1 + + + + + Migrating + + + + + Migrating, this may take a while... + - - + + Shift Ubah - - + + Ctrl Ctrl - - + + Alt Alt - - - - + + + + [not set] [belum diatur] Hat %1 %2 - + - - - - - - - - + + + + + + + + Axis %1%2 - + Button %1 - + - - - - - - + + + + + + [unknown] [tidak diketahui] - - - + + + Left Kiri - - - + + + Right Kanan - - - + + + Down Bawah - - - + + + Up Atas - - + + Z Z - - + + R R - - + + L L - - + + A A - - + + B B - - + + X X - - + + Y Y - - + + Start Mulai - - + + L1 L1 - - + + L2 L2 - - + + L3 L3 - - + + R1 R1 - - + + R2 R2 - - + + R3 R3 - - + + Circle O - - + + Cross X - - + + Square - - + + Triangle - - + + Share - + - - + + Options Opsi - - + + [undefined] - + - + %1%2 - + - - + + [invalid] - + - - - %1%2Hat %3 - - - - - + + %1%2Hat %3 + + + + + + %1%2Axis %3 - + - - + + %1%2Axis %3,%4,%5 - + - - + + %1%2Motion %3 %1%2Gerakan %3 - - + + %1%2Button %3 - + - - + + [unused] - + - + ZR ZR - + ZL ZL - + SR SR - + SL SL - + Stick L Stik Analog Kiri - + Stick R Stik Analog Kanan - + Plus Tambah - + Minus Kurang - - + + Home Home - + Capture Tangkapan - + Touch Sentuh - + Wheel Indicates the mouse wheel - + - + Backward - + - + Forward - + - + Task - + - + Extra - + - + %1%2%3%4 - + - - + + %1%2%3Hat %4 - + - - + + %1%2%3Axis %4 - + - - + + %1%2%3Button %4 - + - - - - Migration - + + Not playing a game + - - - - - + + %1 is not playing a game + - - - No - + + %1 is playing %2 + - - You can manually re-trigger this prompt by deleting the new config directory: -%1 - + + Play Time: %1 + - - Migrating - + + Never Played + - - Migrating, this may take a while... - + + Version: %1 + + + + + Version: 1.0.0 + + + + + Installed SD Titles + + + + + Installed NAND Titles + + + + + System Titles + + + + + Add New Game Directory + Tambahkan direktori permainan + + + + Favorites + @@ -8646,22 +9110,22 @@ p, li { white-space: pre-wrap; } Amiibo Settings - + Amiibo Info - + Series - + Type - + @@ -8671,52 +9135,52 @@ p, li { white-space: pre-wrap; } Amiibo Data - + Custom Name - + Owner - + Creation Date - + dd/MM/yyyy - + Modification Date - + dd/MM/yyyy - + Game Data - + Game Id - + Mount Amiibo - + @@ -8726,32 +9190,818 @@ p, li { white-space: pre-wrap; } File Path - + - + No game data present - - - - - The following amiibo data will be formatted: - + - The following game data will removed: - + The following amiibo data will be formatted: + - Set nickname and owner: - + The following game data will removed: + + Set nickname and owner: + + + + Do you wish to restore this amiibo? - + + + + + QtCommon::Content + + + Game Requires Firmware + + + + + The game you are trying to launch requires firmware to boot or to get past the opening menu. Please <a href='https://yuzu-mirror.github.io/help/quickstart'>dump and install firmware</a>, or press "OK" to launch anyways. + + + + + Installing Firmware... + + + + + + + + + Cancel + + + + + Firmware Install Failed + + + + + Firmware Install Succeeded + + + + + Firmware integrity verification failed! + + + + + + Verification failed for the following files: + +%1 + + + + + + Verifying integrity... + + + + + + Integrity verification succeeded! + + + + + + The operation completed successfully. + + + + + + Integrity verification failed! + + + + + File contents may be corrupt or missing. + + + + + Integrity verification couldn't be performed + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity. + + + + + Select Dumped Keys Location + + + + + Decryption Keys install succeeded + + + + + Decryption Keys install failed + + + + + Orphaned Profiles Detected! + + + + + UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br> + + + + + Really clear data? + + + + + Important data may be lost! + + + + + Are you REALLY sure? + + + + + Once deleted, your data will NOT come back! +Only do this if you're 100% sure you want to delete this data. + + + + + Clearing... + + + + + Select Export Location + + + + + %1.zip + + + + + + Zipped Archives (*.zip) + + + + + Exporting data. This may take a while... + + + + + Exporting + + + + + Exported Successfully + + + + + Data was exported successfully. + + + + + Export Cancelled + + + + + Export was cancelled by the user. + + + + + Export Failed + + + + + Ensure you have write permissions on the targeted directory and try again. + + + + + Select Import Location + + + + + Import Warning + + + + + All previous data in this directory will be deleted. Are you sure you wish to proceed? + + + + + Importing data. This may take a while... + + + + + Importing + + + + + Imported Successfully + + + + + Data was imported successfully. + + + + + Import Cancelled + + + + + Import was cancelled by the user. + + + + + Import Failed + + + + + Ensure you have read permissions on the targeted directory and try again. + + + + + QtCommon::FS + + + Linked Save Data + + + + + Save data has been linked. + + + + + Failed to link save data + + + + + Could not link directory: + %1 +To: + %2 + + + + + Already Linked + + + + + This title is already linked to Ryujinx. Would you like to unlink it? + + + + + Failed to unlink old directory + + + + + + OS returned error: %1 + + + + + Failed to copy save data + + + + + Unlink Successful + + + + + Successfully unlinked Ryujinx save data. Save data has been kept intact. + + + + + Could not find Ryujinx installation + + + + + Could not find a valid Ryujinx installation. This may typically occur if you are using Ryujinx in portable mode. + +Would you like to manually select a portable folder to use? + + + + + Ryujinx Portable Location + + + + + Not a valid Ryujinx directory + + + + + The specified directory does not contain valid Ryujinx data. + + + + + + Could not find Ryujinx save data + + + + + QtCommon::Game + + + Error Removing Contents + + + + + Error Removing Update + + + + + Error Removing DLC + + + + + + + + + + Successfully Removed + + + + + Successfully removed the installed base game. + + + + + The base game is not installed in the NAND and cannot be removed. + + + + + Successfully removed the installed update. + + + + + There is no update installed for this title. + + + + + There are no DLCs installed for this title. + + + + + Successfully removed %1 installed DLC. + + + + + + Error Removing Transferable Shader Cache + + + + + + A shader cache for this title does not exist. + + + + + Successfully removed the transferable shader cache. + + + + + Failed to remove the transferable shader cache. + + + + + Error Removing Vulkan Driver Pipeline Cache + + + + + Failed to remove the driver pipeline cache. + + + + + + Error Removing Transferable Shader Caches + + + + + Successfully removed the transferable shader caches. + + + + + Failed to remove the transferable shader cache directory. + + + + + + Error Removing Custom Configuration + + + + + A custom configuration for this title does not exist. + + + + + Successfully removed the custom game configuration. + + + + + Failed to remove the custom game configuration. + + + + + Reset Metadata Cache + + + + + The metadata cache is already empty. + + + + + The operation completed successfully. + + + + + The metadata cache couldn't be deleted. It might be in use or non-existent. + + + + + Create Shortcut + + + + + Do you want to launch the game in fullscreen? + + + + + Shortcut Created + + + + + Successfully created a shortcut to %1 + + + + + Shortcut may be Volatile! + + + + + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? + + + + + Failed to Create Shortcut + + + + + Failed to create a shortcut to %1 + + + + + Create Icon + + + + + Cannot create icon file. Path "%1" does not exist and cannot be created. + + + + + No firmware available + + + + + Please install firmware to use the home menu. + + + + + Home Menu Applet + + + + + Home Menu is not available. Please reinstall firmware. + + + + + QtCommon::Mod + + + Mod Name + + + + + What should this mod be called? + + + + + RomFS + + + + + ExeFS/Patch + + + + + Cheat + + + + + Mod Type + + + + + Could not detect mod type automatically. Please manually specify the type of mod you downloaded. + +Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods. + + + + + + Mod Extract Failed + + + + + Failed to create temporary directory %1 + + + + + Zip file %1 is empty + + + + + QtCommon::Path + + + Error Opening Shader Cache + + + + + Failed to create or open shader cache for this title, ensure your app data directory has write permissions. + + + + + QtCommon::StringLookup + + + Contains game save data. DO NOT REMOVE UNLESS YOU KNOW WHAT YOU'RE DOING! + + + + + Contains Vulkan and OpenGL pipeline caches. Generally safe to remove. + + + + + Contains updates and DLC for games. + + + + + Contains firmware and applet data. + + + + + Contains game mods, patches, and cheats. + + + + + Decryption Keys were successfully installed + + + + + Unable to read key directory, aborting + + + + + One or more keys failed to copy. + + + + + Verify your keys file has a .keys extension and try again. + + + + + Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. + + + + + Successfully installed firmware version %1 + + + + + Unable to locate potential firmware NCA files + + + + + Failed to delete one or more firmware files. + + + + + One or more firmware files failed to copy into NAND. + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. Restart Eden or re-install firmware. + + + + + Firmware missing. Firmware is required to run certain games and use the Home Menu. + + + + + Firmware reported as present, but was unable to be read. Check for decryption keys and redump firmware if necessary. + + + + + Eden has detected user data for the following emulators: + + + + + Would you like to migrate your data for use in Eden? +Select the corresponding button to migrate data from that emulator. +This may take a while. + + + + + Clearing shader cache is recommended for all users. +Do not uncheck unless you know what you're doing. + + + + + Keeps the old data directory. This is recommended if you aren't +space-constrained and want to keep separate data for the old emulator. + + + + + Deletes the old data directory. +This is recommended on devices with space constraints. + + + + + Creates a filesystem link between the old directory and Eden directory. +This is recommended if you want to share data between emulators. + + + + + Ryujinx title database does not exist. + + + + + Invalid header on Ryujinx title database. + + + + + Invalid magic header on Ryujinx title database. + + + + + Invalid byte alignment on Ryujinx title database. + + + + + No items found in Ryujinx title database. + + + + + Title %1 not found in Ryujinx title database. + @@ -8759,27 +10009,27 @@ p, li { white-space: pre-wrap; } Controller Applet - + Supported Controller Types: - + Players: - + 1 - 8 - + P4 - + @@ -8790,7 +10040,7 @@ p, li { white-space: pre-wrap; } - + Pro Controller Kontroler Pro @@ -8803,7 +10053,7 @@ p, li { white-space: pre-wrap; } - + Dual Joycons Joycon Dual @@ -8816,7 +10066,7 @@ p, li { white-space: pre-wrap; } - + Left Joycon Joycon Kiri @@ -8829,7 +10079,7 @@ p, li { white-space: pre-wrap; } - + Right Joycon Joycon Kanan @@ -8843,49 +10093,49 @@ p, li { white-space: pre-wrap; } Use Current Config - + P2 - + P1 - + - + Handheld Jinjing P3 - + P7 - + P8 - + P5 - + P6 - + @@ -8921,7 +10171,7 @@ p, li { white-space: pre-wrap; } Create - + @@ -8976,35 +10226,35 @@ p, li { white-space: pre-wrap; } Not enough controllers - + - + GameCube Controller Kontroler GameCube - + Poke Ball Plus Poke Ball Plus - + NES Controller Kontroler NES - + SNES Controller Kontroler SNES - + N64 Controller Kontroler N64 - + Sega Genesis Sega Genesis @@ -9012,38 +10262,38 @@ p, li { white-space: pre-wrap; } QtErrorDisplay - - - + + + Error Code: %1-%2 (0x%3) - + - + An error has occurred. Please try again or contact the developer of the software. - + - + An error occurred on %1 at %2. Please try again or contact the developer of the software. - + - + An error has occurred. %1 %2 - + QtProfileSelectionDialog - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -9051,14 +10301,14 @@ Please try again or contact the developer of the software. %2 - + Users Pengguna Profile Creator - + @@ -9069,57 +10319,57 @@ Please try again or contact the developer of the software. Profile Icon Editor - + Profile Nickname Editor - + Who will receive the points? - + Who is using Nintendo eShop? - + Who is making this purchase? - + Who is posting? - + Select a user to link to a Nintendo Account. - + Change settings for which user? - + Format data for which user? - + Which user will be transferred to another console? - + Send save data for which user? - + @@ -9132,7 +10382,7 @@ Please try again or contact the developer of the software. Software Keyboard - + @@ -9144,22 +10394,62 @@ Please try again or contact the developer of the software. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - + - - + + OK OK - + Cancel Batalkan + + RyujinxDialog + + + Ryujinx Link + + + + + Linking save data to Ryujinx lets both Ryujinx and Eden reference the same save files for your games. + +By selecting "From Eden", previous save data stored in Ryujinx will be deleted, and vice versa for "From Ryujinx". + + + + + From Eden + + + + + From Ryujinx + + + + + Cancel + + + + + Failed to link save data + + + + + OS returned error: %1 + + + SequenceDialog @@ -9169,143 +10459,31 @@ p, li { white-space: pre-wrap; } - WaitTreeCallstack + SetPlayTimeDialog - - Call stack - - - - - WaitTreeSynchronizationObject - - - [%1] %2 - + + Set Play Time Data + - - waited by no thread - - - - - WaitTreeThread - - - runnable - + + Hours: + - - paused - dijeda + + Minutes: + - - sleeping - + + Seconds: + - - waiting for IPC reply - menunggu respon IPC - - - - waiting for objects - Menunggu objek - - - - waiting for condition variable - - - - - waiting for address arbiter - - - - - waiting for suspend resume - - - - - waiting - - - - - initialized - - - - - terminated - - - - - unknown - - - - - PC = 0x%1 LR = 0x%2 - - - - - ideal - - - - - core %1 - - - - - processor = %1 - - - - - affinity mask = %1 - - - - - thread id = %1 - - - - - priority = %1(current) / %2(normal) - - - - - last running ticks = %1 - - - - - WaitTreeThreadList - - - waited by thread - - - - - WaitTreeWidget - - - &Wait Tree - + + Total play time reached maximum. + diff --git a/dist/languages/it.ts b/dist/languages/it.ts index 50ac83af4c..aa18ace584 100644 --- a/dist/languages/it.ts +++ b/dist/languages/it.ts @@ -1,25 +1,15 @@ - - - + AboutDialog - - About yuzu - Informazioni su yuzu - - - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - - About eden - + About Eden + Informazioni su Eden - <html><head/><body><p><span style=" font-size:28pt;">eden</span></p></body></html> - + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> @@ -34,70 +24,57 @@ p, li { white-space: pre-wrap; } hr { height: 1px; border-width: 0; } li.unchecked::marker { content: "\2610"; } li.checked::marker { content: "\2612"; } -</style></head><body style=" font-family:'Adwaita Sans'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> - +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css"> +p, li { white-space: pre-wrap; } +hr { height: 1px; border-width: 0; } +li.unchecked::marker { content: "\2610"; } +li.checked::marker { content: "\2612"; } +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden è un emulatore open-source sperimentale di Nintendo Switch, rilasciato secondo i termini della licenza GPL v3.0 o superiore. È basato sull'emulatore yuzu, il cui sviluppo è cessato a marzo 2024. <br /><br />Questo software non dovrebbe essere usato per avviare giochi ottenuti illegalmente.</span></p></body></html> - <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">This software should not be used to play games you have not legally obtained.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu è un emulatore open-source sperimentale della Nintendo Switch rilasciato sotto licenza GPLv3.0 o superiore.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Questo software non dovrebbe essere usato per avviare videogiochi ottenuti illegalmente.</span></p></body></html> - - - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Sito web</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Codice sorgente</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributori</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licenza</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Sito web</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Codice sorgente</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributori</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licenza</span></a></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. eden is not affiliated with Nintendo in any way.</span></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; è un marchio registrato di Nintendo. yuzu non è affiliato a Nintendo in alcun modo.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. Eden is not affiliated with Nintendo in any way.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; è un marchio registrato di Nintendo. Eden non è affiliato a Nintendo in alcun modo.</span></p></body></html> CalibrationConfigurationDialog - + Communicating with the server... Comunicazione con il server in corso... - + Cancel Annulla - + Touch the top left corner <br>of your touchpad. Tocca l'angolo in alto a sinistra <br>del touchpad. - + Now touch the bottom right corner <br>of your touchpad. Ora tocca l'angolo in basso a destra <br>del touchpad. - + Configuration completed! Configurazione completata! - + OK OK @@ -120,78 +97,78 @@ p, li { white-space: pre-wrap; } Invia messaggio - + Members Membri - + %1 has joined %1 è entrato - + %1 has left %1 è uscito - + %1 has been kicked %1 è stato espulso - + %1 has been banned %1 è stato bannato - + %1 has been unbanned %1 non è più bannato - + View Profile Visualizza profilo - - + + Block Player Blocca giocatore - + When you block a player, you will no longer receive chat messages from them.<br><br>Are you sure you would like to block %1? Quando blocchi un giocatore, non riceverai più messaggi da quel giocatore.<br><br>Sei sicuro di voler bloccare %1? - + Kick Espelli - + Ban Banna - + Kick Player Espelli giocatore - + Are you sure you would like to <b>kick</b> %1? Sei sicuro di voler <b>espellere</b> %1? - + Ban Player Banna giocatore - + Are you sure you would like to <b>kick and ban</b> %1? This would ban both their forum username and their IP address. @@ -226,17 +203,17 @@ Questo bannerà sia il suo nome utente del forum che il suo indirizzo IP. ClientRoomWindow - + Connected Connesso - + Disconnected Disconnesso - + %1 - %2 (%3/%4 members) - connected %1 - %2 (%3/%4 membri) - connesso @@ -259,14 +236,10 @@ Questo bannerà sia il suo nome utente del forum che il suo indirizzo IP.Report Game Compatibility Segnala la compatibilità del gioco - - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of yuzu you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected yuzu account</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Se dovessi scegliere di inviare una segnalazione alla </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">lista di compatibilità di yuzu</span></a><span style=" font-size:10pt;">, le seguenti informazioni saranno raccolte e visualizzate sul sito: </span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Informazioni sull'hardware (CPU / GPU / sistema operativo)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Quale versione di yuzu stai utilizzando</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'account di yuzu connesso</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">eden Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of eden you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected eden account</li></ul></body></html> - + <html><head/><body><p><span style=" font-size:10pt;">Se dovessi scegliere di inviare una segnalazione alla </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">lista di compatibilità di Eden</span></a><span style=" font-size:10pt;">, le seguenti informazioni saranno raccolte e visualizzate sul sito:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Informazioni sull'hardware (CPU / GPU / sistema operativo)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">La versione di Eden in uso</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">L'account Eden connesso</li></ul></body></html> @@ -341,7 +314,7 @@ Questo bannerà sia il suo nome utente del forum che il suo indirizzo IP. None Everything is rendered as it looks on the Nintendo Switch - Nessuno Il gioco si presenta esattamente come sulla Nintendo Switch + Nessuno Il gioco si presenta esattamente come su Nintendo Switch @@ -374,22 +347,22 @@ Questo bannerà sia il suo nome utente del forum che il suo indirizzo IP.Grazie per la tua segnalazione! - + Submitting Invio in corso - + Communication error Errore di comunicazione - + An error occurred while sending the Testcase Si è verificato un errore durante l'invio della segnalazione - + Next Successivo @@ -397,1535 +370,1916 @@ Questo bannerà sia il suo nome utente del forum che il suo indirizzo IP. ConfigurationShared - + % % - + Amiibo editor - + Editor Amiibo - + Controller configuration - + Configurazione controller - + Data erase - + Cancella dati - + Error Errore - + Net connect - + Connessione Net - + Player select - + Seleziona giocatore - + Software keyboard - Tastiera Software + Tastiera software - + Mii Edit - + Modifica Mii - + Online web - + Online web - + Shop - + Negozio - + Photo viewer - + Visualizzatore foto - + Offline web - + Offline web - + Login share - + Login con account di terze parti - + Wifi web auth - + Autorizzazione Wifi web - + My page - + La mia pagina - + + Enable Overlay Applet + Abilita l'Overlay Applet + + + + Enables Horizon's built-in overlay applet. Press and hold the home button for 1 second to show it. + + + + Output Engine: Motore di output: - + Output Device: Dispositivo di output: - + Input Device: Dispositivo di input: - + Mute audio Silenzia l'audio - + Volume: Volume: - + Mute audio when in background Silenzia l'audio quando la finestra è in background - + Multicore CPU Emulation Emulazione CPU multi-core - - This option increases CPU emulation thread use from 1 to the Switch’s maximum of 4. -This is mainly a debug option and shouldn’t be disabled. - + + This option increases CPU emulation thread use from 1 to the maximum of 4. +This is mainly a debug option and shouldn't be disabled. + Quest'opzione aumenta l'utilizzo dei thread emulati della CPU da 1 ad un massimo di 4. +Si tratta di un impostazione di debug che non dovrebbe essere disabilitata. - + Memory Layout Layout di memoria - - Increases the amount of emulated RAM from the stock 4GB of the retail Switch to the developer kit's 8/6GB. -It’s doesn’t improve stability or performance and is intended to let big texture mods fit in emulated RAM. -Enabling it will increase memory use. It is not recommended to enable unless a specific game with a texture mod needs it. - + + Increases the amount of emulated RAM. +Doesn't affect performance/stability but may allow HD texture mods to load. + Aumenta la quantità di RAM emulata. +Non impatta le prestazioni/stabilità del sistema, ma potrebbe permettere il caricamento delle mod con texture ad alta definizione. - + Limit Speed Percent Percentuale di limite della velocità - - Controls the game's maximum rendering speed, but it’s up to each game if it runs faster or not. + + Controls the game's maximum rendering speed, but it's up to each game if it runs faster or not. 200% for a 30 FPS game is 60 FPS, and for a 60 FPS game it will be 120 FPS. Disabling it means unlocking the framerate to the maximum your PC can reach. - + Controlla la massima velocità di rendering del gioco, ma sta a quest'ultimo scegliere se girare più velocemente. +200% per un gioco che gira a 30 FPS diventa 60 FPS, e per un gioco a 60 FPS sarà 120 FPS. - + + Turbo Speed + Modalità Turbo + + + + When the Turbo Speed hotkey is pressed, the speed will be limited to this percentage. + Quando la scorciatoia della modalità Turbo viene premuta, la velocità sarà limitata a questa percentuale. + + + + Slow Speed + Modalità Lenta + + + + When the Slow Speed hotkey is pressed, the speed will be limited to this percentage. + Quando la scorciatoia della modalità Lenta viene premuta, la velocità sarà limitata a questa percentuale. + + + Synchronize Core Speed - + Sincronizza velocità core - - Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). -Compatibility varies by game; many (especially older ones) may not respond well. + + Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). Can help reduce stuttering at lower framerates. - + Sincronizza la velocità dei core della CPU con la velocità massima di rendering del gioco, in modo da aumentare gli FPS senza impattare sulla velocità del gioco (animazioni, fisica, ecc.). +Può ridurre lo stuttering quando il framerate è basso. - + Accuracy: - Accuratezza: + Precisione: - - This setting controls the accuracy of the emulated CPU. -Don't change this unless you know what you are doing. - + + Change the accuracy of the emulated CPU (for debugging only). + Cambia la precisione della CPU emulata (solo per debug) - - + + Backend: Back-end: - - Fast CPU Time - + + CPU Overclock + Overclock della CPU - + Overclocks the emulated CPU to remove some FPS limiters. Weaker CPUs may see reduced performance, and certain games may behave improperly. Use Boost (1700MHz) to run at the Switch's highest native clock, or Fast (2000MHz) to run at 2x clock. - + Aumenta il clock della CPU emulata per rimuovere alcuni limitatori di FPS. Le CPU meno potenti potrebbero avere prestazioni ridotte, e alcuni giochi potrebbero comportarsi in maniera errata. +Usa Boost (1700MHz) per girare al massimo clock di Switch, oppure Veloce (2000MHz) per un clock raddoppiato. - + + Custom CPU Ticks + Tick CPU personalizzati + + + + Set a custom value of CPU ticks. Higher values can increase performance, but may cause deadlocks. A range of 77-21000 is recommended. + Imposta un valore personalizzato per i tick della CPU. Valori più alti possono aumentare le prestazioni, ma possono anche causare stalli nei giochi. Si consiglia un valore compreso tra 77 e 21000. + + + + Enable Host MMU Emulation (fastmem) + Abilita l'emulazione della MMU nell'host (fastmem) + + + + This optimization speeds up memory accesses by the guest program. +Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU. +Disabling this forces all memory accesses to use Software MMU Emulation. + Questa ottimizzazione accelera gli accessi alla memoria da parte del programma guest. +Abilitandola, le letture/scritture nella memoria del guest vengono eseguite direttamente in memoria sfruttando la MMU dell'host. +Disabilitandola, tutti gli accessi alla memoria vengono costretti a utilizzare l'emulazione software della MMU. + + + Unfuse FMA (improve performance on CPUs without FMA) Non fondere FMA (migliora le prestazioni della CPU senza FMA) - + This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support. - Questa opzione migliora la velocità riducendo la precisione delle istruzioni fused-multiply-add (FMA) sulle CPU senza il supporto nativo a FMA. + Quest'opzione migliora la velocità riducendo la precisione delle istruzioni fused-multiply-add (FMA) sulle CPU senza il supporto nativo a FMA. - + Faster FRSQRTE and FRECPE FRSQRTE e FRECPE più veloci - + This option improves the speed of some approximate floating-point functions by using less accurate native approximations. - Questa opzione migliora la velocità di alcune funzioni in virgola mobile approssimate utilizzando delle approssimazioni native meno accurate. + Quest'opzione migliora la velocità di alcune funzioni in virgola mobile approssimate utilizzando delle approssimazioni native meno accurate. - + Faster ASIMD instructions (32 bits only) Istruzioni ASIMD più veloci (solo 32 bit) - + This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes. - Questa opzione migliora la velocità delle funzioni in virgola mobile ASIMD a 32 bit eseguendole con modalità di arrotondamento non corrette. + Quest'opzione migliora la velocità delle funzioni in virgola mobile ASIMD a 32 bit eseguendole con modalità di arrotondamento non corrette. - + Inaccurate NaN handling Gestione inaccurata NaN - + This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions. - + Quest'opzione migliora la velocità rimuovendo il controllo dei valori NaN. +Tieni presente che ciò riduce la precisione di alcune istruzioni in virgola mobile. - + Disable address space checks Disattiva i controlli dello spazio degli indirizzi - - This option improves speed by eliminating a safety check before every memory read/write in guest. -Disabling it may allow a game to read/write the emulator's memory. - + + This option improves speed by eliminating a safety check before every memory operation. +Disabling it may allow arbitrary code execution. + Quest'opzione migliora la velocità eliminando un controllo di sicurezza prima di ogni operazione di memoria. +Disabilitarla potrebbe permettere l'esecuzione di codice malevolo. - + Ignore global monitor Ignora il monitor globale - + 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. - + Quest'opzione migliora la velocità affidandosi alla semantica di cmpxchg per garantire sicurezza nelle istruzioni con accesso esclusivo. +Nota che questo può causare stalli e altre race condition. - + API: API: - - Switches between the available graphics APIs. -Vulkan is recommended in most cases. - + + Changes the output graphics API. +Vulkan is recommended. + Cambia l'API dell'output grafico. +Vulkan è consigliato. - + Device: Dispositivo: - - This setting selects the GPU to use with the Vulkan backend. - + + This setting selects the GPU to use (Vulkan only). + Quest'opzione seleziona la GPU da usare (solo con Vulkan). - - Shader Backend: - Back-end degli shader: - - - - The shader backend to use for the OpenGL renderer. -GLSL is the fastest in performance and the best in rendering accuracy. -GLASM is a deprecated NVIDIA-only backend that offers much better shader building performance at the cost of FPS and rendering accuracy. -SPIR-V compiles the fastest, but yields poor results on most GPU drivers. - - - - + Resolution: Risoluzione: - - Forces the game to render at a different resolution. -Higher resolutions require much more VRAM and bandwidth. -Options lower than 1X can cause rendering issues. - + + Forces to render at a different resolution. +Higher resolutions require more VRAM and bandwidth. +Options lower than 1X can cause artifacts. + Foza a renderizzare in una risoluzione diversa. +Alte risoluzioni hanno bisogno di piu VRAM e banda. +Opzioni inferiori a 1X possono causare artefatti. - + Window Adapting Filter: Filtro di adattamento alla finestra: - + FSR Sharpness: Nitidezza FSR: - - Determines how sharpened the image will look while using FSR’s dynamic contrast. - + + Determines how sharpened the image will look using FSR's dynamic contrast. + Determina quanto sarà nitida l'immagine utilizzando il contrasto dinamico di FSR. - + Anti-Aliasing Method: Metodo di anti-aliasing: - + The anti-aliasing method to use. SMAA offers the best quality. -FXAA has a lower performance impact and can produce a better and more stable picture under very low resolutions. - +FXAA can produce a more stable picture in lower resolutions. + Il metodo di anti-aliasing da usare. +SMAA offre la migliore qualità. +FXAA può produrre un'immagine più stabile nelle risoluzioni più basse. - + Fullscreen Mode: Modalità schermo intero: - + The method used to render the window in fullscreen. Borderless offers the best compatibility with the on-screen keyboard that some games request for input. Exclusive fullscreen may offer better performance and better Freesync/Gsync support. - + Il metodo utilizzato per renderizzare la finestra a schermo intero. +"Senza bordi" offre la migliore compatibilità con la tastiera a schermo che è richiesta da alcuni giochi. +"Schermo intero esclusivo" può offrire prestazioni maggiori e un supporto migliore al Freesync/Gsync. - + Aspect Ratio: Rapporto d'aspetto: - - Stretches the game to fit the specified aspect ratio. -Switch games only support 16:9, so custom game mods are required to get other ratios. + + Stretches the renderer to fit the specified aspect ratio. +Most games only support 16:9, so modifications are required to get other ratios. Also controls the aspect ratio of captured screenshots. - + Allarga il rendering per adattarlo al rapporto d'aspetto desiderato. +La maggior parte dei giochi supporta solo 16:9, quindi le mod sono necessarie per poter utilizzare altri rapporti. +Controlla anche il rapporto d'aspetto degli screenshot. - - Use disk pipeline cache - Utilizza la cache delle pipeline su disco + + Use persistent pipeline cache + Usa la cache persistente delle pipeline - + Allows saving shaders to storage for faster loading on following game boots. Disabling it is only intended for debugging. - + Permette di salvare gli shader su disco per velocizzarne il caricamento negli avvii successivi del gioco. +Disabilitarla ha senso solo quando si effettua il debug. - - Optimize SPIRV output shader - + + Optimize SPIRV output + Ottimizza output SPIR-V - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. This feature is experimental. - + Esegue un'ulteriore passaggio di ottimizzazione sugli shader SPIR-V generati. +Aumenta il tempo richiesto per la compilazione degli shader. +Potrebbe aumentare di poco le prestazioni. +Questa funzione è sperimentale. - - Use asynchronous GPU emulation - Utilizza l'emulazione asincrona della GPU - - - - Uses an extra CPU thread for rendering. -This option should always remain enabled. - - - - + NVDEC emulation: Emulazione NVDEC: - + Specifies how videos should be decoded. It can either use the CPU or the GPU for decoding, or perform no decoding at all (black screen on videos). In most cases, GPU decoding provides the best performance. - + Specifica come i video devono essere decodificati. +È possibile utilizzare sia la CPU o la GPU per la decodifica, o addirittura non decodificare proprio (mostrando uno schermo nero al posto dei video). +Nella maggior parte dei casi, la decodifica tramite GPU fornisce prestazioni migliori. - + ASTC Decoding Method: Metodo di decodifica ASTC: - + This option controls how ASTC textures should be decoded. -CPU: Use the CPU for decoding, slowest but safest method. -GPU: Use the GPU's compute shaders to decode ASTC textures, recommended for most games and users. -CPU Asynchronously: Use the CPU to decode ASTC textures as they arrive. Completely eliminates ASTC decoding -stuttering at the cost of rendering issues while the texture is being decoded. - +CPU: Use the CPU for decoding. +GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). +CPU Asynchronously: Use the CPU to decode ASTC textures on demand. EliminatesASTC decoding +stuttering but may present artifacts. + Quest'opzione controlla come le texture ASTC vengono decodificate. +CPU: Usa la CPU per la decodifica. +GPU: Usa i compute shader della GPU per decodificare le texture ASTC (consigliato). +CPU (Asincrono): Usa la CPU per decodificare le texture ASTC se richiesto. Elimina lo stuttering causato dalla decodifica ma potrebbe generare artefatti visivi. - + ASTC Recompression Method: Metodo di ricompressione ASTC: - - Almost all desktop and laptop dedicated GPUs lack support for ASTC textures, forcing the emulator to decompress to an intermediate format any card supports, RGBA8. -This option recompresses RGBA8 to either the BC1 or BC3 format, saving VRAM but negatively affecting image quality. - + + Most GPUs lack support for ASTC textures and must decompress to anintermediate format: RGBA8. +BC1/BC3: The intermediate format will be recompressed to BC1 or BC3 format, + saving VRAM but degrading image quality. + La maggior parte delle GPU non supporta le texture ASTC, che devono essere decompresse in un formato intermedio: RGBA8. +BC1/BC3: Il formato intermedio sarà ricompresso nel formato BC1 o BC3, risparmiando VRAM ma peggiorando la qualità visiva. - + + Frame Pacing Mode (Vulkan only) + + + + + Controls how the emulator manages frame pacing to reduce stuttering and make the frame rate smoother and more consistent. + + + + VRAM Usage Mode: - + Modalità di utilizzo della VRAM: - - Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. Has no effect on integrated graphics. Aggressive mode may severely impact the performance of other applications such as recording software. - + + Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. +Aggressive mode may impact performance of other applications such as recording software. + Determina se l'emulatore dovrebbe risparmiare memoria o utilizzarne il più possibile per massimizzare le prestazioni. +La modalità aggressiva potrebbe impattare sulle prestazioni di altre applicazioni, come i programmi di registrazione. - + + Skip CPU Inner Invalidation + Salta invalidamento interno CPU + + + + Skips certain cache invalidations during memory updates, reducing CPU usage and improving latency. This may cause soft-crashes. + Salta alcuni invalidamenti della cache durante gli aggiornamenti della memoria, riducendo l'uso della CPU e migliorando la latenza. Questo potrebbe causare soft-crash. + + + VSync Mode: Modalità VSync: - + FIFO (VSync) does not drop frames or exhibit tearing but is limited by the screen refresh rate. -FIFO Relaxed is similar to FIFO but allows tearing as it recovers from a slow down. +FIFO Relaxed 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. - FIFO (First In - First Out VSync) non presenterà alcun tipo di tearing o perdita di frame, ma è limitato al refresh rate massimo del monitor in uso. -FIFO Relaxed è simile al FIFO, ma presenta tearing durante le perdite di frame. -Mailbox può avere una latenza minore del FIFO, senza presentare alcun tearing, ma può causare perdite di frame. -Immediato migliora la latenza ma causa tearing. +Immediate (no synchronization) presents whatever is available and can exhibit tearing. + FIFO (VSync) non perde frame e nemmeno presenterà tearing, ma è limitato al refresh rate massimo dello schermo. +FIFO Relaxed permette il tearing dopo una perdita di frame. +Mailbox può avere una latenza minore di FIFO e non ha tearing ma potrebbe perdere frame. +Immediate (no sincronizzazione) mostra tutto il disponibile, quindi anche tearing. - + + Sync Memory Operations + Sincronizza operazioni di memoria + + + + Ensures data consistency between compute and memory operations. +This option fixes issues in games, but may degrade performance. +Unreal Engine 4 games often see the most significant changes thereof. + Garantisce la coerenza dei dati tra le operazioni di calcolo e memoria. +Questa opzione dovrebbe risolvere problemi in alcuni giochi, ma potrebbe ridurre le prestazioni. +I giochi con Unreal Engine 4 sembrano essere i più colpiti. + + + Enable asynchronous presentation (Vulkan only) Abilita la presentazione asincrona (solo Vulkan) - + Slightly improves performance by moving presentation to a separate CPU thread. - + Migliora di poco le prestazioni spostando la presentazione su un thread della CPU separato. - + Force maximum clocks (Vulkan only) Forza clock massimi (solo Vulkan) - + Runs work in the background while waiting for graphics commands to keep the GPU from lowering its clock speed. Esegue del lavoro in background durante l'attesa dei comandi grafici per evitare che la GPU diminuisca la sua velocità di clock. - + Anisotropic Filtering: Filtro anisotropico: - + Controls the quality of texture rendering at oblique angles. -It’s a light setting and safe to set at 16x on most GPUs. - +Safe to set at 16x on most GPUs. + Controlla la qualità del rendering delle texture negli angoli obliqui. +Si può utilizzare in modo sicuro al 16x su quasi tutte le GPU. - - Accuracy Level: - Livello di accuratezza: + + GPU Mode: + Modalità GPU: - - GPU emulation accuracy. -Most games render fine with Normal, but High is still required for some. -Particles tend to only render correctly with High accuracy. -Extreme should only be used for debugging. -This option can be changed while playing. -Some games may require booting on high to render properly. - + + Controls the GPU emulation mode. +Most games render fine with Fast or Balanced modes, but Accurate is still required for some. +Particles tend to only render correctly with Accurate mode. + Controlla la modalità di emulazione della GPU. +La maggior parte dei giochi viene renderizzata senza problemi con le modalità "Veloce" o "Bilanciata", ma per alcuni titoli è necessaria la modalità "Accurata". +I particellari tendono a essere renderizzati correttamente solo in modalità "Accurata". - - Use asynchronous shader building (Hack) - Utilizza la compilazione asincrona degli shader (espediente) + + DMA Accuracy: + Precisione DMA: - - Enables asynchronous shader compilation, which may reduce shader stutter. -This feature is experimental. - + + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. + Controlla la precisione del DMA. La precisione "Sicura" risolve dei problemi in alcuni giochi, ma può ridurre le prestazioni. - Use Fast GPU Time (Hack) - Utilizza il Fast GPU Time (espediente) + + Enable asynchronous shader compilation + Abilita la compilazione asincrona degli shader - Enables Fast GPU Time. This option will force most games to run at their highest native resolution. - Abilita il Fast GPU Time. Questa opzione forzerà la maggior parte dei giochi ad essere eseguiti alla loro massima risoluzione nativa. + + May reduce shader stutter. + Può ridurre i fenomeni di stuttering (scatti) causati dagli shader. - + + Fast GPU Time + Tempo GPU veloce + + + + Overclocks the emulated GPU to increase dynamic resolution and render distance. +Use 256 for maximal performance and 512 for maximal graphics fidelity. + Aumenta il clock della GPU emulata per aumentare la risoluzione dinamica e la distanza di rendering. +Usa 256 per massimizzare le prestazioni e 512 per massimizzare la qualità visiva. + + + + GPU Unswizzle + + + + + Accelerates BCn 3D texture decoding using GPU compute. +Disable if experiencing crashes or graphical glitches. + + + + + GPU Unswizzle Max Texture Size + + + + + Sets the maximum size (MiB) for GPU-based texture unswizzling. +While the GPU is faster for medium and large textures, the CPU may be more efficient for very small ones. +Adjust this to find the balance between GPU acceleration and CPU overhead. + + + + + GPU Unswizzle Stream Size + + + + + Sets the maximum amount of texture data (in MiB) processed per frame. +Higher values can reduce stutter during texture loading but may impact frame consistency. + + + + + GPU Unswizzle Chunk Size + + + + + Determines the number of depth slices processed in a single dispatch. +Increasing this can improve throughput on high-end GPUs but may cause TDR or driver timeouts on weaker hardware. + + + + Use Vulkan pipeline cache - Utilizza la cache delle pipeline di Vulkan + Usa la cache delle pipeline di Vulkan - + Enables GPU vendor-specific pipeline cache. This option can improve shader loading time significantly in cases where the Vulkan driver does not store pipeline cache files internally. - + Abilita la cache delle pipeline specifica del produttore della GPU. +Quest'opzione può ridurre di molto i tempi di caricamento degli shader nei casi in cui il driver Vulkan non memorizza la cache delle pipeline internamente. - + Enable Compute Pipelines (Intel Vulkan Only) Abilita le compute pipeline (solo per Vulkan su Intel) - - Enable compute pipelines, required by some games. -This setting only exists for Intel proprietary drivers, and may crash if enabled. + + 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. - Abilita le compute pipeline, necessarie per alcuni giochi. -Questa opzione può causare crash ed è compatibile solo con i driver proprietari di Intel. -Le compute pipeline sono sempre abilitate su tutti gli altri driver. + Richiesto da alcuni giochi. +Quest'impostazione esiste solo per i driver proprietari Intel e potrebbe far crashare se attivata. +Le compute pipelines sono sempre attivate su tutti gli altri drivers. - + Enable Reactive Flushing Abilita il flushing reattivo - + Uses reactive flushing instead of predictive flushing, allowing more accurate memory syncing. Utilizza il flushing reattivo invece di quello predittivo, al fine di ottenere una sincronizzazione della memoria più accurata. - + Sync to framerate of video playback Sincronizza il framerate a quello del video - + Run the game at normal speed during video playback, even when the framerate is unlocked. Esegue il gioco a velocità normale durante le cutscene, anche quando il framerate è sbloccato. - + Barrier feedback loops Barrier feedback loops - + Improves rendering of transparency effects in specific games. Migliora il rendering degli effetti di trasparenza in alcuni giochi. - + + Enable buffer history + + + + + Enables access to previous buffer states. +This option may improve rendering quality and performance consistency in some games. + + + + + Fix bloom effects + + + + + Removes bloom in Burnout. + + + + + Enable Legacy Rescale Pass + + + + + May fix rescale issues in some games by relying on behavior from the previous implementation. +Legacy behavior workaround that fixes line artifacts on AMD and Intel GPUs, and grey texture flicker on Nvidia GPUs in Luigis Mansion 3. + + + + + Extended Dynamic State + Stato dinamico esteso + + + + Controls the number of features that can be used in Extended Dynamic State. +Higher states allow for more features and can increase performance, but may cause additional graphical issues. + Controlla il numero di funzionalità che possono essere usate con lo stato dinamico esteso. +Gli stati più alti consentono più funzionalità e possono migliorare le prestazioni, ma possono causare ulteriori problemi grafici. + + + + Vertex Input Dynamic State + + + + + Enables vertex input dynamic state feature for better quality and performance. + + + + + Sample Shading + Sample shading + + + + Allows the fragment shader to execute per sample in a multi-sampled fragment instead of once per fragment. Improves graphics quality at the cost of performance. +Higher values improve quality but degrade performance. + Permette al fragment shader di eseguire per campione in un frammento multi-campione invece che una volta per frammento. Migliora la qualità grafica a scapito delle prestazioni. +Alti valori migliorano la qualità ma peggiorano le prestazioni. + + + RNG Seed Seed RNG - + Controls the seed of the random number generator. -Mainly used for speedrunning purposes. - +Mainly used for speedrunning. + Controlla il seme del generatore di numeri casuali. +Principalmente utilizzato per le speedrun. - + Device Name Nome del dispositivo - - The name of the emulated Switch. - + + The name of the console. + Il nome della console. - + Custom RTC Date: - + Data RTC personalizzata: - - This option allows to change the emulated clock of the Switch. + + This option allows to change the clock of the console. Can be used to manipulate time in games. - + Quest'opzione permette di modificare l'orologio della console. +Può essere usato per manipolare il tempo nei giochi. - + + The number of seconds from the current unix time + Il numero di secondi dal tempo Unix attuale + + + Language: Lingua: - - Note: this can be overridden when region setting is auto-select - Nota: Può essere rimpiazzato se il fuso orario della Regione è impostato su Auto + + This option can be overridden when region setting is auto-select + Può essere rimpiazzato se il fuso orario della Regione è impostato su Auto - + Region: Regione: - - The region of the emulated Switch. - + + The region of the console. + La regione della console. - + Time Zone: Fuso orario: - - The time zone of the emulated Switch. - + + The time zone of the console. + Il fuso orario della console. - + Sound Output Mode: Modalità di output del suono: - + Console Mode: Modalità console: - - Selects if the console is emulated in Docked or Handheld mode. + + Selects if the console is in Docked or Handheld mode. Games will change their resolution, details and supported controllers and depending on this setting. Setting to Handheld can help improve performance for low end systems. - + Seleziona se la console è in modalità Dock o Portatile. +I giochi ne terranno conto e modificheranno la risoluzione, i dettagli e i controller supportati di conseguenza. +Impostare l'opzione su "Portatile" può aiutare a migliorare le prestazioni sui sistemi meno potenti. - - Prompt for user on game boot - Richiedi utente all'avvio di un gioco + + Unit Serial + Codice seriale dell'unità - - Pause emulation when in background - Metti in pausa l'emulazione quando la finestra è in background + + Battery Serial + Codice seriale della batteria - - Fast GPU Time (Hack) - + + Debug knobs + - - Overclocks the emulated GPU to increase dynamic resolution and render distance. -Use 128 for maximal performance and 512 for maximal graphics fidelity. - + + Prompt for user profile on boot + Scegli il profilo utente all'avvio - - Extended Dynamic State - + + Useful if multiple people use the same PC. + Utile se più persone utilizzano lo stesso PC. - - Enables the VkExtendedDynamicState* extensions. -Higher dynamic states will generally improve performance, but may cause issues on certain games or devices. - + + Pause when not in focus + Metti in pausa quando la finestra non è in primo piano - - Provoking Vertex - + + Pauses emulation when focusing on other windows. + Mette in pausa l'emulazione quando altre finestre sono in primo piano. - - Improves lighting and vertex handling in certain games. -Only Vulkan 1.0+ devices support this extension. - - - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - - Ask to select a user profile on each boot, useful if multiple people use eden on the same PC. - - - - - This setting pauses eden when focusing other windows. - - - - + Confirm before stopping emulation Chiedi conferma prima di arrestare l'emulazione - - This setting overrides game prompts asking to confirm stopping the game. + + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - + Sovrascrive le richieste di conferma per fermare l'emulazione. +Abilitarla bypassa queste richieste e l'emulazione cesserà immediatamente. - + Hide mouse on inactivity Nascondi il puntatore del mouse se inattivo - - This setting hides the mouse after 2.5s of inactivity. - + + Hides the mouse after 2.5s of inactivity. + Nasconde il mouse dopo 2,5 secondi di inattività. - + Disable controller applet Disabilita l'applet controller - - Forcibly disables the use of the controller applet by guests. -When a guest attempts to open the controller applet, it is immediately closed. - + + Forcibly disables the use of the controller applet in emulated programs. +When a program attempts to open the controller applet, it is immediately closed. + Disabilita forzatamente l'uso dell'applet del controller nei programmi emulati. +Quando un programma proverà ad aprire l'applet del controller, quest'ultimo verrà immediatamente chiuso. - + Check for updates - + Controlla la presenza di aggiornamenti - + Whether or not to check for updates upon startup. - + Determina se controllare o meno la presenza di aggiornamenti all'avvio. - + Enable Gamemode Abilita Gamemode - + + Force X11 as Graphics Backend + Forza l'uso del back-end grafico X11 + + + Custom frontend - + Frontend personalizzato - + Real applet - + Applet reale - + Never - + Mai - + On Load - + Al caricamento - + Always - + Sempre - + CPU CPU - + GPU GPU - + CPU Asynchronous CPU (Asincrono) - + Uncompressed (Best quality) Nessuna compressione (qualità migliore) - + BC1 (Low quality) BC1 (qualità bassa) - + BC3 (Medium quality) BC3 (qualità media) - - Conservative - - - - - Aggressive - - - - - OpenGL - OpenGL - - - - Vulkan - Vulkan - - - - Null - Nullo - - - - GLSL - GLSL - - - - GLASM (Assembly Shaders, NVIDIA Only) - GLASM (shader assembly, solo NVIDIA) - - - - SPIR-V (Experimental, AMD/Mesa Only) - SPIR-V (SPERIMENTALE, solo AMD/MESA) - - - - Normal - Normale - - - - High - Alta - - - - Extreme - Estrema - - - + + Auto Automatico - + + 30 FPS + 30 FPS + + + + 60 FPS + 60 FPS + + + + 90 FPS + 90 FPS + + + + 120 FPS + 120 FPS + + + + Conservative + Conservativa + + + + Aggressive + Aggressiva + + + + Vulkan + Vulkan + + + + OpenGL GLSL + OpenGL GLSL + + + + OpenGL GLASM (Assembly Shaders, NVIDIA Only) + OpenGL GLASM (shader assembly, solo NVIDIA) + + + + OpenGL SPIR-V (Experimental, AMD/Mesa Only) + OpenGL SPIR-V (sperimentale, solo AMD/MESA) + + + + Null + Nullo + + + + Fast + Veloce + + + + Balanced + Bilanciata + + + + Accurate Accurata - - Unsafe - Non sicura - - - - Paranoid (disables most optimizations) - Paranoica (disabilita la maggior parte delle ottimizzazioni) - - - - Dynarmic - Dynarmic - - - - NCE - NCE - - - - Borderless Windowed - Finestra senza bordi - - - - Exclusive Fullscreen - Esclusivamente a schermo intero - - - - No Video Output - Nessun output video - - - - CPU Video Decoding - Decodifica video CPU - - - - GPU Video Decoding (Default) - Decodifica video GPU (predefinita) - - - - 0.25X (180p/270p) [EXPERIMENTAL] - - - - - 0.5X (360p/540p) [EXPERIMENTAL] - 0.5X (360p/540p) [SPERIMENTALE] - - - - 0.75X (540p/810p) [EXPERIMENTAL] - 0.75X (540p/810p) [SPERIMENTALE] - - - - 1X (720p/1080p) - 1X (720p/1080p) - - - - 1.5X (1080p/1620p) [EXPERIMENTAL] - 1.5X (1080p/1620p) [SPERIMENTALE] - - - - 2X (1440p/2160p) - 2X (1440p/2160p) - - - - 3X (2160p/3240p) - 3X (2160p/3240p) - - - - 4X (2880p/4320p) - 4X (2880p/4320p) - - - - 5X (3600p/5400p) - 5X (3600p/5400p) - - - - 6X (4320p/6480p) - 6X (4320p/6480p) - - - - 7X (5040p/7560p) - 7X (5040p/7560p) - - - - 8X (5760p/8640p) - 8X (5760p/8640p) - - - - Nearest Neighbor - Nearest neighbor - - - - Bilinear - Bilineare - - - - Bicubic - Bicubico - - - - Gaussian - Gaussiano - - - - ScaleForce - ScaleForce - - - - AMD FidelityFX™️ Super Resolution - AMD FidelityFX™️ Super Resolution - - - - Area - - - - - None - Nessuna - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Default (16:9) - Predefinito (16:9) - - - - Force 4:3 - Forza 4:3 - - - - Force 21:9 - Forza 21:9 - - - - Force 16:10 - Forza 16:10 - - - - Stretch to Window - Allunga a finestra - - - - Automatic - Automatico - - - + + Default Predefinito - + + Unsafe (fast) + Non sicuro (veloce) + + + + Safe (stable) + Sicuro (stabile) + + + + Unsafe + Non sicura + + + + Paranoid (disables most optimizations) + Paranoica (disabilita la maggior parte delle ottimizzazioni) + + + + Debugging + Debug + + + + Dynarmic + Dynarmic + + + + NCE + NCE + + + + Borderless Windowed + Finestra senza bordi + + + + Exclusive Fullscreen + Schermo intero esclusivo + + + + No Video Output + Nessun output video + + + + CPU Video Decoding + Decodifica video CPU + + + + GPU Video Decoding (Default) + Decodifica video GPU (predefinita) + + + + 0.25X (180p/270p) [EXPERIMENTAL] + 0.25X (180p/270p) [SPERIMENTALE] + + + + 0.5X (360p/540p) [EXPERIMENTAL] + 0.5X (360p/540p) [SPERIMENTALE] + + + + 0.75X (540p/810p) [EXPERIMENTAL] + 0.75X (540p/810p) [SPERIMENTALE] + + + + 1X (720p/1080p) + 1X (720p/1080p) + + + + 1.25X (900p/1350p) [EXPERIMENTAL] + 1.25X (900p/1350p) [SPERIMENTALE] + + + + 1.5X (1080p/1620p) [EXPERIMENTAL] + 1.5X (1080p/1620p) [SPERIMENTALE] + + + + 2X (1440p/2160p) + 2X (1440p/2160p) + + + + 3X (2160p/3240p) + 3X (2160p/3240p) + + + + 4X (2880p/4320p) + 4X (2880p/4320p) + + + + 5X (3600p/5400p) + 5X (3600p/5400p) + + + + 6X (4320p/6480p) + 6X (4320p/6480p) + + + + 7X (5040p/7560p) + 7X (5040p/7560p) + + + + 8X (5760p/8640p) + 8X (5760p/8640p) + + + + Nearest Neighbor + Nearest neighbor + + + + Bilinear + Bilineare + + + + Bicubic + Bicubico + + + + Gaussian + Gaussiano + + + + Lanczos + Lanczos + + + + ScaleForce + ScaleForce + + + + AMD FidelityFX Super Resolution + AMD FidelityFX Super Resolution + + + + Area + Area + + + + MMPX + MMPX + + + + Zero-Tangent + Zero-Tangent + + + + B-Spline + B-Spline + + + + Mitchell + Mitchell + + + + Spline-1 + Spline-1 + + + + + None + Nessuna + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Default (16:9) + Predefinito (16:9) + + + + Force 4:3 + Forza 4:3 + + + + Force 21:9 + Forza 21:9 + + + + Force 16:10 + Forza 16:10 + + + + Stretch to Window + Allunga a finestra + + + + Automatic + Automatico + + + 2x 2x - + 4x 4x - + 8x 8x - + 16x 16x - + + 32x + 32x + + + + 64x + 64x + + + Japanese (日本語) Giapponese (日本語) - + American English Inglese americano - + French (français) Francese (français) - + German (Deutsch) Tedesco (Deutsch) - + Italian (italiano) Italiano - + Spanish (español) Spagnolo (español) - + Chinese Cinese - + Korean (한국어) Coreano (한국어) - + Dutch (Nederlands) Olandese (Nederlands) - + Portuguese (português) Portoghese (português) - + Russian (Русский) Russo (Русский) - + Taiwanese Taiwanese - + British English Inglese britannico - + Canadian French Francese canadese - + Latin American Spanish Spagnolo latino-americano - + Simplified Chinese Cinese semplificato - + Traditional Chinese (正體中文) Cinese tradizionale (正體中文) - + Brazilian Portuguese (português do Brasil) Portoghese brasiliano (português do Brasil) - - + + Polish (polska) + Polacco (polska) + + + + Thai (แบบไทย) + Thailandese (แบบไทย) + + + + Japan Giappone - + USA USA - + Europe Europa - + Australia Australia - + China Cina - + Korea Corea - + Taiwan Taiwan - + Auto (%1) Auto select time zone Automatico (%1) - + Default (%1) Default time zone Predefinito (%1) - + CET CET - + CST6CDT CST6CDT - + Cuba Cuba - + EET EET - + Egypt Egitto - + Eire Eire - + EST EST - + EST5EDT EST5EDT - + GB GB - + GB-Eire GB-Eire - + GMT GMT - + GMT+0 GMT+0 - + GMT-0 GMT-0 - + GMT0 GMT0 - + Greenwich Greenwich - + Hongkong Hongkong - + HST HST - + Iceland Islanda - + Iran Iran - + Israel Israele - + Jamaica Giamaica - + Kwajalein Kwajalein - + Libya Libia - + MET MET - + MST MST - + MST7MDT MST7MDT - + Navajo Navajo - + NZ NZ - + NZ-CHAT NZ-CHAT - + Poland Polonia - + Portugal Portogallo - + PRC PRC - + PST8PDT PST8PDT - + ROC ROC - + ROK ROK - + Singapore Singapore - + Turkey Turchia - + UCT UCT - + Universal Universale - + UTC UTC - + W-SU W-SU - + WET WET - + Zulu Zulu - + Mono Mono - + Stereo Stereo - + Surround Surround - + 4GB DRAM (Default) 4GB DRAM (Predefinito) - + 6GB DRAM (Unsafe) 6GB DRAM (Non sicuro) - + 8GB DRAM - + 8GB DRAM - + 10GB DRAM (Unsafe) - + 10GB DRAM (Non sicuro) - + 12GB DRAM (Unsafe) - + 12GB DRAM (Non sicuro) - - Low (128) - - - - - Medium (256) - - - - - High (512) - - - - 8GB DRAM (Unsafe) - 8GB DRAM (Non sicuro) - - - + Docked Dock - + Handheld Portatile - + + + Off + Disattivato + + + Boost (1700MHz) - + Boost (1700MHz) - + Fast (2000MHz) - + Veloce (2000MHz) - + Always ask (Default) Chiedi sempre (Predefinito) - + Only if game specifies not to stop Solo se il gioco richiede di non essere arrestato - + Never ask Non chiedere mai + + + + Medium (256) + Medio (256) + + + + + High (512) + Alto (512) + + + + Very Small (16 MB) + Molto piccola (16 MB) + + + + Small (32 MB) + Piccola (32 MB) + + + + Normal (128 MB) + Normale (128 MB) + + + + Large (256 MB) + Grande (256 MB) + + + + Very Large (512 MB) + Molto grande (512 MB) + + + + Very Low (4 MB) + Molto bassa (4 MB) + + + + Low (8 MB) + Bassa (8 MB) + + + + Normal (16 MB) + Normale (16 MB) + + + + Medium (32 MB) + Media (32 MB) + + + + High (64 MB) + Alta (64 MB) + + + + Very Low (32) + Molto basso (32) + + + + Low (64) + Basso (64) + + + + Normal (128) + Normale (128) + + + + Disabled + Disabilitato + + + + ExtendedDynamicState 1 + Stato dinamico esteso 1 + + + + ExtendedDynamicState 2 + Stato dinamico esteso 2 + + + + ExtendedDynamicState 3 + Stato dinamico esteso 3 + + + + Tree View + Vista ad albero + + + + Grid View + Vista a griglia + ConfigureApplets @@ -1937,12 +2291,12 @@ When a guest attempts to open the controller applet, it is immediately closed. Applets - + Applet Applet mode preference - + Preferenza modalità applet @@ -1997,7 +2351,7 @@ When a guest attempts to open the controller applet, it is immediately closed.Ripristina valori predefiniti - + Auto Auto @@ -2022,7 +2376,7 @@ When a guest attempts to open the controller applet, it is immediately closed. We recommend setting accuracy to "Auto". - Raccomandiamo di impostare l'accuratezza su "Automatica". + Raccomandiamo di impostare la precisione su "Automatica". @@ -2037,7 +2391,7 @@ When a guest attempts to open the controller applet, it is immediately closed. These settings reduce accuracy for speed. - Queste impostazioni riducono l'accuratezza a favore della velocità. + Queste impostazioni riducono la precisione a favore della velocità. @@ -2183,7 +2537,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all memory accesses to use Software MMU Emulation.</div> @@ -2201,7 +2555,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up exclusive memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all exclusive memory accesses to use Software MMU Emulation.</div> @@ -2235,7 +2589,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up memory accesses by allowing invalid memory accesses to succeed.</div> - <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> + <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> <div style="white-space: nowrap">Questa ottimizzazione velocizza l'accesso alla memoria ignorando gli accessi non validi.</div> @@ -2275,30 +2629,30 @@ When a guest attempts to open the controller applet, it is immediately closed.Logging - - Open Log Location - Apri cartella dei log - - - + Global Log Filter Filtro log globale - + When checked, the max size of the log increases from 100 MB to 1 GB Quando l'opzione è selezionata, la dimensione massima del log aumenterà da 100 MB a 1 GB - + Enable Extended Logging** Abilita il log esteso** - + Show Log in Console Mostra i log nella console + + + Open Log Location + Apri cartella dei log + Homebrew @@ -2407,7 +2761,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Disable Buffer Reorder - Disabilita il Riordinamento del Buffer + Disabilita il riordinamento dei buffer @@ -2435,18 +2789,9 @@ When a guest attempts to open the controller applet, it is immediately closed.Abilita tutti i tipi di controller - - Censor username in logs - - - - - **This will be reset automatically when eden closes. - - - - Enable Auto-Stub** - Abilita stub automatico** + + Enable Auto-Stub + Abilita stub automatico @@ -2455,8 +2800,8 @@ When a guest attempts to open the controller applet, it is immediately closed. - Enable CPU Debugging - Abilita il debug della CPU + Use dev.keys + Usa dev.keys @@ -2469,43 +2814,74 @@ When a guest attempts to open the controller applet, it is immediately closed.Debug - - Flush log output on each line - + + Battery Serial: + Codice seriale della batteria: - - Enable FS Access Log - Abilita log di accesso al FS + + Bitmask for quick development toggles + - + + Set debug knobs (bitmask) + + + + + 16-bit debug knob set for quick development toggles + + + + + (bitmask) + + + + + Debug Knobs: + + + + + Unit Serial: + Codice seriale dell'unità: + + + Enable this to output the latest generated audio command list to the console. Only affects games using the audio renderer. Abilita questa opzione per stampare l'ultima lista dei comandi audio nella console. Impatta solo i giochi che usano il renderer audio. - - Enable Auto-Stub - - - - + Dump Audio Commands To Console** Stampa i comandi audio nella console** - + + Flush log output on each line + Svuota l'output del log su ogni riga + + + + Enable FS Access Log + Abilita log di accesso al FS + + + Enable Verbose Reporting Services** Abilita servizi di segnalazione dettagliata** - **This will be reset automatically when yuzu closes. - **L'opzione verrà automaticamente ripristinata alla chiusura di yuzu. + + Censor username in logs + Censura il nome utente nei log - - Web applet not compiled - Applet web non compilato + + **This will be reset automatically when Eden closes. + **L'opzione verrà automaticamente ripristinata alla chiusura di Eden. @@ -2547,14 +2923,10 @@ When a guest attempts to open the controller applet, it is immediately closed. ConfigureDialog - - yuzu Configuration - Configurazione di yuzu - - eden Configuration - + Eden Configuration + Configurazione di Eden @@ -2562,88 +2934,88 @@ When a guest attempts to open the controller applet, it is immediately closed.Alcune impostazioni sono disponibili soltanto quando un gioco non è in esecuzione. - + Applets - + Applet - - + + Audio Audio - - + + CPU CPU - + Debug Debug - + Filesystem Filesystem - - + + General Generale - - + + Graphics Grafica - + GraphicsAdvanced Grafica avanzata - - GraphicsExtensions - + + GraphicsExtra + - + Hotkeys Scorciatoie - - + + Controls Comandi - + Profiles Profili - + Network Rete - - + + System Sistema - + Game List Lista dei giochi - + Web Web @@ -2673,9 +3045,10 @@ When a guest attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2685,107 +3058,195 @@ When a guest attempts to open the controller applet, it is immediately closed.Scheda SD - + + Save Data + Dati di salvataggio + + + Gamecard Cartuccia di gioco - + Path Percorso - + Inserted Inserita - + Current Game Gioco in uso - + Patch Manager Gestione patch - + Dump Decompressed NSOs Estrai NSO decompressi - + Dump ExeFS Estrai ExeFS - + Mod Load Root Cartella di caricamento delle mod - + Dump Root Cartella di estrazione - + Caching Cache - + Cache Game List Metadata Salva in cache i metadati della lista dei giochi - - - - + Reset Metadata Cache Elimina cache dei metadati - + Select Emulated NAND Directory... Seleziona la cartella della NAND emulata... - + Select Emulated SD Directory... Seleziona la cartella della scheda SD emulata... - + + + Select Save Data Directory... + Seleziona la cartella dei dati di salvataggio... + + + Select Gamecard Path... Seleziona il percorso della cartuccia di gioco... - + Select Dump Directory... Seleziona la cartella di estrazione... - + Select Mod Load Directory... Seleziona la cartella per il caricamento delle mod... - - The metadata cache is already empty. - La cache dei metadati è già vuota. + + Save Data Directory + Cartella dei dati di salvataggio - - The operation completed successfully. - L'operazione è stata completata con successo. + + Choose an action for the save data directory: + Scegli cosa fare per la cartella dei dati di salvataggio: - - The metadata cache couldn't be deleted. It might be in use or non-existent. - Impossibile eliminare la cache dei metadati. Potrebbe essere in uso o inesistente. + + Set Custom Path + Seleziona un percorso personalizzato + + + + Reset to NAND + Reimposta alla cartella NAND + + + + Save data exists in both the old and new locations. + +Old: %1 +New: %2 + +Would you like to migrate saves from the old location? +WARNING: This will overwrite any conflicting saves in the new location! + Sono presenti dei dati di salvataggio in entrambe le posizioni. + +Precedente: %1 +Destinazione: %2 + +Vuoi migrare i salvataggi dalla posizione precedente? +ATTENZIONE: eventuali salvataggi in conflitto nella nuova posizione verranno sovrascritti! + + + + Would you like to migrate your save data to the new location? + +From: %1 +To: %2 + Vuoi migrare i dati di salvataggio nella nuova posizione? + +Origine: %1 +Destinazione: %2 + + + + Migrate Save Data + Migra dati di salvataggio + + + + Migrating save data... + Migrazione dei dati di salvataggio in corso... + + + + Cancel + Annulla + + + + + Migration Failed + Migrazione fallita + + + + Failed to create destination directory. + Impossibile creare la cartella di destinazione. + + + + Failed to migrate save data: +%1 + Impossibile migrare i dati di salvataggio: +%1 + + + + Migration Complete + Migrazione completata + + + + Save data has been migrated successfully. + +Would you like to delete the old save data? + I dati di salvataggio sono stati migrati con successo. + +Vuoi cancellare i dati precedenti? @@ -2803,28 +3264,54 @@ When a guest attempts to open the controller applet, it is immediately closed. - Linux - Linux + External Content + Contenuti esterni - + + Add directories to scan for DLCs and Updates without installing to NAND + Aggiungi cartelle in cui ricercare DLC e aggiornamenti senza installarli su NAND + + + + Add Directory + Aggiungi cartella + + + + Remove Selected + Rimuovi selezionata + + + Reset All Settings Ripristina tutte le impostazioni - yuzu - yuzu + + Eden + Eden - - eden - - - - + This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed? Tutte le impostazioni verranno ripristinate e tutte le configurazioni dei giochi verranno rimosse. Le cartelle di gioco, i profili e i profili di input non saranno cancellati. Vuoi procedere? + + + Select External Content Directory... + Seleziona la cartella dei contenuti esterni... + + + + Directory Already Added + Cartella già aggiunta + + + + This directory is already in the list. + La cartella è già presente nella lista. + ConfigureGraphics @@ -2854,33 +3341,33 @@ When a guest attempts to open the controller applet, it is immediately closed.Colore dello sfondo: - + % FSR sharpening percentage (e.g. 50%) % - + Off Disattivato - + VSync Off VSync disattivato - + Recommended Consigliata - + On Attivato - + VSync On VSync attivato @@ -2898,7 +3385,7 @@ When a guest attempts to open the controller applet, it is immediately closed.Avanzate - + Advanced Graphics Settings Impostazioni grafiche avanzate @@ -2908,24 +3395,38 @@ When a guest attempts to open the controller applet, it is immediately closed. Form - + Modulo - Extensions - + Extras + Opzioni aggiuntive - - Vulkan Extension Settings - + + Hacks + Espedienti - - While it's recommended to use state 3, some games may perform better on lower states. Setting to 0 (disabled) may also break games. -If your GPU is older (i.e. RX570/580 or older), it may not support these features. If this is the case, set the slider to 0 and uncheck all boxes. -These settings are experimental, and may cause black screens. If your games fail to boot or are stuck on a black screen, change these settings around. - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + Estensioni di Vulkan + + + + % + Sample Shading percentage (e.g. 50%) + % + + + + Extended Dynamic State is disabled on macOS due to MoltenVK compatibility issues that cause black screens. + Lo stato dinamico esteso è disabilitato su macOS a causa di un problema di compatibilità di MoltenVK che causa schermo nero. @@ -2956,75 +3457,75 @@ These settings are experimental, and may cause black screens. If your games fail Ripristina predefinite - + Action Azione - + Hotkey Scorciatoia - + Controller Hotkey Scorciatoia del controller - - - + + + Conflicting Key Sequence Sequenza di tasti in conflitto - - + + The entered key sequence is already assigned to: %1 La sequenza di tasti inserita è già assegnata a: %1 - + [waiting] [in attesa] - + Invalid Non valido - + Invalid hotkey settings Impostazioni delle scorciatoie non valide - + An error occurred. Please report this issue on github. Errore durante la configurazione. Segnala quest'errore alla pagina Github di Yuzu. - + Restore Default Ripristina predefinita - + Clear Cancella - + Conflicting Button Sequence Sequenza di pulsanti in conflitto - + The default button sequence is already assigned to: %1 La sequenza di pulsanti predefinita è già assegnata a: %1 - + The default key sequence is already assigned to: %1 La sequenza di tasti predefinita è già assegnata a: %1 @@ -3344,12 +3845,8 @@ These settings are experimental, and may cause black screens. If your games fail - Requires restarting eden - - - - Requires restarting yuzu - Richiede il riavvio di yuzu + Requires restarting Eden + Richiede il riavvio di Eden @@ -3499,30 +3996,19 @@ These settings are experimental, and may cause black screens. If your games fail - + Left Stick Levetta sinistra - - - - - - - Up - Su - - - - - - - - - - Left - Sinistra + + + + + + + Down + Giù @@ -3536,14 +4022,25 @@ These settings are experimental, and may cause black screens. If your games fail Destra - - - - - - - Down - Giù + + + + + + + + Left + Sinistra + + + + + + + + + Up + Su @@ -3590,14 +4087,6 @@ These settings are experimental, and may cause black screens. If your games fail D-Pad D-Pad - - - - - - SL - SL - @@ -3607,59 +4096,55 @@ These settings are experimental, and may cause black screens. If your games fail SR - - - - L - L + + + + + SL + SL - + ZL ZL + + + + + L + L + Minus Meno - - - - Capture - Cattura - - + Plus Più - - - Home - Home + + + + ZR + ZR - - + + R R - - - - - ZR - ZR - Motion 1 @@ -3670,6 +4155,18 @@ These settings are experimental, and may cause black screens. If your games fail Motion 2 Movimento 2 + + + + Capture + Cattura + + + + + Home + Home + Face Buttons @@ -3682,10 +4179,10 @@ These settings are experimental, and may cause black screens. If your games fail X - - - Y - Y + + + B + B @@ -3694,14 +4191,14 @@ These settings are experimental, and may cause black screens. If your games fail A - - - B - B + + + Y + Y - + Right Stick Levetta destra @@ -3716,242 +4213,242 @@ These settings are experimental, and may cause black screens. If your games fail Configura - - - - + + + + Clear Cancella - - - - - + + + + + [not set] [non impost.] - - - + + + Invert button Inverti pulsante - - + + Toggle button Premi il pulsante - + Turbo button Modalità Turbo - - + + Invert axis Inverti asse - - - + + + Set threshold Imposta soglia - - + + Choose a value between 0% and 100% Scegli un valore compreso tra 0% e 100% - + Toggle axis Cancella asse - + Set gyro threshold Imposta soglia del giroscopio - + Calibrate sensor Calibra sensore - + Map Analog Stick Mappa la levetta analogica - + After pressing OK, first move your joystick horizontally, and then vertically. To invert the axes, first move your joystick vertically, and then horizontally. Dopo aver premuto OK, prima muovi la levetta orizzontalmente, e poi verticalmente. Per invertire gli assi, prima muovi la levetta verticalmente, e poi orizzontalmente. - + Center axis Centra asse - - + + Deadzone: %1% Zona morta: %1% - - + + Modifier Range: %1% Modifica raggio: %1% - - + + Pro Controller Pro Controller - + Dual Joycons Due Joycon - + Left Joycon Joycon sinistro - + Right Joycon Joycon destro - + Handheld Portatile - + GameCube Controller Controller GameCube - + Poke Ball Plus Poké Ball Plus - + NES Controller Controller NES - + SNES Controller Controller SNES - + N64 Controller Controller N64 - + Sega Genesis Sega Genesis - + Start / Pause Avvia / Metti in pausa - + Z Z - + Control Stick Levetta di Controllo - + C-Stick Levetta C - + Shake! Scuoti! - + [waiting] [in attesa] - + New Profile Nuovo profilo - + Enter a profile name: Inserisci un nome profilo: - - + + Create Input Profile Crea un profilo di input - + The given profile name is not valid! Il nome profilo inserito non è valido! - + Failed to create the input profile "%1" Impossibile creare il profilo di input "%1" - + Delete Input Profile Elimina un profilo di input - + Failed to delete the input profile "%1" Impossibile eliminare il profilo di input "%1" - + Load Input Profile Carica un profilo di input - + Failed to load the input profile "%1" Impossibile caricare il profilo di input "%1" - + Save Input Profile Salva un profilo di Input - + Failed to save the input profile "%1" Impossibile creare il profilo di input "%1" @@ -3974,15 +4471,6 @@ Per invertire gli assi, prima muovi la levetta verticalmente, e poi orizzontalme Predefiniti - - ConfigureLinuxTab - - - - Linux - Linux - - ConfigureMotionTouch @@ -4008,7 +4496,7 @@ Per invertire gli assi, prima muovi la levetta verticalmente, e poi orizzontalme - + Configure Configura @@ -4038,111 +4526,93 @@ Per invertire gli assi, prima muovi la levetta verticalmente, e poi orizzontalme Porta: - - Learn More - Per saperne di più - - - - + + Test Test - + Add Server Aggiungi un server - + Remove Server Rimuovi un server - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Per saperne di più</span></a> - - - + %1:%2 %1:%2 - yuzu - yuzu + + + + + + + Eden + Eden - - <a href='https://eden-emulator.github.io/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - - - - + Port number has invalid characters Il numero di porta contiene caratteri non validi - - - - - - - eden - - - - + Port has to be in range 0 and 65353 La valore della porta deve essere compreso tra 0 e 65353 inclusi - + IP address is not valid Indirizzo IP non valido - + This UDP server already exists Questo server UDP esiste già - + Unable to add more than 8 servers Impossibile aggiungere più di 8 server - + Testing Testando - + Configuring Configurando - + Test Successful Test riuscito - + Successfully received data from the server. Ricevuti con successo dati dal server. - + Test Failed Test fallito - + Could not receive valid data from the server.<br>Please verify that the server is set up correctly and the address and port are correct. Impossibile ricevere dati validi dal server.<br> Verificare che il server sia impostato correttamente e che indirizzo e porta siano corretti. - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. È in corso il test UDP o la configurazione della calibrazione,<br> attendere che finiscano. @@ -4273,9 +4743,9 @@ Per attivarlo, disattiva il mouse emulato. Interfaccia di rete - - None - Nessuna + + Enable Airplane Mode + Abilita la modalità aereo @@ -4331,49 +4801,54 @@ Per attivarlo, disattiva il mouse emulato. Alcune impostazioni sono disponibili soltanto quando un gioco non è in esecuzione. - + Add-Ons Add-on - + System Sistema - + CPU CPU - + Graphics Grafica - + Adv. Graphics Grafica (Avanzate) - - GPU Extensions - + + Ext. Graphics + Grafica (Estensioni) - + Audio Audio - + Input Profiles Profili di input - Linux - Linux + Network + Rete + + + + Applets + Applet @@ -4394,15 +4869,115 @@ Per attivarlo, disattiva il mouse emulato. Add-on - + + Import Mod from ZIP + Importa mod da file ZIP + + + + Import Mod from Folder + Importa mod da cartella + + + Patch Name Nome della patch - + Version Versione + + + Mod Install Succeeded + Installazione mod riuscita + + + + Successfully installed all mods. + Tutte le mod sono state installate con successo. + + + + Mod Install Failed + Installazione mod fallita + + + + Failed to install the following mods: + %1 +Check the log for details. + Non è stato possibile installare le seguenti mod: + %1 +Consulta il log per maggiori dettagli. + + + + Mod Folder + Cartella delle mod + + + + Zipped Mod Location + Posizione della mod in formato ZIP + + + + Zipped Archives (*.zip) + Archivi compressi (*.zip) + + + + Invalid Selection + Selezione non valida + + + + Only mods, cheats, and patches can be deleted. +To delete NAND-installed updates, right-click the game in the game list and click Remove -> Remove Installed Update. + Solo le mod, i trucchi e le patch possono essere eliminati. +Per eliminare gli aggiornamenti installati su NAND, fai clic con il tasto destro sul gioco nella lista e clicca Rimuovi -> Rimuovi l'aggiornamento installato. + + + + You are about to delete the following installed mods: + + Stai per eliminare le seguenti mod installate: + + + + + +Once deleted, these can NOT be recovered. Are you 100% sure you want to delete them? + +Una volta rimosse, non potranno più essere recuperate. Sei assolutamente sicuro di volerle eliminare? + + + + Delete add-on(s)? + Eliminazione add-on + + + + Successfully deleted + Eliminazione riuscita + + + + Successfully deleted all selected mods. + Tutte le mod selezionate sono state rimosse con successo. + + + + &Delete + &Elimina + + + + &Open in File Manager + &Apri nel gestore file + ConfigureProfileManager @@ -4432,32 +5007,17 @@ Per attivarlo, disattiva il mouse emulato. Nome utente - - Set Image - Imposta immagine - - - + Add Aggiungi - - Rename - Rinomina - - - - Remove - Rimuovi - - - + Profile management is available only when game is not running. La gestione dei profili è disponibile solamente quando il gioco non è in esecuzione. - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -4465,100 +5025,80 @@ Per attivarlo, disattiva il mouse emulato. %2 - - Enter Username - Inserisci il nome utente - - - + Users Utenti - - Enter a username for the new user: - Inserisci un nome utente per il nuovo utente: - - - - Enter a new username: - Inserisci un nuovo nome utente: - - - - Select User Image - Seleziona immagine utente - - - - JPEG Images (*.jpg *.jpeg) - Immagini JPEG (*.jpg *.jpeg) - - - + Error deleting image Impossibile eliminare l'immagine - + Error occurred attempting to overwrite previous image at: %1. Impossibile sovrascrivere l'immagine precedente in: %1. - + Error deleting file Impossibile eliminare il file - + Unable to delete existing file: %1. Impossibile eliminare il file già esistente: %1. - + Error creating user image directory Impossibile creare la cartella delle immagini dell'utente - + Unable to create directory %1 for storing user images. Impossibile creare la cartella %1 per archiviare le immagini dell'utente. - - Error copying user image - Impossibile copiare l'immagine utente + + Error saving user image + Impossibile salvare l'immagine utente - - Unable to copy image from %1 to %2 - Impossibile copiare l'immagine da %1 a %2 + + Unable to save image to file + Impossibile salvare l'immagine nel file - - Error resizing user image - Impossibile ridimensionare l'immagine utente + + &Edit + &Modifica - - Unable to resize image - Impossibile ridimensionare l'immagine + + &Delete + &Elimina + + + + Edit User + Modifica utente ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. Eliminare questo utente? Tutti i suoi dati di salvataggio verranno rimossi. - + Confirm Delete Conferma eliminazione - + Name: %1 UUID: %2 Nome: %1 @@ -4611,7 +5151,7 @@ UUID: %2 - + Enable Abilita @@ -4622,7 +5162,7 @@ UUID: %2 - + Not connected Non connesso @@ -4632,63 +5172,63 @@ UUID: %2 Ripristina valori predefiniti - + Clear Cancella - + [not set] [non impost.] - + Invert axis Inverti asse - - + + Deadzone: %1% Zona morta: %1% - + Error enabling ring input Impossibile abilitare il Ring-Con - + Direct Joycon driver is not enabled Il driver Joycon diretto non è abilitato - + Configuring Configurando - + The current mapped device doesn't support the ring controller L'attuale dispositivo mappato non supporta il Ring-Con - + The current mapped device doesn't have a ring attached L'attuale dispositivo mappato non è collegato a un Ring-Con - + The current mapped device is not connected L'attuale dispositivo mappato non è connesso. - + Unexpected driver result %1 Risultato imprevisto del driver: %1 - + [waiting] [in attesa] @@ -4712,7 +5252,7 @@ UUID: %2 Core - + Warning: "%1" is not a valid language for region "%2" Attenzione: "%1" non è una lingua valida per la regione "%2" @@ -4724,14 +5264,10 @@ UUID: %2 TAS TAS - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the yuzu website.</p></body></html> - <html><head/><body><p>Gli script vengono letti seguendo lo stesso formato degli script di TAS-nx.<br/>Per saperne di più, puoi consultare <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">questa pagina</span></a> sul sito di yuzu.</p></body></html> - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the eden website.</p></body></html> - + <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the user handbook.</p></body></html> + <html><head/><body><p>Legge l'input del controller dagli script nello stesso formato di TAS-nx.<br/>Per una spiegazione più dettagliata, consulta il manuale utente.</p></body></html> @@ -4751,7 +5287,7 @@ UUID: %2 Enable TAS features - Attiva le funzioni di TASing + Attiva le funzioni di TAS @@ -4764,17 +5300,22 @@ UUID: %2 Metti in pausa l'esecuzione durante i caricamenti - + + Show recording dialog + Mostra la finestra di registrazione + + + Script Directory Cartella degli script - + Path Percorso - + ... ... @@ -4782,12 +5323,12 @@ UUID: %2 ConfigureTasDialog - + TAS Configuration Configurazione TAS - + Select TAS Load Directory... Seleziona la cartella di caricamento TAS... @@ -4891,14 +5432,10 @@ Trascina i punti per cambiare posizione, oppure clicca due volte la cella in tab Configure Touchscreen Configura Touchscreen - - Warning: The settings in this page affect the inner workings of yuzu's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - Attenzione: Le impostazioni in questa pagina influenzano il funzionamento interno del touchscreen emulato di yuzu. Cambiarle potrebbe risultare in effetti indesiderati, ad esempio il touchscreen potrebbe non funzionare parzialmente o totalmente. Utilizza questa pagina solo se sei consapevole di ciò che stai facendo. - - Warning: The settings in this page affect the inner workings of eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - + Warning: The settings in this page affect the inner workings of Eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. + Attenzione: Le impostazioni in questa pagina influenzano il funzionamento interno del touchscreen emulato di Eden. Cambiarle potrebbe causare effetti indesiderati: ad esempio, il touchscreen potrebbe funzionare in parte o non funzionare più. Utilizza questa pagina solo se sei consapevole di ciò che stai facendo. @@ -4929,64 +5466,43 @@ Trascina i punti per cambiare posizione, oppure clicca due volte la cella in tab ConfigureUI - - - + + None Nessuna - - - Small (32x32) - Piccola (32x32) - - Standard (64x64) - Standard (64x64) - - - - Large (128x128) - Grande (128x128) - - - - Full Size (256x256) - Dimensione intera (256x256) - - - Small (24x24) Piccola (24x24) - + Standard (48x48) Standard (48x48) - + Large (72x72) Grande (72x72) - + Filename Nome del file - + Filetype Tipo di file - + Title ID ID del gioco (Title ID) - + Title Name Nome del gioco @@ -5055,71 +5571,66 @@ Trascina i punti per cambiare posizione, oppure clicca due volte la cella in tab - Game Icon Size: - Dimensione dell'icona del gioco: - - - Folder Icon Size: Dimensione dell'icona delle cartelle: - + Row 1 Text: Testo riga 1: - + Row 2 Text: Testo riga 2: - + Screenshots Screenshot - + Ask Where To Save Screenshots (Windows Only) Chiedi dove salvare gli screenshot (solo Windows) - + Screenshots Path: Percorso degli screenshot: - + ... ... - + TextLabel Etichetta - + Resolution: Risoluzione: - + Select Screenshots Path... Seleziona il percorso degli screenshot... - + <System> <System> - + English Inglese - + Auto (%1 x %2, %3 x %4) Screenshot width value Automatica (%1 x %2, %3 x %4) @@ -5217,170 +5728,178 @@ Trascina i punti per cambiare posizione, oppure clicca due volte la cella in tab Web Web - - yuzu Web Service - Servizio web di yuzu - - - By providing your username and token, you agree to allow yuzu to collect additional usage data, which may include user identifying information. - Fornendo i tuoi nome utente e token, permetti a yuzu di raccogliere dati di utilizzo aggiuntivi, che potrebbero contenere informazioni identificative dell'utente. - - eden Web Service - + Eden Web Service + Servizio web di Eden - - By providing your username and token, you agree to allow eden to collect additional usage data, which may include user identifying information. - - - - - Verify - Verifica - - - - Sign up - Registrati - - - + Token: Token: - + Username: Nome utente: - - What is my token? - Qual è il mio token? + + Generate + Genera - + Web Service configuration can only be changed when a public room isn't being hosted. La configurazione del servizio web può essere cambiata solo quando non si sta ospitando una stanza pubblica. - Telemetry - Telemetria - - - Share anonymous usage data with the yuzu team - Condividi dati anonimi sull'utilizzo con il team di yuzu - - - Learn more - Per saperne di più - - - Telemetry ID: - ID Telemetria: - - - Regenerate - Rigenera - - - + Discord Presence Discord Presence - + Show Current Game in your Discord Status Mostra il gioco in uso nel tuo stato di Discord - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Per saperne di più</span></a> - - - - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Registrati</span></a> - - - - <a href='https://evilperson1337.notion.site/Hosting-a-Room-Inside-of-Eden-20457c2edaf680108abac6215a79acdb'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - - - - - Warning - - - + - Verification is currently nonfunctional, instead generate a random 48-character string with only lowercase a-z. - - - - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">Qual è il mio token?</span></a> - - - Telemetry ID: 0x%1 - ID Telemetria: 0x%1 - - - Unspecified - Non specificato - - - Token not verified - Token non verificato - - - Token was not verified. The change to your token has not been saved. - Il token non è stato verificato. La modifica al token non è stata salvata. - - - - Unverified, please click Verify before saving configuration + All Good Tooltip - Non verificato, clicca su "Verifica" prima di salvare la configurazione + OK - Verifying... - Verifica in corso... - - - Verified + + Must be between 4-20 characters Tooltip - Verificato + Dev'essere compreso fra 4 e 20 caratteri - Verification failed + + Must be 48 characters, and lowercase a-z Tooltip - Verifica fallita - - - Verification failed - Verifica fallita - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - Verifica fallita. Controlla di aver inserito il token correttamente, e che la tua connessione a internet sia funzionante. + Devono essere 48 caratteri e contenere minuscole a-z ControllerDialog - + Controller P1 Controller G1 - + &Controller P1 &Controller G1 + + DataDialog + + + Data Manager + Gestione dati + + + + Deleting ANY data is IRREVERSABLE! + La cancellazione di qualsiasi dato è IRREVERSIBILE! + + + + Shaders + Shader + + + + UserNAND + UserNAND + + + + SysNAND + SysNAND + + + + Mods + Mod + + + + Saves + Salvataggi + + + + DataWidget + + + Form + Modulo + + + + Tooltip + Suggerimento + + + + Open with your system file manager + Apri con il gestore file di sistema + + + + Delete all data in this directory. THIS IS 100% IRREVERSABLE! + Cancella tutti i dati in questa cartella. L'OPERAZIONE È COMPLETAMENTE IRREVERSIBILE! + + + + Export all data in this directory. This may take a while! + Esporta tutti i dati in questa cartella. Potrebbe impiegare un po' di tempo! + + + + Import data for this directory. This may take a while, and will delete ALL EXISTING DATA! + Importa dati in questa cartella. Potrebbe impiegare un po' di tempo, e TUTTI I DATI ESISTENTI verranno cancellati! + + + + Calculating... + Calcolo in corso... + + + + DepsDialog + + + Eden Dependencies + Dipendenze di Eden + + + + <html><head/><body><p><span style=" font-size:28pt;">Eden Dependencies</span></p></body></html> + <html><head/><body><p><span style=" font-size:28pt;">Dipendenze di Eden</span></p></body></html> + + + + <html><head/><body><p>The projects that make Eden possible</p></body></html> + <html><head/><body><p>I progetti che rendono Eden possibile</p></body></html> + + + + Dependency + Dipendenza + + + + Version + Versione + + DirectConnect @@ -5442,1510 +5961,154 @@ Trascina i punti per cambiare posizione, oppure clicca due volte la cella in tab Username is not valid. Must be 4 to 20 alphanumeric characters. - Il nome utente non è valido. Deve essere composto da caratteri alfanumerici e lungo da 4 a 20 caratteri. + Il nome utente non è valido. Dev'essere compreso fra 4 e 20 caratteri e contenere solo lettere e numeri. Room name is not valid. Must be 4 to 20 alphanumeric characters. - Il nome della stanza non è valido. Deve essere composto da caratteri alfanumerici e lungo da 4 a 20 caratteri. + Il nome della stanza non è valido. Dev'essere compreso fra 4 e 20 caratteri e contenere solo lettere e numeri. Username is already in use or not valid. Please choose another. - Il nome utente è già in uso o non è valido. Scegline un altro. + Il nome utente è già in uso o non è valido. Scegline un altro. IP is not a valid IPv4 address. - L'IP non è un indirizzo IPv4 valido. + L'IP non è un indirizzo IPv4 valido. Port must be a number between 0 to 65535. - La porta deve essere un numero compreso tra 0 e 65535. + Il numero della porta dev'essere compreso tra 0 e 65535. You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - Devi selezionare un gioco preferito per ospitare una stanza. Se non hai ancora nessun gioco nella tua lista dei giochi, aggiungi una cartella di gioco cliccando sull'icona "+" nella lista dei giochi. + Devi scegliere un gioco preferito per poter ospitare una stanza. Se non hai ancora dei giochi in lista, aggiungi una cartella dei giochi cliccando sull'icona + nella lista. Unable to find an internet connection. Check your internet settings. - Impossibile connettersi ad internet. Controlla le tue impostazioni di rete. + Impossibile trovare una connessione a Internet. Controlla le tue impostazioni di rete. Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - Impossibile connettersi all'host. Verifica che le impostazioni di connessione siano corrette. Se continui a non riuscire a connetterti, contatta l'host della stanza e verifica che l'host sia configurato correttamente con la porta esterna inoltrata. + Impossibile connettersi all'host. Assicurati che le impostazioni di connessione siano corrette. Se ancora non riesci a connetterti, contatta l'host della stanza per verificare che abbia abilitato il forwarding delle porte. Unable to connect to the room because it is already full. - Impossibile connettersi alla stanza poiché è già piena. + Impossibile connettersi: la stanza è piena. - Creating a room failed. Please retry. Restarting eden might be necessary. - + Creating a room failed. Please retry. Restarting Eden might be necessary. + Creazione della stanza fallita. Riprova. Potrebbe essere necessario riavviare Eden. The host of the room has banned you. Speak with the host to unban you or try a different room. - L'host della stanza ti ha bannato. Chiedi all'host di revocare il ban o trova un'altra stanza. + L'host della stanza ti ha bannato. Contatta l'host o prova a connetterti a un altra stanza. - Version mismatch! Please update to the latest version of eden. If the problem persists, contact the room host and ask them to update the server. - + Version mismatch! Please update to the latest version of Eden. If the problem persists, contact the room host and ask them to update the server. + Le versioni non corrispondono! Aggiorna Eden all'ultima versione. Se il problema persiste, contatta l'host della stanza e chiedi di aggiornare il server. Incorrect password. - Password sbagliata. + Password errata. An unknown error occurred. If this error continues to occur, please open an issue - Si è verificato un errore sconosciuto. Se questo errore continua a ripetersi, apri un issue + Si è verificato un errore sconosciuto. Se il problema persiste, apri una segnalazione. Connection to room lost. Try to reconnect. - Connessione alla stanza persa. Prova a riconnetterti. + Connessione persa. Prova a riconnetterti. You have been kicked by the room host. - Sei stato espulso dall'host della stanza. + Sei stato espulso dall'host della stanza. IP address is already in use. Please choose another. - L'indirizzo IP è già in uso. Scegline un altro. + L'indirizzo IP è già in uso. Scegline un altro. You do not have enough permission to perform this action. - Non disponi dei permessi necessari per eseguire questa azione. + Non disponi dei permessi necessari per eseguire questa azione. The user you are trying to kick/ban could not be found. They may have left the room. - L'utente che stai cercando di espellere/bannare non è stato trovato. + L'utente che stai cercando di espellere/bannare non è stato trovato. Potrebbe aver abbandonato la stanza. No valid network interface is selected. Please go to Configure -> System -> Network and make a selection. - Nessuna interfaccia di rete valida selezionata. + Nessuna interfaccia di rete valida selezionata. Vai su Configura -> Sistema -> Rete e selezionane una. Error - Errore - - - - GMainWindow - - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Anonymous data is collected</a> to help improve yuzu. <br/><br/>Would you like to share your usage data with us? - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Vengono raccolti dati anonimi</a> per aiutarci a migliorare yuzu. <br/><br/>Desideri condividere i tuoi dati di utilizzo con noi? - - - Telemetry - Telemetria - - - - Broken Vulkan Installation Detected - Rilevata installazione di Vulkan non funzionante - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - L'inizializzazione di Vulkan è fallita durante l'avvio.<br><br>Clicca <a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>qui per istruzioni su come risolvere il problema</a>. - - - - Running a game - TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping - Gioco in esecuzione - - - - Loading Web Applet... - Caricamento dell'applet web... - - - - - Disable Web Applet - Disabilita l'applet web - - - - 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.) - Disabilitare l'applet web potrebbe causare dei comportamenti indesiderati. -Da usare solo con Super Mario 3D All-Stars. Sei sicuro di voler procedere? -(Puoi riabilitarlo quando vuoi nelle impostazioni di Debug.) - - - - The amount of shaders currently being built - Il numero di shader in fase di compilazione - - - - The current selected resolution scaling multiplier. - Il moltiplicatore corrente dello scaling della risoluzione. - - - - Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. - Velocità corrente dell'emulazione. Valori più alti o più bassi di 100% indicano che l'emulazione sta funzionando più velocemente o lentamente rispetto a una Switch. - - - - How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. - Il numero di fotogrammi al secondo che il gioco visualizza attualmente. Può variare in base al gioco e alla situazione. - - - - 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. - Tempo necessario per emulare un fotogramma della Switch, senza tenere conto del limite al framerate o del V-Sync. Per un'emulazione alla massima velocità, il valore non dovrebbe essere superiore a 16.67 ms. - - - - Unmute - Riattiva - - - - Mute - Silenzia - - - - Reset Volume - Reimposta volume - - - - &Clear Recent Files - &Cancella i file recenti - - - - &Continue - &Continua - - - - &Pause - &Pausa - - - - Warning Outdated Game Format - Formato del gioco obsoleto - - - 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.<br><br>For an explanation of the various Switch formats yuzu supports, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - 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. <br><br>Per una spiegazione sui vari formati della Switch supportati da yuzu, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>consulta la nostra wiki (in inglese)</a>. Non riceverai di nuovo questo avviso. - - - - - Error while loading ROM! - Errore nel caricamento della ROM! - - - - The ROM format is not supported. - Il formato della ROM non è supportato. - - - - An error occurred initializing the video core. - È stato riscontrato un errore nell'inizializzazione del core video. - - - 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: <a href='https://yuzu-emu.org/help/reference/log-files/'>How to Upload the Log File</a>. - yuzu ha riscontrato un problema durante l'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): <a href='https://yuzu-emu.org/help/reference/log-files/'>Come caricare i file di log</a>. - - - - Error while loading ROM! %1 - %1 signifies a numeric error code. - Errore nel caricamento della ROM! %1 - - - %1<br>Please follow <a href='https://yuzu-emu.org/help/quickstart/'>the yuzu quickstart guide</a> to redump your files.<br>You can refer to the yuzu wiki</a> or the yuzu Discord</a> for help. - %1 signifies an error string. - %1<br>Segui <a href='https://yuzu-emu.org/help/quickstart/'>la guida introduttiva di yuzu</a> per rifare il dump dei file.<br>Puoi dare un occhiata alla wiki di yuzu (in inglese)</a> o al server Discord di yuzu</a> per assistenza. - - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://eden-emulator.github.io/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - - - - - Game Updates Warning - - - - - The game you are trying to launch is known to have performance or booting issues when updates are applied. Please try increasing the memory layout to 6GB or 8GB if any issues occur.<br><br>Press "OK" to continue launching, or "Cancel" to cancel the launch. - - - - - Don't show again for this game - - - - - 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.<br><br>For an explanation of the various Switch formats eden supports, <a href='https://eden-emulator.github.io/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - - - - - eden 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: <a href='https://eden-emulator.github.io/help/reference/log-files/'>How to Upload the Log File</a>. - - - - - %1<br>Please redump your files or ask on Discord for help. - %1 signifies an error string. - - - - - An unknown error occurred. Please see the log for more details. - Si è verificato un errore sconosciuto. Visualizza il log per maggiori dettagli. - - - - (64-bit) - (64-bit) - - - - (32-bit) - (32-bit) - - - - %1 %2 - %1 is the title name. %2 indicates if the title is 64-bit or 32-bit - %1 %2 - - - - Closing software... - Chiusura del software in corso... - - - - Save Data - Dati di salvataggio - - - - Mod Data - Dati delle mod - - - - Error Opening %1 Folder - Impossibile aprire la cartella %1 - - - - - Folder does not exist! - La cartella non esiste! - - - - Error Opening Transferable Shader Cache - Impossibile aprire la cache trasferibile degli shader - - - - Failed to create the shader cache directory for this title. - Impossibile creare la cartella della cache degli shader per questo titolo. - - - - Error Removing Contents - Impossibile rimuovere il contentuto - - - - Error Removing Update - Impossibile rimuovere l'aggiornamento - - - - Error Removing DLC - Impossibile rimuovere il DLC - - - - Remove Installed Game Contents? - Rimuovere il contenuto del gioco installato? - - - - Remove Installed Game Update? - Rimuovere l'aggiornamento installato? - - - - Remove Installed Game DLC? - Rimuovere il DLC installato? - - - - Remove Entry - Rimuovi voce - - - - - - - - - Successfully Removed - Rimozione completata - - - - Successfully removed the installed base game. - Il gioco base installato è stato rimosso con successo. - - - - The base game is not installed in the NAND and cannot be removed. - Il gioco base non è installato su NAND e non può essere rimosso. - - - - Successfully removed the installed update. - Aggiornamento rimosso con successo. - - - - There is no update installed for this title. - Non c'è alcun aggiornamento installato per questo gioco. - - - - There are no DLC installed for this title. - Non c'è alcun DLC installato per questo gioco. - - - - Successfully removed %1 installed DLC. - %1 DLC rimossi con successo. - - - - Delete OpenGL Transferable Shader Cache? - Vuoi rimuovere la cache trasferibile degli shader OpenGL? - - - - Delete Vulkan Transferable Shader Cache? - Vuoi rimuovere la cache trasferibile degli shader Vulkan? - - - - Delete All Transferable Shader Caches? - Vuoi rimuovere tutte le cache trasferibili degli shader? - - - - Remove Custom Game Configuration? - Rimuovere la configurazione personalizzata del gioco? - - - - Remove Cache Storage? - Rimuovere la Storage Cache? - - - - Remove File - Rimuovi file - - - - Remove Play Time Data - Reimposta il tempo di gioco - - - - Reset play time? - Vuoi reimpostare il tempo di gioco? - - - - - Error Removing Transferable Shader Cache - Impossibile rimuovere la cache trasferibile degli shader - - - - - A shader cache for this title does not exist. - Per questo titolo non esiste una cache degli shader. - - - - Successfully removed the transferable shader cache. - La cache trasferibile degli shader è stata rimossa con successo. - - - - Failed to remove the transferable shader cache. - Impossibile rimuovere la cache trasferibile degli shader. - - - - Error Removing Vulkan Driver Pipeline Cache - Impossibile rimuovere la cache delle pipeline del driver Vulkan - - - - Failed to remove the driver pipeline cache. - Impossibile rimuovere la cache delle pipeline del driver. - - - - - Error Removing Transferable Shader Caches - Impossibile rimuovere le cache trasferibili degli shader - - - - Successfully removed the transferable shader caches. - Le cache trasferibili degli shader sono state rimosse con successo. - - - - Failed to remove the transferable shader cache directory. - Impossibile rimuovere la cartella della cache trasferibile degli shader. - - - - - Error Removing Custom Configuration - Impossibile rimuovere la configurazione personalizzata - - - - A custom configuration for this title does not exist. - Non esiste una configurazione personalizzata per questo gioco. - - - - Successfully removed the custom game configuration. - La configurazione personalizzata del gioco è stata rimossa con successo. - - - - Failed to remove the custom game configuration. - Impossibile rimuovere la configurazione personalizzata del gioco. - - - - - RomFS Extraction Failed! - Estrazione RomFS fallita! - - - - There was an error copying the RomFS files or the user cancelled the operation. - C'è stato un errore nella copia dei file del RomFS o l'operazione è stata annullata dall'utente. - - - - Full - Completa - - - - Skeleton - Cartelle - - - - Select RomFS Dump Mode - Seleziona la modalità di estrazione della RomFS - - - - Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. - Seleziona come vorresti estrarre la RomFS. <br>La modalità Completa copierà tutti i file in una nuova cartella mentre<br>la modalità Cartelle creerà solamente le cartelle e le sottocartelle. - - - - There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root - Non c'è abbastanza spazio disponibile nel disco %1 per estrarre la RomFS. Libera lo spazio o seleziona una cartella di estrazione diversa in Emulazione > Configura > Sistema > File system > Cartella di estrazione - - - - Extracting RomFS... - Estrazione RomFS in corso... - - - - - - - - Cancel - Annulla - - - - RomFS Extraction Succeeded! - Estrazione RomFS riuscita! - - - - - - The operation completed successfully. - L'operazione è stata completata con successo. - - - - Integrity verification couldn't be performed! - Impossibile verificare l'integrità dei file. - - - - File contents were not checked for validity. - I contenuti di questo file non sono stati verificati. - - - - - Verifying integrity... - Verifica dell'integrità della ROM in corso... - - - - - Integrity verification succeeded! - Verifica dell'integrità completata con successo! - - - - - Integrity verification failed! - Verifica dell'integrità fallita! - - - - File contents may be corrupt. - I contenuti del file potrebbero essere corrotti. - - - - - - - Create Shortcut - Crea scorciatoia - - - - Do you want to launch the game in fullscreen? - Vuoi avviare il gioco a schermo intero? - - - - Successfully created a shortcut to %1 - Scorciatoia creata con successo in %1 - - - - This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - Verrà creata una scorciatoia all'AppImage attuale. Potrebbe non funzionare correttamente se effettui un aggiornamento. Vuoi continuare? - - - - Failed to create a shortcut to %1 - Impossibile creare la scorciatoia in %1 - - - - Create Icon - Crea icona - - - - Cannot create icon file. Path "%1" does not exist and cannot be created. - Impossibile creare il file dell'icona. Il percorso "%1" non esiste e non può essere creato. - - - - Error Opening %1 - Impossibile aprire %1 - - - - Select Directory - Seleziona cartella - - - - Properties - Proprietà - - - - The game properties could not be loaded. - Non è stato possibile caricare le proprietà del gioco. - - - - Switch Executable (%1);;All Files (*.*) - %1 is an identifier for the Switch executable file extensions. - Eseguibile Switch (%1);;Tutti i file (*.*) - - - - Load File - Carica file - - - - Open Extracted ROM Directory - Apri cartella ROM estratta - - - - Invalid Directory Selected - Cartella selezionata non valida - - - - The directory you have selected does not contain a 'main' file. - La cartella che hai selezionato non contiene un file "main". - - - - Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - File installabili Switch (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - - - - Install Files - Installa file - - - - %n file(s) remaining - - %n file rimanente - %n file rimanenti - - - - - Installing file "%1"... - Installazione del file "%1"... - - - - - Install Results - Risultati dell'installazione - - - - To avoid possible conflicts, we discourage users from installing base games to the NAND. -Please, only use this feature to install updates and DLC. - Per evitare possibli conflitti, sconsigliamo di installare i giochi base su NAND. -Usa questa funzione solo per installare aggiornamenti e DLC. - - - - %n file(s) were newly installed - - - %n nuovo file è stato installato - - %n nuovi file sono stati installati - - - - - - %n file(s) were overwritten - - - %n file è stato sovrascritto - - %n file sono stati sovrascritti - - - - - - %n file(s) failed to install - - - %n file non è stato installato a causa di errori - - %n file non sono stati installati a causa di errori - - - - - - System Application - Applicazione di sistema - - - - System Archive - Archivio di sistema - - - - System Application Update - Aggiornamento di un'applicazione di sistema - - - - Firmware Package (Type A) - Pacchetto firmware (tipo A) - - - - Firmware Package (Type B) - Pacchetto firmware (tipo B) - - - - Game - Gioco - - - - Game Update - Aggiornamento di gioco - - - - Game DLC - DLC - - - - Delta Title - Titolo delta - - - - Select NCA Install Type... - Seleziona il tipo di installazione NCA - - - - Please select the type of title you would like to install this NCA as: -(In most instances, the default 'Game' is fine.) - Seleziona il tipo del file NCA da installare: -(Nella maggior parte dei casi, il valore predefinito 'Gioco' va bene.) - - - - Failed to Install - Installazione fallita - - - - The title type you selected for the NCA is invalid. - Il tipo che hai selezionato per l'NCA non è valido. - - - - File not found - File non trovato - - - - File "%1" not found - File "%1" non trovato - - - - OK - OK - - - - - Hardware requirements not met - Requisiti hardware non soddisfatti - - - - - Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled. - Il tuo sistema non soddisfa i requisiti hardware consigliati. La funzionalità di segnalazione della compatibilità è stata disattivata. - - - - Missing yuzu Account - Account di yuzu non trovato - - - - In order to submit a game compatibility test case, you must link your eden account.<br><br/>To link your eden account, go to Emulation &gt; Configuration &gt; Web. - - - - - Install decryption keys and restart eden before attempting to install firmware. - - - - - Firmware installation cancelled, firmware may be in bad state, restart eden or re-install firmware. - - - - - Encryption keys are missing. - - - - - Are you sure you want to close eden? - - - - - - - eden - - - - - The currently running application has requested eden to not exit. - -Would you like to bypass this and exit anyway? - - - - In order to submit a game compatibility test case, you must link your yuzu account.<br><br/>To link your yuzu account, go to Emulation &gt; Configuration &gt; Web. - Per segnalare la compatibilità di un gioco, devi collegare il tuo account yuzu. <br><br/>Per collegare il tuo account yuzu, vai su Emulazione &gt; -Configurazione &gt; Web. - - - - Error opening URL - Impossibile aprire l'URL - - - - Unable to open the URL "%1". - Non è stato possibile aprire l'URL "%1". - - - - TAS Recording - Registrazione TAS - - - - Overwrite file of player 1? - Vuoi sovrascrivere il file del giocatore 1? - - - - Invalid config detected - Rilevata configurazione non valida - - - - Handheld controller can't be used on docked mode. Pro controller will be selected. - Il controller portatile non può essere utilizzato in modalità dock. Verrà selezionato il controller Pro. - - - - - Amiibo - Amiibo - - - - - The current amiibo has been removed - L'Amiibo corrente è stato rimosso - - - - Error Errore - - - - The current game is not looking for amiibos - Il gioco in uso non è alla ricerca di Amiibo - - - - Amiibo File (%1);; All Files (*.*) - File Amiibo (%1);; Tutti i file (*.*) - - - - Load Amiibo - Carica Amiibo - - - - Error loading Amiibo data - Impossibile caricare i dati dell'Amiibo - - - - The selected file is not a valid amiibo - Il file selezionato non è un Amiibo valido - - - - The selected file is already on use - Il file selezionato è già in uso - - - - An unknown error occurred - Si è verificato un errore sconosciuto - - - - - Verification failed for the following files: - -%1 - La verifica sui seguenti file è fallita: - -%1 - - - - Keys not installed - - - - - Select Dumped Firmware Source Location - - - - - Installing Firmware... - - - - - - - - Firmware install failed - - - - - Unable to locate potential firmware NCA files - - - - - Failed to delete one or more firmware file. - - - - - One or more firmware files failed to copy into NAND. - - - - - Firmware integrity verification failed! - - - - - Select Dumped Keys Location - - - - - - - Decryption Keys install failed - - - - - prod.keys is a required decryption key file. - - - - - One or more keys failed to copy. - - - - - Decryption Keys install succeeded - - - - - Decryption Keys were successfully installed - - - - - Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. - - - - - - - - - - - No firmware available - Nessun firmware disponibile - - - - Please install the firmware to use the Album applet. - Devi installare il firmware per usare l'applet dell'album. - - - - Album Applet - Applet Album - - - - Album applet is not available. Please reinstall firmware. - L'applet dell'album non è disponibile. Reinstalla il firmware. - - - - Please install the firmware to use the Cabinet applet. - Devi installare il firmware per usare l'applet Cabinet. - - - - Cabinet Applet - Applet Cabinet - - - - Cabinet applet is not available. Please reinstall firmware. - L'applet del Cabinet non è disponibile. Reinstalla il firmware. - - - - Please install the firmware to use the Mii editor. - Devi installare il firmware per usare l'editor dei Mii. - - - - Mii Edit Applet - Editor dei Mii - - - - Mii editor is not available. Please reinstall firmware. - L'editor dei Mii non è disponibile. Reinstalla il firmware. - - - - Please install the firmware to use the Controller Menu. - Devi installare il firmware per usare il menù dei controller. - - - - Controller Applet - Applet controller - - - - Controller Menu is not available. Please reinstall firmware. - Il menù dei controller non è disponibile. Reinstalla il firmware. - - - - Please install the firmware to use the Home Menu. - - - - - - Home Menu Applet - - - - - - Home Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use Starter. - - - - - Starter Applet - - - - - Starter is not available. Please reinstall firmware. - - - - - Please install firmware to use the home menu. - - - - - Capture Screenshot - Cattura screenshot - - - - PNG Image (*.png) - Immagine PNG (*.png) - - - - Update Available - - - - - Update %1 for Eden is available. -Would you like to download it? - - - - - TAS state: Running %1/%2 - Stato TAS: In esecuzione (%1/%2) - - - - TAS state: Recording %1 - Stato TAS: Registrazione in corso (%1) - - - - TAS state: Idle %1/%2 - Stato TAS: In attesa (%1/%2) - - - - TAS State: Invalid - Stato TAS: Non valido - - - - &Stop Running - &Interrompi - - - - &Start - &Avvia - - - - Stop R&ecording - Interrompi r&egistrazione - - - - R&ecord - R&egistra - - - - Building: %n shader(s) - - Compilazione di %n shader - Compilazione di %n shader - - - - - Scale: %1x - %1 is the resolution scaling factor - Risoluzione: %1x - - - - Speed: %1% / %2% - Velocità: %1% / %2% - - - - Speed: %1% - Velocità: %1% - - - Game: %1 FPS (Unlocked) - Gioco: %1 FPS (Sbloccati) - - - - Game: %1 FPS - Gioco: %1 FPS - - - - Frame: %1 ms - Frame: %1 ms - - - - %1 %2 - %1 %2 - - - - - FSR - FSR - - - - NO AA - NO AA - - - - VOLUME: MUTE - VOLUME: MUTO - - - - VOLUME: %1% - Volume percentage (e.g. 50%) - VOLUME: %1% - - - - Derivation Components Missing - Componenti di derivazione mancanti - - - - Select RomFS Dump Target - Seleziona Target dell'Estrazione del RomFS - - - - Please select which RomFS you would like to dump. - Seleziona quale RomFS vorresti estrarre. - - - Are you sure you want to close yuzu? - Sei sicuro di voler chiudere yuzu? - - - yuzu - yuzu - - - - Are you sure you want to stop the emulation? Any unsaved progress will be lost. - Sei sicuro di voler arrestare l'emulazione? Tutti i progressi non salvati verranno perduti. - - - The currently running application has requested yuzu to not exit. - -Would you like to bypass this and exit anyway? - L'applicazione in uso ha richiesto a yuzu di non arrestare il programma. - -Vuoi forzare l'arresto? - - - - None - Nessuna - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Nearest - Nearest - - - - Bilinear - Bilineare - - - - Bicubic - Bicubico - - - - Gaussian - Gaussiano - - - - ScaleForce - ScaleForce - - - - Area - - - - - Docked - Dock - - - - Handheld - Portatile - - - - Normal - Normale - - - - High - Alta - - - - Extreme - Estrema - - - - Vulkan - Vulkan - - - - OpenGL - OpenGL - - - - Null - Nullo - - - - GLSL - GLSL - - - - GLASM - GLASM - - - - SPIRV - SPIRV - GRenderWindow - - + + OpenGL not available! OpenGL non disponibile! - + OpenGL shared contexts are not supported. Gli shared context di OpenGL non sono supportati. - yuzu has not been compiled with OpenGL support. - yuzu è stato compilato senza il supporto a OpenGL. + + Eden has not been compiled with OpenGL support. + Eden non è stato compilato con il supporto a OpenGL. - - eden has not been compiled with OpenGL support. - - - - - + + Error while initializing OpenGL! Errore durante l'inizializzazione di OpenGL! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. La tua GPU potrebbe non supportare OpenGL, o non hai installato l'ultima versione dei driver video. - + Error while initializing OpenGL 4.6! Errore durante l'inizializzazione di OpenGL 4.6! - + Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 La tua GPU potrebbe non supportare OpenGL 4.6, o non hai installato l'ultima versione dei driver video.<br><br>Renderer GL:<br>%1 - + Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2 La tua GPU potrebbe non supportare una o più estensioni OpenGL richieste. Assicurati di aver installato i driver video più recenti.<br><br>Renderer GL:<br>%1<br><br>Estensioni non supportate:<br>%2 @@ -6953,192 +6116,208 @@ Vuoi forzare l'arresto? GameList - + + &Add New Game Directory + &Aggiungi nuova cartella dei giochi + + + Favorite Preferito - + Start Game Avvia gioco - + Start Game without Custom Configuration Avvia gioco senza la configurazione personalizzata - + Open Save Data Location Apri la cartella dei dati di salvataggio - + Open Mod Data Location Apri la cartella delle mod - + Open Transferable Pipeline Cache Apri la cartella della cache trasferibile delle pipeline - + + Link to Ryujinx + Collega con Ryujinx + + + Remove Rimuovi - + Remove Installed Update Rimuovi l'aggiornamento installato - + Remove All Installed DLC Rimuovi tutti i DLC installati - + Remove Custom Configuration Rimuovi la configurazione personalizzata - - Remove Play Time Data - Reimposta il tempo di gioco - - - + Remove Cache Storage - Rimuovi Storage Cache + Rimuovi la cache del gioco - + Remove OpenGL Pipeline Cache Rimuovi la cache delle pipeline OpenGL - + Remove Vulkan Pipeline Cache Rimuovi la cache delle pipeline Vulkan - + Remove All Pipeline Caches Rimuovi tutte le cache delle pipeline - + Remove All Installed Contents Rimuovi tutti i contenuti installati - - + + Manage Play Time + Gestisci il tempo di gioco + + + + Edit Play Time Data + Modifica il tempo di gioco + + + + Remove Play Time Data + Reimposta il tempo di gioco + + + + Dump RomFS Estrai RomFS - + Dump RomFS to SDMC Estrai RomFS su SDMC - + Verify Integrity - Verifica Integrità + Verifica integrità - + Copy Title ID to Clipboard - Copia il Title ID negli Appunti + Copia il Title ID negli appunti - + Navigate to GameDB entry Vai alla pagina di GameDB - + Create Shortcut Crea scorciatoia - + Add to Desktop Aggiungi al desktop - + Add to Applications Menu Aggiungi al menù delle applicazioni - + Configure Game - + Configura gioco - Properties - Proprietà - - - + Scan Subfolders Scansiona le sottocartelle - + Remove Game Directory Rimuovi cartella dei giochi - + ▲ Move Up ▲ Sposta in alto - + ▼ Move Down ▼ Sposta in basso - + Open Directory Location Apri cartella - + Clear Cancella - + Name Nome - + Compatibility Compatibilità - + Add-ons Add-on - + File type Tipo di file - + Size Dimensione - + Play time Tempo di gioco @@ -7146,62 +6325,62 @@ Vuoi forzare l'arresto? GameListItemCompat - + Ingame In-game - + Game starts, but crashes or major glitches prevent it from being completed. Il gioco parte, ma non può essere completato a causa di arresti anomali o di glitch importanti. - + Perfect Perfetto - + Game can be played without issues. Il gioco funziona senza problemi. - + Playable Giocabile - + Game functions with minor graphical or audio glitches and is playable from start to finish. Il gioco presenta alcuni glitch audio o video minori ed è possibile giocare dall'inizio alla fine. - + Intro/Menu Intro/Menù - + Game loads, but is unable to progress past the Start Screen. Il gioco si avvia, ma è impossibile proseguire oltre la schermata iniziale. - + Won't Boot Non si avvia - + The game crashes when attempting to startup. Il gioco si blocca quando viene avviato. - + Not Tested Non testato - + The game has not yet been tested. Il gioco non è ancora stato testato. @@ -7209,7 +6388,7 @@ Vuoi forzare l'arresto? GameListPlaceholder - + Double-click to add a new folder to the game list Clicca due volte per aggiungere una nuova cartella alla lista dei giochi @@ -7217,20 +6396,17 @@ Vuoi forzare l'arresto? GameListSearchField - + %1 of %n result(s) - - %1 di %n risultato - %1 di %n risultati - + %1 di %n risultato%1 di %n di risultati%1 di %n risultati - + Filter: Filtro: - + Enter pattern to filter Inserisci pattern per filtrare @@ -7306,233 +6482,242 @@ Vuoi forzare l'arresto? HostRoomWindow - + Error Errore - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. + + Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid Eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. Debug Message: - - - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid yuzu account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. -Debug Message: - Impossibile annunciare la stanza alla lobby pubblica. Per ospitare una stanza pubblicamente, devi avere un account yuzu valido configurato in Emulazione -> Configura -> Web. Se non desideri pubblicare una stanza nella lobby pubblica, seleziona Non in lista. -Messaggio di debug: + Annuncio della stanza pubblica fallito. Per ospitare una stanza pubblica, devi avere un account Eden valido configurato in Emulazione -> Configura -> Web. Se non vuoi pubblicare una stanza pubblicamente, selezione Non in lista. +Messaggio debug: Hotkeys - + Audio Mute/Unmute Attiva/disattiva l'audio - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Main Window Finestra principale - + Audio Volume Down Abbassa il volume dell'audio - + Audio Volume Up Alza il volume dell'audio - + Capture Screenshot Cattura screenshot - + Change Adapting Filter Cambia filtro di adattamento - + Change Docked Mode Cambia modalità console - - Change GPU Accuracy - Cambia accuratezza GPU + + Change GPU Mode + Cambia modalità GPU - + Configure - Configura + Configura - + Configure Current Game - + Configura il gioco in uso - + Continue/Pause Emulation Continua/Metti in pausa l'emulazione - + Exit Fullscreen Esci dalla modalità schermo intero - Exit yuzu - Esci da yuzu + + Exit Eden + Esci da Eden - - Exit eden - - - - + Fullscreen Schermo intero - + Load File Carica file - + Load/Remove Amiibo Carica/Rimuovi Amiibo - - Multiplayer Browse Public Game Lobby - + + Browse Public Game Lobby + Sfoglia lobby di gioco pubblica - - Multiplayer Create Room - + + Create Room + Crea stanza - - Multiplayer Direct Connect to Room - + + Direct Connect to Room + Collegamento diretto a una stanza - - Multiplayer Leave Room - + + Leave Room + Esci dalla stanza - - Multiplayer Show Current Room - + + Show Current Room + Mostra stanza attuale - + Restart Emulation Riavvia l'emulazione - + Stop Emulation Arresta l'emulazione - + TAS Record Registra TAS - + TAS Reset Reimposta TAS - + TAS Start/Stop Avvia/interrompi TAS - + Toggle Filter Bar Mostra/nascondi la barra del filtro - + Toggle Framerate Limit Attiva/disattiva il limite del framerate - + + Toggle Turbo Speed + Attiva/disattiva la modalità Turbo + + + + Toggle Slow Speed + Attiva/disattiva la modalità Lenta + + + Toggle Mouse Panning Attiva/disattiva il mouse panning - + Toggle Renderdoc Capture - + Abilita cattura Renderdoc - + Toggle Status Bar Mostra/nascondi la barra di stato + + + Toggle Performance Overlay + Mostra/nascondi prestazioni in sovrimpressione + InstallDialog - + Please confirm these are the files you wish to install. Conferma che questi sono i file che vuoi installare. - + Installing an Update or DLC will overwrite the previously installed one. Installare un aggiornamento o un DLC sostituirà quello precedente. - + Install Installa - + Install Files to NAND Installa file su NAND @@ -7540,8 +6725,8 @@ Messaggio di debug: LimitableInputDialog - - The text can't contain any of the following characters: + + The text can't contain any of the following characters: %1 Il testo non può contenere i seguenti caratteri: %1 @@ -7565,22 +6750,22 @@ Messaggio di debug: Tempo stimato 5m 4s - + Loading... Caricamento... - + Loading Shaders %1 / %2 %1 / %2 shader caricati - + Launching... Avvio in corso... - + Estimated Time %1 Tempo Stimato %1 @@ -7629,42 +6814,42 @@ Messaggio di debug: Aggiorna lobby - + Password Required to Join Password richiesta per entrare - + Password: Password: - + Players Giocatori - + Room Name Nome stanza - + Preferred Game Gioco preferito - + Host Host - + Refreshing Aggiornamento in corso - + Refresh List Aggiorna lista @@ -7687,362 +6872,1440 @@ Messaggio di debug: File &recenti - + + Open &Eden Folders + Apri cartelle di &Eden + + + &Emulation &Emulazione - + &View &Visualizza - + &Reset Window Size &Ripristina dimensioni della finestra - + &Debugging &Debug - + + &Game List Mode + &Modalità della lista dei giochi + + + + Game &Icon Size + Dimensione delle &icone dei giochi + + + Reset Window Size to &720p Ripristina le dimensioni della finestra a &720p - + Reset Window Size to 720p Ripristina le dimensioni della finestra a 720p - + Reset Window Size to &900p Ripristina le dimensioni della finestra a &900p - + Reset Window Size to 900p Ripristina le dimensioni della finestra a 900p - + Reset Window Size to &1080p Ripristina le dimensioni della finestra a &1080p - + Reset Window Size to 1080p Ripristina le dimensioni della finestra a 1080p - + &Multiplayer &Multigiocatore - + &Tools &Strumenti - - &Amiibo - &Amiibo + + Am&iibo + Am&iibo - + + Launch &Applet + Avvia &applet + + + &TAS &TAS - + &Create Home Menu Shortcut - + &Crea scorciatoia per il menù Home - + + Install &Firmware + Installa &firmware + + + &Help &Aiuto - + &Install Files to NAND... &Installa file su NAND... - + L&oad File... Carica &file... - + Load &Folder... Carica &cartella... - + E&xit &Esci - + + &Pause &Pausa - + &Stop Arre&sta - + &Verify Installed Contents &Verifica i contenuti installati - - &About eden - + + &About Eden + &Informazioni su Eden - - Open &eden Folder - - - - - Open Home Menu - - - - - &Discord - - - - - Open &Setup - - - - - &Desktop - - - - - &Application Menu - - - - &About yuzu - &Informazioni su yuzu - - - + Single &Window Mode &Modalità finestra singola - + Con&figure... Configura... - + Ctrl+, - + Ctrl+, - - Display D&ock Widget Headers - Visualizza le intestazioni del dock dei widget + + Enable Overlay Display Applet + - + Show &Filter Bar Mostra barra del &filtro - + Show &Status Bar Mostra barra di &stato - + Show Status Bar Mostra barra di stato - + &Browse Public Game Lobby &Sfoglia lobby di gioco pubblica - + &Create Room &Crea stanza - + &Leave Room &Esci dalla stanza - + &Direct Connect to Room - Collegamento &diretto alla stanza + Collegamento &diretto a una stanza - + &Show Current Room &Mostra stanza attuale - + F&ullscreen Schermo intero - + &Restart &Riavvia - + Load/Remove &Amiibo... Carica/Rimuovi &Amiibo... - + &Report Compatibility &Segnala la compatibilità - + Open &Mods Page Apri la pagina delle &mod - + Open &Quickstart Guide Apri la &guida introduttiva - + &FAQ &Domande frequenti - Open &yuzu Folder - Apri la cartella di yuzu - - - + &Capture Screenshot Cattura schermo - - Open &Album - Apri l'&album + + &Album + &Album - + &Set Nickname and Owner &Imposta nickname e proprietario - + &Delete Game Data &Rimuovi i dati di gioco - + &Restore Amiibo &Ripristina gli Amiibo - + &Format Amiibo &Formatta gli Amiibo - - Open &Mii Editor - Apri l'&editor dei Mii + + &Mii Editor + Editor &Mii - + &Configure TAS... &Configura TAS... - + Configure C&urrent Game... Configura il gioco in uso... - + + &Start &Avvia - + &Reset &Reimposta - + + R&ecord R&egistra - + Open &Controller Menu Apri il menù dei &controller - - Install Firmware - + + Install Decryption &Keys + Installa le &chiavi di crittografia - - Install Decryption Keys - + + &Home Menu + Menù &Home - - - MicroProfileDialog - - &MicroProfile - MicroProfile + + &Desktop + &Desktop + + + + &Application Menu + &Menù delle applicazioni + + + + &Root Data Folder + Cartella &principale dei dati + + + + &NAND Folder + Cartella &NAND + + + + &SDMC Folder + Cartella &SDMC + + + + &Mod Folder + Cartella delle &mod + + + + &Log Folder + Cartella dei &log + + + + From Folder + Da una cartella + + + + From ZIP + Da un file ZIP + + + + &Eden Dependencies + &Dipendenze di Eden + + + + &Data Manager + Gestione &dati + + + + &Tree View + Vista ad &albero + + + + &Grid View + Vista a &griglia + + + + Game Icon Size + Dimensione delle icone dei giochi + + + + + + None + Nessuno + + + + Show Game &Name + Mostra i nomi dei giochi + + + + Show &Performance Overlay + Mostra &prestazioni in sovrimpressione + + + + Small (32x32) + Piccola (32x32) + + + + Standard (64x64) + Normale (64x64) + + + + Large (128x128) + Grande (128x128) + + + + Full Size (256x256) + Intera (256x256) + + + + Broken Vulkan Installation Detected + Rilevata installazione di Vulkan non funzionante + + + + Vulkan initialization failed during boot. + L'inizializzazione di Vulkan è fallita durante l'avvio. + + + + Running a game + TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping + Gioco in esecuzione + + + + Loading Web Applet... + Caricamento dell'applet web... + + + + + Disable Web Applet + Disabilita l'applet web + + + + 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.) + Disabilitare l'applet web potrebbe causare dei comportamenti indesiderati e andrebbe fatto solo con Super Mario 3D All-Stars. Sei sicuro di voler procedere? +(Puoi riabilitarlo quando vuoi nelle impostazioni di debug.) + + + + The amount of shaders currently being built + Il numero di shader in fase di compilazione + + + + The current selected resolution scaling multiplier. + Il moltiplicatore attuale della risoluzione. + + + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. + Velocità attuale dell'emulazione. Valori più alti o più bassi di 100% indicano che l'emulazione sta funzionando più velocemente o lentamente rispetto a una Switch. + + + + How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. + Il numero di fotogrammi al secondo che il gioco sta attualmente renderizzando. Può variare in base al gioco e alla situazione. + + + + 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. + Tempo necessario per emulare un fotogramma della Switch, senza tenere conto del limite al framerate o del V-Sync. Per un'emulazione alla massima velocità, il valore non dovrebbe essere superiore a 16.67 ms. + + + + Unmute + Riattiva + + + + Mute + Silenzia + + + + Reset Volume + Reimposta volume + + + + &Clear Recent Files + &Cancella i file recenti + + + + &Continue + &Continua + + + + Warning: Outdated Game Format + Attenzione: Formato del gioco obsoleto + + + + 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.<br>For an explanation of the various Switch formats Eden supports, out our user handbook. This message will not be shown again. + 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 né metadati e non supportano gli aggiornamenti.<br>Per una spiegazione sui vari formati della console Switch supportati da Eden, consulta il manuale utente. Non riceverai di nuovo questo avviso. + + + + + Error while loading ROM! + Errore nel caricamento della ROM! + + + + The ROM format is not supported. + Il formato della ROM non è supportato. + + + + An error occurred initializing the video core. + Errore durante l'inizializzazione del componente video di base + + + + Eden 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: <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>How to Upload the Log File</a>. + Eden ha riscontrato un errore durante l'esecuzione del componente video di base. Di solito questo errore è causato da driver GPU obsoleti, compresi quelli integrati. Consulta il log per maggiori dettagli. Per informazioni su come accedere al log, visita <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>questa pagina</a>. + + + + Error while loading ROM! %1 + %1 signifies a numeric error code. + Errore nel caricamento della ROM! %1 + + + + %1<br>Please redump your files or ask on Discord/Stoat for help. + %1 signifies an error string. + %1<br>Esegui un nuovo dump dei tuoi file o chiedi aiuto su Discord/Stoat. + + + + An unknown error occurred. Please see the log for more details. + Si è verificato un errore sconosciuto. Consulta il log per maggiori dettagli. + + + + (64-bit) + (64 bit) + + + + (32-bit) + (32 bit) + + + + %1 %2 + %1 is the title name. %2 indicates if the title is 64-bit or 32-bit + %1 %2 + + + + Closing software... + Chiusura del software in corso... + + + + Save Data + Dati di salvataggio + + + + Mod Data + Dati delle mod + + + + Error Opening %1 Folder + Impossibile aprire la cartella %1 + + + + + Folder does not exist! + La cartella non esiste! + + + + Remove Installed Game Contents? + Rimuovere il contenuto del gioco installato? + + + + Remove Installed Game Update? + Rimuovere l'aggiornamento installato? + + + + Remove Installed Game DLC? + Rimuovere il DLC installato? + + + + Remove Entry + Rimuovi voce + + + + Delete OpenGL Transferable Shader Cache? + Vuoi rimuovere la cache trasferibile degli shader OpenGL? + + + + Delete Vulkan Transferable Shader Cache? + Vuoi rimuovere la cache trasferibile degli shader Vulkan? + + + + Delete All Transferable Shader Caches? + Vuoi rimuovere tutte le cache trasferibili degli shader? + + + + Remove Custom Game Configuration? + Rimuovere la configurazione personalizzata del gioco? + + + + Remove Cache Storage? + Rimuovere la cache del gioco? + + + + Remove File + Rimuovi file + + + + Remove Play Time Data + Reimposta il tempo di gioco + + + + Reset play time? + Vuoi reimpostare il tempo di gioco? + + + + + RomFS Extraction Failed! + Estrazione RomFS fallita! + + + + There was an error copying the RomFS files or the user cancelled the operation. + Si è verificato un errore durante la copia dei file del RomFS o l'operazione è stata annullata dall'utente. + + + + Full + Completa + + + + Skeleton + Cartelle + + + + Select RomFS Dump Mode + Seleziona la modalità di estrazione del RomFS + + + + Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. + Seleziona come vorresti estrarre il RomFS. <br>La modalità Completa copierà tutti i file in una nuova cartella mentre<br>la modalità Cartelle creerà solamente la struttura delle cartelle. + + + + There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root + Non c'è abbastanza spazio disponibile in %1 per estrarre il RomFS. Libera lo spazio o seleziona una cartella di estrazione diversa in Emulazione > Configura > Sistema > File system > Cartella di estrazione + + + + Extracting RomFS... + Estrazione RomFS in corso... + + + + + Cancel + Annulla + + + + RomFS Extraction Succeeded! + Estrazione RomFS riuscita! + + + + The operation completed successfully. + L'operazione è stata completata con successo. + + + + Error Opening %1 + Impossibile aprire %1 + + + + Select Directory + Seleziona cartella + + + + Properties + Proprietà + + + + The game properties could not be loaded. + Non è stato possibile caricare le proprietà del gioco. + + + + Switch Executable (%1);;All Files (*.*) + %1 is an identifier for the Switch executable file extensions. + Eseguibile Switch (%1);;Tutti i file (*.*) + + + + Load File + Carica file + + + + Open Extracted ROM Directory + Apri la cartella della ROM estratta + + + + Invalid Directory Selected + Cartella selezionata non valida + + + + The directory you have selected does not contain a 'main' file. + La cartella che hai selezionato non contiene un file "main". + + + + Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) + File Switch installabili (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) + + + + Install Files + Installa file + + + + %n file(s) remaining + %n file rimanente%n di file rimanenti%n file rimanenti + + + + Installing file "%1"... + Installazione del file "%1"... + + + + + Install Results + Risultati dell'installazione + + + + To avoid possible conflicts, we discourage users from installing base games to the NAND. +Please, only use this feature to install updates and DLC. + Per evitare possibli conflitti, sconsigliamo di installare i giochi base su NAND. +Usa questa funzione solo per installare aggiornamenti e DLC. + + + + %n file(s) were newly installed + + %n nuovo file è stato installato +%n di nuovi file sono stati installati +%n nuovi file sono stati installati + + + + + %n file(s) were overwritten + + %n file è stato sovrascritto +%n di file sono stati sovrascritti +%n file sono stati sovrascritti + + + + + %n file(s) failed to install + + %n file non è stato installato a causa di errori +%n di file non sono stati installati a causa di errori +%n file non sono stati installati a causa di errori + + + + + System Application + Applicazione di sistema + + + + System Archive + Archivio di sistema + + + + System Application Update + Aggiornamento di un'applicazione di sistema + + + + Firmware Package (Type A) + Pacchetto firmware (tipo A) + + + + Firmware Package (Type B) + Pacchetto firmware (tipo B) + + + + Game + Gioco + + + + Game Update + Aggiornamento di gioco + + + + Game DLC + DLC + + + + Delta Title + Titolo delta + + + + Select NCA Install Type... + Seleziona il tipo di installazione NCA... + + + + Please select the type of title you would like to install this NCA as: +(In most instances, the default 'Game' is fine.) + Seleziona il tipo del file NCA da installare: +(Nella maggior parte dei casi, il valore predefinito "Gioco" va bene) + + + + Failed to Install + Installazione fallita + + + + The title type you selected for the NCA is invalid. + Il tipo che hai selezionato per il file NCA non è valido. + + + + File not found + File non trovato + + + + File "%1" not found + File "%1" non trovato + + + + OK + OK + + + + Function Disabled + Funzionalità disabilitata + + + + Compatibility list reporting is currently disabled. Check back later! + La segnalazione della compatibilità è al momento disabilitata. Torna a controllare più avanti! + + + + Error opening URL + Impossibile aprire l'URL + + + + Unable to open the URL "%1". + Non è stato possibile aprire l'URL "%1". + + + + TAS Recording + Registrazione TAS + + + + Overwrite file of player 1? + Vuoi sovrascrivere il file del giocatore 1? + + + + Invalid config detected + Rilevata configurazione non valida + + + + Handheld controller can't be used on docked mode. Pro controller will be selected. + Il controller portatile non può essere utilizzato in modalità dock. Verrà selezionato il controller Pro. + + + + + Amiibo + Amiibo + + + + + The current amiibo has been removed + L'Amiibo corrente è stato rimosso + + + + Error + Errore + + + + + The current game is not looking for amiibos + Il gioco in uso non è alla ricerca di Amiibo + + + + Amiibo File (%1);; All Files (*.*) + File Amiibo (%1);; Tutti i file (*.*) + + + + Load Amiibo + Carica Amiibo + + + + Error loading Amiibo data + Impossibile caricare i dati dell'Amiibo + + + + The selected file is not a valid amiibo + Il file selezionato non è un Amiibo valido + + + + The selected file is already on use + Il file selezionato è già in uso + + + + An unknown error occurred + Si è verificato un errore sconosciuto + + + + + Keys not installed + Chiavi non installate + + + + + Install decryption keys and restart Eden before attempting to install firmware. + Installa le chiavi di crittografia e riavvia Eden prima di installare il firmware. + + + + Select Dumped Firmware Source Location + Seleziona il percorso del firmware estratto + + + + Select Dumped Firmware ZIP + Seleziona il file ZIP del firmware estratto + + + + Zipped Archives (*.zip) + Archivi compressi (*.zip) + + + + Firmware cleanup failed + Pulizia del firmware fallita + + + + Failed to clean up extracted firmware cache. +Check write permissions in the system temp directory and try again. +OS reported error: %1 + + + + + No firmware available + Nessun firmware disponibile + + + + Firmware Corrupted + Firmware corrotto + + + + Unknown applet + Applet sconosciuto + + + + Applet doesn't map to a known value. + L'applet non è associato a un valore noto. + + + + Record not found + Non trovato + + + + Applet not found. Please reinstall firmware. + Applet non trovato. Reinstalla il firmware. + + + + Capture Screenshot + Cattura screenshot + + + + PNG Image (*.png) + Immagine PNG (*.png) + + + + Update Available + Aggiornamento disponibile + + + + Download %1? + Vuoi scaricare la versione %1? + + + + TAS state: Running %1/%2 + Stato TAS: In esecuzione (%1/%2) + + + + TAS state: Recording %1 + Stato TAS: Registrazione in corso (%1) + + + + TAS state: Idle %1/%2 + Stato TAS: In attesa (%1/%2) + + + + TAS State: Invalid + Stato TAS: Non valido + + + + &Stop Running + &Interrompi esecuzione + + + + Stop R&ecording + Interrompi r&egistrazione + + + + Building: %n shader(s) + Compilazione di %n shaderCompilazione di %n shaderCompilazione di %n shader + + + + Scale: %1x + %1 is the resolution scaling factor + Risoluzione: %1x + + + + Speed: %1% / %2% + Velocità: %1% / %2% + + + + Speed: %1% + Velocità: %1% + + + + Game: %1 FPS + Gioco: %1 FPS + + + + Frame: %1 ms + Frame: %1 ms + + + + + FSR + FSR + + + + NO AA + NO AA + + + + VOLUME: MUTE + VOLUME: MUTO + + + + VOLUME: %1% + Volume percentage (e.g. 50%) + VOLUME: %1% + + + + Derivation Components Missing + Componenti di derivazione mancanti + + + + Decryption keys are missing. Install them now? + Chiavi di crittografia mancanti. Vuoi installarle ora? + + + + Wayland Detected! + Wayland rilevato! + + + + Wayland is known to have significant performance issues and mysterious bugs. +It's recommended to use X11 instead. + +Would you like to force it for future launches? + Wayland è noto per causare problemi di prestazioni significativi e bug inspiegabili. +Si consiglia invece di usare X11. + +Vuoi forzare l'uso di quest'ultimo per i prossimi avvii? + + + + Use X11 + Usa X11 + + + + Continue with Wayland + Continua con Wayland + + + + Don't show again + Non mostrare di nuovo + + + + Restart Required + Riavvio richiesto + + + + Restart Eden to apply the X11 backend. + Riavvia Eden per usare il back-end X11. + + + + Slow + Lento + + + + Turbo + Turbo + + + + Unlocked + Sbloccato + + + + Select RomFS Dump Target + Seleziona RomFS da estrarre + + + + Please select which RomFS you would like to dump. + Seleziona quale RomFS vorresti estrarre. + + + + Are you sure you want to close Eden? + Sei sicuro di voler uscire da Eden? + + + + + + Eden + Eden + + + + Are you sure you want to stop the emulation? Any unsaved progress will be lost. + Sei sicuro di voler arrestare l'emulazione? Tutti i progressi non salvati verranno perduti. + + + + The currently running application has requested Eden to not exit. + +Would you like to bypass this and exit anyway? + L'applicazione attualmente in esecuzione ha richiesto a Eden di non uscire. +Vuoi uscire comunque? + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Nearest + Nearest + + + + Bilinear + Bilineare + + + + Bicubic + Bicubico + + + + Zero-Tangent + Zero-Tangent + + + + B-Spline + B-Spline + + + + Mitchell + Mitchell + + + + Spline-1 + Spline-1 + + + + Gaussian + Gaussiano + + + + Lanczos + Lanczos + + + + ScaleForce + ScaleForce + + + + Area + Area + + + + MMPX + MMPX + + + + Docked + Dock + + + + Handheld + Portatile + + + + Fast + Veloce + + + + Balanced + Bilanciata + + + + Accurate + Accurata + + + + Vulkan + Vulkan + + + + OpenGL GLSL + OpenGL GLSL + + + + OpenGL SPIRV + OpenGL SPIR-V + + + + OpenGL GLASM + OpenGL GLASM + + + + Null + Nullo MigrationWorker - - Data was migrated successfully. - - - - + Linking the old directory failed. You may need to re-run with administrative privileges on Windows. OS gave error: %1 - + - + + + +Note that your configuration and data will be shared with %1. +If this is not desirable, delete the following files: +%2 +%3 +%4 + + + + If you wish to clean up the files which were left in the old data location, you can do so by deleting the following directory: %1 - + + + + + Data was migrated successfully. + I dati sono stati trasferiti con successo. + + + + ModSelectDialog + + + Dialog + Finestra di dialogo + + + + The specified folder or archive contains the following mods. Select which ones to install. + La cartella o l'archivio specificato contiene le seguenti mod. Seleziona quali vuoi installare. @@ -8059,7 +8322,7 @@ If you wish to clean up the files which were left in the old data location, you - + Refreshing Aggiornamento in corso @@ -8069,27 +8332,27 @@ If you wish to clean up the files which were left in the old data location, you Revoca ban - + Subject Soggetto - + Type Tipo - + Forum Username Nome utente del forum - + IP Address Indirizzo IP - + Refresh Aggiorna @@ -8097,37 +8360,37 @@ If you wish to clean up the files which were left in the old data location, you MultiplayerState - + Current connection status Stato connessione attuale - + Not Connected. Click here to find a room! Non connesso. Clicca qui per trovare una stanza! - + Not Connected Non connesso - + Connected Connesso - + New Messages Received Nuovi messaggi ricevuti - + Error Errore - + Failed to update the room information. Please check your Internet connection and try hosting the room again. Debug Message: Impossibile aggiornare le informazioni della stanza. Controlla la tua connessione a internet e prova a ospitare la stanza di nuovo. @@ -8136,90 +8399,6 @@ Messaggio di debug: NetworkMessage - - Username is not valid. Must be 4 to 20 alphanumeric characters. - Il nome utente non è valido. Deve essere composto da caratteri alfanumerici e lungo da 4 a 20 caratteri. - - - Room name is not valid. Must be 4 to 20 alphanumeric characters. - Il nome della stanza non è valido. Deve essere composto da caratteri alfanumerici e lungo da 4 a 20 caratteri. - - - Username is already in use or not valid. Please choose another. - Il nome utente è già in uso o non è valido. Scegline un altro. - - - IP is not a valid IPv4 address. - L'IP non è un indirizzo IPv4 valido. - - - Port must be a number between 0 to 65535. - La porta deve essere un numero compreso tra 0 e 65535. - - - You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - Devi selezionare un gioco preferito per ospitare una stanza. Se non hai ancora nessun gioco nella tua lista dei giochi, aggiungi una cartella di gioco cliccando sull'icona "+" nella lista dei giochi. - - - Unable to find an internet connection. Check your internet settings. - Impossibile connettersi ad internet. Controlla le tue impostazioni di rete. - - - Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - Impossibile connettersi all'host. Verifica che le impostazioni di connessione siano corrette. Se continui a non riuscire a connetterti, contatta l'host della stanza e verifica che l'host sia configurato correttamente con la porta esterna inoltrata. - - - Unable to connect to the room because it is already full. - Impossibile connettersi alla stanza poiché è già piena. - - - Creating a room failed. Please retry. Restarting yuzu might be necessary. - Errore nella creazione della stanza. Riprova. Potrebbe essere necessario riavviare yuzu. - - - The host of the room has banned you. Speak with the host to unban you or try a different room. - L'host della stanza ti ha bannato. Chiedi all'host di revocare il ban o trova un'altra stanza. - - - Version mismatch! Please update to the latest version of yuzu. If the problem persists, contact the room host and ask them to update the server. - Versione non corrispondente! Aggiorna yuzu all'ultima versione. Se il problema persiste, contatta l'host della stanza e chiedi di aggiornare il server. - - - Incorrect password. - Password sbagliata. - - - An unknown error occurred. If this error continues to occur, please open an issue - Si è verificato un errore sconosciuto. Se questo errore continua a ripetersi, apri un issue - - - Connection to room lost. Try to reconnect. - Connessione alla stanza persa. Prova a riconnetterti. - - - You have been kicked by the room host. - Sei stato espulso dall'host della stanza. - - - IP address is already in use. Please choose another. - L'indirizzo IP è già in uso. Scegline un altro. - - - You do not have enough permission to perform this action. - Non disponi dei permessi necessari per eseguire questa azione. - - - The user you are trying to kick/ban could not be found. -They may have left the room. - L'utente che stai cercando di espellere/bannare non è stato trovato. -Potrebbe aver abbandonato la stanza. - - - No valid network interface is selected. -Please go to Configure -> System -> Network and make a selection. - Nessuna interfaccia di rete valida selezionata. -Vai su Configura -> Sistema -> Rete e selezionane una. - Game already running @@ -8254,10 +8433,132 @@ Vuoi continuare lo stesso? - NetworkMessage::ErrorManager + NewUserDialog - Error - Errore + + + New User + Nuovo utente + + + + Change Avatar + Cambia avatar + + + + Set Image + Imposta immagine + + + + UUID + UUID + + + + Eden + Eden + + + + Username + Nome utente + + + + UUID must be 32 hex characters (0-9, A-F) + Lo UUID dev'essere di 32 caratteri esadecimali (0-9, A-F) + + + + Generate + Genera + + + + Select User Image + Seleziona immagine dell'utente + + + + Image Formats (*.jpg *.jpeg *.png *.bmp) + File immagine (*.jpg *.jpeg *.png *.bmp) + + + + No firmware available + Nessun firmware disponibile + + + + Please install the firmware to use firmware avatars. + Installa il firmware per usare gli avatar. + + + + + Error loading archive + Caricamento dell'archivio fallito + + + + Archive is not available. Please install/reinstall firmware. + Archivio non disponibile. Installa o reinstalla il firmware. + + + + Could not locate RomFS. Your file or decryption keys may be corrupted. + Impossibile trovare il RomFS. Il file o le chiavi di crittografia potrebbero essere danneggiati. + + + + Error extracting archive + Estrazione dell'archivio fallita + + + + Could not extract RomFS. Your file or decryption keys may be corrupted. + Impossibile estrarre il RomFS. Il file o le chiavi di crittografia potrebbero essere danneggiati. + + + + Error finding image directory + Impossibile trovare la cartella delle immagini + + + + Failed to find image directory in the archive. + Non è stato possibile trovare la cartella delle immagini nell'archivio. + + + + No images found + Nessuna immagine trovata + + + + No avatar images were found in the archive. + Non sono state trovate immagini degli avatar nell'archivio. + + + + + All Good + Tooltip + OK + + + + Must be 32 hex characters (0-9, a-f) + Tooltip + Dev'essere di 32 caratteri esadecimali (0-9, a-f) + + + + Must be between 1 and 32 characters + Tooltip + Dev'essere compreso fra 1 e 32 caratteri @@ -8284,7 +8585,7 @@ Vuoi continuare lo stesso? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -8293,83 +8594,198 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> + + PerformanceOverlay + + + Form + + + + + Frametime + + + + + 0 ms + 0 ms + + + + + Min: 0 + Min: 0 + + + + + Max: 0 + Max: 0 + + + + + Avg: 0 + Media: 0 + + + + FPS + FPS + + + + 0 fps + 0 fps + + + + %1 fps + %1 fps + + + + + Avg: %1 + Media: %1 + + + + + Min: %1 + Min: %1 + + + + + Max: %1 + Max: %1 + + + + %1 ms + %1 ms + + PlayerControlPreview - + START/PAUSE AVVIA/PAUSA + + ProfileAvatarDialog + + + Select + Seleziona + + + + Cancel + Annulla + + + + Background Color + Colore dello sfondo + + + + Select Firmware Avatar + Seleziona avatar del firmware + + QObject - - %1 is not playing a game - %1 non sta giocando a un gioco + + + + Migration + Trasferimento - - %1 is playing %2 - %1 sta giocando a %2 + + Clear Shader Cache + Svuota la cache degli shader - - Not playing a game - Non in gioco + + Keep Old Data + - - Installed SD Titles - Titoli SD installati + + Clear Old Data + - - Installed NAND Titles - Titoli NAND installati + + Link Old Directory + - - System Titles - Titoli di sistema + + + + + + + - - Add New Game Directory - Aggiungi nuova cartella dei giochi + + + No + No - - Favorites - Preferiti + + You can manually re-trigger this prompt by deleting the new config directory: +%1 + + + + + Migrating + Trasferimento in corso + + + + Migrating, this may take a while... + Il trasferimento è in corso, potrebbe richiedere un po' di tempo... - - + + Shift Shift - - + + Ctrl Ctrl - - + + Alt Alt - - - - + + + + [not set] [non impost.] @@ -8379,15 +8795,15 @@ p, li { white-space: pre-wrap; } Hat %1 %2 - - - - - - - - + + + + + + + + Axis %1%2 Asse %1%2 @@ -8397,359 +8813,383 @@ p, li { white-space: pre-wrap; } Pulsante %1 - - - - - - + + + + + + [unknown] [sconosciuto] - - - + + + Left Sinistra - - - + + + Right Destra - - - + + + Down Giù - - - + + + Up Su - - + + Z Z - - + + R R - - + + L L - - + + A A - - + + B B - - + + X X - - + + Y Y - - + + Start Start - - + + L1 L1 - - + + L2 L2 - - + + L3 L3 - - + + R1 R1 - - + + R2 R2 - - + + R3 R3 - - + + Circle Cerchio - - + + Cross Croce - - + + Square Quadrato - - + + Triangle Triangolo - - + + Share Condividi - - + + Options Opzioni - - + + [undefined] [indefinito] - + %1%2 %1%2 - - + + [invalid] [non valido] - - + + %1%2Hat %3 %1%2Freccia %3 - - - + + + %1%2Axis %3 %1%2Asse %3 - - + + %1%2Axis %3,%4,%5 %1%2Asse %3,%4,%5 - - + + %1%2Motion %3 %1%2Movimento %3 - - + + %1%2Button %3 %1%2Pulsante %3 - - + + [unused] [inutilizzato] - + ZR ZR - + ZL ZL - + SR SR - + SL SL - + Stick L Levetta L - + Stick R Levetta R - + Plus Più - + Minus Meno - - + + Home Home - + Capture Cattura - + Touch Touch - + Wheel Indicates the mouse wheel Rotella - + Backward Indietro - + Forward Avanti - + Task Comando - + Extra Extra - + %1%2%3%4 %1%2%3%4 - - + + %1%2%3Hat %4 %1%2%3Freccia %4 - - + + %1%2%3Axis %4 %1%2%3Asse %4 - - + + %1%2%3Button %4 %1%2%3Pulsante %4 - - - - Migration - + + Not playing a game + Non in gioco - - - - - + + %1 is not playing a game + %1 non sta giocando a un gioco - - - No - + + %1 is playing %2 + %1 sta giocando a %2 - - You can manually re-trigger this prompt by deleting the new config directory: -%1 - + + Play Time: %1 + Tempo di gioco: %1 - - Migrating - + + Never Played + Mai giocato - - Migrating, this may take a while... - + + Version: %1 + Versione: %1 + + + + Version: 1.0.0 + Versione: 1.0.0 + + + + Installed SD Titles + Titoli SD installati + + + + Installed NAND Titles + Titoli NAND installati + + + + System Titles + Titoli di sistema + + + + Add New Game Directory + Aggiungi nuova cartella dei giochi + + + + Favorites + Preferiti @@ -8840,31 +9280,833 @@ p, li { white-space: pre-wrap; } Percorso file - + No game data present Nessun dato di gioco presente - + The following amiibo data will be formatted: I seguenti dati Amiibo verranno formattati: - + The following game data will removed: I seguenti dati di gioco verranno rimossi: - + Set nickname and owner: Imposta nickname e proprietario: - + Do you wish to restore this amiibo? Vuoi ripristinare questo Amiibo? + + QtCommon::Content + + + Game Requires Firmware + Firmware richiesto + + + + The game you are trying to launch requires firmware to boot or to get past the opening menu. Please <a href='https://yuzu-mirror.github.io/help/quickstart'>dump and install firmware</a>, or press "OK" to launch anyways. + Il gioco che stai cercando di avviare richiede il firmware per poter partire o per superare il menù iniziale. <a href='https://yuzu-mirror.github.io/help/quickstart'>Esegui il dump del firmware e installalo</a>, o premi "OK" per continuare lo stesso. + + + + Installing Firmware... + Installazione del firmware in corso... + + + + + + + + Cancel + Annulla + + + + Firmware Install Failed + Installazione del firmware fallita + + + + Firmware Install Succeeded + Installazione del firmware riuscita + + + + Firmware integrity verification failed! + Verifica dell'integrità del firmware fallita! + + + + + Verification failed for the following files: + +%1 + La verifica è fallita per i seguenti file: + +%1 + + + + + Verifying integrity... + Verifica dell'integrità in corso... + + + + + Integrity verification succeeded! + Verifica dell'integrità riuscita! + + + + + The operation completed successfully. + L'operazione è stata completata con successo. + + + + + Integrity verification failed! + Verifica dell'integrità fallita! + + + + File contents may be corrupt or missing. + I contenuti dei file potrebbero essere corrotti o mancanti. + + + + Integrity verification couldn't be performed + Impossibile effettuare la verifica dell'integrità + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity. + Installazione del firmware annullata, il firmware potrebbe essere corrotto o in cattivo stato. Non è stato possibile controllare la validità dei contenuti dei file. + + + + Select Dumped Keys Location + Seleziona il percorso delle chiavi estratte + + + + Decryption Keys install succeeded + Installazione delle chiavi di crittografia riuscita + + + + Decryption Keys install failed + Installazione delle chiavi di crittografia fallita + + + + Orphaned Profiles Detected! + Rilevati profili scollegati! + + + + UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br> + + + + + Really clear data? + Eliminare i dati? + + + + Important data may be lost! + Potresti perdere dei dati importanti! + + + + Are you REALLY sure? + Sei DAVVERO sicuro? + + + + Once deleted, your data will NOT come back! +Only do this if you're 100% sure you want to delete this data. + Una volta eliminati, i tuoi dati NON potranno essere ripristinati! +Procedi solo se sei assolutamente sicuro di voler eliminare questi dati. + + + + Clearing... + Eliminazione in corso... + + + + Select Export Location + Scegli dove esportare i dati + + + + %1.zip + %1.zip + + + + + Zipped Archives (*.zip) + Archivi compressi (*.zip) + + + + Exporting data. This may take a while... + Esportazione dei dati in corso. Potrebbe richiedere un po' di tempo... + + + + Exporting + Esportazione in corso + + + + Exported Successfully + Esportazione completata + + + + Data was exported successfully. + I dati sono stati esportati con successo. + + + + Export Cancelled + Esportazione annullata + + + + Export was cancelled by the user. + L'esportazione è stata annullata dall'utente. + + + + Export Failed + Esportazione fallita + + + + Ensure you have write permissions on the targeted directory and try again. + Assicurati di disporre dei permessi di scrittura nella cartella selezionata e poi riprova. + + + + Select Import Location + Seleziona il file da importare + + + + Import Warning + Attenzione + + + + All previous data in this directory will be deleted. Are you sure you wish to proceed? + Tutti i dati già presenti in questa cartella verranno eliminati. Sei sicuro di voler procedere? + + + + Importing data. This may take a while... + Importazione dei dati in corso. Potrebbe richiedere un po' di tempo... + + + + Importing + Importazione in corso + + + + Imported Successfully + Importazione completata + + + + Data was imported successfully. + I dati sono stati importati con successo. + + + + Import Cancelled + Importazione annullata + + + + Import was cancelled by the user. + L'importazione è stata annullata dall'utente. + + + + Import Failed + Importazione fallita + + + + Ensure you have read permissions on the targeted directory and try again. + Assicurati di disporre dei permessi di lettura nella cartella selezionata e poi riprova. + + + + QtCommon::FS + + + Linked Save Data + Dati di salvataggio collegati + + + + Save data has been linked. + I dati di salvataggio sono stati collegati. + + + + Failed to link save data + Impossibile collegare i dati di salvataggio + + + + Could not link directory: + %1 +To: + %2 + Non è stato possibile collegare la cartella: + %1 +A: + %2 + + + + Already Linked + Dati già collegati + + + + This title is already linked to Ryujinx. Would you like to unlink it? + Questo titolo è già stato collegato con Ryujinx. Vuoi scollegarlo? + + + + Failed to unlink old directory + Impossibile scollegare la vecchia cartella + + + + + OS returned error: %1 + Il sistema ha restituito un errore: %1 + + + + Failed to copy save data + Impossibile copiare i dati di salvataggio + + + + Unlink Successful + Scollegamento effettuato + + + + Successfully unlinked Ryujinx save data. Save data has been kept intact. + I dati di salvataggio di Ryujinx sono stati scollegati non successo. I dati sono stati lasciati intatti. + + + + Could not find Ryujinx installation + Installazione di Ryujinx non trovata + + + + Could not find a valid Ryujinx installation. This may typically occur if you are using Ryujinx in portable mode. + +Would you like to manually select a portable folder to use? + Non è stata trovata un'installazione di Ryujinx valida. Di solito ciò accade quando si usa Ryujinx in modalità portatile. + +Vuoi selezionare manualmente la cartella dell'installazione portatile da usare? + + + + Ryujinx Portable Location + Cartella dell'installazione portatile di Ryujinx + + + + Not a valid Ryujinx directory + Cartella di Ryujinx non valida + + + + The specified directory does not contain valid Ryujinx data. + La cartella specificata non contiene dei dati di Ryujinx validi. + + + + + Could not find Ryujinx save data + Impossibile trovare il salvataggio di Ryujinx + + + + QtCommon::Game + + + Error Removing Contents + Impossibile rimuovere il contentuto + + + + Error Removing Update + Impossibile rimuovere l'aggiornamento + + + + Error Removing DLC + Impossibile rimuovere il DLC + + + + + + + + + Successfully Removed + Rimozione completata + + + + Successfully removed the installed base game. + Il gioco base installato è stato rimosso con successo. + + + + The base game is not installed in the NAND and cannot be removed. + Il gioco base non è installato su NAND e non può essere rimosso. + + + + Successfully removed the installed update. + L'aggiornamento installato è stato rimosso con successo. + + + + There is no update installed for this title. + Non c'è alcun aggiornamento installato per questo gioco. + + + + There are no DLCs installed for this title. + Non c'è alcun DLC installato per questo gioco. + + + + Successfully removed %1 installed DLC. + %1 DLC rimossi con successo. + + + + + Error Removing Transferable Shader Cache + Impossibile rimuovere la cache trasferibile degli shader + + + + + A shader cache for this title does not exist. + Non esiste una cache degli shader per questo gioco. + + + + Successfully removed the transferable shader cache. + La cache trasferibile degli shader è stata rimossa con successo. + + + + Failed to remove the transferable shader cache. + Si è verificato un errore nel rimuovere la cache trasferibile degli shader. + + + + Error Removing Vulkan Driver Pipeline Cache + Impossibile rimuovere la cache delle pipeline del driver Vulkan + + + + Failed to remove the driver pipeline cache. + Si è verificato un errore nel rimuovere la cache delle pipeline del driver. + + + + + Error Removing Transferable Shader Caches + Impossibile rimuovere le cache trasferibili degli shader + + + + Successfully removed the transferable shader caches. + Le cache trasferibili degli shader sono state rimosse con successo. + + + + Failed to remove the transferable shader cache directory. + Si è verificato un errore nel rimuovere la cartella della cache trasferibile degli shader. + + + + + Error Removing Custom Configuration + Impossibile rimuovere la configurazione personalizzata + + + + A custom configuration for this title does not exist. + Non esiste una configurazione personalizzata per questo gioco. + + + + Successfully removed the custom game configuration. + La configurazione personalizzata del gioco è stata rimossa con successo. + + + + Failed to remove the custom game configuration. + Si è verificato un errore nel rimuovere la configurazione personalizzata del gioco. + + + + Reset Metadata Cache + Svuota la cache dei metadati + + + + The metadata cache is already empty. + La cache dei metadati è già vuota. + + + + The operation completed successfully. + L'operazione è stata completata con successo. + + + + The metadata cache couldn't be deleted. It might be in use or non-existent. + Impossibile eliminare la cache dei metadati. Potrebbe essere in uso o inesistente. + + + + Create Shortcut + Crea scorciatoia + + + + Do you want to launch the game in fullscreen? + Vuoi avviare il gioco a schermo intero? + + + + Shortcut Created + Scorciatoia creata + + + + Successfully created a shortcut to %1 + Scorciatoia creata con successo per %1 + + + + Shortcut may be Volatile! + Scorciatoia potenzialmente instabile! + + + + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? + Verrà creata una scorciatoia all'AppImage attuale. Potrebbe non funzionare correttamente se effettui un aggiornamento. Vuoi continuare? + + + + Failed to Create Shortcut + Impossibile creare la scorciatoia + + + + Failed to create a shortcut to %1 + Si è verificato un errore nel creare la scorciatoia per %1 + + + + Create Icon + Crea icona + + + + Cannot create icon file. Path "%1" does not exist and cannot be created. + Impossibile creare il file dell'icona. Il percorso "%1" non esiste e non può essere creato. + + + + No firmware available + Nessun firmware disponibile + + + + Please install firmware to use the home menu. + Installa il firmware per usare il menù Home. + + + + Home Menu Applet + Applet menù Home + + + + Home Menu is not available. Please reinstall firmware. + Il menù Home non è disponibile. Reinstalla il firmware. + + + + QtCommon::Mod + + + Mod Name + Nome mod + + + + What should this mod be called? + Qual è il nome di questa mod? + + + + RomFS + RomFS + + + + ExeFS/Patch + ExeFS/Patch + + + + Cheat + Trucco + + + + Mod Type + Tipologia mod + + + + Could not detect mod type automatically. Please manually specify the type of mod you downloaded. + +Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods. + Impossibile determinare automaticamente la tipologia della mod. Si prega di specificare manualmente la tipologia della mod scaricata. + +La maggior parte delle mod sono RomFS, ma le patch (.pchtxt) sono tipicamente ExeFS. + + + + + Mod Extract Failed + Estrazione mod fallita + + + + Failed to create temporary directory %1 + Impossibile creare la cartella temporanea %1 + + + + Zip file %1 is empty + Il file ZIP %1 è vuoto + + + + QtCommon::Path + + + Error Opening Shader Cache + Impossibile aprire la cache degli shader + + + + Failed to create or open shader cache for this title, ensure your app data directory has write permissions. + Si è verificato un errore durante la creazione o l'apertura della cache degli shader per questo titolo. Assicurati di disporre dei permessi di scrittura nella cartella dei dati dell'app. + + + + QtCommon::StringLookup + + + Contains game save data. DO NOT REMOVE UNLESS YOU KNOW WHAT YOU'RE DOING! + Contiene i dati di salvataggio dei giochi. NON RIMUOVERLI se non sei consapevole di ciò che stai facendo! + + + + Contains Vulkan and OpenGL pipeline caches. Generally safe to remove. + Contiene le cache delle pipeline Vulkan e OpenGL. È generalmente sicuro rimuoverle. + + + + Contains updates and DLC for games. + Contiene gli aggiornamenti e i DLC dei giochi. + + + + Contains firmware and applet data. + Contiene il firmware e i dati degli applet. + + + + Contains game mods, patches, and cheats. + Contiene le mod, le patch e i trucchi dei giochi. + + + + Decryption Keys were successfully installed + Le chiavi di crittografia sono state installate con successo + + + + Unable to read key directory, aborting + Impossibile leggere la cartella delle chiavi, annullamento... + + + + One or more keys failed to copy. + Non è stato possibile copiare una o più chiavi. + + + + Verify your keys file has a .keys extension and try again. + Verifica che il file delle chiavi abbia l'estensione .keys e riprova. + + + + Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. + Inizializzazione delle chiavi di crittografia non riuscita. Controlla che gli strumenti per il dump siano aggiornati ed esegui di nuovo il dump delle chiavi. + + + + Successfully installed firmware version %1 + La versione %1 del firmware è stata installata con successo + + + + Unable to locate potential firmware NCA files + Non è stato possibile trovare potenziali file NCA del firmware + + + + Failed to delete one or more firmware files. + Non è stato possibile rimuovere uno o più file del firmware. + + + + One or more firmware files failed to copy into NAND. + Non è stato possibile copiare in NAND uno o più file del firmware. + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. Restart Eden or re-install firmware. + Installazione del firmware annullata, il firmware potrebbe essere corrotto o in cattivo stato. Riavvia Eden o reinstalla il firmware. + + + + Firmware missing. Firmware is required to run certain games and use the Home Menu. + Firmware mancante. Il firmware è necessario per poter eseguire certi giochi e usare il menù Home. + + + + Firmware reported as present, but was unable to be read. Check for decryption keys and redump firmware if necessary. + Il firmware è presente ma non può essere letto. Controlla le chiavi di crittografia e riesegui il dump del firmware se necessario. + + + + Eden has detected user data for the following emulators: + Eden ha rilevato dati utente dei seguenti emulatori: + + + + Would you like to migrate your data for use in Eden? +Select the corresponding button to migrate data from that emulator. +This may take a while. + Volete trasferire i vostri dati per usarli in Eden? +Selezionate il rispettivo pulsante per trasferire i dati da quell'emulatore. +Questa operazione potrebbe richiedere un po' di tempo. + + + + Clearing shader cache is recommended for all users. +Do not uncheck unless you know what you're doing. + Svuotare la cache degli shader è consigliato per tutti gli utenti. +Non deselezionare questa opzione a meno che non si sappia esattamente cosa si sta facendo. + + + + Keeps the old data directory. This is recommended if you aren't +space-constrained and want to keep separate data for the old emulator. + Mantieni la vecchia cartella dei dati. +Consigliato se non si hanno problemi di spazio e si vuole mantenere i dati separati con il vecchio emulatore. + + + + Deletes the old data directory. +This is recommended on devices with space constraints. + Cancella la vechia cartella dei dati. +Consigliato su sistemi con limiti di spazio. + + + + Creates a filesystem link between the old directory and Eden directory. +This is recommended if you want to share data between emulators. + Crea un collegamento tra la vecchia cartella e la cartella di Eden. +Consigliato se si vuole condividere dati tra più emulatori. + + + + Ryujinx title database does not exist. + Il database dei titoli di Ryujinx non esiste. + + + + Invalid header on Ryujinx title database. + Header non valido nel database dei titoli di Ryujinx. + + + + Invalid magic header on Ryujinx title database. + "Magic header" non valido nel database dei titoli di Ryujinx. + + + + Invalid byte alignment on Ryujinx title database. + Allineamento byte non valido nel database dei titoli di Ryujinx. + + + + No items found in Ryujinx title database. + Non sono stati trovati elementi nel database dei titoli di Ryujinx. + + + + Title %1 not found in Ryujinx title database. + Il titolo %1 non è stato trovato nel database dei titoli di Ryujinx. + + QtControllerSelectorDialog @@ -8901,7 +10143,7 @@ p, li { white-space: pre-wrap; } - + Pro Controller Pro Controller @@ -8914,7 +10156,7 @@ p, li { white-space: pre-wrap; } - + Dual Joycons Due Joycon @@ -8927,7 +10169,7 @@ p, li { white-space: pre-wrap; } - + Left Joycon Joycon sinistro @@ -8940,7 +10182,7 @@ p, li { white-space: pre-wrap; } - + Right Joycon Joycon destro @@ -8969,7 +10211,7 @@ p, li { white-space: pre-wrap; } - + Handheld Portatile @@ -9090,32 +10332,32 @@ p, li { white-space: pre-wrap; } Non ci sono abbastanza controller collegati. - + GameCube Controller Controller GameCube - + Poke Ball Plus Poké Ball Plus - + NES Controller Controller NES - + SNES Controller Controller SNES - + N64 Controller Controller N64 - + Sega Genesis Sega Genesis @@ -9123,28 +10365,28 @@ p, li { white-space: pre-wrap; } QtErrorDisplay - - - + + + Error Code: %1-%2 (0x%3) Codice di errore: %1-%2 (0x%3) - + An error has occurred. Please try again or contact the developer of the software. Si è verificato un errore. Riprova o contatta gli sviluppatori del programma. - + An error occurred on %1 at %2. Please try again or contact the developer of the software. Si è verificato un errore su %1 a %2. Riprova o contatta gli sviluppatori del programma. - + An error has occurred. %1 @@ -9160,7 +10402,7 @@ Riprova o contatta gli sviluppatori del programma. QtProfileSelectionDialog - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -9168,7 +10410,7 @@ Riprova o contatta gli sviluppatori del programma. %2 - + Users Utenti @@ -9216,7 +10458,7 @@ Riprova o contatta gli sviluppatori del programma. Select a user to link to a Nintendo Account. - Seleziona un utente da collegare ad un Account Nintendo + Seleziona un utente da collegare a un account Nintendo @@ -9261,7 +10503,7 @@ Riprova o contatta gli sviluppatori del programma. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -9270,17 +10512,59 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - - + + OK OK - + Cancel Annulla + + RyujinxDialog + + + Ryujinx Link + Collegamento con Ryujinx + + + + Linking save data to Ryujinx lets both Ryujinx and Eden reference the same save files for your games. + +By selecting "From Eden", previous save data stored in Ryujinx will be deleted, and vice versa for "From Ryujinx". + Il collegamento dei dati di salvataggio con Ryujinx consente a Eden e Ryujinx di fare riferimento agli stessi file di salvataggio dei giochi. + +Selezionando "Da Eden", i dati di salvataggio pre-esistenti in Ryujinx verranno eliminati; viceversa, selezionando "Da Ryujinx" verranno rimossi i dati presenti in Eden. + + + + From Eden + Da Eden + + + + From Ryujinx + Da Ryujinx + + + + Cancel + Annulla + + + + Failed to link save data + Impossibile collegare i dati di salvataggio + + + + OS returned error: %1 + Il sistema ha restituito un errore: %1 + + SequenceDialog @@ -9290,143 +10574,31 @@ p, li { white-space: pre-wrap; } - WaitTreeCallstack + SetPlayTimeDialog - - Call stack - Stack chiamata - - - - WaitTreeSynchronizationObject - - - [%1] %2 - [%1] %2 + + Set Play Time Data + Imposta il tempo di gioco - - waited by no thread - atteso da nessun thread - - - - WaitTreeThread - - - runnable - eseguibile + + Hours: + Ore: - - paused - In Pausa + + Minutes: + Minuti: - - sleeping - Attende... + + Seconds: + Secondi: - - waiting for IPC reply - attende una risposta dell'IPC - - - - waiting for objects - Attendendo gli Oggetti... - - - - waiting for condition variable - aspettando la condition variable - - - - waiting for address arbiter - attende un indirizzo arbitrio - - - - waiting for suspend resume - in attesa di riprendere la sospensione - - - - waiting - attendere - - - - initialized - inizializzato - - - - terminated - terminato - - - - unknown - sconosciuto - - - - PC = 0x%1 LR = 0x%2 - Program Counter = 0x%1 LR = 0x%2 - - - - ideal - ideale - - - - core %1 - core %1 - - - - processor = %1 - CPU = %1 - - - - affinity mask = %1 - Maschera Affinità = %1 - - - - thread id = %1 - ID Thread: %1 - - - - priority = %1(current) / %2(normal) - priorità = %1(corrente) / %2(normale) - - - - last running ticks = %1 - Ultimi ticks in esecuzione = %1. - - - - WaitTreeThreadList - - - waited by thread - atteso dal thread - - - - WaitTreeWidget - - - &Wait Tree - &Wait Tree + + Total play time reached maximum. + Il tempo di gioco totale ha raggiunto il limite massimo. diff --git a/dist/languages/ja_JP.ts b/dist/languages/ja_JP.ts index 7420497aa6..bad9dcfcf2 100644 --- a/dist/languages/ja_JP.ts +++ b/dist/languages/ja_JP.ts @@ -1,25 +1,15 @@ - - - + AboutDialog - - About yuzu - yuzuについて - - - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - - About eden - + About Eden + Edenについて - <html><head/><body><p><span style=" font-size:28pt;">eden</span></p></body></html> - + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> @@ -34,70 +24,50 @@ p, li { white-space: pre-wrap; } hr { height: 1px; border-width: 0; } li.unchecked::marker { content: "\2610"; } li.checked::marker { content: "\2612"; } -</style></head><body style=" font-family:'Adwaita Sans'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> - +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> + - <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">This software should not be used to play games you have not legally obtained.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzuはGPLv3.0+の下で提供されているNintendo Switchの実験的なオープンソースエミュレータです。</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">このソフトウェアは違法に入手したゲームを遊ぶために使用されるべきではありません。</span></p></body></html> - - - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">ウェブサイト</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">ソースコード</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">貢献者</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">ライセンス</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. eden is not affiliated with Nintendo in any way.</span></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot;は任天堂の登録商標です。 yuzuは任天堂と提携しているわけではありません。</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. Eden is not affiliated with Nintendo in any way.</span></p></body></html> + CalibrationConfigurationDialog - + Communicating with the server... サーバーと通信中... - + Cancel キャンセル - + Touch the top left corner <br>of your touchpad. タッチパッドの左上を<br>タッチして下さい。 - + Now touch the bottom right corner <br>of your touchpad. 次にタッチパッドの右下を<br>タッチして下さい。 - + Configuration completed! 設定完了! - + OK OK @@ -120,78 +90,78 @@ p, li { white-space: pre-wrap; } メッセージを送る - + Members メンバー - + %1 has joined %1 が参加しました - + %1 has left %1 が退出しました - + %1 has been kicked %1 はキックされました - + %1 has been banned %1 はBanされました - + %1 has been unbanned %1 はBan解除されました - + View Profile プロフィールを見る - - + + Block Player プレイヤーをブロック - + When you block a player, you will no longer receive chat messages from them.<br><br>Are you sure you would like to block %1? ブロックすると、そのプレイヤーからのチャットメッセージが届かなくなります。<br><br>%1を本当にブロックしますか? - + Kick キック - + Ban Ban - + Kick Player プレイヤーをキック - + Are you sure you would like to <b>kick</b> %1? %1 を<b>キック</b>しますがよろしいですか? - + Ban Player プレイヤーをBan - + Are you sure you would like to <b>kick and ban</b> %1? This would ban both their forum username and their IP address. @@ -215,7 +185,7 @@ This would ban both their forum username and their IP address. Moderation... - + @@ -226,17 +196,17 @@ This would ban both their forum username and their IP address. ClientRoomWindow - + Connected 接続の状態 - + Disconnected 未接続 - + %1 - %2 (%3/%4 members) - connected %1 - %2 (%3/%4 メンバー) - 接続済み @@ -259,14 +229,10 @@ This would ban both their forum username and their IP address. Report Game Compatibility ゲームの互換性を報告 - - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of yuzu you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected yuzu account</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">テストケースを</span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu互換性リスト</span></a><span style=" font-size:10pt;">に送信した場合、以下の情報が収集され、サイトに表示されます:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">ハードウェア情報(CPU/GPU/OS)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">実行中のyuzuバージョン</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">接続中のyuzuアカウント</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">eden Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of eden you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected eden account</li></ul></body></html> - + @@ -276,22 +242,22 @@ This would ban both their forum username and their IP address. Yes The game starts to output video or audio - はい ゲームは映像または音声の出力を開始します + はい ゲームは映像または音声の出力を開始します No The game doesn't get past the "Launching..." screen - + Yes The game gets past the intro/menu and into gameplay - + No The game crashes or freezes while loading or using the menu - + @@ -301,12 +267,12 @@ This would ban both their forum username and their IP address. Yes The game works without crashes - はい ゲームはクラッシュせず動作します + はい ゲームはクラッシュせず動作します No The game crashes or freezes during gameplay - + @@ -331,17 +297,17 @@ This would ban both their forum username and their IP address. Major The game has major graphical errors - メジャー ゲームは大きなグラフィックエラーがあります + メジャー ゲームは大きなグラフィックエラーがあります Minor The game has minor graphical errors - マイナー ゲームはマイナーなグラフィックエラーがあります + マイナー ゲームはマイナーなグラフィックエラーがあります None Everything is rendered as it looks on the Nintendo Switch - なし すべてはニンテンドースイッチと同様にレンダリングされます + なし すべてはニンテンドースイッチと同様にレンダリングされます @@ -374,22 +340,22 @@ This would ban both their forum username and their IP address. ご協力ありがとうございます! - + Submitting 送信中 - + Communication error 通信エラー - + An error occurred while sending the Testcase テストケースの送信中にエラーが発生しました - + Next 次へ @@ -397,1533 +363,1869 @@ This would ban both their forum username and their IP address. ConfigurationShared - + % % - + Amiibo editor - + - + Controller configuration - + - + Data erase - + - + Error エラー - + Net connect - + - + Player select - + - + Software keyboard ソフトウェアキーボード - + Mii Edit - + - + Online web - + - + Shop - + - + Photo viewer - + - + Offline web - + - + Login share - + - + Wifi web auth - + - + My page - + - + + Enable Overlay Applet + + + + + Enables Horizon's built-in overlay applet. Press and hold the home button for 1 second to show it. + + + + Output Engine: 出力エンジン: - + Output Device: 出力デバイス: - + Input Device: 入力デバイス: - + Mute audio - + - + Volume: 音量: - + Mute audio when in background 非アクティブ時にサウンドをミュート - + Multicore CPU Emulation マルチコアCPUエミュレーション - - This option increases CPU emulation thread use from 1 to the Switch’s maximum of 4. -This is mainly a debug option and shouldn’t be disabled. - + + This option increases CPU emulation thread use from 1 to the maximum of 4. +This is mainly a debug option and shouldn't be disabled. + - + Memory Layout メモリレイアウト - - Increases the amount of emulated RAM from the stock 4GB of the retail Switch to the developer kit's 8/6GB. -It’s doesn’t improve stability or performance and is intended to let big texture mods fit in emulated RAM. -Enabling it will increase memory use. It is not recommended to enable unless a specific game with a texture mod needs it. - + + Increases the amount of emulated RAM. +Doesn't affect performance/stability but may allow HD texture mods to load. + - + Limit Speed Percent エミュレーション速度の制限 - - Controls the game's maximum rendering speed, but it’s up to each game if it runs faster or not. + + Controls the game's maximum rendering speed, but it's up to each game if it runs faster or not. 200% for a 30 FPS game is 60 FPS, and for a 60 FPS game it will be 120 FPS. Disabling it means unlocking the framerate to the maximum your PC can reach. - + - + + Turbo Speed + + + + + When the Turbo Speed hotkey is pressed, the speed will be limited to this percentage. + + + + + Slow Speed + + + + + When the Slow Speed hotkey is pressed, the speed will be limited to this percentage. + + + + Synchronize Core Speed - + - - Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). -Compatibility varies by game; many (especially older ones) may not respond well. + + Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). Can help reduce stuttering at lower framerates. - + - + Accuracy: エミュレーション精度: - - This setting controls the accuracy of the emulated CPU. -Don't change this unless you know what you are doing. - + + Change the accuracy of the emulated CPU (for debugging only). + - - + + Backend: バックエンド: - - Fast CPU Time - + + CPU Overclock + - + Overclocks the emulated CPU to remove some FPS limiters. Weaker CPUs may see reduced performance, and certain games may behave improperly. Use Boost (1700MHz) to run at the Switch's highest native clock, or Fast (2000MHz) to run at 2x clock. - + - + + Custom CPU Ticks + + + + + Set a custom value of CPU ticks. Higher values can increase performance, but may cause deadlocks. A range of 77-21000 is recommended. + + + + + Enable Host MMU Emulation (fastmem) + + + + + This optimization speeds up memory accesses by the guest program. +Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU. +Disabling this forces all memory accesses to use Software MMU Emulation. + + + + Unfuse FMA (improve performance on CPUs without FMA) FMAの融合を解除 (FMAに対応していないCPUのパフォーマンスを向上させる) - + This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support. このオプションは, ネイティブのFMAサポートがないCPU上で, 融合積和(fused-multiply-add)命令の精度を下げて高速化します. - + Faster FRSQRTE and FRECPE Faster FRSQRTE and FRECPE - + This option improves the speed of some approximate floating-point functions by using less accurate native approximations. このオプションは、より精度の低い近似値を使用することで、近似浮動小数点関数の速度を向上させます。 - + Faster ASIMD instructions (32 bits only) 高速なASIMD命令 (32bitのみ) - + This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes. このオプションは、不正確な丸めモードで実行することにより、32ビットASIMD浮動小数点関数の速度を向上させます。 - + Inaccurate NaN handling 不正確な非数値の取り扱い - + This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions. - + - + Disable address space checks アドレス空間チェックの無効化 - - This option improves speed by eliminating a safety check before every memory read/write in guest. -Disabling it may allow a game to read/write the emulator's memory. - + + This option improves speed by eliminating a safety check before every memory operation. +Disabling it may allow arbitrary code execution. + - + Ignore global monitor - + - + 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. - + - + API: API: - - Switches between the available graphics APIs. -Vulkan is recommended in most cases. - + + Changes the output graphics API. +Vulkan is recommended. + - + Device: 使用デバイス: - - This setting selects the GPU to use with the Vulkan backend. - + + This setting selects the GPU to use (Vulkan only). + - - Shader Backend: - シェーダーバックエンド: - - - - The shader backend to use for the OpenGL renderer. -GLSL is the fastest in performance and the best in rendering accuracy. -GLASM is a deprecated NVIDIA-only backend that offers much better shader building performance at the cost of FPS and rendering accuracy. -SPIR-V compiles the fastest, but yields poor results on most GPU drivers. - - - - + Resolution: 解像度: - - Forces the game to render at a different resolution. -Higher resolutions require much more VRAM and bandwidth. -Options lower than 1X can cause rendering issues. - + + Forces to render at a different resolution. +Higher resolutions require more VRAM and bandwidth. +Options lower than 1X can cause artifacts. + - + Window Adapting Filter: ウィンドウ適応フィルター: - + FSR Sharpness: FSR シャープネス: - - Determines how sharpened the image will look while using FSR’s dynamic contrast. - + + Determines how sharpened the image will look using FSR's dynamic contrast. + - + Anti-Aliasing Method: アンチエイリアス方式: - + The anti-aliasing method to use. SMAA offers the best quality. -FXAA has a lower performance impact and can produce a better and more stable picture under very low resolutions. - +FXAA can produce a more stable picture in lower resolutions. + - + Fullscreen Mode: フルスクリーンモード: - + The method used to render the window in fullscreen. Borderless offers the best compatibility with the on-screen keyboard that some games request for input. Exclusive fullscreen may offer better performance and better Freesync/Gsync support. - + - + Aspect Ratio: アスペクト比: - - Stretches the game to fit the specified aspect ratio. -Switch games only support 16:9, so custom game mods are required to get other ratios. + + Stretches the renderer to fit the specified aspect ratio. +Most games only support 16:9, so modifications are required to get other ratios. Also controls the aspect ratio of captured screenshots. - + - - Use disk pipeline cache - ディスクパイプラインキャッシュを使用 + + Use persistent pipeline cache + - + Allows saving shaders to storage for faster loading on following game boots. Disabling it is only intended for debugging. - + - - Optimize SPIRV output shader - + + Optimize SPIRV output + - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. This feature is experimental. - + - - Use asynchronous GPU emulation - 非同期GPUエミュレーションを使用する - - - - Uses an extra CPU thread for rendering. -This option should always remain enabled. - - - - + NVDEC emulation: NVDEC エミュレーション: - + Specifies how videos should be decoded. It can either use the CPU or the GPU for decoding, or perform no decoding at all (black screen on videos). In most cases, GPU decoding provides the best performance. - + - + ASTC Decoding Method: ASTC デコード方式: - + This option controls how ASTC textures should be decoded. -CPU: Use the CPU for decoding, slowest but safest method. -GPU: Use the GPU's compute shaders to decode ASTC textures, recommended for most games and users. -CPU Asynchronously: Use the CPU to decode ASTC textures as they arrive. Completely eliminates ASTC decoding -stuttering at the cost of rendering issues while the texture is being decoded. - +CPU: Use the CPU for decoding. +GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). +CPU Asynchronously: Use the CPU to decode ASTC textures on demand. EliminatesASTC decoding +stuttering but may present artifacts. + - + ASTC Recompression Method: ASTC 再圧縮方式: - - Almost all desktop and laptop dedicated GPUs lack support for ASTC textures, forcing the emulator to decompress to an intermediate format any card supports, RGBA8. -This option recompresses RGBA8 to either the BC1 or BC3 format, saving VRAM but negatively affecting image quality. - + + Most GPUs lack support for ASTC textures and must decompress to anintermediate format: RGBA8. +BC1/BC3: The intermediate format will be recompressed to BC1 or BC3 format, + saving VRAM but degrading image quality. + - + + Frame Pacing Mode (Vulkan only) + + + + + Controls how the emulator manages frame pacing to reduce stuttering and make the frame rate smoother and more consistent. + + + + VRAM Usage Mode: - + - - Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. Has no effect on integrated graphics. Aggressive mode may severely impact the performance of other applications such as recording software. - + + Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. +Aggressive mode may impact performance of other applications such as recording software. + - + + Skip CPU Inner Invalidation + + + + + Skips certain cache invalidations during memory updates, reducing CPU usage and improving latency. This may cause soft-crashes. + + + + VSync Mode: 垂直同期: - + FIFO (VSync) does not drop frames or exhibit tearing but is limited by the screen refresh rate. -FIFO Relaxed is similar to FIFO but allows tearing as it recovers from a slow down. +FIFO Relaxed 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. +Immediate (no synchronization) presents whatever is available and can exhibit tearing. FIFO (VSync) はフレーム落ちやティアリングがありませんがスクリーンのリフレッシュレートに制限されます. FIFO Relaxed は FIFO に似ていますが, 速度低下からの回復時にティアリングを許容します. Mailbox は FIFO よりも遅延が小さくティアリングがありませんがフレーム落ちの可能性があります. -Immediate (no synchronization) は利用可能なものを何でも利用し, ティアリング発生の可能性があります. +Immediate (no synchronization) は表示可能なものをすべて表示し, ティアリング発生の可能性があります. - + + Sync Memory Operations + メモリ操作の同期 + + + + Ensures data consistency between compute and memory operations. +This option fixes issues in games, but may degrade performance. +Unreal Engine 4 games often see the most significant changes thereof. + + + + Enable asynchronous presentation (Vulkan only) 非同期プレゼンテーション (Vulkan のみ) - + Slightly improves performance by moving presentation to a separate CPU thread. - + - + Force maximum clocks (Vulkan only) 最大クロック強制 (Vulkan のみ) - + Runs work in the background while waiting for graphics commands to keep the GPU from lowering its clock speed. GPUのクロックスピードを下げないように、グラフィックコマンドを待っている間、バックグラウンドで作業を実行させます。 - + Anisotropic Filtering: 異方性フィルタリング: - + Controls the quality of texture rendering at oblique angles. -It’s a light setting and safe to set at 16x on most GPUs. - +Safe to set at 16x on most GPUs. + - - Accuracy Level: - 精度: + + GPU Mode: + GPUモード: - - GPU emulation accuracy. -Most games render fine with Normal, but High is still required for some. -Particles tend to only render correctly with High accuracy. -Extreme should only be used for debugging. -This option can be changed while playing. -Some games may require booting on high to render properly. - + + Controls the GPU emulation mode. +Most games render fine with Fast or Balanced modes, but Accurate is still required for some. +Particles tend to only render correctly with Accurate mode. + - - Use asynchronous shader building (Hack) - 非同期でのシェーダー構築を使用 (ハック) + + DMA Accuracy: + DMA精度: - - Enables asynchronous shader compilation, which may reduce shader stutter. -This feature is experimental. - + + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. + - Use Fast GPU Time (Hack) - 高速なGPUタイミング(ハック) + + Enable asynchronous shader compilation + - Enables Fast GPU Time. This option will force most games to run at their highest native resolution. - 高速なGPUタイミングを有効にします。このオプションは、ほとんどのゲームをその最高のネイティブ解像度で実行することを強制します。 + + May reduce shader stutter. + - + + Fast GPU Time + + + + + Overclocks the emulated GPU to increase dynamic resolution and render distance. +Use 256 for maximal performance and 512 for maximal graphics fidelity. + + + + + GPU Unswizzle + + + + + Accelerates BCn 3D texture decoding using GPU compute. +Disable if experiencing crashes or graphical glitches. + + + + + GPU Unswizzle Max Texture Size + + + + + Sets the maximum size (MiB) for GPU-based texture unswizzling. +While the GPU is faster for medium and large textures, the CPU may be more efficient for very small ones. +Adjust this to find the balance between GPU acceleration and CPU overhead. + + + + + GPU Unswizzle Stream Size + + + + + Sets the maximum amount of texture data (in MiB) processed per frame. +Higher values can reduce stutter during texture loading but may impact frame consistency. + + + + + GPU Unswizzle Chunk Size + + + + + Determines the number of depth slices processed in a single dispatch. +Increasing this can improve throughput on high-end GPUs but may cause TDR or driver timeouts on weaker hardware. + + + + Use Vulkan pipeline cache Vulkan パイプラインキャッシュを使用 - + Enables GPU vendor-specific pipeline cache. This option can improve shader loading time significantly in cases where the Vulkan driver does not store pipeline cache files internally. - + - + Enable Compute Pipelines (Intel Vulkan Only) コンピュート・パイプラインの有効化(インテル Vulkan のみ) - - Enable compute pipelines, required by some games. -This setting only exists for Intel proprietary drivers, and may crash if enabled. + + 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. - + - + Enable Reactive Flushing - + - + Uses reactive flushing instead of predictive flushing, allowing more accurate memory syncing. - + - + Sync to framerate of video playback ビデオ再生のフレームレートに同期する - + Run the game at normal speed during video playback, even when the framerate is unlocked. - + - + Barrier feedback loops - + - + Improves rendering of transparency effects in specific games. 特定のゲームにおける透明エフェクトのレンダリングを改善します。 - + + Enable buffer history + + + + + Enables access to previous buffer states. +This option may improve rendering quality and performance consistency in some games. + + + + + Fix bloom effects + + + + + Removes bloom in Burnout. + + + + + Enable Legacy Rescale Pass + + + + + May fix rescale issues in some games by relying on behavior from the previous implementation. +Legacy behavior workaround that fixes line artifacts on AMD and Intel GPUs, and grey texture flicker on Nvidia GPUs in Luigis Mansion 3. + + + + + Extended Dynamic State + + + + + Controls the number of features that can be used in Extended Dynamic State. +Higher states allow for more features and can increase performance, but may cause additional graphical issues. + + + + + Vertex Input Dynamic State + + + + + Enables vertex input dynamic state feature for better quality and performance. + + + + + Sample Shading + + + + + Allows the fragment shader to execute per sample in a multi-sampled fragment instead of once per fragment. Improves graphics quality at the cost of performance. +Higher values improve quality but degrade performance. + + + + RNG Seed 乱数シード値の変更 - + Controls the seed of the random number generator. -Mainly used for speedrunning purposes. - +Mainly used for speedrunning. + - + Device Name デバイス名 - - The name of the emulated Switch. - + + The name of the console. + - + Custom RTC Date: - + - - This option allows to change the emulated clock of the Switch. + + This option allows to change the clock of the console. Can be used to manipulate time in games. - + - + + The number of seconds from the current unix time + + + + Language: 言語: - - Note: this can be overridden when region setting is auto-select - 注意:地域が自動選択の場合、設定が上書きされる可能性があります。 + + This option can be overridden when region setting is auto-select + - + Region: 地域: - - The region of the emulated Switch. - + + The region of the console. + - + Time Zone: タイムゾーン: - - The time zone of the emulated Switch. - + + The time zone of the console. + - + Sound Output Mode: 音声出力モード: - + Console Mode: - + コンソールモード: - - Selects if the console is emulated in Docked or Handheld mode. + + Selects if the console is in Docked or Handheld mode. Games will change their resolution, details and supported controllers and depending on this setting. Setting to Handheld can help improve performance for low end systems. - + - - Prompt for user on game boot - ゲーム起動時に確認を表示 + + Unit Serial + - - Pause emulation when in background - 非アクティブ時にエミュレーションを一時停止 + + Battery Serial + - - Fast GPU Time (Hack) - + + Debug knobs + - - Overclocks the emulated GPU to increase dynamic resolution and render distance. -Use 128 for maximal performance and 512 for maximal graphics fidelity. - + + Prompt for user profile on boot + - - Extended Dynamic State - + + Useful if multiple people use the same PC. + - - Enables the VkExtendedDynamicState* extensions. -Higher dynamic states will generally improve performance, but may cause issues on certain games or devices. - + + Pause when not in focus + - - Provoking Vertex - + + Pauses emulation when focusing on other windows. + - - Improves lighting and vertex handling in certain games. -Only Vulkan 1.0+ devices support this extension. - - - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - - Ask to select a user profile on each boot, useful if multiple people use eden on the same PC. - - - - - This setting pauses eden when focusing other windows. - - - - + Confirm before stopping emulation エミュレーションを停止する前に確認する - - This setting overrides game prompts asking to confirm stopping the game. + + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - + - + Hide mouse on inactivity 非アクティブ時にマウスカーソルを隠す - - This setting hides the mouse after 2.5s of inactivity. - + + Hides the mouse after 2.5s of inactivity. + - + Disable controller applet コントローラーアプレットの無効化 - - Forcibly disables the use of the controller applet by guests. -When a guest attempts to open the controller applet, it is immediately closed. - + + Forcibly disables the use of the controller applet in emulated programs. +When a program attempts to open the controller applet, it is immediately closed. + - + Check for updates - + - + Whether or not to check for updates upon startup. - + - + Enable Gamemode - + - + + Force X11 as Graphics Backend + + + + Custom frontend - + - + Real applet - + - + Never - + - + On Load - + - + Always - + - + CPU CPU - + GPU GPU - + CPU Asynchronous CPU 非同期 - + Uncompressed (Best quality) 圧縮しない (最高品質) - + BC1 (Low quality) BC1 (低品質) - + BC3 (Medium quality) BC3 (中品質) - - Conservative - - - - - Aggressive - - - - - OpenGL - OpenGL - - - - Vulkan - Vulkan - - - - Null - - - - - GLSL - GLSL - - - - GLASM (Assembly Shaders, NVIDIA Only) - GLASM (アセンブリシェーダー、NVIDIA のみ) - - - - SPIR-V (Experimental, AMD/Mesa Only) - SPIR-V(実験的、AMD/Mesaのみ) - - - - Normal - 標準 - - - - High - - - - - Extreme - - - - + + Auto 自動 - + + 30 FPS + + + + + 60 FPS + + + + + 90 FPS + + + + + 120 FPS + + + + + Conservative + + + + + Aggressive + + + + + Vulkan + Vulkan + + + + OpenGL GLSL + OpenGL GLSL + + + + OpenGL GLASM (Assembly Shaders, NVIDIA Only) + OpenGL GLASM (アセンブリシェーダー、NVIDIA のみ) + + + + OpenGL SPIR-V (Experimental, AMD/Mesa Only) + OpenGL SPIR-V(実験的、AMD/Mesaのみ) + + + + Null + + + + + Fast + + + + + Balanced + + + + + Accurate 正確 - - Unsafe - 不安定 - - - - Paranoid (disables most optimizations) - パラノイド (ほとんどの最適化を無効化) - - - - Dynarmic - Dynarmic - - - - NCE - NCE - - - - Borderless Windowed - ボーダーレスウィンドウ - - - - Exclusive Fullscreen - 排他的フルスクリーン - - - - No Video Output - ビデオ出力しない - - - - CPU Video Decoding - ビデオをCPUでデコード - - - - GPU Video Decoding (Default) - ビデオをGPUでデコード (デフォルト) - - - - 0.25X (180p/270p) [EXPERIMENTAL] - - - - - 0.5X (360p/540p) [EXPERIMENTAL] - 0.5X (360p/540p) [実験的] - - - - 0.75X (540p/810p) [EXPERIMENTAL] - 0.75X (540p/810p) [実験的] - - - - 1X (720p/1080p) - 1X (720p/1080p) - - - - 1.5X (1080p/1620p) [EXPERIMENTAL] - 1.5X (1080p/1620p) [実験的] - - - - 2X (1440p/2160p) - 2X (1440p/2160p) - - - - 3X (2160p/3240p) - 3X (2160p/3240p) - - - - 4X (2880p/4320p) - 4X (2880p/4320p) - - - - 5X (3600p/5400p) - 5X (3600p/5400p) - - - - 6X (4320p/6480p) - 6X (4320p/6480p) - - - - 7X (5040p/7560p) - 7X (5040p/7560p) - - - - 8X (5760p/8640p) - 8X (5760p/8640p) - - - - Nearest Neighbor - Nearest Neighbor - - - - Bilinear - Bilinear - - - - Bicubic - Bicubic - - - - Gaussian - Gaussian - - - - ScaleForce - ScaleForce - - - - AMD FidelityFX™️ Super Resolution - AMD FidelityFX™️ Super Resolution - - - - Area - - - - - None - なし - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Default (16:9) - デフォルト (16:9) - - - - Force 4:3 - 強制 4:3 - - - - Force 21:9 - 強制 21:9 - - - - Force 16:10 - 強制 16:10 - - - - Stretch to Window - ウィンドウに合わせる - - - - Automatic - 自動 - - - + + Default デフォルト - + + Unsafe (fast) + + + + + Safe (stable) + + + + + Unsafe + 不安定 + + + + Paranoid (disables most optimizations) + パラノイド (ほとんどの最適化を無効化) + + + + Debugging + + + + + Dynarmic + Dynarmic + + + + NCE + NCE + + + + Borderless Windowed + ボーダーレスウィンドウ + + + + Exclusive Fullscreen + 排他的フルスクリーン + + + + No Video Output + ビデオ出力しない + + + + CPU Video Decoding + ビデオをCPUでデコード + + + + GPU Video Decoding (Default) + ビデオをGPUでデコード (デフォルト) + + + + 0.25X (180p/270p) [EXPERIMENTAL] + 0.25X (180p/270p) [EXPERIMENTAL] + + + + 0.5X (360p/540p) [EXPERIMENTAL] + 0.5X (360p/540p) [実験的] + + + + 0.75X (540p/810p) [EXPERIMENTAL] + 0.75X (540p/810p) [実験的] + + + + 1X (720p/1080p) + 1X (720p/1080p) + + + + 1.25X (900p/1350p) [EXPERIMENTAL] + 1.25X (900p/1350p) [EXPERIMENTAL] + + + + 1.5X (1080p/1620p) [EXPERIMENTAL] + 1.5X (1080p/1620p) [実験的] + + + + 2X (1440p/2160p) + 2X (1440p/2160p) + + + + 3X (2160p/3240p) + 3X (2160p/3240p) + + + + 4X (2880p/4320p) + 4X (2880p/4320p) + + + + 5X (3600p/5400p) + 5X (3600p/5400p) + + + + 6X (4320p/6480p) + 6X (4320p/6480p) + + + + 7X (5040p/7560p) + 7X (5040p/7560p) + + + + 8X (5760p/8640p) + 8X (5760p/8640p) + + + + Nearest Neighbor + Nearest Neighbor + + + + Bilinear + Bilinear + + + + Bicubic + Bicubic + + + + Gaussian + Gaussian + + + + Lanczos + Lanczos + + + + ScaleForce + ScaleForce + + + + AMD FidelityFX Super Resolution + AMD FidelityFX Super Resolution + + + + Area + + + + + MMPX + MMPX + + + + Zero-Tangent + + + + + B-Spline + + + + + Mitchell + + + + + Spline-1 + + + + + + None + なし + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Default (16:9) + デフォルト (16:9) + + + + Force 4:3 + 強制 4:3 + + + + Force 21:9 + 強制 21:9 + + + + Force 16:10 + 強制 16:10 + + + + Stretch to Window + ウィンドウに合わせる + + + + Automatic + 自動 + + + 2x 2x - + 4x 4x - + 8x 8x - + 16x 16x - + + 32x + 32x + + + + 64x + 64x + + + Japanese (日本語) 日本語 - + American English アメリカ英語 - + French (français) フランス語 (français) - + German (Deutsch) ドイツ語 (Deutsch) - + Italian (italiano) イタリア語 (italiano) - + Spanish (español) スペイン語 (español) - + Chinese 中国語 - + Korean (한국어) 韓国語 (한국어) - + Dutch (Nederlands) オランダ語 (Nederlands) - + Portuguese (português) ポルトガル語 (português) - + Russian (Русский) ロシア語 (Русский) - + Taiwanese 台湾語 - + British English イギリス英語 - + Canadian French カナダフランス語 - + Latin American Spanish ラテンアメリカスペイン語 - + Simplified Chinese 簡体字中国語 - + Traditional Chinese (正體中文) 繁体字中国語 (正體中文) - + Brazilian Portuguese (português do Brasil) ブラジルポルトガル語 (português do Brasil) - - + + Polish (polska) + + + + + Thai (แบบไทย) + + + + + Japan 日本 - + USA アメリカ - + Europe ヨーロッパ - + Australia オーストラリア - + China 中国 - + Korea 韓国 - + Taiwan 台湾 - + Auto (%1) Auto select time zone 自動 (%1) - + Default (%1) Default time zone 既定 (%1) - + CET 中央ヨーロッパ時間 - + CST6CDT CST6CDT - + Cuba キューバ - + EET 東ヨーロッパ標準時 - + Egypt エジプト - + Eire アイルランド - + EST アメリカ東部標準時 - + EST5EDT EST5EDT - + GB GB - + GB-Eire イギリス-アイルランド - + GMT GMT - + GMT+0 GMT+0 - + GMT-0 GMT-0 - + GMT0 GMT0 - + Greenwich グリニッジ - + Hongkong 香港 - + HST ハワイ標準時 - + Iceland アイスランド - + Iran イラン - + Israel イスラエル - + Jamaica ジャマイカ - + Kwajalein クェゼリン - + Libya リビア - + MET 中東時間 - + MST MST - + MST7MDT MST7MDT - + Navajo ナバホ - + NZ NZ - + NZ-CHAT NZ-CHAT - + Poland ポーランド - + Portugal ポルトガル - + PRC PRC - + PST8PDT PST8PDT - + ROC ROC - + ROK ROK - + Singapore シンガポール - + Turkey トルコ - + UCT UCT - + Universal ユニバーサル - + UTC UTC - + W-SU W-SU - + WET WET - + Zulu ズールー - + Mono モノラル - + Stereo ステレオ - + Surround サラウンド - + 4GB DRAM (Default) 4GB DRAM (デフォルト) - + 6GB DRAM (Unsafe) 6GB DRAM (不安定) - + 8GB DRAM - + 8GB DRAM - + 10GB DRAM (Unsafe) - + - + 12GB DRAM (Unsafe) - + - - Low (128) - - - - - Medium (256) - - - - - High (512) - - - - 8GB DRAM (Unsafe) - 8GB DRAM (不安定) - - - + Docked Docked - + Handheld 携帯モード - + + + Off + + + + Boost (1700MHz) - + Boost (1700MHz) - + Fast (2000MHz) - + Fast (2000MHz) - + Always ask (Default) 常に確認する (デフォルト) - + Only if game specifies not to stop ゲームが停止しないように指定しているときのみ - + Never ask 確認しない + + + + Medium (256) + + + + + + High (512) + + + + + Very Small (16 MB) + + + + + Small (32 MB) + + + + + Normal (128 MB) + + + + + Large (256 MB) + + + + + Very Large (512 MB) + + + + + Very Low (4 MB) + + + + + Low (8 MB) + + + + + Normal (16 MB) + + + + + Medium (32 MB) + + + + + High (64 MB) + + + + + Very Low (32) + + + + + Low (64) + + + + + Normal (128) + + + + + Disabled + 無効 + + + + ExtendedDynamicState 1 + + + + + ExtendedDynamicState 2 + + + + + ExtendedDynamicState 3 + + + + + Tree View + + + + + Grid View + + ConfigureApplets @@ -1935,12 +2237,12 @@ When a guest attempts to open the controller applet, it is immediately closed. Applets - + Applet mode preference - + @@ -1995,7 +2297,7 @@ When a guest attempts to open the controller applet, it is immediately closed.デフォルトに戻す - + Auto 自動 @@ -2182,7 +2484,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all memory accesses to use Software MMU Emulation.</div> @@ -2200,7 +2502,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up exclusive memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all exclusive memory accesses to use Software MMU Emulation.</div> @@ -2234,7 +2536,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up memory accesses by allowing invalid memory accesses to succeed.</div> - <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> + <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> <div style="white-space: nowrap">この最適化により、無効なメモリアクセスを成功させることで、メモリアクセスを高速化することができます。</div> @@ -2275,30 +2577,30 @@ When a guest attempts to open the controller applet, it is immediately closed.ログ - - Open Log Location - ログ出力フォルダを開く - - - + Global Log Filter グローバルログフィルター - + When checked, the max size of the log increases from 100 MB to 1 GB チェックすると、ログの最大サイズが100MBから1GBに増加します。 - + Enable Extended Logging** 拡張ログの有効化** - + Show Log in Console コンソールにログを表示 + + + Open Log Location + ログ出力フォルダを開く + Homebrew @@ -2402,12 +2704,12 @@ When a guest attempts to open the controller applet, it is immediately closed. <html><head/><body><p>When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.</p></body></html> - + Disable Buffer Reorder - + @@ -2435,18 +2737,9 @@ When a guest attempts to open the controller applet, it is immediately closed.すべてのコントローラータイプを有効にする - - Censor username in logs - - - - - **This will be reset automatically when eden closes. - - - - Enable Auto-Stub** - 自動スタブの有効化** + + Enable Auto-Stub + @@ -2455,8 +2748,8 @@ When a guest attempts to open the controller applet, it is immediately closed. - Enable CPU Debugging - CPUデバッグの有効化 + Use dev.keys + @@ -2469,43 +2762,74 @@ When a guest attempts to open the controller applet, it is immediately closed.デバッグ - - Flush log output on each line - + + Battery Serial: + - - Enable FS Access Log - FSアクセスログの有効化 + + Bitmask for quick development toggles + - + + Set debug knobs (bitmask) + + + + + 16-bit debug knob set for quick development toggles + + + + + (bitmask) + + + + + Debug Knobs: + + + + + Unit Serial: + + + + Enable this to output the latest generated audio command list to the console. Only affects games using the audio renderer. これを有効にすると、最新のオーディオコマンドリストがコンソールに出力されます。オーディオレンダラーを使用するゲームにのみ影響します。 - - Enable Auto-Stub - - - - + Dump Audio Commands To Console** オーディオコマンドをコンソールにダンプ** - + + Flush log output on each line + + + + + Enable FS Access Log + FSアクセスログの有効化 + + + Enable Verbose Reporting Services** 詳細なレポートサービスの有効化** - **This will be reset automatically when yuzu closes. - ** yuzuを終了したときに自動的にリセットされます。 + + Censor username in logs + - - Web applet not compiled - ウェブアプレットがコンパイルされていません + + **This will be reset automatically when Eden closes. + @@ -2547,14 +2871,10 @@ When a guest attempts to open the controller applet, it is immediately closed. ConfigureDialog - - yuzu Configuration - yuzuの設定 - - eden Configuration - + Eden Configuration + @@ -2562,88 +2882,88 @@ When a guest attempts to open the controller applet, it is immediately closed.いくつかの設定はゲームが実行中でないときのみ設定できます - + Applets - + - - + + Audio サウンド - - + + CPU CPU - + Debug デバッグ - + Filesystem ファイルシステム - - + + General 全般 - - + + Graphics グラフィック - + GraphicsAdvanced 拡張グラフィック - - GraphicsExtensions - + + GraphicsExtra + - + Hotkeys ホットキー - - + + Controls 操作 - + Profiles プロファイル - + Network ネットワーク - - + + System システム - + Game List ゲームリスト - + Web Web @@ -2673,9 +2993,10 @@ When a guest attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2685,107 +3006,183 @@ When a guest attempts to open the controller applet, it is immediately closed.SDカードの場所 - + + Save Data + + + + Gamecard ゲームカード - + Path ゲームカードのパス - + Inserted 挿入をエミュレート - + Current Game 現在のゲーム - + Patch Manager パッチマネージャー - + Dump Decompressed NSOs 解凍されたNSOをダンプ - + Dump ExeFS ExeFSをダンプ - + Mod Load Root Mod読込元ディレクトリのルート - + Dump Root ダンプディレクトリのルート - + Caching キャッシュ - + Cache Game List Metadata ゲームリストのメタデータをキャッシュする - - - - + Reset Metadata Cache メタデータのキャッシュをクリア - + Select Emulated NAND Directory... NANDディレクトリを選択... - + Select Emulated SD Directory... SDカードディレクトリを選択... - + + + Select Save Data Directory... + + + + Select Gamecard Path... ゲームカードのパスを選択... - + Select Dump Directory... ダンプディレクトリを選択... - + Select Mod Load Directory... Mod読込元ディレクトリを選択... - - The metadata cache is already empty. - メタデータのキャッシュはすでに空です。 + + Save Data Directory + - - The operation completed successfully. - 処理に成功しました。 + + Choose an action for the save data directory: + - - The metadata cache couldn't be deleted. It might be in use or non-existent. - メタデータのキャッシュを削除できませんでした。使用中か存在していない可能性があります。 + + Set Custom Path + + + + + Reset to NAND + + + + + Save data exists in both the old and new locations. + +Old: %1 +New: %2 + +Would you like to migrate saves from the old location? +WARNING: This will overwrite any conflicting saves in the new location! + + + + + Would you like to migrate your save data to the new location? + +From: %1 +To: %2 + + + + + Migrate Save Data + + + + + Migrating save data... + + + + + Cancel + キャンセル + + + + + Migration Failed + + + + + Failed to create destination directory. + + + + + Failed to migrate save data: +%1 + + + + + Migration Complete + + + + + Save data has been migrated successfully. + +Would you like to delete the old save data? + @@ -2803,28 +3200,54 @@ When a guest attempts to open the controller applet, it is immediately closed. - Linux - Linux + External Content + - + + Add directories to scan for DLCs and Updates without installing to NAND + + + + + Add Directory + + + + + Remove Selected + + + + Reset All Settings すべての設定をリセット - yuzu - yuzu + + Eden + Eden - - eden - - - - + This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed? すべての設定がリセットされ、ゲームごとの設定もすべて削除されます。ゲームディレクトリ、プロファイル、入力プロファイルは削除されません。続行しますか? + + + Select External Content Directory... + + + + + Directory Already Added + + + + + This directory is already in the list. + + ConfigureGraphics @@ -2854,33 +3277,33 @@ When a guest attempts to open the controller applet, it is immediately closed.背景色: - + % FSR sharpening percentage (e.g. 50%) % - + Off オフ - + VSync Off VSync オフ - + Recommended 推奨 - + On オン - + VSync On VSync オン @@ -2898,7 +3321,7 @@ When a guest attempts to open the controller applet, it is immediately closed.高度な設定 - + Advanced Graphics Settings グラフィックの高度な設定 @@ -2908,24 +3331,38 @@ When a guest attempts to open the controller applet, it is immediately closed. Form - フォーム + - Extensions - + Extras + - - Vulkan Extension Settings - + + Hacks + - - While it's recommended to use state 3, some games may perform better on lower states. Setting to 0 (disabled) may also break games. -If your GPU is older (i.e. RX570/580 or older), it may not support these features. If this is the case, set the slider to 0 and uncheck all boxes. -These settings are experimental, and may cause black screens. If your games fail to boot or are stuck on a black screen, change these settings around. - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + GPU拡張機能 + + + + % + Sample Shading percentage (e.g. 50%) + % + + + + Extended Dynamic State is disabled on macOS due to MoltenVK compatibility issues that cause black screens. + @@ -2956,75 +3393,75 @@ These settings are experimental, and may cause black screens. If your games fail デフォルトに戻す - + Action 操作 - + Hotkey ホットキー - + Controller Hotkey コントローラー ホットキー - - - + + + Conflicting Key Sequence 入力された組合せの衝突 - - + + The entered key sequence is already assigned to: %1 入力された組合せは既に次の操作に割り当てられています:%1 - + [waiting] [入力待ち] - + Invalid 無効 - + Invalid hotkey settings 無効なホットキー設定 - + An error occurred. Please report this issue on github. エラーが発生しました。この問題をgithubで報告してください。 - + Restore Default デフォルトに戻す - + Clear 消去 - + Conflicting Button Sequence ボタンが競合しています - + The default button sequence is already assigned to: %1 デフォルトのボタン配列はすでに %1 に割り当てられています。 - + The default key sequence is already assigned to: %1 デフォルトの組合せはすでに %1 に割り当てられています。 @@ -3344,12 +3781,8 @@ These settings are experimental, and may cause black screens. If your games fail - Requires restarting eden - - - - Requires restarting yuzu - yuzuの再起動が必要 + Requires restarting Eden + @@ -3359,22 +3792,22 @@ These settings are experimental, and may cause black screens. If your games fail Enable UDP controllers (not needed for motion) - + Controller navigation - + Enable direct JoyCon driver - + Enable direct Pro Controller driver [EXPERIMENTAL] - + @@ -3499,30 +3932,19 @@ These settings are experimental, and may cause black screens. If your games fail - + Left Stick Lスティック - - - - - - - Up - - - - - - - - - - - Left - + + + + + + + Down + @@ -3536,14 +3958,25 @@ These settings are experimental, and may cause black screens. If your games fail - - - - - - - Down - + + + + + + + + Left + + + + + + + + + + Up + @@ -3590,14 +4023,6 @@ These settings are experimental, and may cause black screens. If your games fail D-Pad 方向ボタン - - - - - - SL - SL - @@ -3607,59 +4032,55 @@ These settings are experimental, and may cause black screens. If your games fail SR - - - - L - L + + + + + SL + SL - + ZL ZL + + + + + L + L + Minus - - - - - Capture - キャプチャ - - + Plus + - - - Home - HOME + + + + ZR + ZR - - + + R R - - - - - ZR - ZR - Motion 1 @@ -3670,6 +4091,18 @@ These settings are experimental, and may cause black screens. If your games fail Motion 2 モーション2 + + + + Capture + キャプチャ + + + + + Home + HOME + Face Buttons @@ -3682,10 +4115,10 @@ These settings are experimental, and may cause black screens. If your games fail X - - - Y - Y + + + B + B @@ -3694,14 +4127,14 @@ These settings are experimental, and may cause black screens. If your games fail A - - - B - B + + + Y + Y - + Right Stick Rスティック @@ -3716,242 +4149,242 @@ These settings are experimental, and may cause black screens. If your games fail 設定 - - - - + + + + Clear クリア - - - - - + + + + + [not set] [未設定] - - - + + + Invert button ボタンを反転 - - + + Toggle button - + - + Turbo button ターボボタン - - + + Invert axis 軸を反転 - - - + + + Set threshold しきい値を設定 - - + + Choose a value between 0% and 100% 0%から100%の間の値を選択してください - + Toggle axis - + - + Set gyro threshold ジャイロのしきい値を設定 - + Calibrate sensor センサーを補正 - + Map Analog Stick アナログスティックをマップ - + After pressing OK, first move your joystick horizontally, and then vertically. To invert the axes, first move your joystick vertically, and then horizontally. OKを押した後、スティックを水平方向に動かし、次に垂直方向に動かしてください。 軸を反転させる場合、 最初に垂直方向に動かし、次に水平方向に動かしてください。 - + Center axis - + - - + + Deadzone: %1% 遊び:%1% - - + + Modifier Range: %1% 変更範囲:%1% - - + + Pro Controller Proコントローラー - + Dual Joycons Joy-Con(L/R) - + Left Joycon Joy-Con(L) - + Right Joycon Joy-Con(R) - + Handheld 携帯コントローラー - + GameCube Controller ゲームキューブコントローラー - + Poke Ball Plus モンスターボールプラス - + NES Controller ファミコン・コントローラー - + SNES Controller スーパーファミコン・コントローラー - + N64 Controller ニンテンドウ64・コントローラー - + Sega Genesis メガドライブ - + Start / Pause スタート/ ポーズ - + Z Z - + Control Stick - + - + C-Stick Cスティック - + Shake! 振ってください - + [waiting] [待機中] - + New Profile 新規プロファイル - + Enter a profile name: プロファイル名を入力: - - + + Create Input Profile 入力プロファイルを作成 - + The given profile name is not valid! プロファイル名が無効です! - + Failed to create the input profile "%1" 入力プロファイル "%1" の作成に失敗しました - + Delete Input Profile 入力プロファイルを削除 - + Failed to delete the input profile "%1" 入力プロファイル "%1" の削除に失敗しました - + Load Input Profile 入力プロファイルをロード - + Failed to load the input profile "%1" 入力プロファイル "%1" のロードに失敗しました - + Save Input Profile 入力プロファイルをセーブ - + Failed to save the input profile "%1" 入力プロファイル "%1" のセーブに失敗しました @@ -3974,15 +4407,6 @@ To invert the axes, first move your joystick vertically, and then horizontally.< デフォルト - - ConfigureLinuxTab - - - - Linux - Linux - - ConfigureMotionTouch @@ -4008,14 +4432,14 @@ To invert the axes, first move your joystick vertically, and then horizontally.< - + Configure 設定 Touch from button profile: - + @@ -4038,111 +4462,93 @@ To invert the axes, first move your joystick vertically, and then horizontally.< ポート: - - Learn More - 詳細情報 - - - - + + Test テスト - + Add Server サーバーを追加 - + Remove Server サーバーを削除 - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">さらに詳しく</span></a> - - - + %1:%2 %1:%2 - yuzu - yuzu + + + + + + + Eden + Eden - - <a href='https://eden-emulator.github.io/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - - - - + Port number has invalid characters ポート番号に無効な文字が含まれています - - - - - - - eden - - - - + Port has to be in range 0 and 65353 ポート番号は0から65353の間で設定してください - + IP address is not valid IPアドレスが無効です - + This UDP server already exists このUDPサーバーはすでに存在してます - + Unable to add more than 8 servers 8個以上のサーバーを追加することはできません - + Testing テスト中 - + Configuring 設定中 - + Test Successful テスト成功 - + Successfully received data from the server. サーバーからのデータ受信に成功しました。 - + Test Failed テスト失敗 - + Could not receive valid data from the server.<br>Please verify that the server is set up correctly and the address and port are correct. 有効なデータを受信できませんでした。<br>サーバーが正しくセットアップされ、アドレスとポートが正しいことを確認してください。 - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. UDPテストまたはキャリブレーション実行中です。<br>完了までお待ちください。 @@ -4191,12 +4597,12 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Deadzone counterweight - + Counteracts a game's built-in deadzone - + @@ -4232,17 +4638,17 @@ Current values are %1% and %2% respectively. Emulated mouse is enabled. This is incompatible with mouse panning. - + Emulated mouse is enabled - + Real mouse input and mouse panning are incompatible. Please disable the emulated mouse in input advanced settings to allow mouse panning. - + @@ -4268,9 +4674,9 @@ Current values are %1% and %2% respectively. ネットワークインタフェース - - None - なし + + Enable Airplane Mode + @@ -4326,49 +4732,54 @@ Current values are %1% and %2% respectively. いくつかの設定はゲームが実行中でないときのみ設定できます - + Add-Ons アドオン - + System システム - + CPU CPU - + Graphics グラフィック - + Adv. Graphics 高度なグラフィック - - GPU Extensions - + + Ext. Graphics + - + Audio サウンド - + Input Profiles 入力プロファイル - Linux - Linux + Network + ネットワーク + + + + Applets + @@ -4389,15 +4800,110 @@ Current values are %1% and %2% respectively. アドオン - + + Import Mod from ZIP + + + + + Import Mod from Folder + + + + Patch Name 名称 - + Version バージョン + + + Mod Install Succeeded + + + + + Successfully installed all mods. + + + + + Mod Install Failed + + + + + Failed to install the following mods: + %1 +Check the log for details. + + + + + Mod Folder + + + + + Zipped Mod Location + + + + + Zipped Archives (*.zip) + + + + + Invalid Selection + + + + + Only mods, cheats, and patches can be deleted. +To delete NAND-installed updates, right-click the game in the game list and click Remove -> Remove Installed Update. + + + + + You are about to delete the following installed mods: + + + + + + +Once deleted, these can NOT be recovered. Are you 100% sure you want to delete them? + + + + + Delete add-on(s)? + + + + + Successfully deleted + + + + + Successfully deleted all selected mods. + + + + + &Delete + + + + + &Open in File Manager + + ConfigureProfileManager @@ -4427,32 +4933,17 @@ Current values are %1% and %2% respectively. ユーザー名 - - Set Image - ユーザー画像を設定 - - - + Add 追加 - - Rename - 名前変更 - - - - Remove - 削除 - - - + Profile management is available only when game is not running. プロファイル管理はゲーム未実行時にのみ行えます。 - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -4460,100 +4951,80 @@ Current values are %1% and %2% respectively. %2 - - Enter Username - ユーザ名 - - - + Users ユーザ - - Enter a username for the new user: - 新しいユーザのユーザ名を入力: - - - - Enter a new username: - 新しいユーザ名を入力: - - - - Select User Image - ユーザ画像を選択 - - - - JPEG Images (*.jpg *.jpeg) - JPEG画像 (*.jpg *.jpeg) - - - + Error deleting image 画像削除エラー - + Error occurred attempting to overwrite previous image at: %1. 既存画像の上書き時にエラーが発生しました: %1 - + Error deleting file ファイル削除エラー - + Unable to delete existing file: %1. ファイルを削除できませんでした: %1 - + Error creating user image directory ユーザー画像ディレクトリ作成失敗 - + Unable to create directory %1 for storing user images. ユーザー画像保存ディレクトリ”%1”を作成できませんでした。 - - Error copying user image - ユーザー画像コピーエラー + + Error saving user image + - - Unable to copy image from %1 to %2 - 画像を”%1”から”%2”へコピー出来ませんでした。 + + Unable to save image to file + - - Error resizing user image - ユーザ画像のリサイズエラー + + &Edit + - - Unable to resize image - 画像をリサイズできません + + &Delete + + + + + Edit User + ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. このユーザを削除しますか? このユーザのすべてのセーブデータが削除されます. - + Confirm Delete ユーザの削除 - + Name: %1 UUID: %2 名称: %1 @@ -4570,7 +5041,7 @@ UUID: %2 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. - + @@ -4597,7 +5068,7 @@ UUID: %2 Direct Joycon Driver - + @@ -4606,7 +5077,7 @@ UUID: %2 - + Enable 有効 @@ -4617,7 +5088,7 @@ UUID: %2 - + Not connected 接続なし @@ -4627,63 +5098,63 @@ UUID: %2 デフォルトに戻す - + Clear クリア - + [not set] [未設定] - + Invert axis 軸を反転 - - + + Deadzone: %1% 遊び:%1% - + Error enabling ring input リングコン入力の有効化エラー - + Direct Joycon driver is not enabled - + - + Configuring 設定中 - + The current mapped device doesn't support the ring controller - - - - - The current mapped device doesn't have a ring attached - + + The current mapped device doesn't have a ring attached + + + + The current mapped device is not connected - + - + Unexpected driver result %1 - + - + [waiting] [入力待ち] @@ -4707,9 +5178,9 @@ UUID: %2 コア - + Warning: "%1" is not a valid language for region "%2" - + @@ -4719,14 +5190,10 @@ UUID: %2 TAS TAS - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the yuzu website.</p></body></html> - <html><head/><body><p>TAS-nxスクリプトと同じフォーマットでスクリプトからコントローラー入力を読み込みます。<br/>より詳細な説明は、yuzuホームページの<a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">ヘルプ</span></a>を参照してください。</p></body></html> - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the eden website.</p></body></html> - + <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the user handbook.</p></body></html> + @@ -4759,17 +5226,22 @@ UUID: %2 ロード中は実行を一時停止 - + + Show recording dialog + + + + Script Directory スクリプトディレクトリ - + Path パス - + ... ... @@ -4777,12 +5249,12 @@ UUID: %2 ConfigureTasDialog - + TAS Configuration TAS 設定 - + Select TAS Load Directory... TAS ロードディレクトリを選択... @@ -4886,14 +5358,10 @@ Drag points to change position, or double-click table cells to edit values.Configure Touchscreen タッチスクリーンの設定 - - Warning: The settings in this page affect the inner workings of yuzu's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - 警告:このページの設定は、yuzuのタッチスクリーンエミュレートの内部動作に影響します。これらを変更すると、タッチスクリーンが部分的に機能しなくなったりするなど、望ましくない動作が生じる可能性があります。それらを理解した上で、このページを使用してください。 - - Warning: The settings in this page affect the inner workings of eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - + Warning: The settings in this page affect the inner workings of Eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. + @@ -4924,64 +5392,43 @@ Drag points to change position, or double-click table cells to edit values. ConfigureUI - - - + + None なし - - - Small (32x32) - 小 (32x32) - - Standard (64x64) - 標準 (64x64) - - - - Large (128x128) - 大 (128x128) - - - - Full Size (256x256) - フルサイズ (256x256) - - - Small (24x24) 小 (24x24) - + Standard (48x48) 標準 (48x48) - + Large (72x72) 大 (72x72) - + Filename ファイル名 - + Filetype ファイル種別 - + Title ID タイトルID - + Title Name タイトル名 @@ -5050,74 +5497,69 @@ Drag points to change position, or double-click table cells to edit values. - Game Icon Size: - ゲームアイコンサイズ: - - - Folder Icon Size: フォルダアイコンサイズ: - + Row 1 Text: 1行目の表示内容: - + Row 2 Text: 2行目の表示内容: - + Screenshots スクリーンショット - + Ask Where To Save Screenshots (Windows Only) スクリーンショット時に保存先を確認する(Windowsのみ) - + Screenshots Path: スクリーンショットの保存先: - + ... ... - + TextLabel - + - + Resolution: 解像度: - + Select Screenshots Path... スクリーンショットの保存先を選択... - + <System> <System> - + English English - + Auto (%1 x %2, %3 x %4) Screenshot width value - + @@ -5212,165 +5654,178 @@ Drag points to change position, or double-click table cells to edit values.Web Web - - yuzu Web Service - yuzu Webサービス - - - By providing your username and token, you agree to allow yuzu to collect additional usage data, which may include user identifying information. - ユーザー名とトークンを入力した時点で、ユーザー識別情報を含む可能性がある追加の統計情報データをyuzuが収集することに同意したと見なされます。 - - eden Web Service - + Eden Web Service + - - By providing your username and token, you agree to allow eden to collect additional usage data, which may include user identifying information. - - - - - Verify - 検証 - - - - Sign up - ユーザー登録 - - - + Token: トークン: - + Username: ユーザー名: - - What is my token? - 自分のトークンを確認する方法 + + Generate + - + Web Service configuration can only be changed when a public room isn't being hosted. Webサービスの設定は、公開ルームがホストされていない時にのみ変更することができます。 - Telemetry - テレメトリ - - - Share anonymous usage data with the yuzu team - 匿名の統計情報データをyuzuチームと共有 - - - Learn more - 詳細情報 - - - Telemetry ID: - テレメトリID: - - - Regenerate - IDの再作成 - - - + Discord Presence Discord 連携 - + Show Current Game in your Discord Status Discordのステータスに実行中のゲームを表示 - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">詳細情報</span></a> - - - - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">ユーザー登録</span></a> - - - - <a href='https://evilperson1337.notion.site/Hosting-a-Room-Inside-of-Eden-20457c2edaf680108abac6215a79acdb'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - - - - - Warning - - - + - Verification is currently nonfunctional, instead generate a random 48-character string with only lowercase a-z. - - - - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">自分のトークンを確認したい</span></a> - - - Telemetry ID: 0x%1 - テレメトリID:0x%1 - - - Unspecified - 未設定 - - - Token not verified - 未検証のトークン - - - Token was not verified. The change to your token has not been saved. - トークンは検証されていません。トークンの変更はまだ保存されていません。 - - - - Unverified, please click Verify before saving configuration + All Good Tooltip - + - Verifying... - 検証中... - - - Verification failed + + Must be between 4-20 characters Tooltip - 検証に失敗 + - Verification failed - 検証に失敗 - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - 検証に失敗しました。トークンが正しく入力されていること、およびインターネット接続が機能していることを確認してください。 + + Must be 48 characters, and lowercase a-z + Tooltip + ControllerDialog - + Controller P1 Controller P1 - + &Controller P1 &Controller P1 + + DataDialog + + + Data Manager + + + + + Deleting ANY data is IRREVERSABLE! + + + + + Shaders + + + + + UserNAND + + + + + SysNAND + + + + + Mods + + + + + Saves + + + + + DataWidget + + + Form + + + + + Tooltip + + + + + Open with your system file manager + + + + + Delete all data in this directory. THIS IS 100% IRREVERSABLE! + + + + + Export all data in this directory. This may take a while! + + + + + Import data for this directory. This may take a while, and will delete ALL EXISTING DATA! + + + + + Calculating... + + + + + DepsDialog + + + Eden Dependencies + + + + + <html><head/><body><p><span style=" font-size:28pt;">Eden Dependencies</span></p></body></html> + + + + + <html><head/><body><p>The projects that make Eden possible</p></body></html> + + + + + Dependency + + + + + Version + バージョン + + DirectConnect @@ -5432,1498 +5887,152 @@ Drag points to change position, or double-click table cells to edit values. Username is not valid. Must be 4 to 20 alphanumeric characters. - ユーザー名が無効です。4~20文字の英数字で入力してください。 + ユーザー名が無効です。4~20文字の英数字で入力してください。 Room name is not valid. Must be 4 to 20 alphanumeric characters. - ルーム名が無効です。4~20文字の英数字で入力してください。 + ルーム名が無効です。4~20文字の英数字で入力してください。 Username is already in use or not valid. Please choose another. - ユーザー名がすでに使用されているか、無効です。別のユーザー名を選択してください。 + ユーザー名がすでに使用されているか、無効です。別のユーザー名を選択してください。 IP is not a valid IPv4 address. - IPは有効なIPv4アドレスではありません。 + 有効なIPv4アドレスではありません。 Port must be a number between 0 to 65535. - Portは0~65535の数字で指定してください。 + 0〜65535の間を入力してください You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - ルームをホスティングするには, 優先ゲームを選択する必要があります. リストにまだゲームがない場合は, リストのプラスアイコンをクリックしてゲームフォルダを追加してください. + Unable to find an internet connection. Check your internet settings. - インターネット接続を見つけられません。インターネットの設定を確認してください。 + Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - ホストに接続できません。接続設定が正しいか確認してください。それでも接続できない場合は、ホストに連絡し、ホストが外部ポートを正しく設定していることを確認してください。 + Unable to connect to the room because it is already full. - ルームがいっぱいのため接続できません。 + - Creating a room failed. Please retry. Restarting eden might be necessary. - + Creating a room failed. Please retry. Restarting Eden might be necessary. + The host of the room has banned you. Speak with the host to unban you or try a different room. - このルームのホストはあなたを入室禁止にしています。ホストと話をしてアクセス禁止を解除してもらうか、他のルームを試してみてください。 + - Version mismatch! Please update to the latest version of eden. If the problem persists, contact the room host and ask them to update the server. - + Version mismatch! Please update to the latest version of Eden. If the problem persists, contact the room host and ask them to update the server. + Incorrect password. - パスワードが違います。 + An unknown error occurred. If this error continues to occur, please open an issue - 不明なエラーが発生しました。このエラーが発生し続ける場合は、issueに報告してください。 + Connection to room lost. Try to reconnect. - ルームへの接続が失われました。再接続を試みてください。 + You have been kicked by the room host. - あなたはルームホストにキックされました。 + IP address is already in use. Please choose another. - IPアドレスはすでに使用されています。別のものを選択してください。 + IPアドレスはすでに使用されています。別のものを選択してください。 You do not have enough permission to perform this action. - この操作を実行するための十分な権限がありません。 + この操作を実行するための十分な権限がありません。 The user you are trying to kick/ban could not be found. They may have left the room. - キック/banしようとしているユーザーが見つかりませんでした。 -退室した可能性があります。 + No valid network interface is selected. Please go to Configure -> System -> Network and make a selection. - + Error - エラー - - - - GMainWindow - - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Anonymous data is collected</a> to help improve yuzu. <br/><br/>Would you like to share your usage data with us? - yuzuの改善に役立てるため、<a href='https://yuzu-emu.org/help/feature/telemetry/'>匿名データが収集されます</a>。<br/><br/>統計情報を共有しますか? - - - Telemetry - テレメトリ - - - - Broken Vulkan Installation Detected - 壊れたVulkanのインストールが検出されました。 - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - 起動時にVulkanの初期化に失敗しました。<br><br>この問題を解決するための手順は<a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>こちら</a>。 - - - - Running a game - TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping - - - - - Loading Web Applet... - Webアプレットをロード中... - - - - - Disable Web Applet - Webアプレットの無効化 - - - - 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.) - Webアプレットを無効にすると、未定義の動作になる可能性があるため、スーパーマリオ3Dオールスターズでのみ使用するようにしてください。本当にWebアプレットを無効化しますか? -(デバッグ設定で再度有効にすることができます)。 - - - - The amount of shaders currently being built - ビルド中のシェーダー数 - - - - The current selected resolution scaling multiplier. - 現在選択されている解像度の倍率。 - - - - Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. - 現在のエミュレーション速度。値が100%より高いか低い場合、エミュレーション速度がSwitchより速いか遅いことを示します。 - - - - How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. - ゲームが現在表示している1秒あたりのフレーム数。これはゲームごと、シーンごとに異なります。 - - - - 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. - Switchフレームをエミュレートするのにかかる時間で、フレームリミットやV-Syncは含まれません。フルスピードエミュレーションの場合、最大で16.67ミリ秒になります。 - - - - Unmute - 消音解除 - - - - Mute - 消音 - - - - Reset Volume - 音量をリセット - - - - &Clear Recent Files - 最近のファイルをクリア(&C) - - - - &Continue - 再開(&C) - - - - &Pause - 中断(&P) - - - - Warning Outdated Game Format - 古いゲームフォーマットの警告 - - - 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.<br><br>For an explanation of the various Switch formats yuzu supports, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - このゲームでは、分解されたROMディレクトリフォーマットを使用しています。これは、NCA、NAX、XCI、またはNSPなどに取って代わられた古いフォーマットです。分解されたROMディレクトリには、アイコン、メタデータ、およびアップデートサポートがありません。<br><br>yuzuがサポートするSwitchフォーマットの説明については、<a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>wikiをチェックしてください</a>。このメッセージは二度と表示されません。 - - - - - Error while loading ROM! - ROMロード中にエラーが発生しました! - - - - The ROM format is not supported. - このROMフォーマットはサポートされていません。 - - - - An error occurred initializing the video core. - ビデオコア初期化中にエラーが発生しました。 - - - 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: <a href='https://yuzu-emu.org/help/reference/log-files/'>How to Upload the Log File</a>. - yuzuは、ビデオコアの実行中にエラーが発生しました。これは通常、内蔵GPUも含め、古いGPUドライバが原因です。詳しくはログをご覧ください。ログへのアクセス方法については、以下のページをご覧ください:<a href='https://yuzu-emu.org/help/reference/log-files/'>ログファイルのアップロード方法について</a>。 - - - - Error while loading ROM! %1 - %1 signifies a numeric error code. - ROMのロード中にエラー! %1 - - - %1<br>Please follow <a href='https://yuzu-emu.org/help/quickstart/'>the yuzu quickstart guide</a> to redump your files.<br>You can refer to the yuzu wiki</a> or the yuzu Discord</a> for help. - %1 signifies an error string. - %1<br><a href='https://yuzu-emu.org/help/quickstart/'>yuzuクイックスタートガイド</a>を参照してファイルを再ダンプしてください。<br>またはyuzu wiki及び</a>yuzu Discord</a>を参照するとよいでしょう。 - - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://eden-emulator.github.io/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - - - - - Game Updates Warning - - - - - The game you are trying to launch is known to have performance or booting issues when updates are applied. Please try increasing the memory layout to 6GB or 8GB if any issues occur.<br><br>Press "OK" to continue launching, or "Cancel" to cancel the launch. - - - - - Don't show again for this game - - - - - 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.<br><br>For an explanation of the various Switch formats eden supports, <a href='https://eden-emulator.github.io/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - - - - - eden 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: <a href='https://eden-emulator.github.io/help/reference/log-files/'>How to Upload the Log File</a>. - - - - - %1<br>Please redump your files or ask on Discord for help. - %1 signifies an error string. - - - - - An unknown error occurred. Please see the log for more details. - 不明なエラーが発生しました。詳細はログを確認して下さい。 - - - - (64-bit) - (64-bit) - - - - (32-bit) - (32-bit) - - - - %1 %2 - %1 is the title name. %2 indicates if the title is 64-bit or 32-bit - %1 %2 - - - - Closing software... - ソフトウェアを終了中... - - - - Save Data - データのセーブ - - - - Mod Data - Modデータ - - - - Error Opening %1 Folder - ”%1”フォルダを開けませんでした - - - - - Folder does not exist! - フォルダが存在しません! - - - - Error Opening Transferable Shader Cache - シェーダーキャッシュを開けませんでした - - - - Failed to create the shader cache directory for this title. - このタイトル用のシェーダーキャッシュディレクトリの作成に失敗しました - - - - Error Removing Contents - コンテンツの削除エラー - - - - Error Removing Update - アップデートの削除エラー - - - - Error Removing DLC - DLC の削除エラー - - - - Remove Installed Game Contents? - インストールされたゲームのコンテンツを削除しますか? - - - - Remove Installed Game Update? - インストールされたゲームのアップデートを削除しますか? - - - - Remove Installed Game DLC? - インストールされたゲームの DLC を削除しますか? - - - - Remove Entry - エントリ削除 - - - - - - - - - Successfully Removed - 削除しました - - - - Successfully removed the installed base game. - インストールされたゲームを正常に削除しました。 - - - - The base game is not installed in the NAND and cannot be removed. - ゲームはNANDにインストールされていないため、削除できません。 - - - - Successfully removed the installed update. - インストールされたアップデートを正常に削除しました。 - - - - There is no update installed for this title. - このタイトルのアップデートはインストールされていません。 - - - - There are no DLC installed for this title. - このタイトルにはDLCがインストールされていません。 - - - - Successfully removed %1 installed DLC. - %1にインストールされたDLCを正常に削除しました。 - - - - Delete OpenGL Transferable Shader Cache? - OpenGLシェーダーキャッシュを削除しますか? - - - - Delete Vulkan Transferable Shader Cache? - Vulkanシェーダーキャッシュを削除しますか? - - - - Delete All Transferable Shader Caches? - すべてのシェーダーキャッシュを削除しますか? - - - - Remove Custom Game Configuration? - このタイトルのカスタム設定を削除しますか? - - - - Remove Cache Storage? - キャッシュストレージを削除しますか? - - - - Remove File - ファイル削除 - - - - Remove Play Time Data - プレイ時間情報を削除 - - - - Reset play time? - プレイ時間をリセットしますか? - - - - - Error Removing Transferable Shader Cache - シェーダーキャッシュの削除エラー - - - - - A shader cache for this title does not exist. - このタイトル用のシェーダーキャッシュは存在しません。 - - - - Successfully removed the transferable shader cache. - シェーダーキャッシュを正常に削除しました。 - - - - Failed to remove the transferable shader cache. - シェーダーキャッシュの削除に失敗しました。 - - - - Error Removing Vulkan Driver Pipeline Cache - - - - - Failed to remove the driver pipeline cache. - - - - - - Error Removing Transferable Shader Caches - シェーダーキャッシュの削除エラー - - - - Successfully removed the transferable shader caches. - シェーダーキャッシュを正常に削除しました。 - - - - Failed to remove the transferable shader cache directory. - シェーダーキャッシュディレクトリの削除に失敗しました。 - - - - - Error Removing Custom Configuration - カスタム設定の削除エラー - - - - A custom configuration for this title does not exist. - このタイトルのカスタム設定は存在しません。 - - - - Successfully removed the custom game configuration. - カスタム設定を正常に削除しました。 - - - - Failed to remove the custom game configuration. - カスタム設定の削除に失敗しました。 - - - - - RomFS Extraction Failed! - RomFSの抽出に失敗しました! - - - - There was an error copying the RomFS files or the user cancelled the operation. - RomFSファイルをコピー中にエラーが発生したか、ユーザー操作によりキャンセルされました。 - - - - Full - フル - - - - Skeleton - スケルトン - - - - Select RomFS Dump Mode - RomFSダンプモードの選択 - - - - Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. - RomFSのダンプ方法を選択してください。<br>”完全”はすべてのファイルが新しいディレクトリにコピーされます。<br>”スケルトン”はディレクトリ構造を作成するだけです。 - - - - There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root - %1 に RomFS を展開するための十分な空き領域がありません。Emulation > Configure > System > Filesystem > Dump Root で、空き容量を確保するか、別のダンプディレクトリを選択してください。 - - - - Extracting RomFS... - RomFSを抽出中... - - - - - - - - Cancel - キャンセル - - - - RomFS Extraction Succeeded! - RomFS抽出成功! - - - - - - The operation completed successfully. - 操作は成功しました。 - - - - Integrity verification couldn't be performed! - 整合性の確認を実行できませんでした! - - - - File contents were not checked for validity. - ファイルの妥当性は確認されませんでした. - - - - - Verifying integrity... - 整合性を確認中... - - - - - Integrity verification succeeded! - 整合性の確認に成功しました! - - - - - Integrity verification failed! - 整合性の確認に失敗しました! - - - - File contents may be corrupt. - ファイルが破損しているかもしれません。 - - - - - - - Create Shortcut - ショートカットを作成 - - - - Do you want to launch the game in fullscreen? - フルスクリーンでゲームを起動しますか? - - - - Successfully created a shortcut to %1 - %1 へのショートカット作成に成功しました - - - - This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - これにより、現在のAppImageへのショートカットが作成されます。アップデートした場合、うまく動作しなくなる可能性があります。続行しますか? - - - - Failed to create a shortcut to %1 - %1 へのショートカット作成に失敗しました - - - - Create Icon - アイコンを作成 - - - - Cannot create icon file. Path "%1" does not exist and cannot be created. - - - - - Error Opening %1 - ”%1”を開けませんでした - - - - Select Directory - ディレクトリの選択 - - - - Properties - プロパティ - - - - The game properties could not be loaded. - ゲームプロパティをロード出来ませんでした。 - - - - Switch Executable (%1);;All Files (*.*) - %1 is an identifier for the Switch executable file extensions. - Switch実行ファイル (%1);;すべてのファイル (*.*) - - - - Load File - ファイルのロード - - - - Open Extracted ROM Directory - 展開されているROMディレクトリを開く - - - - Invalid Directory Selected - 無効なディレクトリが選択されました - - - - The directory you have selected does not contain a 'main' file. - 選択されたディレクトリに”main”ファイルが見つかりませんでした。 - - - - Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - インストール可能なスイッチファイル (*.nca *.nsp *.xci);;任天堂コンテンツアーカイブ (*.nca);;任天堂サブミッションパッケージ (*.nsp);;NXカートリッジイメージ (*.xci) - - - - Install Files - ファイルのインストール - - - - %n file(s) remaining - - 残り %n ファイル - - - - - Installing file "%1"... - "%1"ファイルをインストールしています・・・ - - - - - Install Results - インストール結果 - - - - To avoid possible conflicts, we discourage users from installing base games to the NAND. -Please, only use this feature to install updates and DLC. - 競合を避けるため、NANDにゲーム本体をインストールすることはお勧めしません。 -この機能は、アップデートやDLCのインストールにのみ使用してください。 - - - - %n file(s) were newly installed - - - %n ファイルが新たにインストールされました - - - - - - %n file(s) were overwritten - - - %n ファイルが上書きされました - - - - - - %n file(s) failed to install - - - %n ファイルのインストールに失敗しました - - - - - - System Application - システムアプリケーション - - - - System Archive - システムアーカイブ - - - - System Application Update - システムアプリケーションアップデート - - - - Firmware Package (Type A) - ファームウェアパッケージ(Type A) - - - - Firmware Package (Type B) - ファームウェアパッケージ(Type B) - - - - Game - ゲーム - - - - Game Update - ゲームアップデート - - - - Game DLC - ゲームDLC - - - - Delta Title - 差分タイトル - - - - Select NCA Install Type... - NCAインストール種別を選択・・・ - - - - Please select the type of title you would like to install this NCA as: -(In most instances, the default 'Game' is fine.) - インストールするNCAタイトル種別を選択して下さい: -(ほとんどの場合、デフォルトの”ゲーム”で問題ありません。) - - - - Failed to Install - インストール失敗 - - - - The title type you selected for the NCA is invalid. - 選択されたNCAのタイトル種別が無効です。 - - - - File not found - ファイルが存在しません - - - - File "%1" not found - ファイル”%1”が存在しません - - - - OK - OK - - - - - Hardware requirements not met - - - - - - Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled. - お使いのシステムは推奨ハードウェア要件を満たしていません。互換性レポートは無効になっています。 - - - - Missing yuzu Account - yuzuアカウントが存在しません - - - - In order to submit a game compatibility test case, you must link your eden account.<br><br/>To link your eden account, go to Emulation &gt; Configuration &gt; Web. - - - - - Install decryption keys and restart eden before attempting to install firmware. - - - - - Firmware installation cancelled, firmware may be in bad state, restart eden or re-install firmware. - - - - - Encryption keys are missing. - - - - - Are you sure you want to close eden? - - - - - - - eden - - - - - The currently running application has requested eden to not exit. - -Would you like to bypass this and exit anyway? - - - - In order to submit a game compatibility test case, you must link your yuzu account.<br><br/>To link your yuzu account, go to Emulation &gt; Configuration &gt; Web. - ゲームの互換性テストケースを送信するには、yuzuアカウントをリンクする必要があります。<br><br/>yuzuアカウントをリンクするには、エミュレーション > 設定 > Web から行います。 - - - - Error opening URL - URLオープンエラー - - - - Unable to open the URL "%1". - URL"%1"を開けません。 - - - - TAS Recording - TAS 記録中 - - - - Overwrite file of player 1? - プレイヤー1のファイルを上書きしますか? - - - - Invalid config detected - 無効な設定を検出しました - - - - Handheld controller can't be used on docked mode. Pro controller will be selected. - 携帯コントローラはドックモードで使用できないため、Proコントローラが選択されます。 - - - - - Amiibo - Amiibo - - - - - The current amiibo has been removed - 現在の amiibo は削除されました - - - - Error エラー - - - - The current game is not looking for amiibos - 現在のゲームはamiiboを要求しません - - - - Amiibo File (%1);; All Files (*.*) - amiiboファイル (%1);;すべてのファイル (*.*) - - - - Load Amiibo - amiiboのロード - - - - Error loading Amiibo data - amiiboデータ読み込み中にエラーが発生しました - - - - The selected file is not a valid amiibo - 選択されたファイルは有効な amiibo ではありません - - - - The selected file is already on use - 選択されたファイルはすでに使用中です - - - - An unknown error occurred - 不明なエラーが発生しました - - - - - Verification failed for the following files: - -%1 - 以下のファイルの確認に失敗しました: - -%1 - - - - Keys not installed - - - - - Select Dumped Firmware Source Location - - - - - Installing Firmware... - - - - - - - - Firmware install failed - - - - - Unable to locate potential firmware NCA files - - - - - Failed to delete one or more firmware file. - - - - - One or more firmware files failed to copy into NAND. - - - - - Firmware integrity verification failed! - - - - - Select Dumped Keys Location - - - - - - - Decryption Keys install failed - - - - - prod.keys is a required decryption key file. - - - - - One or more keys failed to copy. - - - - - Decryption Keys install succeeded - - - - - Decryption Keys were successfully installed - - - - - Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. - - - - - - - - - - - No firmware available - ファームウェアがありません - - - - Please install the firmware to use the Album applet. - アルバム アプレットを使用するにはファームウェアをインストールしてください. - - - - Album Applet - アルバムアプレット - - - - Album applet is not available. Please reinstall firmware. - アルバムアプレットは利用可能ではありません. ファームウェアを再インストールしてください. - - - - Please install the firmware to use the Cabinet applet. - - - - - Cabinet Applet - キャビネットアプレット - - - - Cabinet applet is not available. Please reinstall firmware. - キャビネットアプレットは利用可能ではありません. ファームウェアを再インストールしてください. - - - - Please install the firmware to use the Mii editor. - Mii エディタを使用するにはファームウェアをインストールしてください. - - - - Mii Edit Applet - Mii 編集アプレット - - - - Mii editor is not available. Please reinstall firmware. - Mii エディタは利用可能ではありません. ファームウェアを再インストールしてください. - - - - Please install the firmware to use the Controller Menu. - コントローラーメニューを使用するにはファームウェアをインストールしてください. - - - - Controller Applet - コントローラー アプレット - - - - Controller Menu is not available. Please reinstall firmware. - コントローラーメニューは利用可能ではありません. ファームウェアを再インストールしてください. - - - - Please install the firmware to use the Home Menu. - - - - - - Home Menu Applet - - - - - - Home Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use Starter. - - - - - Starter Applet - - - - - Starter is not available. Please reinstall firmware. - - - - - Please install firmware to use the home menu. - - - - - Capture Screenshot - スクリーンショットのキャプチャ - - - - PNG Image (*.png) - PNG画像 (*.png) - - - - Update Available - - - - - Update %1 for Eden is available. -Would you like to download it? - - - - - TAS state: Running %1/%2 - TAS 状態: 実行中 %1/%2 - - - - TAS state: Recording %1 - TAS 状態: 記録中 %1 - - - - TAS state: Idle %1/%2 - TAS 状態: アイドル %1/%2 - - - - TAS State: Invalid - TAS 状態: 無効 - - - - &Stop Running - 実行停止(&S) - - - - &Start - 実行(&S) - - - - Stop R&ecording - 記録停止(&R) - - - - R&ecord - 記録(&R) - - - - Building: %n shader(s) - - 構築中: %n 個のシェーダー - - - - - Scale: %1x - %1 is the resolution scaling factor - 拡大率: %1x - - - - Speed: %1% / %2% - 速度:%1% / %2% - - - - Speed: %1% - 速度:%1% - - - Game: %1 FPS (Unlocked) - Game: %1 FPS(制限解除) - - - - Game: %1 FPS - ゲーム:%1 FPS - - - - Frame: %1 ms - フレーム:%1 ms - - - - %1 %2 - %1 %2 - - - - - FSR - FSR - - - - NO AA - NO AA - - - - VOLUME: MUTE - 音量: ミュート - - - - VOLUME: %1% - Volume percentage (e.g. 50%) - 音量: %1% - - - - Derivation Components Missing - 派生コンポーネントがありません - - - - Select RomFS Dump Target - RomFSダンプターゲットの選択 - - - - Please select which RomFS you would like to dump. - ダンプしたいRomFSを選択して下さい。 - - - Are you sure you want to close yuzu? - yuzuを終了しますか? - - - yuzu - yuzu - - - - Are you sure you want to stop the emulation? Any unsaved progress will be lost. - エミュレーションを停止しますか?セーブされていない進行状況は失われます。 - - - The currently running application has requested yuzu to not exit. - -Would you like to bypass this and exit anyway? - 現在動作中のアプリケーションはyuzuに終了しないよう要求しています。 - -無視してとにかく終了しますか? - - - - None - なし - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Nearest - Nearest - - - - Bilinear - Bilinear - - - - Bicubic - Bicubic - - - - Gaussian - Gaussian - - - - ScaleForce - ScaleForce - - - - Area - - - - - Docked - Docked - - - - Handheld - 携帯モード - - - - Normal - 標準 - - - - High - 高い - - - - Extreme - - - - - Vulkan - Vulkan - - - - OpenGL - OpenGL - - - - Null - - - - - GLSL - GLSL - - - - GLASM - GLASM - - - - SPIRV - SPIRV - GRenderWindow - - + + OpenGL not available! OpenGLは使用できません! - + OpenGL shared contexts are not supported. - + - yuzu has not been compiled with OpenGL support. - yuzuはOpenGLサポート付きでコンパイルされていません。 + + Eden has not been compiled with OpenGL support. + - - eden has not been compiled with OpenGL support. - - - - - + + Error while initializing OpenGL! OpenGL初期化エラー - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. GPUがOpenGLをサポートしていないか、グラフィックスドライバーが最新ではありません。 - + Error while initializing OpenGL 4.6! OpenGL4.6初期化エラー! - + Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 GPUがOpenGL4.6をサポートしていないか、グラフィックスドライバーが最新ではありません。<br><br>GL レンダラ:<br>%1 - + Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2 GPUが1つ以上の必要なOpenGL拡張機能をサポートしていない可能性があります。最新のグラフィックドライバを使用していることを確認してください。<br><br>GL レンダラ:<br>%1<br><br>サポートされていない拡張機能:<br>%2 @@ -6931,192 +6040,208 @@ Would you like to bypass this and exit anyway? GameList - + + &Add New Game Directory + + + + Favorite お気に入り - + Start Game ゲームを開始 - + Start Game without Custom Configuration カスタム設定なしでゲームを開始 - + Open Save Data Location セーブデータディレクトリを開く - + Open Mod Data Location Modデータディレクトリを開く - + Open Transferable Pipeline Cache パイプラインキャッシュを開く - + + Link to Ryujinx + + + + Remove 削除 - + Remove Installed Update インストールされているアップデートを削除 - + Remove All Installed DLC 全てのインストールされているDLCを削除 - + Remove Custom Configuration カスタム設定を削除 - - Remove Play Time Data - プレイ時間情報を削除 - - - + Remove Cache Storage キャッシュストレージを削除 - + Remove OpenGL Pipeline Cache OpenGLパイプラインキャッシュを削除 - + Remove Vulkan Pipeline Cache Vulkanパイプラインキャッシュを削除 - + Remove All Pipeline Caches すべてのパイプラインキャッシュを削除 - + Remove All Installed Contents 全てのインストールされているコンテンツを削除 - - + + Manage Play Time + + + + + Edit Play Time Data + + + + + Remove Play Time Data + プレイ時間情報を削除 + + + + Dump RomFS RomFSをダンプ - + Dump RomFS to SDMC RomFSをSDMCにダンプ - + Verify Integrity 整合性を確認 - + Copy Title ID to Clipboard タイトルIDをクリップボードへコピー - + Navigate to GameDB entry GameDBエントリを表示 - + Create Shortcut ショートカットを作成 - + Add to Desktop デスクトップに追加 - + Add to Applications Menu アプリケーションメニューに追加 - + Configure Game - + - Properties - プロパティ - - - + Scan Subfolders サブフォルダをスキャンする - + Remove Game Directory ゲームディレクトリを削除する - + ▲ Move Up ▲ 上へ移動 - + ▼ Move Down ▼ 下へ移動 - + Open Directory Location ディレクトリの場所を開く - + Clear クリア - + Name ゲーム名 - + Compatibility 互換性 - + Add-ons アドオン - + File type ファイル種別 - + Size ファイルサイズ - + Play time プレイ時間 @@ -7124,62 +6249,62 @@ Would you like to bypass this and exit anyway? GameListItemCompat - + Ingame - + - + Game starts, but crashes or major glitches prevent it from being completed. ゲームは始まるが、クラッシュや大きな不具合でクリアできない。 - + Perfect カンペキ - + Game can be played without issues. ゲームは問題なくプレイできる。 - + Playable プレイ可 - + Game functions with minor graphical or audio glitches and is playable from start to finish. ゲームは、グラフィックやオーディオに小さな不具合はあるが、最初から最後までプレイできる。 - + Intro/Menu イントロ - + Game loads, but is unable to progress past the Start Screen. ゲームはロードされるが、スタート画面から先に進めない。 - + Won't Boot 起動不可 - + The game crashes when attempting to startup. ゲームは起動時にクラッシュしました。 - + Not Tested 未テスト - + The game has not yet been tested. このゲームはまだテストされていません。 @@ -7187,7 +6312,7 @@ Would you like to bypass this and exit anyway? GameListPlaceholder - + Double-click to add a new folder to the game list 新しいゲームリストフォルダを追加するにはダブルクリックしてください。 @@ -7195,19 +6320,17 @@ Would you like to bypass this and exit anyway? GameListSearchField - + %1 of %n result(s) - - - + - + Filter: フィルター: - + Enter pattern to filter フィルターパターンを入力 @@ -7242,7 +6365,7 @@ Would you like to bypass this and exit anyway? (Leave blank for open game) - + @@ -7283,233 +6406,241 @@ Would you like to bypass this and exit anyway? HostRoomWindow - + Error エラー - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. + + Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid Eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. Debug Message: - - - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid yuzu account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. -Debug Message: - 公開ロビーへのルームのアナウンスに失敗しました。ルームを公開するためには、エミュレーション -> 設定 -> Web で有効なyuzuアカウントが設定されている必要があります。もし、ルームを公開ロビーに公開したくないのであれば、代わりに非公開を選択してください。 -デバッグメッセージ : + Hotkeys - + Audio Mute/Unmute 音声ミュート/解除 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Main Window メイン画面 - + Audio Volume Down 音量を下げる - + Audio Volume Up 音量を上げる - + Capture Screenshot スクリーンショットを撮る - + Change Adapting Filter 適応フィルターの変更 - + Change Docked Mode ドックモードを変更 - - Change GPU Accuracy - GPU精度を変更 + + Change GPU Mode + - + Configure - 設定 + - + Configure Current Game - + - + Continue/Pause Emulation エミュレーションの一時停止/再開 - + Exit Fullscreen フルスクリーンをやめる - Exit yuzu - yuzuを終了 + + Exit Eden + - - Exit eden - - - - + Fullscreen フルスクリーン - + Load File ファイルのロード - + Load/Remove Amiibo 読み込み/解除 Amiibo - - Multiplayer Browse Public Game Lobby - + + Browse Public Game Lobby + - - Multiplayer Create Room - + + Create Room + - - Multiplayer Direct Connect to Room - + + Direct Connect to Room + - - Multiplayer Leave Room - + + Leave Room + - - Multiplayer Show Current Room - + + Show Current Room + - + Restart Emulation エミュレーションをリスタート - + Stop Emulation エミュレーションをやめる - + TAS Record TAS 記録 - + TAS Reset TAS リセット - + TAS Start/Stop TAS 開始/停止 - + Toggle Filter Bar フィルターバー切り替え - + Toggle Framerate Limit フレームレート制限切り替え - + + Toggle Turbo Speed + + + + + Toggle Slow Speed + + + + Toggle Mouse Panning - + - + Toggle Renderdoc Capture - + - + Toggle Status Bar ステータスバー切り替え + + + Toggle Performance Overlay + + InstallDialog - + Please confirm these are the files you wish to install. これらがインストールするファイルであることを確認してください。 - + Installing an Update or DLC will overwrite the previously installed one. アップデート、またはDLCをインストールすると、以前にインストールしたものが上書きされます。 - + Install インストール - + Install Files to NAND ファイルをNANDへインストール @@ -7517,8 +6648,8 @@ Debug Message: LimitableInputDialog - - The text can't contain any of the following characters: + + The text can't contain any of the following characters: %1 テキストに以下の文字を含めることはできません: %1 @@ -7542,22 +6673,22 @@ Debug Message: 予想時間 5分4秒 - + Loading... ロード中... - + Loading Shaders %1 / %2 シェーダーをロード中 %1 / %2 - + Launching... 起動中... - + Estimated Time %1 予想時間 %1 @@ -7606,42 +6737,42 @@ Debug Message: ロビー更新 - + Password Required to Join 参加にはパスワードが必要です。 - + Password: パスワード: - + Players プレイヤー - + Room Name ルーム名 - + Preferred Game 優先ゲーム - + Host ホスト - + Refreshing 更新中 - + Refresh List リスト更新 @@ -7664,362 +6795,1424 @@ Debug Message: 最近のファイル(&R) - + + Open &Eden Folders + + + + &Emulation エミュレーション(&E) - + &View 表示(&V) - + &Reset Window Size ウィンドウサイズのリセット(&R) - + &Debugging デバッグ(&D) - + + &Game List Mode + + + + + Game &Icon Size + + + + Reset Window Size to &720p &720P - + Reset Window Size to 720p ウィンドウサイズを720Pにリセット - + Reset Window Size to &900p &900P - + Reset Window Size to 900p ウィンドウサイズを900Pにリセット - + Reset Window Size to &1080p &1080P - + Reset Window Size to 1080p ウィンドウサイズを1080Pにリセット - + &Multiplayer マルチプレイヤー (&M) - + &Tools ツール(&T) - - &Amiibo - &Amiibo + + Am&iibo + - + + Launch &Applet + + + + &TAS &TAS - + &Create Home Menu Shortcut - + - + + Install &Firmware + + + + &Help ヘルプ(&H) - + &Install Files to NAND... ファイルをNANDにインストール...(&I) - + L&oad File... ファイルをロード...(&L) - + Load &Folder... フォルダをロード...(&F) - + E&xit 終了(&E) - + + &Pause 中断(&P) - + &Stop 停止(&S) - + &Verify Installed Contents インストールされたコンテンツを確認(&V) - - &About eden - + + &About Eden + - - Open &eden Folder - - - - - Open Home Menu - - - - - &Discord - - - - - Open &Setup - - - - - &Desktop - - - - - &Application Menu - - - - &About yuzu - yuzuについて(&A) - - - + Single &Window Mode シングルウィンドウモード(&W) - + Con&figure... 設定...(&F) - + Ctrl+, - + - - Display D&ock Widget Headers - ドックウィジェットヘッダ(&O) + + Enable Overlay Display Applet + - + Show &Filter Bar フィルターバーを表示 (&F) - + Show &Status Bar ステータスバー(&S) - + Show Status Bar ステータスバーの表示 - + &Browse Public Game Lobby 公開ゲームロビーを参照 (&B) - + &Create Room ルームを作成 (&C) - + &Leave Room ルームを退出 (&L) - + &Direct Connect to Room ルームに直接接続 (&D) - + &Show Current Room 現在のルームを表示 (&S) - + F&ullscreen 全画面表示(&F) - + &Restart 再実行(&R) - + Load/Remove &Amiibo... &Amiibo をロード/削除... - + &Report Compatibility 互換性を報告(&R) - + Open &Mods Page &Modページを開く - + Open &Quickstart Guide クイックスタートガイドを開く(&Q) - + &FAQ &FAQ - Open &yuzu Folder - &yuzuフォルダを開く - - - + &Capture Screenshot スクリーンショットをキャプチャ(&C) - - Open &Album - アルバムを開く (&A) + + &Album + - + &Set Nickname and Owner オーナーとニックネームを設定 (&S) - + &Delete Game Data ゲームデータの消去 (&D) - + &Restore Amiibo Amiibo を復旧 (&R) - + &Format Amiibo Amiibo を初期化(&F) - - Open &Mii Editor - &Mii エディタを開く + + &Mii Editor + - + &Configure TAS... TASを設定... (&C) - + Configure C&urrent Game... 現在のゲームを設定...(&U) - + + &Start 実行(&S) - + &Reset リセット(&R) - + + R&ecord 記録(&R) - + Open &Controller Menu コントローラーメニューを開く (&C) - - Install Firmware - + + Install Decryption &Keys + - - Install Decryption Keys - + + &Home Menu + - - - MicroProfileDialog - - &MicroProfile - &MicroProfile + + &Desktop + + + + + &Application Menu + + + + + &Root Data Folder + + + + + &NAND Folder + + + + + &SDMC Folder + + + + + &Mod Folder + + + + + &Log Folder + + + + + From Folder + + + + + From ZIP + + + + + &Eden Dependencies + + + + + &Data Manager + + + + + &Tree View + + + + + &Grid View + + + + + Game Icon Size + + + + + + + None + + + + + Show Game &Name + + + + + Show &Performance Overlay + + + + + Small (32x32) + + + + + Standard (64x64) + + + + + Large (128x128) + + + + + Full Size (256x256) + + + + + Broken Vulkan Installation Detected + + + + + Vulkan initialization failed during boot. + + + + + Running a game + TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping + + + + + Loading Web Applet... + + + + + + Disable Web Applet + + + + + 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.) + + + + + The amount of shaders currently being built + + + + + The current selected resolution scaling multiplier. + + + + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. + + + + + How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. + + + + + 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. + + + + + Unmute + + + + + Mute + + + + + Reset Volume + + + + + &Clear Recent Files + + + + + &Continue + + + + + Warning: Outdated Game Format + + + + + 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.<br>For an explanation of the various Switch formats Eden supports, out our user handbook. This message will not be shown again. + + + + + + Error while loading ROM! + + + + + The ROM format is not supported. + + + + + An error occurred initializing the video core. + + + + + Eden 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: <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>How to Upload the Log File</a>. + + + + + Error while loading ROM! %1 + %1 signifies a numeric error code. + + + + + %1<br>Please redump your files or ask on Discord/Stoat for help. + %1 signifies an error string. + + + + + An unknown error occurred. Please see the log for more details. + + + + + (64-bit) + + + + + (32-bit) + + + + + %1 %2 + %1 is the title name. %2 indicates if the title is 64-bit or 32-bit + + + + + Closing software... + + + + + Save Data + + + + + Mod Data + + + + + Error Opening %1 Folder + + + + + + Folder does not exist! + + + + + Remove Installed Game Contents? + + + + + Remove Installed Game Update? + + + + + Remove Installed Game DLC? + + + + + Remove Entry + + + + + Delete OpenGL Transferable Shader Cache? + + + + + Delete Vulkan Transferable Shader Cache? + + + + + Delete All Transferable Shader Caches? + + + + + Remove Custom Game Configuration? + + + + + Remove Cache Storage? + + + + + Remove File + + + + + Remove Play Time Data + + + + + Reset play time? + + + + + + RomFS Extraction Failed! + + + + + There was an error copying the RomFS files or the user cancelled the operation. + + + + + Full + + + + + Skeleton + + + + + Select RomFS Dump Mode + + + + + Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. + + + + + There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root + + + + + Extracting RomFS... + + + + + + Cancel + + + + + RomFS Extraction Succeeded! + + + + + The operation completed successfully. + + + + + Error Opening %1 + + + + + Select Directory + + + + + Properties + + + + + The game properties could not be loaded. + + + + + Switch Executable (%1);;All Files (*.*) + %1 is an identifier for the Switch executable file extensions. + + + + + Load File + + + + + Open Extracted ROM Directory + + + + + Invalid Directory Selected + + + + + The directory you have selected does not contain a 'main' file. + + + + + Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) + + + + + Install Files + + + + + %n file(s) remaining + + + + + Installing file "%1"... + + + + + + Install Results + + + + + To avoid possible conflicts, we discourage users from installing base games to the NAND. +Please, only use this feature to install updates and DLC. + + + + + %n file(s) were newly installed + + + + + + %n file(s) were overwritten + + + + + + %n file(s) failed to install + + + + + + System Application + + + + + System Archive + + + + + System Application Update + + + + + Firmware Package (Type A) + + + + + Firmware Package (Type B) + + + + + Game + + + + + Game Update + + + + + Game DLC + + + + + Delta Title + + + + + Select NCA Install Type... + + + + + Please select the type of title you would like to install this NCA as: +(In most instances, the default 'Game' is fine.) + + + + + Failed to Install + + + + + The title type you selected for the NCA is invalid. + + + + + File not found + + + + + File "%1" not found + + + + + OK + + + + + Function Disabled + + + + + Compatibility list reporting is currently disabled. Check back later! + + + + + Error opening URL + + + + + Unable to open the URL "%1". + + + + + TAS Recording + + + + + Overwrite file of player 1? + + + + + Invalid config detected + + + + + Handheld controller can't be used on docked mode. Pro controller will be selected. + + + + + + Amiibo + + + + + + The current amiibo has been removed + + + + + Error + + + + + + The current game is not looking for amiibos + + + + + Amiibo File (%1);; All Files (*.*) + + + + + Load Amiibo + + + + + Error loading Amiibo data + + + + + The selected file is not a valid amiibo + + + + + The selected file is already on use + + + + + An unknown error occurred + + + + + + Keys not installed + + + + + + Install decryption keys and restart Eden before attempting to install firmware. + + + + + Select Dumped Firmware Source Location + + + + + Select Dumped Firmware ZIP + + + + + Zipped Archives (*.zip) + + + + + Firmware cleanup failed + + + + + Failed to clean up extracted firmware cache. +Check write permissions in the system temp directory and try again. +OS reported error: %1 + + + + + No firmware available + + + + + Firmware Corrupted + + + + + Unknown applet + + + + + Applet doesn't map to a known value. + + + + + Record not found + + + + + Applet not found. Please reinstall firmware. + + + + + Capture Screenshot + + + + + PNG Image (*.png) + + + + + Update Available + + + + + Download %1? + + + + + TAS state: Running %1/%2 + + + + + TAS state: Recording %1 + + + + + TAS state: Idle %1/%2 + + + + + TAS State: Invalid + + + + + &Stop Running + + + + + Stop R&ecording + + + + + Building: %n shader(s) + + + + + Scale: %1x + %1 is the resolution scaling factor + + + + + Speed: %1% / %2% + + + + + Speed: %1% + + + + + Game: %1 FPS + + + + + Frame: %1 ms + + + + + + FSR + + + + + NO AA + + + + + VOLUME: MUTE + + + + + VOLUME: %1% + Volume percentage (e.g. 50%) + + + + + Derivation Components Missing + + + + + Decryption keys are missing. Install them now? + + + + + Wayland Detected! + + + + + Wayland is known to have significant performance issues and mysterious bugs. +It's recommended to use X11 instead. + +Would you like to force it for future launches? + + + + + Use X11 + + + + + Continue with Wayland + + + + + Don't show again + + + + + Restart Required + + + + + Restart Eden to apply the X11 backend. + + + + + Slow + + + + + Turbo + + + + + Unlocked + + + + + Select RomFS Dump Target + + + + + Please select which RomFS you would like to dump. + + + + + Are you sure you want to close Eden? + + + + + + + Eden + + + + + Are you sure you want to stop the emulation? Any unsaved progress will be lost. + + + + + The currently running application has requested Eden to not exit. + +Would you like to bypass this and exit anyway? + + + + + FXAA + + + + + SMAA + + + + + Nearest + + + + + Bilinear + + + + + Bicubic + + + + + Zero-Tangent + + + + + B-Spline + + + + + Mitchell + + + + + Spline-1 + + + + + Gaussian + + + + + Lanczos + + + + + ScaleForce + + + + + Area + + + + + MMPX + + + + + Docked + + + + + Handheld + + + + + Fast + + + + + Balanced + + + + + Accurate + + + + + Vulkan + + + + + OpenGL GLSL + + + + + OpenGL SPIRV + + + + + OpenGL GLASM + + + + + Null + MigrationWorker - - Data was migrated successfully. - - - - + Linking the old directory failed. You may need to re-run with administrative privileges on Windows. OS gave error: %1 - + - + + + +Note that your configuration and data will be shared with %1. +If this is not desirable, delete the following files: +%2 +%3 +%4 + + + + If you wish to clean up the files which were left in the old data location, you can do so by deleting the following directory: %1 - + + + + + Data was migrated successfully. + + + + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + @@ -8027,7 +8220,7 @@ If you wish to clean up the files which were left in the old data location, you Moderation - + @@ -8036,7 +8229,7 @@ If you wish to clean up the files which were left in the old data location, you - + Refreshing 更新中 @@ -8046,27 +8239,27 @@ If you wish to clean up the files which were left in the old data location, you Ban解除 - + Subject - + - + Type タイプ - + Forum Username フォーラムのユーザ名 - + IP Address IPアドレス - + Refresh 更新 @@ -8074,37 +8267,37 @@ If you wish to clean up the files which were left in the old data location, you MultiplayerState - + Current connection status 現在の接続状態 - + Not Connected. Click here to find a room! 接続されていません。ここをクリックしてルームを見つけてください。 - + Not Connected 未接続 - + Connected 接続の状態 - + New Messages Received 新たなメッセージを受信しました - + Error エラー - + Failed to update the room information. Please check your Internet connection and try hosting the room again. Debug Message: ルーム情報の更新に失敗しました。インターネット接続を確認し、再度ルームのホストをお試しください。 @@ -8113,84 +8306,6 @@ Debug Message: NetworkMessage - - Username is not valid. Must be 4 to 20 alphanumeric characters. - ユーザー名が無効です。4~20文字の英数字で入力してください。 - - - Room name is not valid. Must be 4 to 20 alphanumeric characters. - ルーム名が無効です。4~20文字の英数字で入力してください。 - - - Username is already in use or not valid. Please choose another. - ユーザー名がすでに使用されているか、無効です。別のユーザー名を選択してください。 - - - IP is not a valid IPv4 address. - IPは有効なIPv4アドレスではありません。 - - - Port must be a number between 0 to 65535. - Portは0~65535の数字で指定してください。 - - - You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - ルームをホスティングするには, 優先ゲームを選択する必要があります. リストにまだゲームがない場合は, リストのプラスアイコンをクリックしてゲームフォルダを追加してください. - - - Unable to find an internet connection. Check your internet settings. - インターネット接続を見つけられません。インターネットの設定を確認してください。 - - - Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - ホストに接続できません。接続設定が正しいか確認してください。それでも接続できない場合は、ホストに連絡し、ホストが外部ポートを正しく設定していることを確認してください。 - - - Unable to connect to the room because it is already full. - ルームがいっぱいのため接続できません。 - - - Creating a room failed. Please retry. Restarting yuzu might be necessary. - ルームの作成に失敗しました。再試行してください。yuzuの再起動が必要かもしれません。 - - - The host of the room has banned you. Speak with the host to unban you or try a different room. - このルームのホストはあなたを入室禁止にしています。ホストと話をしてアクセス禁止を解除してもらうか、他のルームを試してみてください。 - - - Version mismatch! Please update to the latest version of yuzu. If the problem persists, contact the room host and ask them to update the server. - バージョンの不一致です。yuzuの最新バージョンにアップデートしてください。それでも問題が解決しない場合は、ルームホストに連絡し、サーバーを更新するよう依頼してください。 - - - Incorrect password. - パスワードが違います。 - - - An unknown error occurred. If this error continues to occur, please open an issue - 不明なエラーが発生しました。このエラーが発生し続ける場合は、issueに報告してください。 - - - Connection to room lost. Try to reconnect. - ルームへの接続が失われました。再接続を試みてください。 - - - You have been kicked by the room host. - あなたはルームホストにキックされました。 - - - IP address is already in use. Please choose another. - IPアドレスはすでに使用されています。別のものを選択してください。 - - - You do not have enough permission to perform this action. - この操作を実行するための十分な権限がありません。 - - - The user you are trying to kick/ban could not be found. -They may have left the room. - キック/banしようとしているユーザーが見つかりませんでした。 -退室した可能性があります。 - Game already running @@ -8225,10 +8340,132 @@ Proceed anyway? - NetworkMessage::ErrorManager + NewUserDialog - Error - エラー + + + New User + + + + + Change Avatar + + + + + Set Image + + + + + UUID + + + + + Eden + + + + + Username + + + + + UUID must be 32 hex characters (0-9, A-F) + + + + + Generate + + + + + Select User Image + + + + + Image Formats (*.jpg *.jpeg *.png *.bmp) + + + + + No firmware available + + + + + Please install the firmware to use firmware avatars. + + + + + + Error loading archive + + + + + Archive is not available. Please install/reinstall firmware. + + + + + Could not locate RomFS. Your file or decryption keys may be corrupted. + + + + + Error extracting archive + + + + + Could not extract RomFS. Your file or decryption keys may be corrupted. + + + + + Error finding image directory + + + + + Failed to find image directory in the archive. + + + + + No images found + + + + + No avatar images were found in the archive. + + + + + + All Good + Tooltip + + + + + Must be 32 hex characters (0-9, a-f) + Tooltip + + + + + Must be between 1 and 32 characters + Tooltip + @@ -8255,7 +8492,7 @@ Proceed anyway? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -8264,83 +8501,196 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> + + PerformanceOverlay + + + Form + + + + + Frametime + + + + + 0 ms + + + + + + Min: 0 + + + + + + Max: 0 + + + + + + Avg: 0 + + + + + FPS + + + + + 0 fps + + + + + %1 fps + + + + + + Avg: %1 + + + + + + Min: %1 + + + + + + Max: %1 + + + + + %1 ms + + + PlayerControlPreview - + START/PAUSE スタート/ ポーズ + + ProfileAvatarDialog + + + Select + + + + + Cancel + + + + + Background Color + + + + + Select Firmware Avatar + + + QObject - - %1 is not playing a game - %1はゲームのプレイ中ではありません + + + + Migration + - - %1 is playing %2 - %1は%2をプレイ中です + + Clear Shader Cache + - - Not playing a game - + + Keep Old Data + - - Installed SD Titles - インストール済みSDタイトル + + Clear Old Data + - - Installed NAND Titles - インストール済みNANDタイトル + + Link Old Directory + - - System Titles - システムタイトル + + + + + - - Add New Game Directory - 新しいゲームディレクトリを追加する + + + No + - - Favorites - お気に入り + + You can manually re-trigger this prompt by deleting the new config directory: +%1 + + + + + Migrating + + + + + Migrating, this may take a while... + - - + + Shift Shift - - + + Ctrl Ctrl - - + + Alt Alt - - - - + + + + [not set] [未設定] @@ -8350,15 +8700,15 @@ p, li { white-space: pre-wrap; } 十字キー %1 %2 - - - - - - - - + + + + + + + + Axis %1%2 スティック %1%2 @@ -8368,359 +8718,383 @@ p, li { white-space: pre-wrap; } ボタン %1 - - - - - - + + + + + + [unknown] [不明] - - - + + + Left - - - + + + Right - - - + + + Down - - - + + + Up - - + + Z Z - - + + R R - - + + L L - - + + A A - - + + B B - - + + X X - - + + Y Y - - + + Start 開始 - - + + L1 L1 - - + + L2 L2 - - + + L3 L3 - - + + R1 R1 - - + + R2 R2 - - + + R3 R3 - - + + Circle マル - - + + Cross バツ - - + + Square 四角 - - + + Triangle 三角 - - + + Share Share - - + + Options Options - - + + [undefined] [未定義] - + %1%2 %1%2 - - + + [invalid] [無効] - - - %1%2Hat %3 - - - - - + + %1%2Hat %3 + + + + + + %1%2Axis %3 - + - - + + %1%2Axis %3,%4,%5 - + - - + + %1%2Motion %3 %1%2モーション %3 - - + + %1%2Button %3 %1%2ボタン %3 - - + + [unused] [未使用] - + ZR ZR - + ZL ZL - + SR SR - + SL SL - + Stick L L スティック - + Stick R R スティック - + Plus + - + Minus - - - + + Home HOME - + Capture キャプチャ - + Touch タッチの設定 - + Wheel Indicates the mouse wheel ホイール - + Backward 後ろ - + Forward - + Task タスク - + Extra - + - + %1%2%3%4 %1%2%3%4 - - + + %1%2%3Hat %4 - + - - + + %1%2%3Axis %4 - + - - + + %1%2%3Button %4 %1%2%3ボタン %4 - - - - Migration - + + Not playing a game + - - - - - + + %1 is not playing a game + %1はゲームのプレイ中ではありません - - - No - + + %1 is playing %2 + %1は%2をプレイ中です - - You can manually re-trigger this prompt by deleting the new config directory: -%1 - + + Play Time: %1 + - - Migrating - + + Never Played + - - Migrating, this may take a while... - + + Version: %1 + + + + + Version: 1.0.0 + + + + + Installed SD Titles + インストール済みSDタイトル + + + + Installed NAND Titles + インストール済みNANDタイトル + + + + System Titles + システムタイトル + + + + Add New Game Directory + 新しいゲームディレクトリを追加する + + + + Favorites + お気に入り @@ -8798,7 +9172,7 @@ p, li { white-space: pre-wrap; } Mount Amiibo - + @@ -8811,29 +9185,815 @@ p, li { white-space: pre-wrap; } ファイルパス - + No game data present ゲームデータが存在しません - + The following amiibo data will be formatted: - + - + The following game data will removed: 以下のゲームデータを消去します: - + Set nickname and owner: オーナーとニックネームを設定: - + Do you wish to restore this amiibo? - + + + + + QtCommon::Content + + + Game Requires Firmware + + + + + The game you are trying to launch requires firmware to boot or to get past the opening menu. Please <a href='https://yuzu-mirror.github.io/help/quickstart'>dump and install firmware</a>, or press "OK" to launch anyways. + + + + + Installing Firmware... + + + + + + + + + Cancel + + + + + Firmware Install Failed + + + + + Firmware Install Succeeded + + + + + Firmware integrity verification failed! + + + + + + Verification failed for the following files: + +%1 + + + + + + Verifying integrity... + + + + + + Integrity verification succeeded! + + + + + + The operation completed successfully. + + + + + + Integrity verification failed! + + + + + File contents may be corrupt or missing. + + + + + Integrity verification couldn't be performed + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity. + + + + + Select Dumped Keys Location + + + + + Decryption Keys install succeeded + + + + + Decryption Keys install failed + + + + + Orphaned Profiles Detected! + + + + + UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br> + + + + + Really clear data? + + + + + Important data may be lost! + + + + + Are you REALLY sure? + + + + + Once deleted, your data will NOT come back! +Only do this if you're 100% sure you want to delete this data. + + + + + Clearing... + + + + + Select Export Location + + + + + %1.zip + + + + + + Zipped Archives (*.zip) + + + + + Exporting data. This may take a while... + + + + + Exporting + + + + + Exported Successfully + + + + + Data was exported successfully. + + + + + Export Cancelled + + + + + Export was cancelled by the user. + + + + + Export Failed + + + + + Ensure you have write permissions on the targeted directory and try again. + + + + + Select Import Location + + + + + Import Warning + + + + + All previous data in this directory will be deleted. Are you sure you wish to proceed? + + + + + Importing data. This may take a while... + + + + + Importing + + + + + Imported Successfully + + + + + Data was imported successfully. + + + + + Import Cancelled + + + + + Import was cancelled by the user. + + + + + Import Failed + + + + + Ensure you have read permissions on the targeted directory and try again. + + + + + QtCommon::FS + + + Linked Save Data + + + + + Save data has been linked. + + + + + Failed to link save data + + + + + Could not link directory: + %1 +To: + %2 + + + + + Already Linked + + + + + This title is already linked to Ryujinx. Would you like to unlink it? + + + + + Failed to unlink old directory + + + + + + OS returned error: %1 + + + + + Failed to copy save data + + + + + Unlink Successful + + + + + Successfully unlinked Ryujinx save data. Save data has been kept intact. + + + + + Could not find Ryujinx installation + + + + + Could not find a valid Ryujinx installation. This may typically occur if you are using Ryujinx in portable mode. + +Would you like to manually select a portable folder to use? + + + + + Ryujinx Portable Location + + + + + Not a valid Ryujinx directory + + + + + The specified directory does not contain valid Ryujinx data. + + + + + + Could not find Ryujinx save data + + + + + QtCommon::Game + + + Error Removing Contents + + + + + Error Removing Update + + + + + Error Removing DLC + + + + + + + + + + Successfully Removed + + + + + Successfully removed the installed base game. + + + + + The base game is not installed in the NAND and cannot be removed. + + + + + Successfully removed the installed update. + + + + + There is no update installed for this title. + + + + + There are no DLCs installed for this title. + + + + + Successfully removed %1 installed DLC. + + + + + + Error Removing Transferable Shader Cache + + + + + + A shader cache for this title does not exist. + + + + + Successfully removed the transferable shader cache. + + + + + Failed to remove the transferable shader cache. + + + + + Error Removing Vulkan Driver Pipeline Cache + + + + + Failed to remove the driver pipeline cache. + + + + + + Error Removing Transferable Shader Caches + + + + + Successfully removed the transferable shader caches. + + + + + Failed to remove the transferable shader cache directory. + + + + + + Error Removing Custom Configuration + + + + + A custom configuration for this title does not exist. + + + + + Successfully removed the custom game configuration. + + + + + Failed to remove the custom game configuration. + + + + + Reset Metadata Cache + + + + + The metadata cache is already empty. + + + + + The operation completed successfully. + + + + + The metadata cache couldn't be deleted. It might be in use or non-existent. + + + + + Create Shortcut + + + + + Do you want to launch the game in fullscreen? + + + + + Shortcut Created + + + + + Successfully created a shortcut to %1 + + + + + Shortcut may be Volatile! + + + + + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? + + + + + Failed to Create Shortcut + + + + + Failed to create a shortcut to %1 + + + + + Create Icon + + + + + Cannot create icon file. Path "%1" does not exist and cannot be created. + + + + + No firmware available + + + + + Please install firmware to use the home menu. + + + + + Home Menu Applet + + + + + Home Menu is not available. Please reinstall firmware. + + + + + QtCommon::Mod + + + Mod Name + + + + + What should this mod be called? + + + + + RomFS + + + + + ExeFS/Patch + + + + + Cheat + + + + + Mod Type + + + + + Could not detect mod type automatically. Please manually specify the type of mod you downloaded. + +Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods. + + + + + + Mod Extract Failed + + + + + Failed to create temporary directory %1 + + + + + Zip file %1 is empty + + + + + QtCommon::Path + + + Error Opening Shader Cache + + + + + Failed to create or open shader cache for this title, ensure your app data directory has write permissions. + + + + + QtCommon::StringLookup + + + Contains game save data. DO NOT REMOVE UNLESS YOU KNOW WHAT YOU'RE DOING! + + + + + Contains Vulkan and OpenGL pipeline caches. Generally safe to remove. + + + + + Contains updates and DLC for games. + + + + + Contains firmware and applet data. + + + + + Contains game mods, patches, and cheats. + + + + + Decryption Keys were successfully installed + + + + + Unable to read key directory, aborting + + + + + One or more keys failed to copy. + + + + + Verify your keys file has a .keys extension and try again. + + + + + Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. + + + + + Successfully installed firmware version %1 + + + + + Unable to locate potential firmware NCA files + + + + + Failed to delete one or more firmware files. + + + + + One or more firmware files failed to copy into NAND. + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. Restart Eden or re-install firmware. + + + + + Firmware missing. Firmware is required to run certain games and use the Home Menu. + + + + + Firmware reported as present, but was unable to be read. Check for decryption keys and redump firmware if necessary. + + + + + Eden has detected user data for the following emulators: + + + + + Would you like to migrate your data for use in Eden? +Select the corresponding button to migrate data from that emulator. +This may take a while. + + + + + Clearing shader cache is recommended for all users. +Do not uncheck unless you know what you're doing. + + + + + Keeps the old data directory. This is recommended if you aren't +space-constrained and want to keep separate data for the old emulator. + + + + + Deletes the old data directory. +This is recommended on devices with space constraints. + + + + + Creates a filesystem link between the old directory and Eden directory. +This is recommended if you want to share data between emulators. + + + + + Ryujinx title database does not exist. + + + + + Invalid header on Ryujinx title database. + + + + + Invalid magic header on Ryujinx title database. + + + + + Invalid byte alignment on Ryujinx title database. + + + + + No items found in Ryujinx title database. + + + + + Title %1 not found in Ryujinx title database. + @@ -8872,7 +10032,7 @@ p, li { white-space: pre-wrap; } - + Pro Controller Proコントローラー @@ -8885,7 +10045,7 @@ p, li { white-space: pre-wrap; } - + Dual Joycons Joy-Con(L/R) @@ -8898,7 +10058,7 @@ p, li { white-space: pre-wrap; } - + Left Joycon Joy-Con(L) @@ -8911,7 +10071,7 @@ p, li { white-space: pre-wrap; } - + Right Joycon Joy-Con(R) @@ -8940,7 +10100,7 @@ p, li { white-space: pre-wrap; } - + Handheld 携帯モード @@ -9058,35 +10218,35 @@ p, li { white-space: pre-wrap; } Not enough controllers - + - + GameCube Controller ゲームキューブコントローラー - + Poke Ball Plus モンスターボールプラス - + NES Controller ファミコン・コントローラー - + SNES Controller スーパーファミコン・コントローラー - + N64 Controller ニンテンドウ64・コントローラー - + Sega Genesis メガドライブ @@ -9094,28 +10254,28 @@ p, li { white-space: pre-wrap; } QtErrorDisplay - - - + + + Error Code: %1-%2 (0x%3) エラーコード: %1-%2 (0x%3) - + An error has occurred. Please try again or contact the developer of the software. エラーが発生しました。 もう一度試すか、開発者に報告してください。 - + An error occurred on %1 at %2. Please try again or contact the developer of the software. %1の%2でエラーが発生しました。 再試行するか、ソフトウェアの開発者に連絡してください。 - + An error has occurred. %1 @@ -9131,7 +10291,7 @@ Please try again or contact the developer of the software. QtProfileSelectionDialog - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -9139,14 +10299,14 @@ Please try again or contact the developer of the software. %2 - + Users ユーザー Profile Creator - + @@ -9167,7 +10327,7 @@ Please try again or contact the developer of the software. Who will receive the points? - + @@ -9182,7 +10342,7 @@ Please try again or contact the developer of the software. Who is posting? - + @@ -9232,7 +10392,7 @@ Please try again or contact the developer of the software. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -9241,17 +10401,57 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - - + + OK OK - + Cancel キャンセル + + RyujinxDialog + + + Ryujinx Link + + + + + Linking save data to Ryujinx lets both Ryujinx and Eden reference the same save files for your games. + +By selecting "From Eden", previous save data stored in Ryujinx will be deleted, and vice versa for "From Ryujinx". + + + + + From Eden + + + + + From Ryujinx + + + + + Cancel + キャンセル + + + + Failed to link save data + + + + + OS returned error: %1 + + + SequenceDialog @@ -9261,143 +10461,31 @@ p, li { white-space: pre-wrap; } - WaitTreeCallstack + SetPlayTimeDialog - - Call stack - Call stack - - - - WaitTreeSynchronizationObject - - - [%1] %2 - [%1] %2 + + Set Play Time Data + - - waited by no thread - waited by no thread - - - - WaitTreeThread - - - runnable - runnable + + Hours: + - - paused - paused + + Minutes: + - - sleeping - sleeping + + Seconds: + - - waiting for IPC reply - waiting for IPC reply - - - - waiting for objects - waiting for objects - - - - waiting for condition variable - waiting for condition variable - - - - waiting for address arbiter - waiting for address arbiter - - - - waiting for suspend resume - waiting for suspend resume - - - - waiting - waiting - - - - initialized - initialized - - - - terminated - terminated - - - - unknown - unknown - - - - PC = 0x%1 LR = 0x%2 - PC = 0x%1 LR = 0x%2 - - - - ideal - ideal - - - - core %1 - core %1 - - - - processor = %1 - processor = %1 - - - - affinity mask = %1 - affinity mask = %1 - - - - thread id = %1 - thread id = %1 - - - - priority = %1(current) / %2(normal) - priority = %1(current) / %2(normal) - - - - last running ticks = %1 - last running ticks = %1 - - - - WaitTreeThreadList - - - waited by thread - waited by thread - - - - WaitTreeWidget - - - &Wait Tree - &Wait Tree + + Total play time reached maximum. + diff --git a/dist/languages/ko_KR.ts b/dist/languages/ko_KR.ts index 554d4cf9fc..078e3b3a20 100644 --- a/dist/languages/ko_KR.ts +++ b/dist/languages/ko_KR.ts @@ -1,25 +1,15 @@ - - - + AboutDialog - - About yuzu - yuzu 정보 - - - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - - About eden - + About Eden + - <html><head/><body><p><span style=" font-size:28pt;">eden</span></p></body></html> - + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> + @@ -34,70 +24,50 @@ p, li { white-space: pre-wrap; } hr { height: 1px; border-width: 0; } li.unchecked::marker { content: "\2610"; } li.checked::marker { content: "\2612"; } -</style></head><body style=" font-family:'Adwaita Sans'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> - +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> + - <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">This software should not be used to play games you have not legally obtained.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu는 GPLv3.0+에 따라 라이선스가 부여된 Nintendo Switch용 실험적 오픈 소스 에뮬레이터입니다.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">이 소프트웨어는 합법적으로 획득하지 않은 게임을 하는 데 사용해서는 안 됩니다.</span></p></body></html> - - - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">웹사이트</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">소스 코드</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">기여자</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">라이센스</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. eden is not affiliated with Nintendo in any way.</span></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot;는 Nintendo 사의 상표입니다. yuzu는 Nintendo 사와 어떤 형태의 제휴도 맺고 있지 않습니다. + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. Eden is not affiliated with Nintendo in any way.</span></p></body></html> + CalibrationConfigurationDialog - + Communicating with the server... 서버와 통신하는 중... - + Cancel 취소 - + Touch the top left corner <br>of your touchpad. 터치패드의 <br> 상단 좌측 모서리를 눌러주세요. - + Now touch the bottom right corner <br>of your touchpad. 이제 터치패드의 <br> 하단 우측 모서리를 눌러주세요. - + Configuration completed! 설정 완료! - + OK 확인 @@ -120,78 +90,78 @@ p, li { white-space: pre-wrap; } 메시지 보내기 - + Members 멤버 - + %1 has joined %1이(가) 참여하였습니다 - + %1 has left %1이(가) 떠났습니다 - + %1 has been kicked %1이(가) 추방되었습니다 - + %1 has been banned %1이(가) 차단되었습니다 - + %1 has been unbanned %1이(가) 차단 해제되었습니다 - + View Profile 프로필 보기 - - + + Block Player 차단된 플레이어 - + When you block a player, you will no longer receive chat messages from them.<br><br>Are you sure you would like to block %1? 플레이어를 차단하면 더 이상 채팅 메시지를 받을 수 없습니다.<br><br>%1을(를) 차단하겠습니까? - + Kick 추방 - + Ban 차단 - + Kick Player 추방된 플레이어 - + Are you sure you would like to <b>kick</b> %1? 정말로 %1을 <b>추방</b>하겠습니까?? - + Ban Player 차단된 플레이어 - + Are you sure you would like to <b>kick and ban</b> %1? This would ban both their forum username and their IP address. @@ -226,17 +196,17 @@ This would ban both their forum username and their IP address. ClientRoomWindow - + Connected 연결됨 - + Disconnected 연결 끊김 - + %1 - %2 (%3/%4 members) - connected %1 - %2 (%3/%4 멤버) - 연결됨 @@ -259,14 +229,10 @@ This would ban both their forum username and their IP address. Report Game Compatibility 게임 호환성 보고 - - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of yuzu you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected yuzu account</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;"> yuzu 호환성 리스트에</span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">테스트 결과를 제출한 경우</span></a><span style=" font-size:10pt;"> 해당 정보가 수집되어 사이트에 게시됩니다:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">하드웨어 정보 (CPU / GPU / 운영체제)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">사용된 yuzu 버전</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">연결된 yuzu 계정</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">eden Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of eden you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected eden account</li></ul></body></html> - + @@ -374,22 +340,22 @@ This would ban both their forum username and their IP address. 제출 감사합니다! - + Submitting 제출중 - + Communication error 통신 에러 - + An error occurred while sending the Testcase 테스트 결과 전송 중 오류 발생 - + Next 다음 @@ -397,1528 +363,1865 @@ This would ban both their forum username and their IP address. ConfigurationShared - + % % - + Amiibo editor - + - + Controller configuration - + - + Data erase - + - + Error 오류 - + Net connect - + - + Player select - + - + Software keyboard 소프트웨어 키보드 - + Mii Edit - + - + Online web - + - + Shop - + - + Photo viewer - + - + Offline web - + - + Login share - + - + Wifi web auth - + - + My page - + - + + Enable Overlay Applet + + + + + Enables Horizon's built-in overlay applet. Press and hold the home button for 1 second to show it. + + + + Output Engine: 출력 엔진: - + Output Device: 출력 장치: - + Input Device: 입력 장치: - + Mute audio - + - + Volume: 볼륨: - + Mute audio when in background 백그라운드에서 오디오 음소거 - + Multicore CPU Emulation 멀티 코어 CPU 에뮬레이션 - - This option increases CPU emulation thread use from 1 to the Switch’s maximum of 4. -This is mainly a debug option and shouldn’t be disabled. - + + This option increases CPU emulation thread use from 1 to the maximum of 4. +This is mainly a debug option and shouldn't be disabled. + - + Memory Layout - + - - Increases the amount of emulated RAM from the stock 4GB of the retail Switch to the developer kit's 8/6GB. -It’s doesn’t improve stability or performance and is intended to let big texture mods fit in emulated RAM. -Enabling it will increase memory use. It is not recommended to enable unless a specific game with a texture mod needs it. - + + Increases the amount of emulated RAM. +Doesn't affect performance/stability but may allow HD texture mods to load. + - + Limit Speed Percent 속도 퍼센트 제한 - - Controls the game's maximum rendering speed, but it’s up to each game if it runs faster or not. + + Controls the game's maximum rendering speed, but it's up to each game if it runs faster or not. 200% for a 30 FPS game is 60 FPS, and for a 60 FPS game it will be 120 FPS. Disabling it means unlocking the framerate to the maximum your PC can reach. - + - + + Turbo Speed + + + + + When the Turbo Speed hotkey is pressed, the speed will be limited to this percentage. + + + + + Slow Speed + + + + + When the Slow Speed hotkey is pressed, the speed will be limited to this percentage. + + + + Synchronize Core Speed - + - - Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). -Compatibility varies by game; many (especially older ones) may not respond well. + + Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). Can help reduce stuttering at lower framerates. - + - + Accuracy: 정확도: - - This setting controls the accuracy of the emulated CPU. -Don't change this unless you know what you are doing. - + + Change the accuracy of the emulated CPU (for debugging only). + - - + + Backend: - + - - Fast CPU Time - + + CPU Overclock + - + Overclocks the emulated CPU to remove some FPS limiters. Weaker CPUs may see reduced performance, and certain games may behave improperly. Use Boost (1700MHz) to run at the Switch's highest native clock, or Fast (2000MHz) to run at 2x clock. - + - + + Custom CPU Ticks + + + + + Set a custom value of CPU ticks. Higher values can increase performance, but may cause deadlocks. A range of 77-21000 is recommended. + + + + + Enable Host MMU Emulation (fastmem) + + + + + This optimization speeds up memory accesses by the guest program. +Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU. +Disabling this forces all memory accesses to use Software MMU Emulation. + + + + Unfuse FMA (improve performance on CPUs without FMA) FMA 분리 (FMA를 지원하지 않는 CPU에서의 성능을 향상시킵니다) - + This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support. - + - + Faster FRSQRTE and FRECPE 더 빠른 FRSQRTE와 FRECPE - + This option improves the speed of some approximate floating-point functions by using less accurate native approximations. - + - + Faster ASIMD instructions (32 bits only) 더 빠른 ASIMD 명령어(32비트 전용) - + This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes. - + - + Inaccurate NaN handling 부정확한 NaN 처리 - + This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions. - + - + Disable address space checks 주소 공간 검사 비활성화 - - This option improves speed by eliminating a safety check before every memory read/write in guest. -Disabling it may allow a game to read/write the emulator's memory. - + + This option improves speed by eliminating a safety check before every memory operation. +Disabling it may allow arbitrary code execution. + - + Ignore global monitor 글로벌 모니터 무시 - + 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. - + - + API: API: - - Switches between the available graphics APIs. -Vulkan is recommended in most cases. - + + Changes the output graphics API. +Vulkan is recommended. + - + Device: 장치: - - This setting selects the GPU to use with the Vulkan backend. - + + This setting selects the GPU to use (Vulkan only). + - - Shader Backend: - 셰이더 백엔드: - - - - The shader backend to use for the OpenGL renderer. -GLSL is the fastest in performance and the best in rendering accuracy. -GLASM is a deprecated NVIDIA-only backend that offers much better shader building performance at the cost of FPS and rendering accuracy. -SPIR-V compiles the fastest, but yields poor results on most GPU drivers. - - - - + Resolution: 해상도: - - Forces the game to render at a different resolution. -Higher resolutions require much more VRAM and bandwidth. -Options lower than 1X can cause rendering issues. - + + Forces to render at a different resolution. +Higher resolutions require more VRAM and bandwidth. +Options lower than 1X can cause artifacts. + - + Window Adapting Filter: 윈도우 적응형 필터: - + FSR Sharpness: FSR 선명도: - - Determines how sharpened the image will look while using FSR’s dynamic contrast. - + + Determines how sharpened the image will look using FSR's dynamic contrast. + - + Anti-Aliasing Method: 안티에일리어싱 방식: - + The anti-aliasing method to use. SMAA offers the best quality. -FXAA has a lower performance impact and can produce a better and more stable picture under very low resolutions. - +FXAA can produce a more stable picture in lower resolutions. + - + Fullscreen Mode: 전체 화면 모드: - + The method used to render the window in fullscreen. Borderless offers the best compatibility with the on-screen keyboard that some games request for input. Exclusive fullscreen may offer better performance and better Freesync/Gsync support. - + - + Aspect Ratio: 화면비: - - Stretches the game to fit the specified aspect ratio. -Switch games only support 16:9, so custom game mods are required to get other ratios. + + Stretches the renderer to fit the specified aspect ratio. +Most games only support 16:9, so modifications are required to get other ratios. Also controls the aspect ratio of captured screenshots. - + - - Use disk pipeline cache - 디스크 파이프라인 캐시 사용 + + Use persistent pipeline cache + - + Allows saving shaders to storage for faster loading on following game boots. Disabling it is only intended for debugging. - + - - Optimize SPIRV output shader - + + Optimize SPIRV output + - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. This feature is experimental. - + - - Use asynchronous GPU emulation - 비동기 GPU 에뮬레이션 사용 - - - - Uses an extra CPU thread for rendering. -This option should always remain enabled. - - - - + NVDEC emulation: NVDEC 에뮬레이션: - + Specifies how videos should be decoded. It can either use the CPU or the GPU for decoding, or perform no decoding at all (black screen on videos). In most cases, GPU decoding provides the best performance. - + - + ASTC Decoding Method: - + - + This option controls how ASTC textures should be decoded. -CPU: Use the CPU for decoding, slowest but safest method. -GPU: Use the GPU's compute shaders to decode ASTC textures, recommended for most games and users. -CPU Asynchronously: Use the CPU to decode ASTC textures as they arrive. Completely eliminates ASTC decoding -stuttering at the cost of rendering issues while the texture is being decoded. - +CPU: Use the CPU for decoding. +GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). +CPU Asynchronously: Use the CPU to decode ASTC textures on demand. EliminatesASTC decoding +stuttering but may present artifacts. + - + ASTC Recompression Method: - + - - Almost all desktop and laptop dedicated GPUs lack support for ASTC textures, forcing the emulator to decompress to an intermediate format any card supports, RGBA8. -This option recompresses RGBA8 to either the BC1 or BC3 format, saving VRAM but negatively affecting image quality. - + + Most GPUs lack support for ASTC textures and must decompress to anintermediate format: RGBA8. +BC1/BC3: The intermediate format will be recompressed to BC1 or BC3 format, + saving VRAM but degrading image quality. + - + + Frame Pacing Mode (Vulkan only) + + + + + Controls how the emulator manages frame pacing to reduce stuttering and make the frame rate smoother and more consistent. + + + + VRAM Usage Mode: - + - - Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. Has no effect on integrated graphics. Aggressive mode may severely impact the performance of other applications such as recording software. - + + Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. +Aggressive mode may impact performance of other applications such as recording software. + - + + Skip CPU Inner Invalidation + + + + + Skips certain cache invalidations during memory updates, reducing CPU usage and improving latency. This may cause soft-crashes. + + + + VSync Mode: VSync 모드: - + FIFO (VSync) does not drop frames or exhibit tearing but is limited by the screen refresh rate. -FIFO Relaxed is similar to FIFO but allows tearing as it recovers from a slow down. +FIFO Relaxed 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. - FIFO (수직동기화)는 프레임이 떨어지거나 티어링 현상이 나타나지 않지만 화면 재생률에 의해 제한됩니다. -FIFO 릴랙스드는 FIFO와 유사하지만 속도가 느려진 후 복구할 때 끊김 현상이 발생할 수 있습니다. -메일박스는 FIFO보다 지연 시간이 짧고 티어링이 발생하지 않지만 프레임이 떨어질 수 있습니다. -즉시 (동기화 없음)는 사용 가능한 모든 것을 표시하며 티어링이 나타날 수 있습니다. +Immediate (no synchronization) presents whatever is available and can exhibit tearing. + - + + Sync Memory Operations + + + + + Ensures data consistency between compute and memory operations. +This option fixes issues in games, but may degrade performance. +Unreal Engine 4 games often see the most significant changes thereof. + + + + Enable asynchronous presentation (Vulkan only) 비동기 프레젠테이션 활성화(Vulkan만 해당) - + Slightly improves performance by moving presentation to a separate CPU thread. - + - + Force maximum clocks (Vulkan only) 강제 최대 클록 (Vulkan 전용) - + Runs work in the background while waiting for graphics commands to keep the GPU from lowering its clock speed. 실행은 GPU가 클럭 속도를 낮추지 않도록 그래픽 명령을 기다리는 동안 백그라운드에서 작동합니다. - + Anisotropic Filtering: 비등방성 필터링: - + Controls the quality of texture rendering at oblique angles. -It’s a light setting and safe to set at 16x on most GPUs. - +Safe to set at 16x on most GPUs. + - - Accuracy Level: - 정확도 수준: + + GPU Mode: + - - GPU emulation accuracy. -Most games render fine with Normal, but High is still required for some. -Particles tend to only render correctly with High accuracy. -Extreme should only be used for debugging. -This option can be changed while playing. -Some games may require booting on high to render properly. - + + Controls the GPU emulation mode. +Most games render fine with Fast or Balanced modes, but Accurate is still required for some. +Particles tend to only render correctly with Accurate mode. + - - Use asynchronous shader building (Hack) - 비동기식 셰이더 빌드 사용(Hack) + + DMA Accuracy: + - - Enables asynchronous shader compilation, which may reduce shader stutter. -This feature is experimental. - + + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. + - Use Fast GPU Time (Hack) - 빠른 GPU 시간 사용(Hack) + + Enable asynchronous shader compilation + - Enables Fast GPU Time. This option will force most games to run at their highest native resolution. - 빠른 GPU 시간을 활성화합니다. 이 옵션을 사용하면 대부분의 게임이 가장 높은 기본 해상도에서 실행됩니다. + + May reduce shader stutter. + - + + Fast GPU Time + + + + + Overclocks the emulated GPU to increase dynamic resolution and render distance. +Use 256 for maximal performance and 512 for maximal graphics fidelity. + + + + + GPU Unswizzle + + + + + Accelerates BCn 3D texture decoding using GPU compute. +Disable if experiencing crashes or graphical glitches. + + + + + GPU Unswizzle Max Texture Size + + + + + Sets the maximum size (MiB) for GPU-based texture unswizzling. +While the GPU is faster for medium and large textures, the CPU may be more efficient for very small ones. +Adjust this to find the balance between GPU acceleration and CPU overhead. + + + + + GPU Unswizzle Stream Size + + + + + Sets the maximum amount of texture data (in MiB) processed per frame. +Higher values can reduce stutter during texture loading but may impact frame consistency. + + + + + GPU Unswizzle Chunk Size + + + + + Determines the number of depth slices processed in a single dispatch. +Increasing this can improve throughput on high-end GPUs but may cause TDR or driver timeouts on weaker hardware. + + + + Use Vulkan pipeline cache Vulkan 파이프라인 캐시 사용 - + Enables GPU vendor-specific pipeline cache. This option can improve shader loading time significantly in cases where the Vulkan driver does not store pipeline cache files internally. - + - + Enable Compute Pipelines (Intel Vulkan Only) - + - - Enable compute pipelines, required by some games. -This setting only exists for Intel proprietary drivers, and may crash if enabled. + + 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. - + - + Enable Reactive Flushing 반응형 플러싱 활성화 - + Uses reactive flushing instead of predictive flushing, allowing more accurate memory syncing. - + - + Sync to framerate of video playback 동영상 재생 프레임 속도에 동기화 - + Run the game at normal speed during video playback, even when the framerate is unlocked. 프레임 속도가 잠금 해제된 상태에서도 동영상 재생 중에 일반 속도로 게임을 실행합니다. - + Barrier feedback loops 차단 피드백 루프 - + Improves rendering of transparency effects in specific games. 특정 게임에서 투명도 효과의 렌더링을 개선합니다. - + + Enable buffer history + + + + + Enables access to previous buffer states. +This option may improve rendering quality and performance consistency in some games. + + + + + Fix bloom effects + + + + + Removes bloom in Burnout. + + + + + Enable Legacy Rescale Pass + + + + + May fix rescale issues in some games by relying on behavior from the previous implementation. +Legacy behavior workaround that fixes line artifacts on AMD and Intel GPUs, and grey texture flicker on Nvidia GPUs in Luigis Mansion 3. + + + + + Extended Dynamic State + + + + + Controls the number of features that can be used in Extended Dynamic State. +Higher states allow for more features and can increase performance, but may cause additional graphical issues. + + + + + Vertex Input Dynamic State + + + + + Enables vertex input dynamic state feature for better quality and performance. + + + + + Sample Shading + + + + + Allows the fragment shader to execute per sample in a multi-sampled fragment instead of once per fragment. Improves graphics quality at the cost of performance. +Higher values improve quality but degrade performance. + + + + RNG Seed RNG 시드 - + Controls the seed of the random number generator. -Mainly used for speedrunning purposes. - +Mainly used for speedrunning. + - + Device Name 장치 이름 - - The name of the emulated Switch. - + + The name of the console. + - + Custom RTC Date: - + - - This option allows to change the emulated clock of the Switch. + + This option allows to change the clock of the console. Can be used to manipulate time in games. - + - + + The number of seconds from the current unix time + + + + Language: - + - - Note: this can be overridden when region setting is auto-select - 참고 : 이 설정은 지역 설정이 '자동 선택'일 때 무시될 수 있습니다. + + This option can be overridden when region setting is auto-select + - + Region: 국가: - - The region of the emulated Switch. - + + The region of the console. + - + Time Zone: 시계: - - The time zone of the emulated Switch. - + + The time zone of the console. + - + Sound Output Mode: 소리 출력 모드: - + Console Mode: - + - - Selects if the console is emulated in Docked or Handheld mode. + + Selects if the console is in Docked or Handheld mode. Games will change their resolution, details and supported controllers and depending on this setting. Setting to Handheld can help improve performance for low end systems. - + - - Prompt for user on game boot - 게임 부팅시 유저 선택 화면 표시 + + Unit Serial + - - Pause emulation when in background - 백그라운드에 있을 시 에뮬레이션 일시중지 + + Battery Serial + - - Fast GPU Time (Hack) - + + Debug knobs + - - Overclocks the emulated GPU to increase dynamic resolution and render distance. -Use 128 for maximal performance and 512 for maximal graphics fidelity. - + + Prompt for user profile on boot + - - Extended Dynamic State - + + Useful if multiple people use the same PC. + - - Enables the VkExtendedDynamicState* extensions. -Higher dynamic states will generally improve performance, but may cause issues on certain games or devices. - + + Pause when not in focus + - - Provoking Vertex - + + Pauses emulation when focusing on other windows. + - - Improves lighting and vertex handling in certain games. -Only Vulkan 1.0+ devices support this extension. - - - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - - Ask to select a user profile on each boot, useful if multiple people use eden on the same PC. - - - - - This setting pauses eden when focusing other windows. - - - - + Confirm before stopping emulation - + - - This setting overrides game prompts asking to confirm stopping the game. + + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - + - + Hide mouse on inactivity 비활성 상태일 때 마우스 숨기기 - - This setting hides the mouse after 2.5s of inactivity. - + + Hides the mouse after 2.5s of inactivity. + - + Disable controller applet 컨트롤러 애플릿 비활성화 - - Forcibly disables the use of the controller applet by guests. -When a guest attempts to open the controller applet, it is immediately closed. - + + Forcibly disables the use of the controller applet in emulated programs. +When a program attempts to open the controller applet, it is immediately closed. + - + Check for updates - + - + Whether or not to check for updates upon startup. - + - + Enable Gamemode - + - + + Force X11 as Graphics Backend + + + + Custom frontend - + - + Real applet - + - + Never - + - + On Load - + - + Always - + - + CPU CPU - + GPU GPU - + CPU Asynchronous - + - + Uncompressed (Best quality) 비압축(최고 품질) - + BC1 (Low quality) BC1(저품질) - + BC3 (Medium quality) BC3(중간 품질) - - Conservative - - - - - Aggressive - - - - - OpenGL - OpenGL - - - - Vulkan - Vulcan - - - - Null - Null - - - - GLSL - GLSL - - - - GLASM (Assembly Shaders, NVIDIA Only) - GLASM(어셈블리 셰이더, NVIDIA 전용) - - - - SPIR-V (Experimental, AMD/Mesa Only) - - - - - Normal - 보통 - - - - High - 높음 - - - - Extreme - 익스트림 - - - + + Auto 자동 - + + 30 FPS + + + + + 60 FPS + + + + + 90 FPS + + + + + 120 FPS + + + + + Conservative + + + + + Aggressive + + + + + Vulkan + Vulcan + + + + OpenGL GLSL + + + + + OpenGL GLASM (Assembly Shaders, NVIDIA Only) + + + + + OpenGL SPIR-V (Experimental, AMD/Mesa Only) + + + + + Null + Null + + + + Fast + + + + + Balanced + + + + + Accurate 정확함 - - Unsafe - 최적화 (안전하지 않음) - - - - Paranoid (disables most optimizations) - 편집증(대부분의 최적화 비활성화) - - - - Dynarmic - - - - - NCE - - - - - Borderless Windowed - 경계 없는 창 모드 - - - - Exclusive Fullscreen - 독점 전체화면 모드 - - - - No Video Output - 비디오 출력 없음 - - - - CPU Video Decoding - CPU 비디오 디코딩 - - - - GPU Video Decoding (Default) - GPU 비디오 디코딩(기본값) - - - - 0.25X (180p/270p) [EXPERIMENTAL] - - - - - 0.5X (360p/540p) [EXPERIMENTAL] - - - - - 0.75X (540p/810p) [EXPERIMENTAL] - 0.75X (540p/810p) [실험적] - - - - 1X (720p/1080p) - 1X (720p/1080p) - - - - 1.5X (1080p/1620p) [EXPERIMENTAL] - 1.5X (1080p/1620p) [실험적] - - - - 2X (1440p/2160p) - 2X (1440p/2160p) - - - - 3X (2160p/3240p) - 3X (2160p/3240p) - - - - 4X (2880p/4320p) - 4X (2880p/4320p) - - - - 5X (3600p/5400p) - 5X (3600p/5400p) - - - - 6X (4320p/6480p) - 6X (4320p/6480p) - - - - 7X (5040p/7560p) - 7X (5040p/7560p) - - - - 8X (5760p/8640p) - 8X (5760p/8640p) - - - - Nearest Neighbor - 최근접 보간 - - - - Bilinear - Bilinear - - - - Bicubic - Bicubic - - - - Gaussian - 가우시안 - - - - ScaleForce - ScaleForce - - - - AMD FidelityFX™️ Super Resolution - AMD FidelityFX™️ Super Resolution - - - - Area - - - - - None - 없음 - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Default (16:9) - 기본 (16:9) - - - - Force 4:3 - 강제 4:3 - - - - Force 21:9 - 강제 21:9 - - - - Force 16:10 - 강제 16:10 - - - - Stretch to Window - 창에 맞게 늘림 - - - - Automatic - 자동 - - - + + Default 기본값 - + + Unsafe (fast) + + + + + Safe (stable) + + + + + Unsafe + 최적화 (안전하지 않음) + + + + Paranoid (disables most optimizations) + 편집증(대부분의 최적화 비활성화) + + + + Debugging + + + + + Dynarmic + + + + + NCE + + + + + Borderless Windowed + 경계 없는 창 모드 + + + + Exclusive Fullscreen + 독점 전체화면 모드 + + + + No Video Output + 비디오 출력 없음 + + + + CPU Video Decoding + CPU 비디오 디코딩 + + + + GPU Video Decoding (Default) + GPU 비디오 디코딩(기본값) + + + + 0.25X (180p/270p) [EXPERIMENTAL] + + + + + 0.5X (360p/540p) [EXPERIMENTAL] + + + + + 0.75X (540p/810p) [EXPERIMENTAL] + 0.75X (540p/810p) [실험적] + + + + 1X (720p/1080p) + 1X (720p/1080p) + + + + 1.25X (900p/1350p) [EXPERIMENTAL] + + + + + 1.5X (1080p/1620p) [EXPERIMENTAL] + 1.5X (1080p/1620p) [실험적] + + + + 2X (1440p/2160p) + 2X (1440p/2160p) + + + + 3X (2160p/3240p) + 3X (2160p/3240p) + + + + 4X (2880p/4320p) + 4X (2880p/4320p) + + + + 5X (3600p/5400p) + 5X (3600p/5400p) + + + + 6X (4320p/6480p) + 6X (4320p/6480p) + + + + 7X (5040p/7560p) + 7X (5040p/7560p) + + + + 8X (5760p/8640p) + 8X (5760p/8640p) + + + + Nearest Neighbor + 최근접 보간 + + + + Bilinear + Bilinear + + + + Bicubic + Bicubic + + + + Gaussian + 가우시안 + + + + Lanczos + + + + + ScaleForce + ScaleForce + + + + AMD FidelityFX Super Resolution + + + + + Area + + + + + MMPX + + + + + Zero-Tangent + + + + + B-Spline + + + + + Mitchell + + + + + Spline-1 + + + + + + None + 없음 + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Default (16:9) + 기본 (16:9) + + + + Force 4:3 + 강제 4:3 + + + + Force 21:9 + 강제 21:9 + + + + Force 16:10 + 강제 16:10 + + + + Stretch to Window + 창에 맞게 늘림 + + + + Automatic + 자동 + + + 2x 2x - + 4x 4x - + 8x 8x - + 16x 16x - + + 32x + + + + + 64x + + + + Japanese (日本語) 일본어 (日本語) - + American English 미국 영어 - + French (français) 프랑스어(français) - + German (Deutsch) 독일어(Deutsch) - + Italian (italiano) 이탈리아어(italiano) - + Spanish (español) 스페인어(español) - + Chinese 중국어 - + Korean (한국어) 한국어 (Korean) - + Dutch (Nederlands) 네덜란드어 (Nederlands) - + Portuguese (português) 포르투갈어(português) - + Russian (Русский) 러시아어 (Русский) - + Taiwanese 대만어 - + British English 영어 (British English) - + Canadian French 캐나다 프랑스어 - + Latin American Spanish 라틴 아메리카 스페인어 - + Simplified Chinese 간체 - + Traditional Chinese (正體中文) 중국어 번체 (正體中文) - + Brazilian Portuguese (português do Brasil) 브라질 포르투갈어(português do Brasil) - - + + Polish (polska) + + + + + Thai (แบบไทย) + + + + + Japan 일본 - + USA 미국 - + Europe 유럽 - + Australia 호주 - + China 중국 - + Korea 대한민국 - + Taiwan 대만 - + Auto (%1) Auto select time zone 자동 (%1) - + Default (%1) Default time zone 기본 (%1) - + CET 중앙유럽 표준시(CET) - + CST6CDT CST6CDT - + Cuba 쿠바 - + EET 동유럽 표준시(EET) - + Egypt 이집트 - + Eire Eire - + EST EST - + EST5EDT EST5EDT - + GB 영국 하계 표준시(GB) - + GB-Eire GB-Eire - + GMT 그리니치 표준시(GMT) - + GMT+0 GMT+0 - + GMT-0 GMT-0 - + GMT0 GMT0 - + Greenwich 그리니치 - + Hongkong 홍콩 - + HST 하와이-알류샨 표준시(HST) - + Iceland 아이슬란드 - + Iran 이란 - + Israel 이스라엘 - + Jamaica 자메이카 - + Kwajalein 크와잘린 - + Libya 리비아 - + MET 중앙유럽 표준시(MET) - + MST 산악 표준시(MST) - + MST7MDT MST7MDT - + Navajo 나바호 - + NZ 뉴질랜드 표준시(NZ) - + NZ-CHAT 채텀 표준시(NZ-CHAT) - + Poland 폴란드 - + Portugal 포르투갈 - + PRC PRC - + PST8PDT PST8PDT - + ROC ROC - + ROK 북한 표준시(ROK) - + Singapore 싱가포르 - + Turkey 터키 - + UCT UCT - + Universal Universal - + UTC 협정 세계시(UTC) - + W-SU 유럽/모스크바(W-SU) - + WET 서유럽 - + Zulu 줄루 - + Mono 모노 - + Stereo 스테레오 - + Surround 서라운드 - + 4GB DRAM (Default) - + - + 6GB DRAM (Unsafe) - + - + 8GB DRAM - + - + 10GB DRAM (Unsafe) - + - + 12GB DRAM (Unsafe) - + - - Low (128) - - - - - Medium (256) - - - - - High (512) - - - - + Docked 거치 모드 - + Handheld 휴대 모드 - + + + Off + + + + Boost (1700MHz) - + - + Fast (2000MHz) - + - + Always ask (Default) - + - + Only if game specifies not to stop - + - + Never ask - + + + + + + Medium (256) + + + + + + High (512) + + + + + Very Small (16 MB) + + + + + Small (32 MB) + + + + + Normal (128 MB) + + + + + Large (256 MB) + + + + + Very Large (512 MB) + + + + + Very Low (4 MB) + + + + + Low (8 MB) + + + + + Normal (16 MB) + + + + + Medium (32 MB) + + + + + High (64 MB) + + + + + Very Low (32) + + + + + Low (64) + + + + + Normal (128) + + + + + Disabled + + + + + ExtendedDynamicState 1 + + + + + ExtendedDynamicState 2 + + + + + ExtendedDynamicState 3 + + + + + Tree View + + + + + Grid View + @@ -1931,12 +2234,12 @@ When a guest attempts to open the controller applet, it is immediately closed. Applets - + Applet mode preference - + @@ -1991,7 +2294,7 @@ When a guest attempts to open the controller applet, it is immediately closed.기본값으로 초기화 - + Auto 자동 @@ -2021,7 +2324,7 @@ When a guest attempts to open the controller applet, it is immediately closed. CPU Backend - + @@ -2178,7 +2481,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all memory accesses to use Software MMU Emulation.</div> @@ -2196,7 +2499,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up exclusive memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all exclusive memory accesses to use Software MMU Emulation.</div> @@ -2231,7 +2534,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up memory accesses by allowing invalid memory accesses to succeed.</div> - <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> + <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> <div style="white-space: nowrap">이 최적화는 유효하지 않은 메모리 접속에 성공하도록 허용하여 메모리 접속 속도를 높입니다.</div> @@ -2272,30 +2575,30 @@ When a guest attempts to open the controller applet, it is immediately closed.로깅 - - Open Log Location - 로그 경로 열기 - - - + Global Log Filter 전역 로그 필터 - + When checked, the max size of the log increases from 100 MB to 1 GB 이 옵션을 활성화 시, 로그 파일의 최대 용량이 100MB에서 1GB로 증가합니다. - + Enable Extended Logging** 확장된 로깅 활성화** - + Show Log in Console 콘솔에 로그 표시 + + + Open Log Location + 로그 경로 열기 + Homebrew @@ -2354,7 +2657,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Enable Renderdoc Hotkey - + @@ -2399,12 +2702,12 @@ When a guest attempts to open the controller applet, it is immediately closed. <html><head/><body><p>When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.</p></body></html> - + Disable Buffer Reorder - + @@ -2432,18 +2735,9 @@ When a guest attempts to open the controller applet, it is immediately closed.모든 컨트롤러 유형 활성화 - - Censor username in logs - - - - - **This will be reset automatically when eden closes. - - - - Enable Auto-Stub** - 자동 스텁 활성화** + + Enable Auto-Stub + @@ -2452,8 +2746,8 @@ When a guest attempts to open the controller applet, it is immediately closed. - Enable CPU Debugging - CPU 디버깅 활성화 + Use dev.keys + @@ -2466,43 +2760,74 @@ When a guest attempts to open the controller applet, it is immediately closed.디버깅 - - Flush log output on each line - + + Battery Serial: + - - Enable FS Access Log - FS 액세스 로그 활성화 + + Bitmask for quick development toggles + - + + Set debug knobs (bitmask) + + + + + 16-bit debug knob set for quick development toggles + + + + + (bitmask) + + + + + Debug Knobs: + + + + + Unit Serial: + + + + Enable this to output the latest generated audio command list to the console. Only affects games using the audio renderer. 이 옵션을 활성화하면 가장 최근에 생성된 오디오 명령어 목록을 콘솔에 출력할 수 있습니다. 오디오 렌더러를 사용하는 게임에만 영향을 줍니다. - - Enable Auto-Stub - - - - + Dump Audio Commands To Console** 콘솔에 오디오 명령어 덤프 - + + Flush log output on each line + + + + + Enable FS Access Log + FS 액세스 로그 활성화 + + + Enable Verbose Reporting Services** 자세한 리포팅 서비스 활성화** - **This will be reset automatically when yuzu closes. - **Yuzu가 종료되면 자동으로 재설정됩니다. + + Censor username in logs + - - Web applet not compiled - 웹 애플릿이 컴파일되지 않음 + + **This will be reset automatically when Eden closes. + @@ -2544,14 +2869,10 @@ When a guest attempts to open the controller applet, it is immediately closed. ConfigureDialog - - yuzu Configuration - yuzu 설정 - - eden Configuration - + Eden Configuration + @@ -2559,88 +2880,88 @@ When a guest attempts to open the controller applet, it is immediately closed.일부 설정은 게임이 실행 중이 아닐 때만 사용할 수 있습니다. - + Applets - + - - + + Audio 오디오 - - + + CPU CPU - + Debug 디버그 - + Filesystem 파일 시스템 - - + + General 일반 - - + + Graphics 그래픽 - + GraphicsAdvanced 그래픽 고급 - - GraphicsExtensions - + + GraphicsExtra + - + Hotkeys 단축키 - - + + Controls 조작 - + Profiles 프로필 - + Network 네트워크 - - + + System 시스템 - + Game List 게임 목록 - + Web @@ -2670,9 +2991,10 @@ When a guest attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2682,107 +3004,183 @@ When a guest attempts to open the controller applet, it is immediately closed.SD 카드 - + + Save Data + + + + Gamecard 게임카드 - + Path 주소 - + Inserted 삽입 - + Current Game 현재 게임 - + Patch Manager 패치 관리자 - + Dump Decompressed NSOs 압축 해제된 NSO를 덤프 - + Dump ExeFS ExeFS를 덤프 - + Mod Load Root 모드 경로 - + Dump Root 덤프 경로 - + Caching 캐싱 - + Cache Game List Metadata 게임 목록 메타 데이터를 캐시 - - - - + Reset Metadata Cache 메타 데이터 캐시 초기화 - + Select Emulated NAND Directory... 가상 NAND 경로 선택 - + Select Emulated SD Directory... 가상 SD 경로 선택 - + + + Select Save Data Directory... + + + + Select Gamecard Path... 게임카드 경로 설정 - + Select Dump Directory... 덤프 경로 설정 - + Select Mod Load Directory... 모드 불러오기 경로 설정 - - The metadata cache is already empty. - 메타 데이터 캐시가 이미 비어있습니다. + + Save Data Directory + - - The operation completed successfully. - 작업이 성공적으로 끝났습니다. + + Choose an action for the save data directory: + - - The metadata cache couldn't be deleted. It might be in use or non-existent. - 메타 데이터 캐시 삭제를 삭제할 수 없습니다. 해당 파일이 이미 사용 중이거나 존재하지 않을 수 있습니다. + + Set Custom Path + + + + + Reset to NAND + + + + + Save data exists in both the old and new locations. + +Old: %1 +New: %2 + +Would you like to migrate saves from the old location? +WARNING: This will overwrite any conflicting saves in the new location! + + + + + Would you like to migrate your save data to the new location? + +From: %1 +To: %2 + + + + + Migrate Save Data + + + + + Migrating save data... + + + + + Cancel + + + + + + Migration Failed + + + + + Failed to create destination directory. + + + + + Failed to migrate save data: +%1 + + + + + Migration Complete + + + + + Save data has been migrated successfully. + +Would you like to delete the old save data? + @@ -2800,28 +3198,54 @@ When a guest attempts to open the controller applet, it is immediately closed. - Linux - + External Content + - + + Add directories to scan for DLCs and Updates without installing to NAND + + + + + Add Directory + + + + + Remove Selected + + + + Reset All Settings 모든 설정 초기화 - yuzu - yuzu + + Eden + - - eden - - - - + This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed? 모든 환경 설정과 게임별 맞춤 설정이 초기화됩니다. 게임 디렉토리나 프로필, 또는 입력 프로필은 삭제되지 않습니다. 진행하시겠습니까? + + + Select External Content Directory... + + + + + Directory Already Added + + + + + This directory is already in the list. + + ConfigureGraphics @@ -2851,33 +3275,33 @@ When a guest attempts to open the controller applet, it is immediately closed.배경색: - + % FSR sharpening percentage (e.g. 50%) % - + Off - + VSync Off 수직동기화 끔 - + Recommended 추천 - + On - + VSync On 수직동기화 켬 @@ -2895,7 +3319,7 @@ When a guest attempts to open the controller applet, it is immediately closed.고급 - + Advanced Graphics Settings 고급 그래픽 설정 @@ -2905,24 +3329,38 @@ When a guest attempts to open the controller applet, it is immediately closed. Form - + - Extensions - + Extras + - - Vulkan Extension Settings - + + Hacks + - - While it's recommended to use state 3, some games may perform better on lower states. Setting to 0 (disabled) may also break games. -If your GPU is older (i.e. RX570/580 or older), it may not support these features. If this is the case, set the slider to 0 and uncheck all boxes. -These settings are experimental, and may cause black screens. If your games fail to boot or are stuck on a black screen, change these settings around. - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + + + + + % + Sample Shading percentage (e.g. 50%) + + + + + Extended Dynamic State is disabled on macOS due to MoltenVK compatibility issues that cause black screens. + @@ -2953,75 +3391,75 @@ These settings are experimental, and may cause black screens. If your games fail 초기화 - + Action 액션 - + Hotkey 단축키 - + Controller Hotkey 컨트롤러 단축키 - - - + + + Conflicting Key Sequence 키 시퀀스 충돌 - - + + The entered key sequence is already assigned to: %1 입력한 키 시퀀스가 %1에 이미 할당되었습니다. - + [waiting] [대기중] - + Invalid 유효하지않음 - + Invalid hotkey settings - + - + An error occurred. Please report this issue on github. - + - + Restore Default 초기화 - + Clear 비우기 - + Conflicting Button Sequence 키 시퀀스 충돌 - + The default button sequence is already assigned to: %1 기본 키 시퀀스가 %1에 이미 할당되었습니다. - + The default key sequence is already assigned to: %1 기본 키 시퀀스가 %1에 이미 할당되었습니다. @@ -3341,12 +3779,8 @@ These settings are experimental, and may cause black screens. If your games fail - Requires restarting eden - - - - Requires restarting yuzu - yuzu를 다시 시작해야 합니다. + Requires restarting Eden + @@ -3371,7 +3805,7 @@ These settings are experimental, and may cause black screens. If your games fail Enable direct Pro Controller driver [EXPERIMENTAL] - 다이렉트 Pro 컨트롤러 드라이버 활성화[실험적]  + 다이렉트 Pro 컨트롤러 드라이버 활성화[실험적]  @@ -3496,30 +3930,19 @@ These settings are experimental, and may cause black screens. If your games fail - + Left Stick L 스틱 - - - - - - - Up - 위쪽 - - - - - - - - - - Left - 왼쪽 + + + + + + + Down + 아래쪽 @@ -3533,14 +3956,25 @@ These settings are experimental, and may cause black screens. If your games fail 오른쪽 - - - - - - - Down - 아래쪽 + + + + + + + + Left + 왼쪽 + + + + + + + + + Up + 위쪽 @@ -3587,14 +4021,6 @@ These settings are experimental, and may cause black screens. If your games fail D-Pad D-패드 - - - - - - SL - SL - @@ -3604,59 +4030,55 @@ These settings are experimental, and may cause black screens. If your games fail SR - - - - L - L + + + + + SL + SL - + ZL ZL + + + + + L + L + Minus - - - - - Capture - 캡쳐 - - + Plus + - - - Home - + + + + ZR + ZR - - + + R R - - - - - ZR - ZR - Motion 1 @@ -3667,6 +4089,18 @@ These settings are experimental, and may cause black screens. If your games fail Motion 2 모션 2 + + + + Capture + 캡쳐 + + + + + Home + + Face Buttons @@ -3679,10 +4113,10 @@ These settings are experimental, and may cause black screens. If your games fail X - - - Y - Y + + + B + B @@ -3691,14 +4125,14 @@ These settings are experimental, and may cause black screens. If your games fail A - - - B - B + + + Y + Y - + Right Stick R 스틱 @@ -3713,242 +4147,242 @@ These settings are experimental, and may cause black screens. If your games fail 설정 - - - - + + + + Clear 초기화 - - - - - + + + + + [not set] [설정 안 됨] - - - + + + Invert button 버튼 반전 - - + + Toggle button 토글 버튼 - + Turbo button 터보 버튼 - - + + Invert axis 축 뒤집기 - - - + + + Set threshold 임계값 설정 - - + + Choose a value between 0% and 100% 0%에서 100% 안의 값을 고르세요 - + Toggle axis axis 토글 - + Set gyro threshold 자이로 임계값 설정 - + Calibrate sensor 센서 보정 - + Map Analog Stick 아날로그 스틱 맵핑 - + After pressing OK, first move your joystick horizontally, and then vertically. To invert the axes, first move your joystick vertically, and then horizontally. OK 버튼을 누른 후에 먼저 조이스틱을 수평으로 움직이고, 그 다음 수직으로 움직이세요. 축을 뒤집으려면 수직으로 먼저 움직인 뒤에 수평으로 움직이세요. - + Center axis 중심축 - - + + Deadzone: %1% 데드존: %1% - - + + Modifier Range: %1% 수정자 범위: %1% - - + + Pro Controller 프로 컨트롤러 - + Dual Joycons 듀얼 조이콘 - + Left Joycon 왼쪽 조이콘 - + Right Joycon 오른쪽 조이콘 - + Handheld 휴대 모드 - + GameCube Controller GameCube 컨트롤러 - + Poke Ball Plus 몬스터볼 Plus - + NES Controller NES 컨트롤러 - + SNES Controller SNES 컨트롤러 - + N64 Controller N64 컨트롤러 - + Sega Genesis 세가 제네시스 - + Start / Pause 시작 / 일시중지 - + Z Z - + Control Stick 컨트롤 스틱 - + C-Stick C-Stick - + Shake! 흔드세요! - + [waiting] [대기중] - + New Profile 새 프로필 - + Enter a profile name: 프로필 이름을 입력하세요: - - + + Create Input Profile 입력 프로필 생성 - + The given profile name is not valid! 해당 프로필 이름은 사용할 수 없습니다! - + Failed to create the input profile "%1" "%1" 입력 프로필 생성 실패 - + Delete Input Profile 입력 프로필 삭제 - + Failed to delete the input profile "%1" "%1" 입력 프로필 삭제 실패 - + Load Input Profile 입력 프로필 불러오기 - + Failed to load the input profile "%1" "%1" 입력 프로필 불러오기 실패 - + Save Input Profile 입력 프로필 저장 - + Failed to save the input profile "%1" "%1" 입력 프로필 저장 실패 @@ -3971,15 +4405,6 @@ To invert the axes, first move your joystick vertically, and then horizontally.< 기본값 - - ConfigureLinuxTab - - - - Linux - - - ConfigureMotionTouch @@ -4005,7 +4430,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< - + Configure 설정 @@ -4035,111 +4460,93 @@ To invert the axes, first move your joystick vertically, and then horizontally.< 포트: - - Learn More - 자세히 알아보기 - - - - + + Test 테스트 - + Add Server 서버 추가 - + Remove Server 원격 서버 - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">자세히 알아보기</span></a> - - - + %1:%2 %1:%2 - yuzu - yuzu + + + + + + + Eden + - - <a href='https://eden-emulator.github.io/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - - - - + Port number has invalid characters 포트 번호에 유효하지 않은 글자가 있습니다. - - - - - - - eden - - - - + Port has to be in range 0 and 65353 포트 번호는 0부터 65353까지이어야 합니다. - + IP address is not valid IP 주소가 유효하지 않습니다. - + This UDP server already exists 해당 UDP 서버는 이미 존재합니다. - + Unable to add more than 8 servers 8개보다 많은 서버를 추가하실 수는 없습니다. - + Testing 테스트 중 - + Configuring 설정 중 - + Test Successful 테스트 성공 - + Successfully received data from the server. 서버에서 성공적으로 데이터를 받았습니다. - + Test Failed 테스트 실패 - + Could not receive valid data from the server.<br>Please verify that the server is set up correctly and the address and port are correct. 서버에서 유효한 데이터를 수신할 수 없습니다.<br>서버가 올바르게 설정되어 있고 주소와 포트가 올바른지 확인하십시오. - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. UDP 테스트와 교정 설정이 진행 중입니다.<br>끝날 때까지 기다려주세요. @@ -4265,9 +4672,9 @@ Current values are %1% and %2% respectively. 네트워크 인터페이스 - - None - 없음 + + Enable Airplane Mode + @@ -4323,49 +4730,54 @@ Current values are %1% and %2% respectively. 일부 설정은 게임이 실행 중이 아닐 때만 사용할 수 있습니다. - + Add-Ons 부가 기능 - + System 시스템 - + CPU CPU - + Graphics 그래픽 - + Adv. Graphics 고급 그래픽 - - GPU Extensions - + + Ext. Graphics + - + Audio 오디오 - + Input Profiles 입력 프로파일 - Linux - + Network + + + + + Applets + @@ -4386,15 +4798,110 @@ Current values are %1% and %2% respectively. 애드온 - + + Import Mod from ZIP + + + + + Import Mod from Folder + + + + Patch Name 패치 이름 - + Version 버전 + + + Mod Install Succeeded + + + + + Successfully installed all mods. + + + + + Mod Install Failed + + + + + Failed to install the following mods: + %1 +Check the log for details. + + + + + Mod Folder + + + + + Zipped Mod Location + + + + + Zipped Archives (*.zip) + + + + + Invalid Selection + + + + + Only mods, cheats, and patches can be deleted. +To delete NAND-installed updates, right-click the game in the game list and click Remove -> Remove Installed Update. + + + + + You are about to delete the following installed mods: + + + + + + +Once deleted, these can NOT be recovered. Are you 100% sure you want to delete them? + + + + + Delete add-on(s)? + + + + + Successfully deleted + + + + + Successfully deleted all selected mods. + + + + + &Delete + + + + + &Open in File Manager + + ConfigureProfileManager @@ -4424,32 +4931,17 @@ Current values are %1% and %2% respectively. 유저 이름 - - Set Image - 이미지 설정 - - - + Add 추가 - - Rename - 이름 변경 - - - - Remove - 제거 - - - + Profile management is available only when game is not running. 프로필 관리자는 게임이 작동 중이지 않을 때만 사용 가능합니다. - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -4457,100 +4949,80 @@ Current values are %1% and %2% respectively. %2 - - Enter Username - 유저 이름을 입력하세요 - - - + Users 유저 - - Enter a username for the new user: - 새로운 유저를 위한 유저 이름을 입력하세요: - - - - Enter a new username: - 새로운 유저 이름을 입력하세요: - - - - Select User Image - 유저 이미지 선택 - - - - JPEG Images (*.jpg *.jpeg) - JPEG 이미지 (*.jpg *.jpeg) - - - + Error deleting image 이미지 삭제 오류 - + Error occurred attempting to overwrite previous image at: %1. %1에서 이전 이미지를 덮어쓰는 중 오류가 발생했습니다. - + Error deleting file 파일 삭제 오류 - + Unable to delete existing file: %1. 기존 파일을 삭제할 수 없음: %1. - + Error creating user image directory 사용자 이미지 디렉토리 생성 오류 - + Unable to create directory %1 for storing user images. 사용자 이미지를 저장하기 위한 %1 디렉토리를 만들 수 없습니다. - - Error copying user image - 사용자 이미지 복사 오류 + + Error saving user image + - - Unable to copy image from %1 to %2 - 이미지를 %1에서 %2로 복사할 수 없습니다 + + Unable to save image to file + - - Error resizing user image - 사용자 이미지 크기 조정 오류 + + &Edit + - - Unable to resize image - 이미지 크기를 조정할 수 없습니다 + + &Delete + + + + + Edit User + ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. 이 사용자를 삭제하시겠습니까? 사용자의 저장 데이터가 모두 삭제됩니다. - + Confirm Delete 삭제 확인 - + Name: %1 UUID: %2 이름: %1 @@ -4603,7 +5075,7 @@ UUID: %2 - + Enable 활성화 @@ -4614,7 +5086,7 @@ UUID: %2 - + Not connected 연결되지 않음 @@ -4624,63 +5096,63 @@ UUID: %2 기본값으로 초기화 - + Clear 초기화 - + [not set] [설정 안 됨] - + Invert axis 축 뒤집기 - - + + Deadzone: %1% 데드존: %1% - + Error enabling ring input 링 입력 활성화 오류 - + Direct Joycon driver is not enabled 다이렉트 조이콘 드라이버가 활성화되지 않았음 - + Configuring 설정 중 - + The current mapped device doesn't support the ring controller 현재 매핑된 장치가 링 컨트롤러를 지원하지 않음 - + The current mapped device doesn't have a ring attached 현재 매핑된 장치에 링이 연결되어 있지 않음 - + The current mapped device is not connected 현재 매핑된 장치가 연결되지 않았습니다. - + Unexpected driver result %1 예기치 않은 드라이버 결과 %1 - + [waiting] [대기중] @@ -4704,7 +5176,7 @@ UUID: %2 코어 - + Warning: "%1" is not a valid language for region "%2" 경고: "%1"은(는) 지역 "%2"에 유효한 언어가 아님 @@ -4716,14 +5188,10 @@ UUID: %2 TAS TAS - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the yuzu website.</p></body></html> - <html><head/><body><p>TAS-nx 스크립트와 동일한 형식의 스크립트에서 컨트롤러 입력을 읽습니다.<br/>더 자세한 설명은 yuzu 웹사이트에 있는 <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a>를 참조하세요.</p></body></html> - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the eden website.</p></body></html> - + <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the user handbook.</p></body></html> + @@ -4756,17 +5224,22 @@ UUID: %2 로드 중 실행 일시중지 - + + Show recording dialog + + + + Script Directory 스크립트 주소 - + Path 주소 - + ... ... @@ -4774,12 +5247,12 @@ UUID: %2 ConfigureTasDialog - + TAS Configuration TAS 설정 - + Select TAS Load Directory... TAS 로드 디렉토리 선택... @@ -4883,14 +5356,10 @@ Drag points to change position, or double-click table cells to edit values.Configure Touchscreen 터치 스크린 - - Warning: The settings in this page affect the inner workings of yuzu's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - 경고: 이 페이지의 설정들은 yuzu의 에뮬레이트 된 터치 스크린의 내부 작동에 영향을 줍니다. 이를 변경하면 터치 스크린이 부분적 혹은 전체적으로 작동하지 않는 등의 문제가 발생할 수 있습니다. 수행할 작업에 대해 정확히 알고 이 페이지를 사용해야 합니다. - - Warning: The settings in this page affect the inner workings of eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - + Warning: The settings in this page affect the inner workings of Eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. + @@ -4921,64 +5390,43 @@ Drag points to change position, or double-click table cells to edit values. ConfigureUI - - - + + None 없음 - - - Small (32x32) - 작은 크기 (32x32) - - Standard (64x64) - 기본 크기 (64x64) - - - - Large (128x128) - 큰 크기 (128x128) - - - - Full Size (256x256) - 전체 크기(256x256) - - - Small (24x24) 작은 크기 (24x24) - + Standard (48x48) 기본 크기 (48x48) - + Large (72x72) 큰 크기 (72x72) - + Filename 파일명 - + Filetype 파일타입 - + Title ID 타이틀 ID - + Title Name 타이틀 이름 @@ -5043,75 +5491,70 @@ Drag points to change position, or double-click table cells to edit values. Show Play Time Column - + - Game Icon Size: - 게임 아이콘 크기: - - - Folder Icon Size: 폴더 아이콘 크기: - + Row 1 Text: 1번째 행 텍스트: - + Row 2 Text: 2번째 행 텍스트: - + Screenshots 스크린샷 - + Ask Where To Save Screenshots (Windows Only) 스크린샷 저장 위치 물어보기 (Windows 전용) - + Screenshots Path: 스크린샷 경로 : - + ... ... - + TextLabel - + - + Resolution: 해상도: - + Select Screenshots Path... 스크린샷 경로 선택... - + <System> <System> - + English English - + Auto (%1 x %2, %3 x %4) Screenshot width value 자동 (%1 x %2, %3 x %4) @@ -5209,170 +5652,178 @@ Drag points to change position, or double-click table cells to edit values.Web - - yuzu Web Service - yuzu 웹 서비스 - - - By providing your username and token, you agree to allow yuzu to collect additional usage data, which may include user identifying information. - 사용자 이름과 토큰을 제공함으로써 귀하는 yuzu가 사용자 식별 정보를 포함한 추가 사용 데이터 수집 허용에 동의한 것으로 간주됩니다. - - eden Web Service - + Eden Web Service + - - By providing your username and token, you agree to allow eden to collect additional usage data, which may include user identifying information. - - - - - Verify - 인증 - - - - Sign up - 가입 - - - + Token: 토큰: - + Username: 유저 이름: - - What is my token? - 나의 토큰이 무엇인가요? + + Generate + - + Web Service configuration can only be changed when a public room isn't being hosted. 웹 서비스 구성은 공개 방이 호스팅되지 않을 때만 변경할 수 있습니다. - Telemetry - 원격 측정 - - - Share anonymous usage data with the yuzu team - yuzu 팀과 익명의 사용 데이터를 공유합니다 - - - Learn more - 자세히 알아보기 - - - Telemetry ID: - 원격 측정 ID: - - - Regenerate - 재생성 - - - + Discord Presence Discord 알림 - + Show Current Game in your Discord Status 디스코드에 실행중인 게임을 나타낼 수 있습니다. - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">자세히 알아보기</span></a> - - - - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">회원 가입</span></a> - - - - <a href='https://evilperson1337.notion.site/Hosting-a-Room-Inside-of-Eden-20457c2edaf680108abac6215a79acdb'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - - - - - Warning - - - + - Verification is currently nonfunctional, instead generate a random 48-character string with only lowercase a-z. - - - - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">나의 토큰이 무엇인가요?</span></a> - - - Telemetry ID: 0x%1 - 원격 측정 ID: 0x%1 - - - Unspecified - 불특정 - - - Token not verified - 토큰이 확인되지 않음 - - - Token was not verified. The change to your token has not been saved. - 토큰이 확인되지 않았습니다. 토큰 변경 사항이 저장되지 않을 것입니다. - - - - Unverified, please click Verify before saving configuration + All Good Tooltip - 인증되지 않음, 구성을 저장하기 전에 인증을 클릭하십시오. + - Verifying... - 인증 중... - - - Verified + + Must be between 4-20 characters Tooltip - 인증됨 + - Verification failed + + Must be 48 characters, and lowercase a-z Tooltip - 인증 실패 - - - Verification failed - 인증 실패 - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - 인증 실패. 토큰을 올바르게 입력했는지, 그리고 인터넷이 연결되어 있는지 확인하십시오. + ControllerDialog - + Controller P1 컨트롤러 P1 - + &Controller P1 컨트롤러 P1(&C) + + DataDialog + + + Data Manager + + + + + Deleting ANY data is IRREVERSABLE! + + + + + Shaders + + + + + UserNAND + + + + + SysNAND + + + + + Mods + + + + + Saves + + + + + DataWidget + + + Form + + + + + Tooltip + + + + + Open with your system file manager + + + + + Delete all data in this directory. THIS IS 100% IRREVERSABLE! + + + + + Export all data in this directory. This may take a while! + + + + + Import data for this directory. This may take a while, and will delete ALL EXISTING DATA! + + + + + Calculating... + + + + + DepsDialog + + + Eden Dependencies + + + + + <html><head/><body><p><span style=" font-size:28pt;">Eden Dependencies</span></p></body></html> + + + + + <html><head/><body><p>The projects that make Eden possible</p></body></html> + + + + + Dependency + + + + + Version + + + DirectConnect @@ -5434,1497 +5885,152 @@ Drag points to change position, or double-click table cells to edit values. Username is not valid. Must be 4 to 20 alphanumeric characters. - 사용자 이름이 유효하지 않습니다. 4~20자의 영숫자여야 합니다. + Room name is not valid. Must be 4 to 20 alphanumeric characters. - 방 이름이 유효하지 않습니다. 4~20자의 영숫자여야 합니다. + Username is already in use or not valid. Please choose another. - 사용자 이름은 이미 사용 중이거나 유효하지 않습니다. 다른 것을 선택하세요. + IP is not a valid IPv4 address. - IP는 유효한 IPv4 주소가 아닙니다. + Port must be a number between 0 to 65535. - 포트는 0에서 65535 사이의 숫자여야 합니다. + You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - 방을 호스팅하려면 선호하는 게임을 선택해야 합니다. 아직 게임 목록에 게임이 없으면 게임 목록에서 더하기 아이콘을 클릭하여 게임 폴더를 추가하세요. + Unable to find an internet connection. Check your internet settings. - 인터넷 연결을 찾을 수 없습니다. 인터넷 설정을 확인하세요. + Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - 호스트에 연결할 수 없습니다. 연결 설정이 올바른지 확인하세요. 여전히 연결할 수 없으면 방 호스트에게 연락하여 호스트가 전달된 외부 포트로 올바르게 구성되었는지 확인하세요. + Unable to connect to the room because it is already full. - 이미 꽉 찼기 때문에 방에 연결할 수 없습니다. + - Creating a room failed. Please retry. Restarting eden might be necessary. - + Creating a room failed. Please retry. Restarting Eden might be necessary. + The host of the room has banned you. Speak with the host to unban you or try a different room. - 방 호스트가 당신을 차단했습니다. 호스트와 대화하여 차단을 해제하거나 다른 방을 사용해 보세요. + - Version mismatch! Please update to the latest version of eden. If the problem persists, contact the room host and ask them to update the server. - + Version mismatch! Please update to the latest version of Eden. If the problem persists, contact the room host and ask them to update the server. + Incorrect password. - 잘못된 비밀번호입니다. + An unknown error occurred. If this error continues to occur, please open an issue - 알 수없는 오류가 발생했습니다. 이 오류가 계속 발생하면 문제를 알려주세요. + Connection to room lost. Try to reconnect. - 방과의 연결이 끊어졌습니다. 다시 연결해 보세요. + You have been kicked by the room host. - 방 호스트에게 추방당했습니다. + IP address is already in use. Please choose another. - IP 주소는 이미 사용 중입니다. 다른 것을 선택하세요. + You do not have enough permission to perform this action. - 이 작업을 수행할 수 있는 권한이 없습니다. + The user you are trying to kick/ban could not be found. They may have left the room. - 추방/금지하려는 사용자를 찾을 수 없습니다. -방을 나갔을 수 있습니다. + No valid network interface is selected. Please go to Configure -> System -> Network and make a selection. - 유효한 네트워크 인터페이스가 선택되지 않았습니다. -구성 -> 시스템 -> 네트워크로 이동하여 인터페이스를 선택하세요. + Error - 오류 - - - - GMainWindow - - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Anonymous data is collected</a> to help improve yuzu. <br/><br/>Would you like to share your usage data with us? - yuzu를 개선하기 위해 <a href='https://yuzu-emu.org/help/feature/telemetry/'>익명 데이터가 수집됩니다.</a> <br/><br/>사용 데이터를 공유하시겠습니까? - - - Telemetry - 원격 측정 - - - - Broken Vulkan Installation Detected - 깨진 Vulkan 설치 감지됨 - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - 부팅하는 동안 Vulkan 초기화에 실패했습니다.<br><br>문제 해결 지침을 보려면 <a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>여기</a>를 클릭하세요. - - - - Running a game - TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping - 게임 실행중 - - - - Loading Web Applet... - 웹 애플릿을 로드하는 중... - - - - - Disable Web Applet - 웹 애플릿 비활성화 - - - - 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.) - 웹 애플릿을 비활성화하면 정의되지 않은 동작이 발생할 수 있으며 Super Mario 3D All-Stars에서만 사용해야 합니다. 웹 애플릿을 비활성화하시겠습니까? -(디버그 설정에서 다시 활성화할 수 있습니다.) - - - - The amount of shaders currently being built - 현재 생성중인 셰이더의 양 - - - - The current selected resolution scaling multiplier. - 현재 선택된 해상도 배율입니다. - - - - Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. - 현재 에뮬레이션 속도. 100%보다 높거나 낮은 값은 에뮬레이션이 Switch보다 빠르거나 느린 것을 나타냅니다. - - - - How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. - 게임이 현재 표시하고 있는 초당 프레임 수입니다. 이것은 게임마다 다르고 장면마다 다릅니다. - - - - 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. - 프레임 제한이나 수직 동기화를 계산하지 않고 Switch 프레임을 에뮬레이션 하는 데 걸린 시간. 최대 속도로 에뮬레이트 중일 때에는 대부분 16.67 ms 근처입니다. - - - - Unmute - 음소거 해제 - - - - Mute - 음소거 - - - - Reset Volume - 볼륨 재설정 - - - - &Clear Recent Files - Clear Recent Files(&C) - - - - &Continue - 재개(&C) - - - - &Pause - 일시중지(&P) - - - - Warning Outdated Game Format - 오래된 게임 포맷 경고 - - - 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.<br><br>For an explanation of the various Switch formats yuzu supports, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - 이 게임 파일은 '분해된 ROM 디렉토리'라는 오래된 포맷을 사용하고 있습니다. 해당 포맷은 NCA, NAX, XCI 또는 NSP와 같은 다른 포맷으로 대체되었으며 분해된 ROM 디렉토리에는 아이콘, 메타 데이터 및 업데이트가 지원되지 않습니다.<br><br>yuzu가 지원하는 다양한 Switch 포맷에 대한 설명은 <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>위키를 확인하세요.</a> 이 메시지는 다시 표시되지 않습니다. - - - - - Error while loading ROM! - ROM 로드 중 오류 발생! - - - - The ROM format is not supported. - 지원되지 않는 롬 포맷입니다. - - - - An error occurred initializing the video core. - 비디오 코어를 초기화하는 동안 오류가 발생했습니다. - - - 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: <a href='https://yuzu-emu.org/help/reference/log-files/'>How to Upload the Log File</a>. - 비디오 코어를 실행하는 동안 yuzu에 오류가 발생했습니다. 이것은 일반적으로 통합 드라이버를 포함하여 오래된 GPU 드라이버로 인해 발생합니다. 자세한 내용은 로그를 참조하십시오. 로그 액세스에 대한 자세한 내용은 <a href='https://yuzu-emu.org/help/reference/log-files/'>로그 파일 업로드 방법</a> 페이지를 참조하세요. - - - - Error while loading ROM! %1 - %1 signifies a numeric error code. - ROM 불러오는 중 오류 발생! %1 - - - %1<br>Please follow <a href='https://yuzu-emu.org/help/quickstart/'>the yuzu quickstart guide</a> to redump your files.<br>You can refer to the yuzu wiki</a> or the yuzu Discord</a> for help. - %1 signifies an error string. - %1<br>파일들을 다시 덤프하기 위해<a href='https://yuzu-emu.org/help/quickstart/'>yuzu 빠른 시작 가이드</a> 를 따라주세요.<br>도움이 필요할 시 yuzu 위키</a> 를 참고하거나 yuzu 디스코드</a> 를 이용해보세요. - - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://eden-emulator.github.io/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - - - - - Game Updates Warning - - - - - The game you are trying to launch is known to have performance or booting issues when updates are applied. Please try increasing the memory layout to 6GB or 8GB if any issues occur.<br><br>Press "OK" to continue launching, or "Cancel" to cancel the launch. - - - - - Don't show again for this game - - - - - 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.<br><br>For an explanation of the various Switch formats eden supports, <a href='https://eden-emulator.github.io/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - - - - - eden 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: <a href='https://eden-emulator.github.io/help/reference/log-files/'>How to Upload the Log File</a>. - - - - - %1<br>Please redump your files or ask on Discord for help. - %1 signifies an error string. - - - - - An unknown error occurred. Please see the log for more details. - 알 수 없는 오류가 발생했습니다. 자세한 내용은 로그를 참고하십시오. - - - - (64-bit) - (64비트) - - - - (32-bit) - (32비트) - - - - %1 %2 - %1 is the title name. %2 indicates if the title is 64-bit or 32-bit - %1 %2 - - - - Closing software... - 소프트웨어를 닫는 중... - - - - Save Data - 세이브 데이터 - - - - Mod Data - 모드 데이터 - - - - Error Opening %1 Folder - %1 폴더 열기 오류 - - - - - Folder does not exist! - 폴더가 존재하지 않습니다! - - - - Error Opening Transferable Shader Cache - 전송 가능한 셰이더 캐시 열기 오류 - - - - Failed to create the shader cache directory for this title. - 이 타이틀에 대한 셰이더 캐시 디렉토리를 생성하지 못했습니다. - - - - Error Removing Contents - 콘텐츠 제거 중 오류 발생 - - - - Error Removing Update - 업데이트 제거 오류 - - - - Error Removing DLC - DLC 제거 오류 - - - - Remove Installed Game Contents? - 설치된 게임 콘텐츠를 제거하겠습니까? - - - - Remove Installed Game Update? - 설치된 게임 업데이트를 제거하겠습니까? - - - - Remove Installed Game DLC? - 설치된 게임 DLC를 제거하겠습니까? - - - - Remove Entry - 항목 제거 - - - - - - - - - Successfully Removed - 삭제 완료 - - - - Successfully removed the installed base game. - 설치된 기본 게임을 성공적으로 제거했습니다. - - - - The base game is not installed in the NAND and cannot be removed. - 기본 게임은 NAND에 설치되어 있지 않으며 제거 할 수 없습니다. - - - - Successfully removed the installed update. - 설치된 업데이트를 성공적으로 제거했습니다. - - - - There is no update installed for this title. - 이 타이틀에 대해 설치된 업데이트가 없습니다. - - - - There are no DLC installed for this title. - 이 타이틀에 설치된 DLC가 없습니다. - - - - Successfully removed %1 installed DLC. - 설치된 %1 DLC를 성공적으로 제거했습니다. - - - - Delete OpenGL Transferable Shader Cache? - OpenGL 전송 가능한 셰이더 캐시를 삭제하시겠습니까? - - - - Delete Vulkan Transferable Shader Cache? - Vulkan 전송 가능한 셰이더 캐시를 삭제하시겠습니까? - - - - Delete All Transferable Shader Caches? - 모든 전송 가능한 셰이더 캐시를 삭제하시겠습니까? - - - - Remove Custom Game Configuration? - 사용자 지정 게임 구성을 제거 하시겠습니까? - - - - Remove Cache Storage? - 캐시 저장소를 제거하겠습니까? - - - - Remove File - 파일 제거 - - - - Remove Play Time Data - - - - - Reset play time? - - - - - - Error Removing Transferable Shader Cache - 전송 가능한 셰이더 캐시 제거 오류 - - - - - A shader cache for this title does not exist. - 이 타이틀에 대한 셰이더 캐시가 존재하지 않습니다. - - - - Successfully removed the transferable shader cache. - 전송 가능한 셰이더 캐시를 성공적으로 제거했습니다. - - - - Failed to remove the transferable shader cache. - 전송 가능한 셰이더 캐시를 제거하지 못했습니다. - - - - Error Removing Vulkan Driver Pipeline Cache - Vulkan 드라이버 파이프라인 캐시 제거 오류 - - - - Failed to remove the driver pipeline cache. - 드라이버 파이프라인 캐시를 제거하지 못했습니다. - - - - - Error Removing Transferable Shader Caches - 전송 가능한 셰이더 캐시 제거 오류 - - - - Successfully removed the transferable shader caches. - 전송 가능한 셰이더 캐시를 성공적으로 제거했습니다. - - - - Failed to remove the transferable shader cache directory. - 전송 가능한 셰이더 캐시 디렉토리를 제거하지 못했습니다. - - - - - Error Removing Custom Configuration - 사용자 지정 구성 제거 오류 - - - - A custom configuration for this title does not exist. - 이 타이틀에 대한 사용자 지정 구성이 존재하지 않습니다. - - - - Successfully removed the custom game configuration. - 사용자 지정 게임 구성을 성공적으로 제거했습니다. - - - - Failed to remove the custom game configuration. - 사용자 지정 게임 구성을 제거하지 못했습니다. - - - - - RomFS Extraction Failed! - RomFS 추출 실패! - - - - There was an error copying the RomFS files or the user cancelled the operation. - RomFS 파일을 복사하는 중에 오류가 발생했거나 사용자가 작업을 취소했습니다. - - - - Full - 전체 - - - - Skeleton - 뼈대 - - - - Select RomFS Dump Mode - RomFS 덤프 모드 선택 - - - - Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. - RomFS 덤프 방법을 선택하십시오.<br>전체는 모든 파일을 새 디렉토리에 복사하고<br>뼈대는 디렉토리 구조 만 생성합니다. - - - - There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root - %1에 RomFS를 추출하기에 충분한 여유 공간이 없습니다. 공간을 확보하거나 에뮬레이견 > 설정 > 시스템 > 파일시스템 > 덤프 경로에서 다른 덤프 디렉토리를 선택하십시오. - - - - Extracting RomFS... - RomFS 추출 중... - - - - - - - - Cancel - 취소 - - - - RomFS Extraction Succeeded! - RomFS 추출이 성공했습니다! - - - - - - The operation completed successfully. - 작업이 성공적으로 완료되었습니다. - - - - Integrity verification couldn't be performed! - - - - - File contents were not checked for validity. - - - - - - Verifying integrity... - - - - - - Integrity verification succeeded! - 무결성 검증에 성공했습니다. - - - - - Integrity verification failed! - 무결성 검증에 실패했습니다. - - - - File contents may be corrupt. - - - - - - - - Create Shortcut - 바로가기 만들기 - - - - Do you want to launch the game in fullscreen? - - - - - Successfully created a shortcut to %1 - %1 바로가기를 성공적으로 만듬 - - - - This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - 현재 AppImage에 대한 바로 가기가 생성됩니다. 업데이트하면 제대로 작동하지 않을 수 있습니다. 계속합니까? - - - - Failed to create a shortcut to %1 - - - - - Create Icon - 아이콘 만들기 - - - - Cannot create icon file. Path "%1" does not exist and cannot be created. - 아이콘 파일을 만들 수 없습니다. 경로 "%1"이(가) 존재하지 않으며 생성할 수 없습니다. - - - - Error Opening %1 - %1 열기 오류 - - - - Select Directory - 경로 선택 - - - - Properties - 속성 - - - - The game properties could not be loaded. - 게임 속성을 로드 할 수 없습니다. - - - - Switch Executable (%1);;All Files (*.*) - %1 is an identifier for the Switch executable file extensions. - Switch 실행파일 (%1);;모든 파일 (*.*) - - - - Load File - 파일 로드 - - - - Open Extracted ROM Directory - 추출된 ROM 디렉토리 열기 - - - - Invalid Directory Selected - 잘못된 디렉토리 선택 - - - - The directory you have selected does not contain a 'main' file. - 선택한 디렉토리에 'main'파일이 없습니다. - - - - Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - 설치 가능한 Switch 파일 (*.nca *.nsp *.xci);;Nintendo 컨텐츠 아카이브 (*.nca);;Nintendo 서브미션 패키지 (*.nsp);;NX 카트리지 이미지 (*.xci) - - - - Install Files - 파일 설치 - - - - %n file(s) remaining - - %n개의 파일이 남음 - - - - - Installing file "%1"... - 파일 "%1" 설치 중... - - - - - Install Results - 설치 결과 - - - - To avoid possible conflicts, we discourage users from installing base games to the NAND. -Please, only use this feature to install updates and DLC. - 충돌을 피하기 위해, 낸드에 베이스 게임을 설치하는 것을 권장하지 않습니다. -이 기능은 업데이트나 DLC를 설치할 때에만 사용해주세요. - - - - %n file(s) were newly installed - - - %n개의 파일이 새로 설치되었습니다. - - - - - - %n file(s) were overwritten - - - %n개의 파일을 덮어썼습니다. - - - - - - %n file(s) failed to install - - - %n개의 파일을 설치하지 못했습니다. - - - - - - System Application - 시스템 애플리케이션 - - - - System Archive - 시스템 아카이브 - - - - System Application Update - 시스템 애플리케이션 업데이트 - - - - Firmware Package (Type A) - 펌웨어 패키지 (A타입) - - - - Firmware Package (Type B) - 펌웨어 패키지 (B타입) - - - - Game - 게임 - - - - Game Update - 게임 업데이트 - - - - Game DLC - 게임 DLC - - - - Delta Title - 델타 타이틀 - - - - Select NCA Install Type... - NCA 설치 유형 선택... - - - - Please select the type of title you would like to install this NCA as: -(In most instances, the default 'Game' is fine.) - 이 NCA를 설치할 타이틀 유형을 선택하세요: -(대부분의 경우 기본값인 '게임'이 괜찮습니다.) - - - - Failed to Install - 설치 실패 - - - - The title type you selected for the NCA is invalid. - NCA 타이틀 유형이 유효하지 않습니다. - - - - File not found - 파일을 찾을 수 없음 - - - - File "%1" not found - 파일 "%1"을 찾을 수 없습니다 - - - - OK - OK - - - - - Hardware requirements not met - 하드웨어 요구 사항이 충족되지 않음 - - - - - Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled. - 시스템이 권장 하드웨어 요구 사항을 충족하지 않습니다. 호환성 보고가 비활성화되었습니다. - - - - Missing yuzu Account - yuzu 계정 누락 - - - - In order to submit a game compatibility test case, you must link your eden account.<br><br/>To link your eden account, go to Emulation &gt; Configuration &gt; Web. - - - - - Install decryption keys and restart eden before attempting to install firmware. - - - - - Firmware installation cancelled, firmware may be in bad state, restart eden or re-install firmware. - - - - - Encryption keys are missing. - - - - - Are you sure you want to close eden? - - - - - - - eden - - - - - The currently running application has requested eden to not exit. - -Would you like to bypass this and exit anyway? - - - - In order to submit a game compatibility test case, you must link your yuzu account.<br><br/>To link your yuzu account, go to Emulation &gt; Configuration &gt; Web. - 게임 호환성 테스트 결과를 제출하려면 yuzu 계정을 연결해야합니다.<br><br/>yuzu 계정을 연결하려면 에뮬레이션 &gt; 설정 &gt; 웹으로 가세요. - - - - Error opening URL - URL 열기 오류 - - - - Unable to open the URL "%1". - URL "%1"을 열 수 없습니다. - - - - TAS Recording - TAS 레코딩 - - - - Overwrite file of player 1? - 플레이어 1의 파일을 덮어쓰시겠습니까? - - - - Invalid config detected - 유효하지 않은 설정 감지 - - - - Handheld controller can't be used on docked mode. Pro controller will be selected. - 휴대 모드용 컨트롤러는 거치 모드에서 사용할 수 없습니다. 프로 컨트롤러로 대신 선택됩니다. - - - - - Amiibo - Amiibo - - - - - The current amiibo has been removed - 현재 amiibo가 제거되었습니다. - - - - Error - 오류 - - - - - The current game is not looking for amiibos - 현재 게임은 amiibo를 찾고 있지 않습니다 - - - - Amiibo File (%1);; All Files (*.*) - Amiibo 파일 (%1);; 모든 파일 (*.*) - - - - Load Amiibo - Amiibo 로드 - - - - Error loading Amiibo data - Amiibo 데이터 로드 오류 - - - - The selected file is not a valid amiibo - 선택한 파일은 유효한 amiibo가 아닙니다 - - - - The selected file is already on use - 선택한 파일은 이미 사용 중입니다 - - - - An unknown error occurred - 알수없는 오류가 발생했습니다 - - - - - Verification failed for the following files: - -%1 - - - - - Keys not installed - - - - - Select Dumped Firmware Source Location - - - - - Installing Firmware... - - - - - - - - Firmware install failed - - - - - Unable to locate potential firmware NCA files - - - - - Failed to delete one or more firmware file. - - - - - One or more firmware files failed to copy into NAND. - - - - - Firmware integrity verification failed! - - - - - Select Dumped Keys Location - - - - - - - Decryption Keys install failed - - - - - prod.keys is a required decryption key file. - - - - - One or more keys failed to copy. - - - - - Decryption Keys install succeeded - - - - - Decryption Keys were successfully installed - - - - - Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. - - - - - - - - - - - No firmware available - - - - - Please install the firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Controller Menu. - - - - - Controller Applet - 컨트롤러 애플릿 - - - - Controller Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Home Menu. - - - - - - Home Menu Applet - - - - - - Home Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use Starter. - - - - - Starter Applet - - - - - Starter is not available. Please reinstall firmware. - - - - - Please install firmware to use the home menu. - - - - - Capture Screenshot - 스크린샷 캡처 - - - - PNG Image (*.png) - PNG 이미지 (*.png) - - - - Update Available - - - - - Update %1 for Eden is available. -Would you like to download it? - - - - - TAS state: Running %1/%2 - TAS 상태: %1/%2 실행 중 - - - - TAS state: Recording %1 - TAS 상태: 레코딩 %1 - - - - TAS state: Idle %1/%2 - TAS 상태: 유휴 %1/%2 - - - - TAS State: Invalid - TAS 상태: 유효하지 않음 - - - - &Stop Running - 실행 중지(&S) - - - - &Start - 시작(&S) - - - - Stop R&ecording - 레코딩 중지(&e) - - - - R&ecord - 레코드(&R) - - - - Building: %n shader(s) - - 빌드중: %n개 셰이더 - - - - - Scale: %1x - %1 is the resolution scaling factor - 스케일: %1x - - - - Speed: %1% / %2% - 속도: %1% / %2% - - - - Speed: %1% - 속도: %1% - - - Game: %1 FPS (Unlocked) - 게임: %1 FPS (제한없음) - - - - Game: %1 FPS - 게임: %1 FPS - - - - Frame: %1 ms - 프레임: %1 ms - - - - %1 %2 - %1 %2 - - - - - FSR - FSR - - - - NO AA - AA 없음 - - - - VOLUME: MUTE - 볼륨: 음소거 - - - - VOLUME: %1% - Volume percentage (e.g. 50%) - 볼륨: %1% - - - - Derivation Components Missing - 파생 구성 요소 누락 - - - - Select RomFS Dump Target - RomFS 덤프 대상 선택 - - - - Please select which RomFS you would like to dump. - 덤프할 RomFS를 선택하십시오. - - - Are you sure you want to close yuzu? - yuzu를 닫으시겠습니까? - - - yuzu - yuzu - - - - Are you sure you want to stop the emulation? Any unsaved progress will be lost. - 에뮬레이션을 중지하시겠습니까? 모든 저장되지 않은 진행 상황은 사라집니다. - - - The currently running application has requested yuzu to not exit. - -Would you like to bypass this and exit anyway? - 현재 실행중인 응용 프로그램이 yuzu에게 종료하지 않도록 요청했습니다. - -이를 무시하고 나가시겠습니까? - - - - None - 없음 - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Nearest - Nearest - - - - Bilinear - Bilinear - - - - Bicubic - Bicubic - - - - Gaussian - 가우시안 - - - - ScaleForce - 스케일포스 - - - - Area - - - - - Docked - 거치 모드 - - - - Handheld - 휴대 모드 - - - - Normal - 보통 - - - - High - 높음 - - - - Extreme - 익스트림 - - - - Vulkan - 불칸 - - - - OpenGL - OpenGL - - - - Null - Null - - - - GLSL - GLSL - - - - GLASM - GLASM - - - - SPIRV - SPIRV + GRenderWindow - - + + OpenGL not available! OpenGL을 사용할 수 없습니다! - + OpenGL shared contexts are not supported. OpenGL 공유 컨텍스트는 지원되지 않습니다. - yuzu has not been compiled with OpenGL support. - yuzu는 OpenGL 지원으로 컴파일되지 않았습니다. + + Eden has not been compiled with OpenGL support. + - - eden has not been compiled with OpenGL support. - - - - - + + Error while initializing OpenGL! OpenGL을 초기화하는 동안 오류가 발생했습니다! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. 사용하시는 GPU가 OpenGL을 지원하지 않거나, 최신 그래픽 드라이버가 설치되어 있지 않습니다. - + Error while initializing OpenGL 4.6! OpenGL 4.6 초기화 중 오류 발생! - + Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 사용하시는 GPU가 OpenGL 4.6을 지원하지 않거나 최신 그래픽 드라이버가 설치되어 있지 않습니다. <br><br>GL 렌더링 장치:<br>%1 - + Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2 사용하시는 GPU가 1개 이상의 OpenGL 확장 기능을 지원하지 않습니다. 최신 그래픽 드라이버가 설치되어 있는지 확인하세요. <br><br>GL 렌더링 장치:<br>%1<br><br>지원하지 않는 확장 기능:<br>%2 @@ -6932,255 +6038,271 @@ Would you like to bypass this and exit anyway? GameList - + + &Add New Game Directory + + + + Favorite 선호하는 게임 - + Start Game 게임 시작 - + Start Game without Custom Configuration 맞춤 설정 없이 게임 시작 - + Open Save Data Location 세이브 데이터 경로 열기 - + Open Mod Data Location MOD 데이터 경로 열기 - + Open Transferable Pipeline Cache 전송 가능한 파이프라인 캐시 열기 - + + Link to Ryujinx + + + + Remove 제거 - + Remove Installed Update 설치된 업데이트 삭제 - + Remove All Installed DLC 설치된 모든 DLC 삭제 - + Remove Custom Configuration 사용자 지정 구성 제거 - - Remove Play Time Data - - - - + Remove Cache Storage 캐시 스토리지 제거 - + Remove OpenGL Pipeline Cache OpenGL 파이프라인 캐시 제거 - + Remove Vulkan Pipeline Cache Vulkan 파이프라인 캐시 제거 - + Remove All Pipeline Caches 모든 파이프라인 캐시 제거 - + Remove All Installed Contents 설치된 모든 컨텐츠 제거 - - + + Manage Play Time + + + + + Edit Play Time Data + + + + + Remove Play Time Data + + + + + Dump RomFS RomFS를 덤프 - + Dump RomFS to SDMC RomFS를 SDMC로 덤프 - + Verify Integrity - + - + Copy Title ID to Clipboard 클립보드에 타이틀 ID 복사 - + Navigate to GameDB entry GameDB 항목으로 이동 - + Create Shortcut 바로가기 만들기 - + Add to Desktop 데스크톱에 추가 - + Add to Applications Menu 애플리케이션 메뉴에 추가 - + Configure Game - + - Properties - 속성 - - - + Scan Subfolders 하위 폴더 스캔 - + Remove Game Directory 게임 디렉토리 제거 - + ▲ Move Up ▲ 위로 이동 - + ▼ Move Down ▼ 아래로 이동 - + Open Directory Location 디렉토리 위치 열기 - + Clear 초기화 - + Name 이름 - + Compatibility 호환성 - + Add-ons 부가 기능 - + File type 파일 형식 - + Size 크기 - + Play time - + GameListItemCompat - + Ingame 게임 내 - + Game starts, but crashes or major glitches prevent it from being completed. 게임이 시작되지만, 충돌이나 주요 결함으로 인해 게임이 완료되지 않습니다. - + Perfect 완벽함 - + Game can be played without issues. 문제 없이 게임 플레이가 가능합니다. - + Playable 재생 가능 - + Game functions with minor graphical or audio glitches and is playable from start to finish. 약간의 그래픽 또는 오디오 결함이 있는 게임 기능이 있으며 처음부터 끝까지 플레이할 수 있습니다. - + Intro/Menu 인트로/메뉴 - + Game loads, but is unable to progress past the Start Screen. 게임이 로드되지만 시작 화면을 지나서 진행할 수 없습니다. - + Won't Boot 실행 불가 - + The game crashes when attempting to startup. 게임 실행 시 크래시가 일어납니다. - + Not Tested 테스트되지 않음 - + The game has not yet been tested. 이 게임은 아직 테스트되지 않았습니다. @@ -7188,7 +6310,7 @@ Would you like to bypass this and exit anyway? GameListPlaceholder - + Double-click to add a new folder to the game list 더블 클릭하여 게임 목록에 새 폴더 추가 @@ -7196,19 +6318,17 @@ Would you like to bypass this and exit anyway? GameListSearchField - + %1 of %n result(s) - - %1 중의 %n 결과 - + - + Filter: 필터: - + Enter pattern to filter 검색 필터 입력 @@ -7284,233 +6404,241 @@ Would you like to bypass this and exit anyway? HostRoomWindow - + Error 오류 - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. + + Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid Eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. Debug Message: - - - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid yuzu account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. -Debug Message: - 공개 로비에 방을 알리지 못했습니다. 방을 공개적으로 호스트하려면 에뮬레이션 -> 구성 -> 웹에서 유효한 yuzu 계정이 구성되어 있어야 합니다. 공개 로비에 방을 게시하지 않으려면 대신 목록에 없음을 선택하세요. -디버그 메시지: + Hotkeys - + Audio Mute/Unmute 오디오 음소거/음소거 해제 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Main Window 메인 윈도우 - + Audio Volume Down 오디오 볼륨 낮추기 - + Audio Volume Up 오디오 볼륨 키우기 - + Capture Screenshot 스크린샷 캡처 - + Change Adapting Filter 적응형 필터 변경 - + Change Docked Mode 독 모드 변경 - - Change GPU Accuracy - GPU 정확성 변경 + + Change GPU Mode + - + Configure - 설정 + - + Configure Current Game - + - + Continue/Pause Emulation 재개/에뮬레이션 일시중지 - + Exit Fullscreen 전체화면 종료 - Exit yuzu - yuzu 종료 + + Exit Eden + - - Exit eden - - - - + Fullscreen 전체화면 - + Load File 파일 로드 - + Load/Remove Amiibo Amiibo 로드/제거 - - Multiplayer Browse Public Game Lobby - + + Browse Public Game Lobby + - - Multiplayer Create Room - + + Create Room + - - Multiplayer Direct Connect to Room - + + Direct Connect to Room + - - Multiplayer Leave Room - + + Leave Room + - - Multiplayer Show Current Room - + + Show Current Room + - + Restart Emulation 에뮬레이션 재시작 - + Stop Emulation 에뮬레이션 중단 - + TAS Record TAS 기록 - + TAS Reset TAS 리셋 - + TAS Start/Stop TAS 시작/멈춤 - + Toggle Filter Bar 상태 표시줄 전환 - + Toggle Framerate Limit 프레임속도 제한 토글 - + + Toggle Turbo Speed + + + + + Toggle Slow Speed + + + + Toggle Mouse Panning 마우스 패닝 활성화 - + Toggle Renderdoc Capture - + - + Toggle Status Bar 상태 표시줄 전환 + + + Toggle Performance Overlay + + InstallDialog - + Please confirm these are the files you wish to install. 설치하려는 파일이 맞는지 확인하십시오. - + Installing an Update or DLC will overwrite the previously installed one. 업데이트 또는 DLC를 설치하면 이전에 설치된 업데이트를 덮어 씁니다. - + Install 설치 - + Install Files to NAND NAND에 파일 설치 @@ -7518,8 +6646,8 @@ Debug Message: LimitableInputDialog - - The text can't contain any of the following characters: + + The text can't contain any of the following characters: %1 텍스트는 다음 문자를 포함할 수 없습니다: %1 @@ -7543,22 +6671,22 @@ Debug Message: 예상 시간 5m 4s - + Loading... 불러오는 중... - + Loading Shaders %1 / %2 셰이더 로딩 %1 / %2 - + Launching... 실행 중... - + Estimated Time %1 예상 시간 %1 @@ -7607,42 +6735,42 @@ Debug Message: 로비 새로 고침 - + Password Required to Join 입장시 비밀번호가 필요합니다 - + Password: 비밀번호: - + Players 플레이어 - + Room Name 방 이름 - + Preferred Game 선호하는 게임 - + Host 호스트 - + Refreshing 새로 고치는 중 - + Refresh List 새로 고침 목록 @@ -7665,362 +6793,1424 @@ Debug Message: 최근 파일(&R) - + + Open &Eden Folders + + + + &Emulation 에뮬레이션(&E) - + &View 보기(&V) - + &Reset Window Size 창 크기 초기화 (&R) - + &Debugging 디버깅(&D) - + + &Game List Mode + + + + + Game &Icon Size + + + + Reset Window Size to &720p 창 크기를 720p로 맞추기(&7) - + Reset Window Size to 720p 창 크기를 720p로 맞추기 - + Reset Window Size to &900p 창 크기를 900p로 맞추기(&9) - + Reset Window Size to 900p 창 크기를 900p로 맞추기 - + Reset Window Size to &1080p 창 크기를 1080p로 맞추기(&1) - + Reset Window Size to 1080p 창 크기를 1080p로 맞추기 - + &Multiplayer 멀티플레이어(&M) - + &Tools 도구(&T) - - &Amiibo - + + Am&iibo + - + + Launch &Applet + + + + &TAS TAS(&T) - + &Create Home Menu Shortcut - + - + + Install &Firmware + + + + &Help 도움말(&H) - + &Install Files to NAND... 낸드에 파일 설치(&I) - + L&oad File... 파일 불러오기...(&L) - + Load &Folder... 폴더 불러오기...(&F) - + E&xit 종료(&X) - + + &Pause 일시중지(&P) - + &Stop 정지(&S) - + &Verify Installed Contents - + - - &About eden - + + &About Eden + - - Open &eden Folder - - - - - Open Home Menu - - - - - &Discord - - - - - Open &Setup - - - - - &Desktop - - - - - &Application Menu - - - - &About yuzu - yuzu 정보(&A) - - - + Single &Window Mode 싱글 창 모드(&W) - + Con&figure... 설정(&f) - + Ctrl+, - + - - Display D&ock Widget Headers - 독 위젯 헤더 표시(&o) + + Enable Overlay Display Applet + - + Show &Filter Bar 필터링 바 표시(&F) - + Show &Status Bar 상태 표시줄 보이기(&S) - + Show Status Bar 상태 표시줄 보이기 - + &Browse Public Game Lobby 공개 게임 로비 찾아보기(&B) - + &Create Room 방 만들기(&C) - + &Leave Room 방에서 나가기(&L) - + &Direct Connect to Room 방에 직접 연결(&D) - + &Show Current Room 현재 방 표시(&S) - + F&ullscreen 전체 화면(&u) - + &Restart 재시작(&R) - + Load/Remove &Amiibo... Amiibo 로드/제거(&A)... - + &Report Compatibility 호환성 보고(&R) - + Open &Mods Page 게임 모드 페이지 열기(&M) - + Open &Quickstart Guide 빠른 시작 가이드 열기(&Q) - + &FAQ FAQ(&F) - Open &yuzu Folder - yuzu 폴더 열기(&y) - - - + &Capture Screenshot 스크린샷 찍기(&C) - - Open &Album - + + &Album + - + &Set Nickname and Owner - + - + &Delete Game Data - + - + &Restore Amiibo - + - + &Format Amiibo - + - - Open &Mii Editor - + + &Mii Editor + - + &Configure TAS... TAS설정...(&C) - + Configure C&urrent Game... 실행중인 게임 맞춤 설정...(&u) - + + &Start 시작(&S) - + &Reset 리셋(&R) - + + R&ecord 레코드(&e) - + Open &Controller Menu - + - - Install Firmware - + + Install Decryption &Keys + - - Install Decryption Keys - + + &Home Menu + - - - MicroProfileDialog - - &MicroProfile - 마이크로 프로파일(&M) + + &Desktop + + + + + &Application Menu + + + + + &Root Data Folder + + + + + &NAND Folder + + + + + &SDMC Folder + + + + + &Mod Folder + + + + + &Log Folder + + + + + From Folder + + + + + From ZIP + + + + + &Eden Dependencies + + + + + &Data Manager + + + + + &Tree View + + + + + &Grid View + + + + + Game Icon Size + + + + + + + None + + + + + Show Game &Name + + + + + Show &Performance Overlay + + + + + Small (32x32) + + + + + Standard (64x64) + + + + + Large (128x128) + + + + + Full Size (256x256) + + + + + Broken Vulkan Installation Detected + + + + + Vulkan initialization failed during boot. + + + + + Running a game + TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping + + + + + Loading Web Applet... + + + + + + Disable Web Applet + + + + + 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.) + + + + + The amount of shaders currently being built + + + + + The current selected resolution scaling multiplier. + + + + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. + + + + + How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. + + + + + 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. + + + + + Unmute + + + + + Mute + + + + + Reset Volume + + + + + &Clear Recent Files + + + + + &Continue + + + + + Warning: Outdated Game Format + + + + + 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.<br>For an explanation of the various Switch formats Eden supports, out our user handbook. This message will not be shown again. + + + + + + Error while loading ROM! + + + + + The ROM format is not supported. + + + + + An error occurred initializing the video core. + + + + + Eden 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: <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>How to Upload the Log File</a>. + + + + + Error while loading ROM! %1 + %1 signifies a numeric error code. + + + + + %1<br>Please redump your files or ask on Discord/Stoat for help. + %1 signifies an error string. + + + + + An unknown error occurred. Please see the log for more details. + + + + + (64-bit) + + + + + (32-bit) + + + + + %1 %2 + %1 is the title name. %2 indicates if the title is 64-bit or 32-bit + + + + + Closing software... + + + + + Save Data + + + + + Mod Data + + + + + Error Opening %1 Folder + + + + + + Folder does not exist! + + + + + Remove Installed Game Contents? + + + + + Remove Installed Game Update? + + + + + Remove Installed Game DLC? + + + + + Remove Entry + + + + + Delete OpenGL Transferable Shader Cache? + + + + + Delete Vulkan Transferable Shader Cache? + + + + + Delete All Transferable Shader Caches? + + + + + Remove Custom Game Configuration? + + + + + Remove Cache Storage? + + + + + Remove File + + + + + Remove Play Time Data + + + + + Reset play time? + + + + + + RomFS Extraction Failed! + + + + + There was an error copying the RomFS files or the user cancelled the operation. + + + + + Full + + + + + Skeleton + + + + + Select RomFS Dump Mode + + + + + Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. + + + + + There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root + + + + + Extracting RomFS... + + + + + + Cancel + + + + + RomFS Extraction Succeeded! + + + + + The operation completed successfully. + + + + + Error Opening %1 + + + + + Select Directory + + + + + Properties + + + + + The game properties could not be loaded. + + + + + Switch Executable (%1);;All Files (*.*) + %1 is an identifier for the Switch executable file extensions. + + + + + Load File + + + + + Open Extracted ROM Directory + + + + + Invalid Directory Selected + + + + + The directory you have selected does not contain a 'main' file. + + + + + Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) + + + + + Install Files + + + + + %n file(s) remaining + + + + + Installing file "%1"... + + + + + + Install Results + + + + + To avoid possible conflicts, we discourage users from installing base games to the NAND. +Please, only use this feature to install updates and DLC. + + + + + %n file(s) were newly installed + + + + + + %n file(s) were overwritten + + + + + + %n file(s) failed to install + + + + + + System Application + + + + + System Archive + + + + + System Application Update + + + + + Firmware Package (Type A) + + + + + Firmware Package (Type B) + + + + + Game + + + + + Game Update + + + + + Game DLC + + + + + Delta Title + + + + + Select NCA Install Type... + + + + + Please select the type of title you would like to install this NCA as: +(In most instances, the default 'Game' is fine.) + + + + + Failed to Install + + + + + The title type you selected for the NCA is invalid. + + + + + File not found + + + + + File "%1" not found + + + + + OK + + + + + Function Disabled + + + + + Compatibility list reporting is currently disabled. Check back later! + + + + + Error opening URL + + + + + Unable to open the URL "%1". + + + + + TAS Recording + + + + + Overwrite file of player 1? + + + + + Invalid config detected + + + + + Handheld controller can't be used on docked mode. Pro controller will be selected. + + + + + + Amiibo + + + + + + The current amiibo has been removed + + + + + Error + + + + + + The current game is not looking for amiibos + + + + + Amiibo File (%1);; All Files (*.*) + + + + + Load Amiibo + + + + + Error loading Amiibo data + + + + + The selected file is not a valid amiibo + + + + + The selected file is already on use + + + + + An unknown error occurred + + + + + + Keys not installed + + + + + + Install decryption keys and restart Eden before attempting to install firmware. + + + + + Select Dumped Firmware Source Location + + + + + Select Dumped Firmware ZIP + + + + + Zipped Archives (*.zip) + + + + + Firmware cleanup failed + + + + + Failed to clean up extracted firmware cache. +Check write permissions in the system temp directory and try again. +OS reported error: %1 + + + + + No firmware available + + + + + Firmware Corrupted + + + + + Unknown applet + + + + + Applet doesn't map to a known value. + + + + + Record not found + + + + + Applet not found. Please reinstall firmware. + + + + + Capture Screenshot + + + + + PNG Image (*.png) + + + + + Update Available + + + + + Download %1? + + + + + TAS state: Running %1/%2 + + + + + TAS state: Recording %1 + + + + + TAS state: Idle %1/%2 + + + + + TAS State: Invalid + + + + + &Stop Running + + + + + Stop R&ecording + + + + + Building: %n shader(s) + + + + + Scale: %1x + %1 is the resolution scaling factor + + + + + Speed: %1% / %2% + + + + + Speed: %1% + + + + + Game: %1 FPS + + + + + Frame: %1 ms + + + + + + FSR + + + + + NO AA + + + + + VOLUME: MUTE + + + + + VOLUME: %1% + Volume percentage (e.g. 50%) + + + + + Derivation Components Missing + + + + + Decryption keys are missing. Install them now? + + + + + Wayland Detected! + + + + + Wayland is known to have significant performance issues and mysterious bugs. +It's recommended to use X11 instead. + +Would you like to force it for future launches? + + + + + Use X11 + + + + + Continue with Wayland + + + + + Don't show again + + + + + Restart Required + + + + + Restart Eden to apply the X11 backend. + + + + + Slow + + + + + Turbo + + + + + Unlocked + + + + + Select RomFS Dump Target + + + + + Please select which RomFS you would like to dump. + + + + + Are you sure you want to close Eden? + + + + + + + Eden + + + + + Are you sure you want to stop the emulation? Any unsaved progress will be lost. + + + + + The currently running application has requested Eden to not exit. + +Would you like to bypass this and exit anyway? + + + + + FXAA + + + + + SMAA + + + + + Nearest + + + + + Bilinear + + + + + Bicubic + + + + + Zero-Tangent + + + + + B-Spline + + + + + Mitchell + + + + + Spline-1 + + + + + Gaussian + + + + + Lanczos + + + + + ScaleForce + + + + + Area + + + + + MMPX + + + + + Docked + + + + + Handheld + + + + + Fast + + + + + Balanced + + + + + Accurate + + + + + Vulkan + + + + + OpenGL GLSL + + + + + OpenGL SPIRV + + + + + OpenGL GLASM + + + + + Null + MigrationWorker - - Data was migrated successfully. - - - - + Linking the old directory failed. You may need to re-run with administrative privileges on Windows. OS gave error: %1 - + - + + + +Note that your configuration and data will be shared with %1. +If this is not desirable, delete the following files: +%2 +%3 +%4 + + + + If you wish to clean up the files which were left in the old data location, you can do so by deleting the following directory: %1 - + + + + + Data was migrated successfully. + + + + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + @@ -8037,7 +8227,7 @@ If you wish to clean up the files which were left in the old data location, you - + Refreshing 새로 고치는 중 @@ -8047,27 +8237,27 @@ If you wish to clean up the files which were left in the old data location, you 차단 해재 - + Subject 주제 - + Type 유형 - + Forum Username 포럼 사용자이름 - + IP Address IP 주소 - + Refresh 새로 고침 @@ -8075,37 +8265,37 @@ If you wish to clean up the files which were left in the old data location, you MultiplayerState - + Current connection status 현재 연결 상태 - + Not Connected. Click here to find a room! 연결되지 않았습니다. 방을 찾으려면 여기를 클릭하세요! - + Not Connected 연결되지 않음 - + Connected 연결됨 - + New Messages Received 수신된 새 메시지 - + Error 오류 - + Failed to update the room information. Please check your Internet connection and try hosting the room again. Debug Message: 방 정보를 업데이트하지 못했습니다. 인터넷 연결을 확인하고 방을 다시 호스팅해 보세요. @@ -8114,90 +8304,6 @@ Debug Message: NetworkMessage - - Username is not valid. Must be 4 to 20 alphanumeric characters. - 사용자 이름이 유효하지 않습니다. 4~20자의 영숫자여야 합니다. - - - Room name is not valid. Must be 4 to 20 alphanumeric characters. - 방 이름이 유효하지 않습니다. 4~20자의 영숫자여야 합니다. - - - Username is already in use or not valid. Please choose another. - 사용자 이름은 이미 사용 중이거나 유효하지 않습니다. 다른 것을 선택하세요. - - - IP is not a valid IPv4 address. - IP는 유효한 IPv4 주소가 아닙니다. - - - Port must be a number between 0 to 65535. - 포트는 0에서 65535 사이의 숫자여야 합니다. - - - You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - 방을 호스팅하려면 선호하는 게임을 선택해야 합니다. 아직 게임 목록에 게임이 없으면 게임 목록에서 더하기 아이콘을 클릭하여 게임 폴더를 추가하세요. - - - Unable to find an internet connection. Check your internet settings. - 인터넷 연결을 찾을 수 없습니다. 인터넷 설정을 확인하세요. - - - Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - 호스트에 연결할 수 없습니다. 연결 설정이 올바른지 확인하세요. 여전히 연결할 수 없으면 방 호스트에게 연락하여 호스트가 전달된 외부 포트로 올바르게 구성되었는지 확인하세요. - - - Unable to connect to the room because it is already full. - 이미 꽉 찼기 때문에 방에 연결할 수 없습니다. - - - Creating a room failed. Please retry. Restarting yuzu might be necessary. - 방을 만들지 못했습니다. 다시 시도하세요. yuzu를 다시 시작해야 할 수도 있습니다. - - - The host of the room has banned you. Speak with the host to unban you or try a different room. - 방 호스트가 당신을 차단했습니다. 호스트와 대화하여 차단을 해제하거나 다른 방을 사용해 보세요. - - - Version mismatch! Please update to the latest version of yuzu. If the problem persists, contact the room host and ask them to update the server. - 버전이 불일치합니다! 최신 버전의 yuzu로 업데이트하세요. 문제가 지속되면 방 주인에게 연락하여 서버 업데이트를 요청하세요. - - - Incorrect password. - 잘못된 비밀번호입니다. - - - An unknown error occurred. If this error continues to occur, please open an issue - 알 수없는 오류가 발생했습니다. 이 오류가 계속 발생하면 문제를 알려주세요. - - - Connection to room lost. Try to reconnect. - 방과의 연결이 끊어졌습니다. 다시 연결해 보세요. - - - You have been kicked by the room host. - 방 호스트에게 추방당했습니다. - - - IP address is already in use. Please choose another. - IP 주소는 이미 사용 중입니다. 다른 것을 선택하세요. - - - You do not have enough permission to perform this action. - 이 작업을 수행할 수 있는 권한이 없습니다. - - - The user you are trying to kick/ban could not be found. -They may have left the room. - 추방/금지하려는 사용자를 찾을 수 없습니다. -방을 나갔을 수 있습니다. - - - No valid network interface is selected. -Please go to Configure -> System -> Network and make a selection. - 유효한 네트워크 인터페이스가 선택되지 않았습니다. -구성 -> 시스템 -> 네트워크로 이동하여 인터페이스를 선택하세요. - Game already running @@ -8232,10 +8338,132 @@ Proceed anyway? - NetworkMessage::ErrorManager + NewUserDialog - Error - 오류 + + + New User + + + + + Change Avatar + + + + + Set Image + + + + + UUID + + + + + Eden + + + + + Username + + + + + UUID must be 32 hex characters (0-9, A-F) + + + + + Generate + + + + + Select User Image + + + + + Image Formats (*.jpg *.jpeg *.png *.bmp) + + + + + No firmware available + + + + + Please install the firmware to use firmware avatars. + + + + + + Error loading archive + + + + + Archive is not available. Please install/reinstall firmware. + + + + + Could not locate RomFS. Your file or decryption keys may be corrupted. + + + + + Error extracting archive + + + + + Could not extract RomFS. Your file or decryption keys may be corrupted. + + + + + Error finding image directory + + + + + Failed to find image directory in the archive. + + + + + No images found + + + + + No avatar images were found in the archive. + + + + + + All Good + Tooltip + + + + + Must be 32 hex characters (0-9, a-f) + Tooltip + + + + + Must be between 1 and 32 characters + Tooltip + @@ -8262,7 +8490,7 @@ Proceed anyway? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -8271,83 +8499,196 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> + + PerformanceOverlay + + + Form + + + + + Frametime + + + + + 0 ms + + + + + + Min: 0 + + + + + + Max: 0 + + + + + + Avg: 0 + + + + + FPS + + + + + 0 fps + + + + + %1 fps + + + + + + Avg: %1 + + + + + + Min: %1 + + + + + + Max: %1 + + + + + %1 ms + + + PlayerControlPreview - + START/PAUSE 시작/일시중지 + + ProfileAvatarDialog + + + Select + + + + + Cancel + + + + + Background Color + + + + + Select Firmware Avatar + + + QObject - - %1 is not playing a game - %1은(는) 게임을 하고 있지 않습니다 + + + + Migration + - - %1 is playing %2 - %1이(가) %2을(를) 플레이 중입니다 + + Clear Shader Cache + - - Not playing a game - 게임을 하지 않음 + + Keep Old Data + - - Installed SD Titles - 설치된 SD 타이틀 + + Clear Old Data + - - Installed NAND Titles - 설치된 NAND 타이틀 + + Link Old Directory + - - System Titles - 시스템 타이틀 + + + + + - - Add New Game Directory - 새 게임 디렉토리 추가 + + + No + - - Favorites - 선호하는 게임 + + You can manually re-trigger this prompt by deleting the new config directory: +%1 + + + + + Migrating + + + + + Migrating, this may take a while... + - - + + Shift Shift - - + + Ctrl Ctrl - - + + Alt Alt - - - - + + + + [not set] [설정 안 됨] @@ -8357,15 +8698,15 @@ p, li { white-space: pre-wrap; } 방향키 %1 %2 - - - - - - - - + + + + + + + + Axis %1%2 축 %1%2 @@ -8375,359 +8716,383 @@ p, li { white-space: pre-wrap; } %1 버튼 - - - - - - + + + + + + [unknown] [알 수 없음] - - - + + + Left 왼쪽 - - - + + + Right 오른쪽 - - - + + + Down 아래 - - - + + + Up - - + + Z Z - - + + R R - - + + L L - - + + A A - - + + B B - - + + X X - - + + Y Y - - + + Start Start - - + + L1 L1 - - + + L2 L2 - - + + L3 L3 - - + + R1 R1 - - + + R2 R2 - - + + R3 R3 - - + + Circle 동그라미 - - + + Cross 엑스 - - + + Square 네모 - - + + Triangle 세모 - - + + Share Share - - + + Options Options - - + + [undefined] [설정안됨] - + %1%2 %1%2 - - + + [invalid] [유효하지않음] - - + + %1%2Hat %3 %1%2방향키 %3 - - - + + + %1%2Axis %3 %1%2Axis %3 - - + + %1%2Axis %3,%4,%5 %1%2Axis %3,%4,%5 - - + + %1%2Motion %3 %1%2모션 %3 - - + + %1%2Button %3 %1%2버튼 %3 - - + + [unused] [미사용] - + ZR ZR - + ZL ZL - + SR SR - + SL SL - + Stick L L 스틱 - + Stick R R 스틱 - + Plus + - + Minus - - - + + Home - + Capture 캡쳐 - + Touch 터치 - + Wheel Indicates the mouse wheel - + Backward 뒤로가기 - + Forward 앞으로가기 - + Task Task - + Extra Extra - + %1%2%3%4 %1%2%3%4 - - + + %1%2%3Hat %4 %1%2%3방향키%4 - - + + %1%2%3Axis %4 %1%2%3Axis %4 - - + + %1%2%3Button %4 %1%2%3버튼%4 - - - - Migration - + + Not playing a game + 게임을 하지 않음 - - - - - + + %1 is not playing a game + %1은(는) 게임을 하고 있지 않습니다 - - - No - + + %1 is playing %2 + %1이(가) %2을(를) 플레이 중입니다 - - You can manually re-trigger this prompt by deleting the new config directory: -%1 - + + Play Time: %1 + - - Migrating - + + Never Played + - - Migrating, this may take a while... - + + Version: %1 + + + + + Version: 1.0.0 + + + + + Installed SD Titles + 설치된 SD 타이틀 + + + + Installed NAND Titles + 설치된 NAND 타이틀 + + + + System Titles + 시스템 타이틀 + + + + Add New Game Directory + 새 게임 디렉토리 추가 + + + + Favorites + 선호하는 게임 @@ -8818,31 +9183,817 @@ p, li { white-space: pre-wrap; } 파일 경로 - + No game data present 게임 데이터 없음 - + The following amiibo data will be formatted: 다음 amiibo 데이터의 형식이 지정됩니다: - + The following game data will removed: 다음 게임 데이터가 제거됩니다: - + Set nickname and owner: 닉네임 및 소유자 설정: - + Do you wish to restore this amiibo? 이 amiibo를 복원하겠습니까? + + QtCommon::Content + + + Game Requires Firmware + + + + + The game you are trying to launch requires firmware to boot or to get past the opening menu. Please <a href='https://yuzu-mirror.github.io/help/quickstart'>dump and install firmware</a>, or press "OK" to launch anyways. + + + + + Installing Firmware... + + + + + + + + + Cancel + + + + + Firmware Install Failed + + + + + Firmware Install Succeeded + + + + + Firmware integrity verification failed! + + + + + + Verification failed for the following files: + +%1 + + + + + + Verifying integrity... + + + + + + Integrity verification succeeded! + + + + + + The operation completed successfully. + + + + + + Integrity verification failed! + + + + + File contents may be corrupt or missing. + + + + + Integrity verification couldn't be performed + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity. + + + + + Select Dumped Keys Location + + + + + Decryption Keys install succeeded + + + + + Decryption Keys install failed + + + + + Orphaned Profiles Detected! + + + + + UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br> + + + + + Really clear data? + + + + + Important data may be lost! + + + + + Are you REALLY sure? + + + + + Once deleted, your data will NOT come back! +Only do this if you're 100% sure you want to delete this data. + + + + + Clearing... + + + + + Select Export Location + + + + + %1.zip + + + + + + Zipped Archives (*.zip) + + + + + Exporting data. This may take a while... + + + + + Exporting + + + + + Exported Successfully + + + + + Data was exported successfully. + + + + + Export Cancelled + + + + + Export was cancelled by the user. + + + + + Export Failed + + + + + Ensure you have write permissions on the targeted directory and try again. + + + + + Select Import Location + + + + + Import Warning + + + + + All previous data in this directory will be deleted. Are you sure you wish to proceed? + + + + + Importing data. This may take a while... + + + + + Importing + + + + + Imported Successfully + + + + + Data was imported successfully. + + + + + Import Cancelled + + + + + Import was cancelled by the user. + + + + + Import Failed + + + + + Ensure you have read permissions on the targeted directory and try again. + + + + + QtCommon::FS + + + Linked Save Data + + + + + Save data has been linked. + + + + + Failed to link save data + + + + + Could not link directory: + %1 +To: + %2 + + + + + Already Linked + + + + + This title is already linked to Ryujinx. Would you like to unlink it? + + + + + Failed to unlink old directory + + + + + + OS returned error: %1 + + + + + Failed to copy save data + + + + + Unlink Successful + + + + + Successfully unlinked Ryujinx save data. Save data has been kept intact. + + + + + Could not find Ryujinx installation + + + + + Could not find a valid Ryujinx installation. This may typically occur if you are using Ryujinx in portable mode. + +Would you like to manually select a portable folder to use? + + + + + Ryujinx Portable Location + + + + + Not a valid Ryujinx directory + + + + + The specified directory does not contain valid Ryujinx data. + + + + + + Could not find Ryujinx save data + + + + + QtCommon::Game + + + Error Removing Contents + + + + + Error Removing Update + + + + + Error Removing DLC + + + + + + + + + + Successfully Removed + + + + + Successfully removed the installed base game. + + + + + The base game is not installed in the NAND and cannot be removed. + + + + + Successfully removed the installed update. + + + + + There is no update installed for this title. + + + + + There are no DLCs installed for this title. + + + + + Successfully removed %1 installed DLC. + + + + + + Error Removing Transferable Shader Cache + + + + + + A shader cache for this title does not exist. + + + + + Successfully removed the transferable shader cache. + + + + + Failed to remove the transferable shader cache. + + + + + Error Removing Vulkan Driver Pipeline Cache + + + + + Failed to remove the driver pipeline cache. + + + + + + Error Removing Transferable Shader Caches + + + + + Successfully removed the transferable shader caches. + + + + + Failed to remove the transferable shader cache directory. + + + + + + Error Removing Custom Configuration + + + + + A custom configuration for this title does not exist. + + + + + Successfully removed the custom game configuration. + + + + + Failed to remove the custom game configuration. + + + + + Reset Metadata Cache + + + + + The metadata cache is already empty. + + + + + The operation completed successfully. + + + + + The metadata cache couldn't be deleted. It might be in use or non-existent. + + + + + Create Shortcut + + + + + Do you want to launch the game in fullscreen? + + + + + Shortcut Created + + + + + Successfully created a shortcut to %1 + + + + + Shortcut may be Volatile! + + + + + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? + + + + + Failed to Create Shortcut + + + + + Failed to create a shortcut to %1 + + + + + Create Icon + + + + + Cannot create icon file. Path "%1" does not exist and cannot be created. + + + + + No firmware available + + + + + Please install firmware to use the home menu. + + + + + Home Menu Applet + + + + + Home Menu is not available. Please reinstall firmware. + + + + + QtCommon::Mod + + + Mod Name + + + + + What should this mod be called? + + + + + RomFS + + + + + ExeFS/Patch + + + + + Cheat + + + + + Mod Type + + + + + Could not detect mod type automatically. Please manually specify the type of mod you downloaded. + +Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods. + + + + + + Mod Extract Failed + + + + + Failed to create temporary directory %1 + + + + + Zip file %1 is empty + + + + + QtCommon::Path + + + Error Opening Shader Cache + + + + + Failed to create or open shader cache for this title, ensure your app data directory has write permissions. + + + + + QtCommon::StringLookup + + + Contains game save data. DO NOT REMOVE UNLESS YOU KNOW WHAT YOU'RE DOING! + + + + + Contains Vulkan and OpenGL pipeline caches. Generally safe to remove. + + + + + Contains updates and DLC for games. + + + + + Contains firmware and applet data. + + + + + Contains game mods, patches, and cheats. + + + + + Decryption Keys were successfully installed + + + + + Unable to read key directory, aborting + + + + + One or more keys failed to copy. + + + + + Verify your keys file has a .keys extension and try again. + + + + + Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. + + + + + Successfully installed firmware version %1 + + + + + Unable to locate potential firmware NCA files + + + + + Failed to delete one or more firmware files. + + + + + One or more firmware files failed to copy into NAND. + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. Restart Eden or re-install firmware. + + + + + Firmware missing. Firmware is required to run certain games and use the Home Menu. + + + + + Firmware reported as present, but was unable to be read. Check for decryption keys and redump firmware if necessary. + + + + + Eden has detected user data for the following emulators: + + + + + Would you like to migrate your data for use in Eden? +Select the corresponding button to migrate data from that emulator. +This may take a while. + + + + + Clearing shader cache is recommended for all users. +Do not uncheck unless you know what you're doing. + + + + + Keeps the old data directory. This is recommended if you aren't +space-constrained and want to keep separate data for the old emulator. + + + + + Deletes the old data directory. +This is recommended on devices with space constraints. + + + + + Creates a filesystem link between the old directory and Eden directory. +This is recommended if you want to share data between emulators. + + + + + Ryujinx title database does not exist. + + + + + Invalid header on Ryujinx title database. + + + + + Invalid magic header on Ryujinx title database. + + + + + Invalid byte alignment on Ryujinx title database. + + + + + No items found in Ryujinx title database. + + + + + Title %1 not found in Ryujinx title database. + + + QtControllerSelectorDialog @@ -8879,7 +10030,7 @@ p, li { white-space: pre-wrap; } - + Pro Controller 프로 컨트롤러 @@ -8892,7 +10043,7 @@ p, li { white-space: pre-wrap; } - + Dual Joycons 듀얼 조이콘 @@ -8905,7 +10056,7 @@ p, li { white-space: pre-wrap; } - + Left Joycon 왼쪽 조이콘 @@ -8918,7 +10069,7 @@ p, li { white-space: pre-wrap; } - + Right Joycon 오른쪽 조이콘 @@ -8947,7 +10098,7 @@ p, li { white-space: pre-wrap; } - + Handheld 휴대 모드 @@ -9065,35 +10216,35 @@ p, li { white-space: pre-wrap; } Not enough controllers - + - + GameCube Controller GameCube 컨트롤러 - + Poke Ball Plus 몬스터볼 Plus - + NES Controller NES 컨트롤러 - + SNES Controller SNES 컨트롤러 - + N64 Controller N64 컨트롤러 - + Sega Genesis 세가 제네시스 @@ -9101,28 +10252,28 @@ p, li { white-space: pre-wrap; } QtErrorDisplay - - - + + + Error Code: %1-%2 (0x%3) 에러 코드: %1-%2 (0x%3) - + An error has occurred. Please try again or contact the developer of the software. 오류가 발생했습니다. 다시 시도해 보시거나 해당 소프트웨어 개발자에게 연락하십시오. - + An error occurred on %1 at %2. Please try again or contact the developer of the software. %2에서 %1에 대한 오류가 발생했습니다. 다시 시도해 보시거나 해당 소프트웨어 개발자에게 문의 하십시오. - + An error has occurred. %1 @@ -9138,7 +10289,7 @@ Please try again or contact the developer of the software. QtProfileSelectionDialog - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -9146,7 +10297,7 @@ Please try again or contact the developer of the software. %2 - + Users 사용자 @@ -9239,7 +10390,7 @@ Please try again or contact the developer of the software. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -9248,17 +10399,57 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - - + + OK OK - + Cancel 취소 + + RyujinxDialog + + + Ryujinx Link + + + + + Linking save data to Ryujinx lets both Ryujinx and Eden reference the same save files for your games. + +By selecting "From Eden", previous save data stored in Ryujinx will be deleted, and vice versa for "From Ryujinx". + + + + + From Eden + + + + + From Ryujinx + + + + + Cancel + + + + + Failed to link save data + + + + + OS returned error: %1 + + + SequenceDialog @@ -9268,143 +10459,31 @@ p, li { white-space: pre-wrap; } - WaitTreeCallstack + SetPlayTimeDialog - - Call stack - 콜 스택 - - - - WaitTreeSynchronizationObject - - - [%1] %2 - [%1] %2 + + Set Play Time Data + - - waited by no thread - 스레드를 기다리고 있지 않습니다 - - - - WaitTreeThread - - - runnable - 실행 가능 + + Hours: + - - paused - 일시중지 + + Minutes: + - - sleeping - 수면중 + + Seconds: + - - waiting for IPC reply - IPC 회신을 기다립니다 - - - - waiting for objects - 개체를 기다립니다 - - - - waiting for condition variable - 조건 변수를 기다립니다 - - - - waiting for address arbiter - 주소 결정인을 기다립니다 - - - - waiting for suspend resume - 보류 재개를 기다리는 중 - - - - waiting - 기다리는 중 - - - - initialized - 초기화됨 - - - - terminated - 종료됨 - - - - unknown - 알 수 없음 - - - - PC = 0x%1 LR = 0x%2 - PC = 0x%1 LR = 0x%2 - - - - ideal - 이상적 - - - - core %1 - 코어 %1 - - - - processor = %1 - 프로세서 = %1 - - - - affinity mask = %1 - 선호도 마스크 = %1 - - - - thread id = %1 - 스레드 아이디 = %1 - - - - priority = %1(current) / %2(normal) - 우선순위 = %1(현재) / %2(일반) - - - - last running ticks = %1 - 마지막 실행 틱 = %1 - - - - WaitTreeThreadList - - - waited by thread - 스레드에서 기다림 - - - - WaitTreeWidget - - - &Wait Tree - 대기 트리(&W) + + Total play time reached maximum. + diff --git a/dist/languages/nb.ts b/dist/languages/nb.ts index 5a3e000a21..6c88a222aa 100644 --- a/dist/languages/nb.ts +++ b/dist/languages/nb.ts @@ -1,25 +1,15 @@ - - - + AboutDialog - - About yuzu - Om yuzu - - - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - - About eden - + About Eden + Om Eden - <html><head/><body><p><span style=" font-size:28pt;">eden</span></p></body></html> - + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> + @@ -34,70 +24,50 @@ p, li { white-space: pre-wrap; } hr { height: 1px; border-width: 0; } li.unchecked::marker { content: "\2610"; } li.checked::marker { content: "\2612"; } -</style></head><body style=" font-family:'Adwaita Sans'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> - +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> + - <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">This software should not be used to play games you have not legally obtained.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu er en eksperimentell åpen kildekode emulator til Nintendo Switch lisensiert under GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Denne programvaren skal ikke brukes til å spille spill du ikke eier lovlig.</span></p></body></html> - - - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Nettside</span></a>|<a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Kildekode</span></a>|<a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Bidragsytere</span></a>|<a href="https://github.com/yuzu-emu/yuzu/blob/master/license.txt"><span style=" text-decoration: underline; color:#039be5;">Lisens</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. eden is not affiliated with Nintendo in any way.</span></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; er et varemerke av Nintendo. yuzu er ikke på noen måter affiliert med Nintendo.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. Eden is not affiliated with Nintendo in any way.</span></p></body></html> + CalibrationConfigurationDialog - + Communicating with the server... Kommuniserer med serveren... - + Cancel Avbryt - + Touch the top left corner <br>of your touchpad. Berør øverste venstre hjørne <br>på styreplaten. - + Now touch the bottom right corner <br>of your touchpad. Berør så nederste venstre hjørne <br>på styreplaten. - + Configuration completed! Konfigurasjon ferdig! - + OK OK @@ -112,86 +82,86 @@ p, li { white-space: pre-wrap; } Send Chat Message - Send Chat Melding + Send chatmelding Send Message - Send Melding + Send melding - + Members Medlemmer - + %1 has joined %1 ble med - + %1 has left %1 har forlatt - + %1 has been kicked %1 har blitt sparket - + %1 has been banned %1 har blitt utestengt - + %1 has been unbanned %1 har fått opphevet utestengelsen - + View Profile - Vis Profil + Vis profil - - + + Block Player - Blokker Spiller + Blokkér spiller - + When you block a player, you will no longer receive chat messages from them.<br><br>Are you sure you would like to block %1? - Når du blokkerer en spiller vil du ikke lengere kunne motta chat meldinger fra dem.<br><br>Er du sikker på at du vil blokkere %1? + Når du blokkerer en spiller vil du ikke lengere kunne motta chatmeldinger fra dem.<br><br>Er du sikker på at du vil blokkere %1? - + Kick Spark ut - + Ban Bannlys - + Kick Player - Spark Ut Spiller + Spark ut spiller - + Are you sure you would like to <b>kick</b> %1? Er du sikker på at du vil <b>spake ut</b> %1? - + Ban Player - Bannlys Spiller + Bannlys spiller - + Are you sure you would like to <b>kick and ban</b> %1? This would ban both their forum username and their IP address. @@ -220,23 +190,23 @@ Dette vil bannlyse både deres forum brukernavn og deres IP adresse. Leave Room - Forlat Rommet + Forlat rom ClientRoomWindow - + Connected Tilkoblet - + Disconnected Frakoblet - + %1 - %2 (%3/%4 members) - connected %1 - %2 (%3/%4 medlemmer) - tilkoblet @@ -246,7 +216,7 @@ Dette vil bannlyse både deres forum brukernavn og deres IP adresse. Report Compatibility - Rapporter Kompabilitet + Meld inn kompatibilitet @@ -257,16 +227,12 @@ Dette vil bannlyse både deres forum brukernavn og deres IP adresse. Report Game Compatibility - Rapporter Spillkompabilitet - - - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of yuzu you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected yuzu account</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Om du velger å sende inn et testtilfelle til </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu Kompatibilitetslisten</span></a><span style=" font-size:10pt;">, Vil den følgende informasjonen bli samlet og vist på siden:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Maskinvareinformasjon (CPU / GPU / Operativsystem)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hvilken versjon av yuzu du bruker</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Den tilkoblede yuzu kontoen</li></ul></body></html> + Meld inn spillkompatibilitet <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">eden Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of eden you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected eden account</li></ul></body></html> - + @@ -371,25 +337,25 @@ Dette vil bannlyse både deres forum brukernavn og deres IP adresse. Thank you for your submission! - Tusen takk for ditt bidrag! + Takk for innsendingen din! - + Submitting Sender inn - + Communication error Kommunikasjonsfeil - + An error occurred while sending the Testcase En feil oppstod under sending av testtilfellet - + Next Neste @@ -397,1528 +363,1865 @@ Dette vil bannlyse både deres forum brukernavn og deres IP adresse. ConfigurationShared - + % % - + Amiibo editor - + Amiibo-redigerer - + Controller configuration - + Kontrolleroppsett - + Data erase - + Datasletting - + Error Feil - + Net connect - + Nettverkstilkobling - + Player select - + Spillervalg - + Software keyboard Programvaretastatur - + Mii Edit - + - + Online web - + - + Shop - + - + Photo viewer - + Fotoviser - + Offline web - + - + Login share - + Innloggingsdeling - + Wifi web auth - + - + My page - + Min side - + + Enable Overlay Applet + + + + + Enables Horizon's built-in overlay applet. Press and hold the home button for 1 second to show it. + + + + Output Engine: - Utgangsmotor + Utdatamotor: - + Output Device: - Utgangsenhet: + Utdataenhet: - + Input Device: - Inngangsenhet: + Inndataenhet: - + Mute audio - + Demp lyd - + Volume: Volum: - + Mute audio when in background Demp lyden når yuzu kjører i bakgrunnen - + Multicore CPU Emulation Fjerkjernes prosessoremulering - - This option increases CPU emulation thread use from 1 to the Switch’s maximum of 4. -This is mainly a debug option and shouldn’t be disabled. - + + This option increases CPU emulation thread use from 1 to the maximum of 4. +This is mainly a debug option and shouldn't be disabled. + - + Memory Layout - + Minneoppsett - - Increases the amount of emulated RAM from the stock 4GB of the retail Switch to the developer kit's 8/6GB. -It’s doesn’t improve stability or performance and is intended to let big texture mods fit in emulated RAM. -Enabling it will increase memory use. It is not recommended to enable unless a specific game with a texture mod needs it. - + + Increases the amount of emulated RAM. +Doesn't affect performance/stability but may allow HD texture mods to load. + - + Limit Speed Percent Begrens Farts-Prosent - - Controls the game's maximum rendering speed, but it’s up to each game if it runs faster or not. + + Controls the game's maximum rendering speed, but it's up to each game if it runs faster or not. 200% for a 30 FPS game is 60 FPS, and for a 60 FPS game it will be 120 FPS. Disabling it means unlocking the framerate to the maximum your PC can reach. - + - + + Turbo Speed + Turbohastighet + + + + When the Turbo Speed hotkey is pressed, the speed will be limited to this percentage. + + + + + Slow Speed + Tregmodus-hastighet + + + + When the Slow Speed hotkey is pressed, the speed will be limited to this percentage. + + + + Synchronize Core Speed - + Synkroniser kjernehastighet - - Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). -Compatibility varies by game; many (especially older ones) may not respond well. + + Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). Can help reduce stuttering at lower framerates. - + - + Accuracy: Nøyaktighet: - - This setting controls the accuracy of the emulated CPU. -Don't change this unless you know what you are doing. - + + Change the accuracy of the emulated CPU (for debugging only). + - - + + Backend: - + - - Fast CPU Time - + + CPU Overclock + CPU-overklokking - + Overclocks the emulated CPU to remove some FPS limiters. Weaker CPUs may see reduced performance, and certain games may behave improperly. Use Boost (1700MHz) to run at the Switch's highest native clock, or Fast (2000MHz) to run at 2x clock. - + - + + Custom CPU Ticks + + + + + Set a custom value of CPU ticks. Higher values can increase performance, but may cause deadlocks. A range of 77-21000 is recommended. + + + + + Enable Host MMU Emulation (fastmem) + + + + + This optimization speeds up memory accesses by the guest program. +Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU. +Disabling this forces all memory accesses to use Software MMU Emulation. + + + + Unfuse FMA (improve performance on CPUs without FMA) Del opp FMA (forbedre ytelsen på prosessorer uten FMA) - + This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support. - + - + Faster FRSQRTE and FRECPE Raskere FRSQRTE og FRECPE - + This option improves the speed of some approximate floating-point functions by using less accurate native approximations. - + - + Faster ASIMD instructions (32 bits only) Raskere ASIMD-instruksjoner (kun 32-bit) - + This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes. - + - + Inaccurate NaN handling Unøyaktig NaN-håndtering - + This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions. - + - + Disable address space checks Slå av adresseromskontroller - - This option improves speed by eliminating a safety check before every memory read/write in guest. -Disabling it may allow a game to read/write the emulator's memory. - + + This option improves speed by eliminating a safety check before every memory operation. +Disabling it may allow arbitrary code execution. + - + Ignore global monitor Ignorer global overvåkning - + 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. - + - + API: API: - - Switches between the available graphics APIs. -Vulkan is recommended in most cases. - + + Changes the output graphics API. +Vulkan is recommended. + - + Device: Enhet: - - This setting selects the GPU to use with the Vulkan backend. - + + This setting selects the GPU to use (Vulkan only). + - - Shader Backend: - Shader-backend: - - - - The shader backend to use for the OpenGL renderer. -GLSL is the fastest in performance and the best in rendering accuracy. -GLASM is a deprecated NVIDIA-only backend that offers much better shader building performance at the cost of FPS and rendering accuracy. -SPIR-V compiles the fastest, but yields poor results on most GPU drivers. - - - - + Resolution: Oppløsning: - - Forces the game to render at a different resolution. -Higher resolutions require much more VRAM and bandwidth. -Options lower than 1X can cause rendering issues. - + + Forces to render at a different resolution. +Higher resolutions require more VRAM and bandwidth. +Options lower than 1X can cause artifacts. + - + Window Adapting Filter: Vindustilpasningsfilter: - + FSR Sharpness: - FSR Skarphet: + FSR-skarphet: - - Determines how sharpened the image will look while using FSR’s dynamic contrast. - + + Determines how sharpened the image will look using FSR's dynamic contrast. + - + Anti-Aliasing Method: - Anti-aliasing–metode: + Antialiasingmetode: - + The anti-aliasing method to use. SMAA offers the best quality. -FXAA has a lower performance impact and can produce a better and more stable picture under very low resolutions. - +FXAA can produce a more stable picture in lower resolutions. + - + Fullscreen Mode: Fullskjermmodus: - + The method used to render the window in fullscreen. Borderless offers the best compatibility with the on-screen keyboard that some games request for input. Exclusive fullscreen may offer better performance and better Freesync/Gsync support. - + - + Aspect Ratio: - Størrelsesforhold: + Bildeforhold: - - Stretches the game to fit the specified aspect ratio. -Switch games only support 16:9, so custom game mods are required to get other ratios. + + Stretches the renderer to fit the specified aspect ratio. +Most games only support 16:9, so modifications are required to get other ratios. Also controls the aspect ratio of captured screenshots. - + - - Use disk pipeline cache - Bruk diskens rørledningsmellomlagring + + Use persistent pipeline cache + - + Allows saving shaders to storage for faster loading on following game boots. Disabling it is only intended for debugging. - + - - Optimize SPIRV output shader - + + Optimize SPIRV output + Optimaliser SPIRV-utdata - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. This feature is experimental. - + - - Use asynchronous GPU emulation - Bruk asynkron GPU-emulering - - - - Uses an extra CPU thread for rendering. -This option should always remain enabled. - - - - + NVDEC emulation: NVDEC-emulering: - + Specifies how videos should be decoded. It can either use the CPU or the GPU for decoding, or perform no decoding at all (black screen on videos). In most cases, GPU decoding provides the best performance. - + - + ASTC Decoding Method: - + - + This option controls how ASTC textures should be decoded. -CPU: Use the CPU for decoding, slowest but safest method. -GPU: Use the GPU's compute shaders to decode ASTC textures, recommended for most games and users. -CPU Asynchronously: Use the CPU to decode ASTC textures as they arrive. Completely eliminates ASTC decoding -stuttering at the cost of rendering issues while the texture is being decoded. - +CPU: Use the CPU for decoding. +GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). +CPU Asynchronously: Use the CPU to decode ASTC textures on demand. EliminatesASTC decoding +stuttering but may present artifacts. + - + ASTC Recompression Method: - + - - Almost all desktop and laptop dedicated GPUs lack support for ASTC textures, forcing the emulator to decompress to an intermediate format any card supports, RGBA8. -This option recompresses RGBA8 to either the BC1 or BC3 format, saving VRAM but negatively affecting image quality. - + + Most GPUs lack support for ASTC textures and must decompress to anintermediate format: RGBA8. +BC1/BC3: The intermediate format will be recompressed to BC1 or BC3 format, + saving VRAM but degrading image quality. + - + + Frame Pacing Mode (Vulkan only) + + + + + Controls how the emulator manages frame pacing to reduce stuttering and make the frame rate smoother and more consistent. + + + + VRAM Usage Mode: - + - - Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. Has no effect on integrated graphics. Aggressive mode may severely impact the performance of other applications such as recording software. - + + Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. +Aggressive mode may impact performance of other applications such as recording software. + - + + Skip CPU Inner Invalidation + + + + + Skips certain cache invalidations during memory updates, reducing CPU usage and improving latency. This may cause soft-crashes. + + + + VSync Mode: - VSync Modus: + VSync-modus: - + FIFO (VSync) does not drop frames or exhibit tearing but is limited by the screen refresh rate. -FIFO Relaxed is similar to FIFO but allows tearing as it recovers from a slow down. +FIFO Relaxed 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. - FIFO (VSync) slipper ikke bilder eller viser tearing, men er begrenset av skjermoppdateringsfrekvensen. -FIFO Relaxed ligner på FIFO, men tillater riving etter hvert som den kommer seg etter en oppbremsing. -Mailbox kan ha lavere ventetid enn FIFO og river ikke, men kan slippe rammer. -Umiddelbar (ingen synkronisering) presenterer bare det som er tilgjengelig og kan vise riving. +Immediate (no synchronization) presents whatever is available and can exhibit tearing. + - + + Sync Memory Operations + + + + + Ensures data consistency between compute and memory operations. +This option fixes issues in games, but may degrade performance. +Unreal Engine 4 games often see the most significant changes thereof. + + + + Enable asynchronous presentation (Vulkan only) Aktiver asynkron presentasjon (kun Vulkan) - + Slightly improves performance by moving presentation to a separate CPU thread. - + - + Force maximum clocks (Vulkan only) Tving maksikal klokkehastighet (kun Vulkan) - + Runs work in the background while waiting for graphics commands to keep the GPU from lowering its clock speed. Kjører arbeid i bakgrunnen mens den venter på grafikkommandoer for å forhindre at GPU-en senker klokkehastigheten. - + Anisotropic Filtering: Anisotropisk filtrering: - + Controls the quality of texture rendering at oblique angles. -It’s a light setting and safe to set at 16x on most GPUs. - +Safe to set at 16x on most GPUs. + - - Accuracy Level: - Nøyaktighetsnivå: + + GPU Mode: + GPU-modus: - - GPU emulation accuracy. -Most games render fine with Normal, but High is still required for some. -Particles tend to only render correctly with High accuracy. -Extreme should only be used for debugging. -This option can be changed while playing. -Some games may require booting on high to render properly. - + + Controls the GPU emulation mode. +Most games render fine with Fast or Balanced modes, but Accurate is still required for some. +Particles tend to only render correctly with Accurate mode. + - - Use asynchronous shader building (Hack) - Bruk asynkron shader-bygging (hack) + + DMA Accuracy: + DMA-nøyaktighet: - - Enables asynchronous shader compilation, which may reduce shader stutter. -This feature is experimental. - + + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. + - Use Fast GPU Time (Hack) - Bruk Rask GPU-Tid (Hack) + + Enable asynchronous shader compilation + - Enables Fast GPU Time. This option will force most games to run at their highest native resolution. - Aktiverer rask GPU-tid. Dette alternativet vil tvinge de fleste spill til å kjøre med sin høyeste opprinnelige oppløsning. + + May reduce shader stutter. + - + + Fast GPU Time + + + + + Overclocks the emulated GPU to increase dynamic resolution and render distance. +Use 256 for maximal performance and 512 for maximal graphics fidelity. + + + + + GPU Unswizzle + + + + + Accelerates BCn 3D texture decoding using GPU compute. +Disable if experiencing crashes or graphical glitches. + + + + + GPU Unswizzle Max Texture Size + + + + + Sets the maximum size (MiB) for GPU-based texture unswizzling. +While the GPU is faster for medium and large textures, the CPU may be more efficient for very small ones. +Adjust this to find the balance between GPU acceleration and CPU overhead. + + + + + GPU Unswizzle Stream Size + + + + + Sets the maximum amount of texture data (in MiB) processed per frame. +Higher values can reduce stutter during texture loading but may impact frame consistency. + + + + + GPU Unswizzle Chunk Size + + + + + Determines the number of depth slices processed in a single dispatch. +Increasing this can improve throughput on high-end GPUs but may cause TDR or driver timeouts on weaker hardware. + + + + Use Vulkan pipeline cache - Bruk Vulkan rørledningsbuffer + Bruk Vulkan-rørledningsbuffer - + Enables GPU vendor-specific pipeline cache. This option can improve shader loading time significantly in cases where the Vulkan driver does not store pipeline cache files internally. - + - + Enable Compute Pipelines (Intel Vulkan Only) - + - - Enable compute pipelines, required by some games. -This setting only exists for Intel proprietary drivers, and may crash if enabled. + + 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. - + - + Enable Reactive Flushing Aktiver Reaktiv Tømming - + Uses reactive flushing instead of predictive flushing, allowing more accurate memory syncing. - + - + Sync to framerate of video playback Synkroniser med bildefrekvensen for videoavspilling - + Run the game at normal speed during video playback, even when the framerate is unlocked. Kjør spillet i normal hastighet under videoavspilling, selv når bildefrekvensen er låst opp. - + Barrier feedback loops Tilbakekoblingssløyfer for barrierer - + Improves rendering of transparency effects in specific games. Forbedrer gjengivelsen av transparenseffekter i spesifikke spill. - + + Enable buffer history + + + + + Enables access to previous buffer states. +This option may improve rendering quality and performance consistency in some games. + + + + + Fix bloom effects + + + + + Removes bloom in Burnout. + + + + + Enable Legacy Rescale Pass + + + + + May fix rescale issues in some games by relying on behavior from the previous implementation. +Legacy behavior workaround that fixes line artifacts on AMD and Intel GPUs, and grey texture flicker on Nvidia GPUs in Luigis Mansion 3. + + + + + Extended Dynamic State + + + + + Controls the number of features that can be used in Extended Dynamic State. +Higher states allow for more features and can increase performance, but may cause additional graphical issues. + + + + + Vertex Input Dynamic State + + + + + Enables vertex input dynamic state feature for better quality and performance. + + + + + Sample Shading + + + + + Allows the fragment shader to execute per sample in a multi-sampled fragment instead of once per fragment. Improves graphics quality at the cost of performance. +Higher values improve quality but degrade performance. + + + + RNG Seed - Frø For Tilfeldig Nummergenerering + RNG-frø - + Controls the seed of the random number generator. -Mainly used for speedrunning purposes. - +Mainly used for speedrunning. + - + Device Name Enhetsnavn - - The name of the emulated Switch. - + + The name of the console. + Konsollens navn. - + Custom RTC Date: - + Selvvalgt RTC-dato: - - This option allows to change the emulated clock of the Switch. + + This option allows to change the clock of the console. Can be used to manipulate time in games. - + - + + The number of seconds from the current unix time + + + + Language: - + Språk: - - Note: this can be overridden when region setting is auto-select - NB: dette kan bli overstyrt når regionsinnstillingen er satt til auto-valg + + This option can be overridden when region setting is auto-select + - + Region: Region: - - The region of the emulated Switch. - + + The region of the console. + Konsollens region. - + Time Zone: Tidssone: - - The time zone of the emulated Switch. - + + The time zone of the console. + Konsollens tidssone. - + Sound Output Mode: - Lydutgangsmodus: + Lydutdatamodus: - + Console Mode: - + Konsollmodus: - - Selects if the console is emulated in Docked or Handheld mode. + + Selects if the console is in Docked or Handheld mode. Games will change their resolution, details and supported controllers and depending on this setting. Setting to Handheld can help improve performance for low end systems. - + - - Prompt for user on game boot - Spør om bruker når et spill starter + + Unit Serial + - - Pause emulation when in background - Paus emulering når yuzu kjører i bakgrunnen + + Battery Serial + - - Fast GPU Time (Hack) - + + Debug knobs + - - Overclocks the emulated GPU to increase dynamic resolution and render distance. -Use 128 for maximal performance and 512 for maximal graphics fidelity. - + + Prompt for user profile on boot + - - Extended Dynamic State - + + Useful if multiple people use the same PC. + - - Enables the VkExtendedDynamicState* extensions. -Higher dynamic states will generally improve performance, but may cause issues on certain games or devices. - + + Pause when not in focus + - - Provoking Vertex - + + Pauses emulation when focusing on other windows. + - - Improves lighting and vertex handling in certain games. -Only Vulkan 1.0+ devices support this extension. - - - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - - Ask to select a user profile on each boot, useful if multiple people use eden on the same PC. - - - - - This setting pauses eden when focusing other windows. - - - - + Confirm before stopping emulation - + Bekreft før stopping av emulering - - This setting overrides game prompts asking to confirm stopping the game. + + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - + - + Hide mouse on inactivity Gjem mus under inaktivitet - - This setting hides the mouse after 2.5s of inactivity. - + + Hides the mouse after 2.5s of inactivity. + - + Disable controller applet Deaktiver kontroller-appleten - - Forcibly disables the use of the controller applet by guests. -When a guest attempts to open the controller applet, it is immediately closed. - + + Forcibly disables the use of the controller applet in emulated programs. +When a program attempts to open the controller applet, it is immediately closed. + - + Check for updates - + Se etter oppdateringer - + Whether or not to check for updates upon startup. - + - + Enable Gamemode - + - + + Force X11 as Graphics Backend + + + + Custom frontend - + - + Real applet - + - + Never - + Aldri - + On Load - + - + Always - + Alltid - + CPU CPU - + GPU - + Skjermkort - + CPU Asynchronous - + - + Uncompressed (Best quality) - Ukomprimert (beste kvalitet) + Ukomprimert (Best kvalitet) - + BC1 (Low quality) BC1 (Lav kvalitet) - + BC3 (Medium quality) - BC3 (Medium kvalitet) + BC3 (Middels kvalitet) - - Conservative - - - - - Aggressive - - - - - OpenGL - OpenGL - - - - Vulkan - Vulkan - - - - Null - Null - - - - GLSL - GLSL - - - - GLASM (Assembly Shaders, NVIDIA Only) - GLASM (assembly-shader-e, kun med NVIDIA) - - - - SPIR-V (Experimental, AMD/Mesa Only) - - - - - Normal - Normal - - - - High - Høy - - - - Extreme - Ekstrem - - - + + Auto Auto - + + 30 FPS + 30 FPS + + + + 60 FPS + 60 FPS + + + + 90 FPS + 90 FPS + + + + 120 FPS + 120 FPS + + + + Conservative + + + + + Aggressive + Aggressiv + + + + Vulkan + Vulkan + + + + OpenGL GLSL + OpenGL GLSL + + + + OpenGL GLASM (Assembly Shaders, NVIDIA Only) + + + + + OpenGL SPIR-V (Experimental, AMD/Mesa Only) + OpenGL SPIR-V (eksperimentelt, kun AMD/Mesa) + + + + Null + Null + + + + Fast + Rask + + + + Balanced + Balansert + + + + Accurate Nøyaktig - - Unsafe - Utrygt - - - - Paranoid (disables most optimizations) - Paranoid (deaktiverer de fleste optimaliseringer) - - - - Dynarmic - - - - - NCE - - - - - Borderless Windowed - Rammeløst vindu - - - - Exclusive Fullscreen - Eksklusiv fullskjerm - - - - No Video Output - Ingen videoutdata - - - - CPU Video Decoding - Prosessorvideodekoding - - - - GPU Video Decoding (Default) - GPU-videodekoding (standard) - - - - 0.25X (180p/270p) [EXPERIMENTAL] - - - - - 0.5X (360p/540p) [EXPERIMENTAL] - - - - - 0.75X (540p/810p) [EXPERIMENTAL] - 0.75X (540p/810p) [EKSPERIMENTELL] - - - - 1X (720p/1080p) - 1X (720p/1080p) - - - - 1.5X (1080p/1620p) [EXPERIMENTAL] - 1.5X (1080p/1620p) [EXPERIMENTELL] - - - - 2X (1440p/2160p) - 2X (1440p/2160p) - - - - 3X (2160p/3240p) - 3X (2160p/3240p) - - - - 4X (2880p/4320p) - 4X (2880p/4320p) - - - - 5X (3600p/5400p) - 5X (3600p/5400p) - - - - 6X (4320p/6480p) - 6X (4320p/6480p) - - - - 7X (5040p/7560p) - 7X (5040p/7560p) - - - - 8X (5760p/8640p) - 8X (5760p/8640p) - - - - Nearest Neighbor - Nærmeste nabo - - - - Bilinear - Bilineær - - - - Bicubic - Bikubisk - - - - Gaussian - Gaussisk - - - - ScaleForce - ScaleForce - - - - AMD FidelityFX™️ Super Resolution - AMD FidelityFX™️ Super Resolution - - - - Area - - - - - None - Ingen - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Default (16:9) - Standard (16:9) - - - - Force 4:3 - Tving 4:3 - - - - Force 21:9 - Tving 21:9 - - - - Force 16:10 - Tving 16:10 - - - - Stretch to Window - Strekk til Vindu - - - - Automatic - Automatisk - - - + + Default Standard - + + Unsafe (fast) + Utrygg (raskt) + + + + Safe (stable) + Trygg (stabil) + + + + Unsafe + Utrygt + + + + Paranoid (disables most optimizations) + Paranoid (deaktiverer de fleste optimaliseringer) + + + + Debugging + + + + + Dynarmic + + + + + NCE + NCE + + + + Borderless Windowed + Rammeløst vindu + + + + Exclusive Fullscreen + Eksklusiv fullskjerm + + + + No Video Output + Ingen videoutdata + + + + CPU Video Decoding + CPU-videodekoding + + + + GPU Video Decoding (Default) + GPU-videodekoding (Standard) + + + + 0.25X (180p/270p) [EXPERIMENTAL] + 0,25× (180p/270p) [EKSPERIMENTELL] + + + + 0.5X (360p/540p) [EXPERIMENTAL] + 0,5× (360p/540p) [EKSPERIMENTELL] + + + + 0.75X (540p/810p) [EXPERIMENTAL] + 0,75× (540p/810p) [EKSPERIMENTELL] + + + + 1X (720p/1080p) + 1× (720p/1080p) + + + + 1.25X (900p/1350p) [EXPERIMENTAL] + 1,25× (900p/1350p) [EKSPERIMENTELL] + + + + 1.5X (1080p/1620p) [EXPERIMENTAL] + 1,5× (1080p/1620p) [EKSPERIMENTELL] + + + + 2X (1440p/2160p) + 2× (1440p/2160p) + + + + 3X (2160p/3240p) + 3× (2160p/3240p) + + + + 4X (2880p/4320p) + 4× (2880p/4320p) + + + + 5X (3600p/5400p) + 5× (3600p/5400p) + + + + 6X (4320p/6480p) + 6× (4320p/6480p) + + + + 7X (5040p/7560p) + 7× (5040p/7560p) + + + + 8X (5760p/8640p) + 8× (5760p/8640p) + + + + Nearest Neighbor + Nærmeste nabo + + + + Bilinear + Bilineær + + + + Bicubic + Bikubisk + + + + Gaussian + Gaussisk + + + + Lanczos + Lanczos + + + + ScaleForce + ScaleForce + + + + AMD FidelityFX Super Resolution + AMD FidelityFX Super Resolution + + + + Area + Område + + + + MMPX + MMPX + + + + Zero-Tangent + + + + + B-Spline + B-Spline + + + + Mitchell + Mitchell + + + + Spline-1 + Spline-1 + + + + + None + Ingen + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Default (16:9) + Standard (16:9) + + + + Force 4:3 + Tving 4:3 + + + + Force 21:9 + Tving 21:9 + + + + Force 16:10 + Tving 16:10 + + + + Stretch to Window + Strekk til vinduet + + + + Automatic + Automatisk + + + 2x 2x - + 4x 4x - + 8x 8x - + 16x 16x - + + 32x + 32x + + + + 64x + 64x + + + Japanese (日本語) Japansk (日本語) - + American English - Amerikans Engelsk + Amerikansk engelsk - + French (français) Fransk (français) - + German (Deutsch) Tysk (Deutsch) - + Italian (italiano) Italiensk (italiano) - + Spanish (español) Spansk (español) - + Chinese Kinesisk - + Korean (한국어) Koreansk (한국어) - + Dutch (Nederlands) Nederlandsk (Nederlands) - + Portuguese (português) Portugisisk (português) - + Russian (Русский) Russisk (Русский) - + Taiwanese Taiwansk - + British English - Britisk Engelsk + Britisk engelsk - + Canadian French - Kanadisk Fransk + Kanadisk fransk - + Latin American Spanish - Latinamerikansk Spansk + Latinamerikansk spansk - + Simplified Chinese - Forenklet Kinesisk + Forenklet kinesisk - + Traditional Chinese (正體中文) - Tradisjonell Kinesisk (正體中文) + Tradisjonell kinesisk (正體中文) - + Brazilian Portuguese (português do Brasil) Brasiliansk portugisisk (português do Brasil) - - + + Polish (polska) + Polsk (polska) + + + + Thai (แบบไทย) + Thai (แบบไทย) + + + + Japan Japan - + USA USA - + Europe Europa - + Australia Australia - + China - Kina + Folkerepublikken Kina - + Korea Korea - + Taiwan - Taiwan + Taiwan (Republikken Kina) - + Auto (%1) Auto select time zone Auto (%1) - + Default (%1) Default time zone - Normalverdi (%1) + Standard (%1) - + CET - CET + Sentraleuropeisk tid - + CST6CDT CST6CDT - + Cuba Cuba - + EET - EET + Østeuropeisk tid - + Egypt Egypt - + Eire - Eire + Republikken Irland - + EST EST - + EST5EDT EST5EDT - + GB - GB + Storbritannia - + GB-Eire GB-Eire - + GMT GMT - + GMT+0 GMT+0 - + GMT-0 GMT-0 - + GMT0 GMT0 - + Greenwich Greenwich - + Hongkong Hongkong - + HST HST - + Iceland Island - + Iran Iran - + Israel Israel - + Jamaica Jamaica - + Kwajalein Kwajalein - + Libya Libya - + MET MET - + MST MST - + MST7MDT MST7MDT - + Navajo Navajo - + NZ NZ - + NZ-CHAT NZ-CHAT - + Poland Polen - + Portugal Portugal - + PRC - PRC + Folkerepublikken Kina - + PST8PDT PST8PDT - + ROC - ROC + Taiwan (Republikken Kina) - + ROK - ROK + Sør-Korea - + Singapore Singapore - + Turkey Tyrkia - + UCT UCT - + Universal Universalt - + UTC UTC - + W-SU W-SU - + WET WET - + Zulu Zulu - + Mono Mono - + Stereo Stereo - + Surround Surround - + 4GB DRAM (Default) - + 4 GB DRAM (Standard) - + 6GB DRAM (Unsafe) - + 6 GB DRAM (Utrygt) - + 8GB DRAM - + 8 GB DRAM - + 10GB DRAM (Unsafe) - + 10 GB DRAM (Utrygt) - + 12GB DRAM (Unsafe) - + 12 GB DRAM (Utrygt) - - Low (128) - - - - - Medium (256) - - - - - High (512) - - - - + Docked - Dokket + I dokking - + Handheld Håndholdt - + + + Off + Av + + + Boost (1700MHz) - + Boost (1700 MHz) - + Fast (2000MHz) - + Rask (2000 MHz) - + Always ask (Default) - + Spør alltid (Standard) - + Only if game specifies not to stop - + - + Never ask - + Aldri spør + + + + + Medium (256) + Middels (256) + + + + + High (512) + Høy (512) + + + + Very Small (16 MB) + Veldig liten (16 MB) + + + + Small (32 MB) + Liten (32 MB) + + + + Normal (128 MB) + Normal (128 MB) + + + + Large (256 MB) + Stor (256 MB) + + + + Very Large (512 MB) + Veldig stor (512 MB) + + + + Very Low (4 MB) + Veldig lav (4 MB) + + + + Low (8 MB) + Lav (8 MB) + + + + Normal (16 MB) + Normal (16 MB) + + + + Medium (32 MB) + Middels (32 MB) + + + + High (64 MB) + Høy (64 MB) + + + + Very Low (32) + Svært lav (32) + + + + Low (64) + Lav (64) + + + + Normal (128) + Normal (128) + + + + Disabled + Skrudd av + + + + ExtendedDynamicState 1 + + + + + ExtendedDynamicState 2 + + + + + ExtendedDynamicState 3 + + + + + Tree View + + + + + Grid View + @@ -1931,12 +2234,12 @@ When a guest attempts to open the controller applet, it is immediately closed. Applets - + Applet mode preference - + @@ -1953,12 +2256,12 @@ When a guest attempts to open the controller applet, it is immediately closed. Configure Infrared Camera - Konfigurer Infrarødt Kamera + Sett opp infrarødt kamera Select where the image of the emulated camera comes from. It may be a virtual camera or a real camera. - Velg hvor bildet for the emulerte kameraet kommer fra. Det kan være et virituelt kamera eller et ekte kamera. + Velg hvor bildet for the emulerte kameraet kommer fra. Det kan være et virtuelt kamera eller et ekte kamera. @@ -1978,7 +2281,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Resolution: 320*240 - Oppløsning: 320*240 + Oppløsning: 320×240 @@ -1988,10 +2291,10 @@ When a guest attempts to open the controller applet, it is immediately closed. Restore Defaults - Gjenopprett Standardverdier + Gjenopprett standarder - + Auto Auto @@ -2011,7 +2314,7 @@ When a guest attempts to open the controller applet, it is immediately closed. General - Generelt + Generell @@ -2021,7 +2324,7 @@ When a guest attempts to open the controller applet, it is immediately closed. CPU Backend - + @@ -2178,7 +2481,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all memory accesses to use Software MMU Emulation.</div> @@ -2196,7 +2499,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up exclusive memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all exclusive memory accesses to use Software MMU Emulation.</div> @@ -2230,7 +2533,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up memory accesses by allowing invalid memory accesses to succeed.</div> - <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> + <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> <div style="white-space: nowrap">Denne optimaliseringen gir raskere minnetilgang ved å la ugyldige minnetilganger lykkes.</div> @@ -2271,34 +2574,34 @@ When a guest attempts to open the controller applet, it is immediately closed.Loggføring - - Open Log Location - Åpne Logg-Plassering - - - + Global Log Filter Global Loggfilter - + When checked, the max size of the log increases from 100 MB to 1 GB Når dette er på øker maksstørrelsen til loggen fra 100 MB til 1 GB - + Enable Extended Logging** Slå på utvidet loggføring** - + Show Log in Console Vis logg i konsollen + + + Open Log Location + Åpne loggplassering + Homebrew - Homebrew + Hjemmebrent @@ -2348,7 +2651,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Dump Game Shaders - Dump Spill Shadere + Dump spillskyggelegginger @@ -2398,12 +2701,12 @@ When a guest attempts to open the controller applet, it is immediately closed. <html><head/><body><p>When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.</p></body></html> - + Disable Buffer Reorder - + @@ -2418,7 +2721,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Perform Startup Vulkan Check - Utfør Vulkan-Sjekk Ved Oppstart + Utfør Vulkan-sjekk ved oppstart @@ -2428,31 +2731,22 @@ When a guest attempts to open the controller applet, it is immediately closed. Enable All Controller Types - Aktiver Alle Kontrollertyper + Skru på alle kontrollertyper - - Censor username in logs - - - - - **This will be reset automatically when eden closes. - - - - Enable Auto-Stub** - Aktiver Auto-Stub** + + Enable Auto-Stub + Kiosk (Quest) Mode - Kiosk (Quest) Modus + Kioskmodus (Quest-modus) - Enable CPU Debugging - Slå på prosessorfeilsøking + Use dev.keys + @@ -2465,43 +2759,74 @@ When a guest attempts to open the controller applet, it is immediately closed.Feilsøking - - Flush log output on each line - + + Battery Serial: + - - Enable FS Access Log - Aktiver FS Tilgangs Logg + + Bitmask for quick development toggles + - + + Set debug knobs (bitmask) + + + + + 16-bit debug knob set for quick development toggles + + + + + (bitmask) + + + + + Debug Knobs: + + + + + Unit Serial: + + + + Enable this to output the latest generated audio command list to the console. Only affects games using the audio renderer. Aktiver dette for å sende den siste genererte lydkommandolisten til konsollen. Påvirker bare spill som bruker lydrenderen. - - Enable Auto-Stub - - - - + Dump Audio Commands To Console** - Dump Lydkommandoer Til Konsollen** + Dump lydkommandoer til konsollen** - + + Flush log output on each line + + + + + Enable FS Access Log + Skru på FS-tilgangslogg + + + Enable Verbose Reporting Services** Aktiver Verbose Reporting Services** - **This will be reset automatically when yuzu closes. - **Dette blir automatisk tilbakestilt når yuzu lukkes. + + Censor username in logs + - - Web applet not compiled - Web-applet ikke kompilert + + **This will be reset automatically when Eden closes. + @@ -2514,12 +2839,12 @@ When a guest attempts to open the controller applet, it is immediately closed. Clear - Fjern + Tøm Defaults - Standardverdier + Standardinnstillinger @@ -2543,14 +2868,10 @@ When a guest attempts to open the controller applet, it is immediately closed. ConfigureDialog - - yuzu Configuration - yuzu Konfigurasjon - - eden Configuration - + Eden Configuration + Eden-oppsett @@ -2558,88 +2879,88 @@ When a guest attempts to open the controller applet, it is immediately closed.Noen innstillinger er bare tilgjengelige når spillet ikke er i gang. - + Applets - + - - + + Audio Lyd - - + + CPU CPU - + Debug Feilsøk - + Filesystem Filsystem - - + + General - Generelt + Generell - - + + Graphics Grafikk - + GraphicsAdvanced AvnsertGrafikk - - GraphicsExtensions - + + GraphicsExtra + - + Hotkeys Hurtigtaster - - + + Controls Kontrollere - + Profiles Profiler - + Network Nettverk - - + + System System - + Game List - Spill Liste + Spilliste - + Web Nett @@ -2659,7 +2980,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Storage Directories - Lagringsmappe + Lagringsmapper @@ -2669,119 +2990,196 @@ When a guest attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... SD Card - SD Kort + SD-kort - + + Save Data + + + + Gamecard Spillkort - - - Path - Sti - - - - Inserted - Nøkkel ikke bekreftet - - Current Game - Nåværende Spill + Path + Filbane + + + + Inserted + Satt inn + Current Game + Nåværende spill + + + Patch Manager Oppdateringsbehandler - + Dump Decompressed NSOs - Dump Dekomprimert NSOs + Dump dekomprimerte NSO-er - + Dump ExeFS Dump ExeFS - + Mod Load Root Modifikasjonlastingsopprinnelsen - + Dump Root Dump rot - + Caching Mellomlagring - + Cache Game List Metadata - Mellomlagre Spillistens Metadata + Mellomlagre spillistens metadata - - - - + Reset Metadata Cache - Tilbakestill Mellomlagringen for Metadata + Tilbakestill mellomlageret for metadata - + Select Emulated NAND Directory... Velg Emulert NAND-Mappe... - + Select Emulated SD Directory... Velg Emulert SD-Mappe... - + + + Select Save Data Directory... + + + + Select Gamecard Path... Velg Spillkortbane... - + Select Dump Directory... - Velg Dump-Katalog + Velg dump-mappe... - + Select Mod Load Directory... - Velg Mod-Lastingsmappe... + Velg modinnlastingsmappe ... - - The metadata cache is already empty. - Mellomlagringen for metadata er allerede tom. + + Save Data Directory + - - The operation completed successfully. - Operasjonen ble fullført vellykket. + + Choose an action for the save data directory: + - - The metadata cache couldn't be deleted. It might be in use or non-existent. - Mellomlagringen for metadata kunne ikke slettes. Den kan være i bruk eller ikke-eksisterende. + + Set Custom Path + + + + + Reset to NAND + + + + + Save data exists in both the old and new locations. + +Old: %1 +New: %2 + +Would you like to migrate saves from the old location? +WARNING: This will overwrite any conflicting saves in the new location! + + + + + Would you like to migrate your save data to the new location? + +From: %1 +To: %2 + + + + + Migrate Save Data + + + + + Migrating save data... + + + + + Cancel + Avbryt + + + + + Migration Failed + + + + + Failed to create destination directory. + + + + + Failed to migrate save data: +%1 + + + + + Migration Complete + + + + + Save data has been migrated successfully. + +Would you like to delete the old save data? + @@ -2795,32 +3193,58 @@ When a guest attempts to open the controller applet, it is immediately closed. General - Generelt + Generell - Linux - + External Content + Eksternt innhold - + + Add directories to scan for DLCs and Updates without installing to NAND + + + + + Add Directory + Legg til mappe + + + + Remove Selected + + + + Reset All Settings Tilbakestill alle innstillinger - yuzu - yuzu + + Eden + Eden - - eden - - - - + This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed? Dette tilbakestiller alle innstillinger og fjerner alle spillinnstillinger. Spillmapper, profiler og inndataprofiler blir ikke slettet. Fortsett? + + + Select External Content Directory... + + + + + Directory Already Added + + + + + This directory is already in the list. + + ConfigureGraphics @@ -2837,7 +3261,7 @@ When a guest attempts to open the controller applet, it is immediately closed. API Settings - API-Innstillinger + API-innstillinger @@ -2850,33 +3274,33 @@ When a guest attempts to open the controller applet, it is immediately closed.Bakgrunnsfarge: - + % FSR sharpening percentage (e.g. 50%) % - + Off Av - + VSync Off VSync Av - + Recommended Anbefalt - + On - + VSync On VSync På @@ -2894,9 +3318,9 @@ When a guest attempts to open the controller applet, it is immediately closed.Avansert - + Advanced Graphics Settings - Avanserte Grafikkinnstillinger + Avanserte grafikkinnstillinger @@ -2904,24 +3328,38 @@ When a guest attempts to open the controller applet, it is immediately closed. Form - Skjema + - Extensions - + Extras + - - Vulkan Extension Settings - + + Hacks + - - While it's recommended to use state 3, some games may perform better on lower states. Setting to 0 (disabled) may also break games. -If your GPU is older (i.e. RX570/580 or older), it may not support these features. If this is the case, set the slider to 0 and uncheck all boxes. -These settings are experimental, and may cause black screens. If your games fail to boot or are stuck on a black screen, change these settings around. - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + Vulkan-utvidelser + + + + % + Sample Shading percentage (e.g. 50%) + + + + + Extended Dynamic State is disabled on macOS due to MoltenVK compatibility issues that cause black screens. + @@ -2944,83 +3382,83 @@ These settings are experimental, and may cause black screens. If your games fail Clear All - Fjern Alle + Tøm alle Restore Defaults - Gjenopprett Standardverdier + Gjenopprett standarder - + Action Handling - + Hotkey Hurtigtast - + Controller Hotkey Kontrollerhurtigtast - - - + + + Conflicting Key Sequence - Mostridende tastesekvens + Motstridende tastesekvens - - + + The entered key sequence is already assigned to: %1 Den inntastede tastesekvensen er allerede tildelt til: %1 - + [waiting] [venter] - + Invalid Ugyldig - + Invalid hotkey settings - + - + An error occurred. Please report this issue on github. - + - + Restore Default - Gjenopprett Standardverdi + Gjenopprett standarder - + Clear - Fjern + Tøm - + Conflicting Button Sequence Motstridende knappesekvens - + The default button sequence is already assigned to: %1 Standardknappesekvensen er allerede tildelt til: %1 - + The default key sequence is already assigned to: %1 Standardtastesekvensen er allerede tildelt til: %1 @@ -3089,12 +3527,12 @@ These settings are experimental, and may cause black screens. If your games fail Console Mode - Konsollmodus + Bærbar modus Docked - Dokket + I dokking @@ -3104,13 +3542,13 @@ These settings are experimental, and may cause black screens. If your games fail Vibration - Vibrasjon + Vibrering Configure - Konfigurer + Sett opp @@ -3170,12 +3608,12 @@ These settings are experimental, and may cause black screens. If your games fail Defaults - Standardverdier + Standardinnstillinger Clear - Fjern + Tøm @@ -3183,12 +3621,12 @@ These settings are experimental, and may cause black screens. If your games fail Configure Input - Konfigurer Inngang + Sett opp inndata Joycon Colors - Joycon-Farger + Joycon-farger @@ -3205,7 +3643,7 @@ These settings are experimental, and may cause black screens. If your games fail L Body - V Kropp + L Kropp @@ -3217,7 +3655,7 @@ These settings are experimental, and may cause black screens. If your games fail L Button - V Knapp + L-knapp @@ -3229,7 +3667,7 @@ These settings are experimental, and may cause black screens. If your games fail R Body - H Kropp + R Kropp @@ -3241,7 +3679,7 @@ These settings are experimental, and may cause black screens. If your games fail R Button - H Knapp + R-knapp @@ -3296,7 +3734,7 @@ These settings are experimental, and may cause black screens. If your games fail Touchscreen - Touch-skjerm + Berøringsskjerm @@ -3314,7 +3752,7 @@ These settings are experimental, and may cause black screens. If your games fail Configure - Konfigurer + Sett opp @@ -3324,7 +3762,7 @@ These settings are experimental, and may cause black screens. If your games fail Infrared Camera - Infrarødt Kamera + Infrarødt kamera @@ -3340,12 +3778,8 @@ These settings are experimental, and may cause black screens. If your games fail - Requires restarting eden - - - - Requires restarting yuzu - Krever omstart av yuzu + Requires restarting Eden + @@ -3365,12 +3799,12 @@ These settings are experimental, and may cause black screens. If your games fail Enable direct JoyCon driver - Aktiver driver for direkte JoyCon tilkobling + Skru på driver for direkte JoyCon-tilkobling Enable direct Pro Controller driver [EXPERIMENTAL] - Aktiver driver for direkte Pro Controller tilkobling (EKSPERIMENTELL) + Skru på driver for direkte Pro Controller-tilkobling [EKSPERIMENTELL] @@ -3385,7 +3819,7 @@ These settings are experimental, and may cause black screens. If your games fail Motion / Touch - Bevegelse / Touch + Bevegelse / Berøring @@ -3408,12 +3842,12 @@ These settings are experimental, and may cause black screens. If your games fail Player 1 Profile - Spiller 1 Profil + Spiller 1 profil Player 2 Profile - Spiller 2 Profil + Spiller 2 profil @@ -3461,12 +3895,12 @@ These settings are experimental, and may cause black screens. If your games fail Configure Input - Konfigurer Inngang + Sett opp inndata Connect Controller - Tilkoble Kontroller + Koble til kontroller @@ -3495,30 +3929,19 @@ These settings are experimental, and may cause black screens. If your games fail - + Left Stick - Venstre Pinne + Venstre styrepinne - - - - - - - Up - Opp - - - - - - - - - - Left - Venstre + + + + + + + Down + Ned @@ -3532,14 +3955,25 @@ These settings are experimental, and may cause black screens. If your games fail Høyre - - - - - - - Down - Ned + + + + + + + + Left + Venstre + + + + + + + + + Up + Opp @@ -3547,7 +3981,7 @@ These settings are experimental, and may cause black screens. If your games fail Pressed - Trykket + Inntrykket @@ -3586,14 +4020,6 @@ These settings are experimental, and may cause black screens. If your games fail D-Pad D-Pad - - - - - - SL - SL - @@ -3603,59 +4029,55 @@ These settings are experimental, and may cause black screens. If your games fail SR - - - - L - L + + + + + SL + SL - + ZL ZL + + + + + L + L + Minus Minus - - - - Capture - Opptak - - + Plus Pluss - - - Home - Hjem + + + + ZR + ZR - - + + R R - - - - - ZR - ZR - Motion 1 @@ -3666,10 +4088,22 @@ These settings are experimental, and may cause black screens. If your games fail Motion 2 Bevegelse 2 + + + + Capture + Opptak + + + + + Home + Hjem + Face Buttons - Frontknapper + Hovedknapper @@ -3678,10 +4112,10 @@ These settings are experimental, and may cause black screens. If your games fail X - - - Y - Y + + + B + B @@ -3690,16 +4124,16 @@ These settings are experimental, and may cause black screens. If your games fail A - - - B - B + + + Y + Y - + Right Stick - Høyre Pinne + Høyre styrepinne @@ -3709,245 +4143,245 @@ These settings are experimental, and may cause black screens. If your games fail Configure - Konfigurer + Sett opp - - - - + + + + Clear - Fjern + Tøm - - - - - + + + + + [not set] - [ikke satt] + [ikke angitt] - - - + + + Invert button Inverter knapp - - + + Toggle button Veksle knapp - + Turbo button - Turbo-Knapp + Turbo-knapp - - + + Invert axis - Inverter akse + Invertér akse - - - + + + Set threshold Set grense - - + + Choose a value between 0% and 100% Velg en verdi mellom 0% og 100% - + Toggle axis - veksle akse + Veksle akse - + Set gyro threshold Angi gyroterskel - + Calibrate sensor Kalibrer sensor - + Map Analog Stick - Kartlegg Analog Spak + Kartlegg analog styrepinne - + After pressing OK, first move your joystick horizontally, and then vertically. To invert the axes, first move your joystick vertically, and then horizontally. Etter du har trykker på OK, flytt først stikken horisontalt, og så vertikalt. For å invertere aksene, flytt først stikken vertikalt, og så horistonalt. - + Center axis Senterakse - - + + Deadzone: %1% Dødsone: %1% - - + + Modifier Range: %1% Modifikatorområde: %1% - - + + Pro Controller - Pro-Kontroller + Pro Controller - + Dual Joycons Doble Joycons - + Left Joycon Venstre Joycon - + Right Joycon Høyre Joycon - + Handheld Håndholdt - + GameCube Controller GameCube-kontroller - + Poke Ball Plus - Poke Ball Plus + Poké Ball Plus - + NES Controller NES-kontroller - + SNES Controller SNES-kontroller - + N64 Controller N64-kontroller - + Sega Genesis - Sega Genesis + Sega Mega Drive - + Start / Pause - Start / paus + Start / Pause - + Z Z - + Control Stick Kontrollstikke - + C-Stick - C-stikke + C-styrepinne - + Shake! Rist! - + [waiting] [venter] - + New Profile - Ny Profil + Ny profil - + Enter a profile name: Skriv inn et profilnavn: - - + + Create Input Profile - Lag inndataprofil + Opprett inndataprofil - + The given profile name is not valid! Det oppgitte profilenavnet er ugyldig! - + Failed to create the input profile "%1" Klarte ikke lage inndataprofil "%1" - + Delete Input Profile Slett inndataprofil - + Failed to delete the input profile "%1" Klarte ikke slette inndataprofil "%1" - + Load Input Profile Last inn inndataprofil - + Failed to load the input profile "%1" Klarte ikke laste inn inndataprofil "%1" - + Save Input Profile Lagre inndataprofil - + Failed to save the input profile "%1" Klarte ikke lagre inndataprofil "%1" @@ -3957,26 +4391,17 @@ For å invertere aksene, flytt først stikken vertikalt, og så horistonalt. Create Input Profile - Lag inndataprofil + Opprett inndataprofil Clear - Fjern + Tøm Defaults - Standardverdier - - - - ConfigureLinuxTab - - - - Linux - + Standardinnstillinger @@ -3989,12 +4414,12 @@ For å invertere aksene, flytt først stikken vertikalt, og så horistonalt. Touch - Touch + Berøring UDP Calibration: - UDP-kalibrasjon + UDP-kalibrering: @@ -4004,9 +4429,9 @@ For å invertere aksene, flytt først stikken vertikalt, og så horistonalt. - + Configure - Konfigurer + Sett opp @@ -4016,12 +4441,12 @@ For å invertere aksene, flytt først stikken vertikalt, og så horistonalt. CemuhookUDP Config - CemuhookUDP-Konfigurasjon + CemuhookUDP-oppsett You may use any Cemuhook compatible UDP input source to provide motion and touch input. - Du kan bruke hvilken som helst Cemuhook-kompatibel UDP inputkilde for å gi bevegelses- og touch-input. + Du kan bruke hvilken som helst Cemuhook-kompatibel UDP-inndatakilde for å sørge for bevegelses- og berøringsinndata. @@ -4034,113 +4459,95 @@ For å invertere aksene, flytt først stikken vertikalt, og så horistonalt.Port: - - Learn More - Lær Mer - - - - + + Test Test - + Add Server Legg til tjener - + Remove Server Fjern tjener - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Lær Mer</span></a> - - - + %1:%2 %1:%2 - yuzu - yuzu + + + + + + + Eden + Eden - - <a href='https://eden-emulator.github.io/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - - - - + Port number has invalid characters Portnummeret har ugyldige tegn - - - - - - - eden - - - - + Port has to be in range 0 and 65353 Porten må være i intervallet 0 til 65353 - + IP address is not valid IP-adressen er ugyldig - + This UDP server already exists Denne UDP-tjeneren eksisterer allerede - + Unable to add more than 8 servers Kan ikke legge til mer enn 8 tjenere - + Testing Testing - + Configuring Konfigurering - + Test Successful - Test Vellykket + Testen var vellykket - + Successfully received data from the server. Mottatt data fra serveren vellykket. - + Test Failed - Test Feilet + Testen mislyktes - + Could not receive valid data from the server.<br>Please verify that the server is set up correctly and the address and port are correct. Kunne ikke motta gyldig data fra serveren.<br>Vennligst bekreft at serveren er satt opp riktig og at adressen og porten er riktige. - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. - UDP-Test eller kalibrasjonskonfigurering er i fremgang.<br>Vennligst vent for dem til å bli ferdig. + UDP-test eller kalibrasjonskonfigurering er i fremgang.<br>Vennligst vent for dem til å bli ferdig. @@ -4168,7 +4575,7 @@ For å invertere aksene, flytt først stikken vertikalt, og så horistonalt. Horizontal - Horisontal + Vannrett @@ -4182,7 +4589,7 @@ For å invertere aksene, flytt først stikken vertikalt, og så horistonalt. Vertical - Vertikal + Loddrett @@ -4257,7 +4664,7 @@ Gjeldende verdier er henholdsvis %1% og %2%. General - Generelt + Generell @@ -4265,9 +4672,9 @@ Gjeldende verdier er henholdsvis %1% og %2%. Nettverksgrensesnitt - - None - Ingen + + Enable Airplane Mode + Skru på flymodus @@ -4323,49 +4730,54 @@ Gjeldende verdier er henholdsvis %1% og %2%. Noen innstillinger er bare tilgjengelige når spillet ikke er i gang. - + Add-Ons Tillegg - + System System - + CPU CPU - + Graphics Grafikk - + Adv. Graphics - Avn. Grafikk + Avansert grafikk - - GPU Extensions - + + Ext. Graphics + - + Audio Lyd - + Input Profiles Inndataprofiler - Linux - + Network + Nettverk + + + + Applets + @@ -4386,15 +4798,110 @@ Gjeldende verdier er henholdsvis %1% og %2%. Tillegg - - Patch Name - Oppdateringsnavn + + Import Mod from ZIP + Importer mod fra ZIP - + + Import Mod from Folder + Importer mod fra mappe + + + + Patch Name + Patch-navn + + + Version Versjon + + + Mod Install Succeeded + + + + + Successfully installed all mods. + + + + + Mod Install Failed + + + + + Failed to install the following mods: + %1 +Check the log for details. + + + + + Mod Folder + Mod-mappe + + + + Zipped Mod Location + + + + + Zipped Archives (*.zip) + Zippede arkiver (*.zip) + + + + Invalid Selection + Ugyldig utvalg + + + + Only mods, cheats, and patches can be deleted. +To delete NAND-installed updates, right-click the game in the game list and click Remove -> Remove Installed Update. + + + + + You are about to delete the following installed mods: + + + + + + +Once deleted, these can NOT be recovered. Are you 100% sure you want to delete them? + + + + + Delete add-on(s)? + + + + + Successfully deleted + + + + + Successfully deleted all selected mods. + + + + + &Delete + &Slett + + + + &Open in File Manager + + ConfigureProfileManager @@ -4416,7 +4923,7 @@ Gjeldende verdier er henholdsvis %1% og %2%. Current User - Nåværende Bruker + Nåværende bruker @@ -4424,32 +4931,17 @@ Gjeldende verdier er henholdsvis %1% og %2%. Brukernavn - - Set Image - Sett Bilde - - - + Add Legg til - - Rename - Gi nytt navn - - - - Remove - Fjern - - - + Profile management is available only when game is not running. Profil-administrering er bare tilgjengelig når ingen spill kjører. - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -4457,104 +4949,83 @@ Gjeldende verdier er henholdsvis %1% og %2%. %2 - - Enter Username - Skriv inn Brukernavn - - - + Users Brukere - - Enter a username for the new user: - Tast inn et brukernavn for den nye brukeren: - - - - Enter a new username: - Skriv inn et nytt brukernavn - - - - Select User Image - Sett Bruker Bilde - - - - JPEG Images (*.jpg *.jpeg) - JPEG Bilder (*.jpg *.jpeg) - - - + Error deleting image Feil ved sletting av bilde - + Error occurred attempting to overwrite previous image at: %1. En feil oppstod under overskrivelse av det forrige bildet på: %1. - + Error deleting file Feil ved sletting av fil - + Unable to delete existing file: %1. Kunne ikke slette eksisterende fil: %1. - + Error creating user image directory Feil under opprettelse av profilbildemappe - + Unable to create directory %1 for storing user images. Kunne ikke opprette mappe %1 for å lagre profilbilder. - - Error copying user image - Feil under kopiering av profilbilde + + Error saving user image + - - Unable to copy image from %1 to %2 - Kunne ikke kopiere bilde fra %1 til %2 + + Unable to save image to file + - - Error resizing user image - Feil under endring av størrelse på brukerbilde + + &Edit + R&edigér - - Unable to resize image - Klarte ikke endre bildestørrelse + + &Delete + &Slett + + + + Edit User + Rediger bruker ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. Slett denne brukeren? Alle brukerens lagrede data vil bli slettet. - + Confirm Delete - Bekreft Sletting + Bekreft sletting - + Name: %1 UUID: %2 - Navn: %1 -UUID: %2 + Navn: %1 UUID: %2 @@ -4572,7 +5043,7 @@ UUID: %2 Virtual Ring Sensor Parameters - Parametre For Virituell Ringsensor + Parametre for virtuell ringsensor @@ -4594,7 +5065,7 @@ UUID: %2 Direct Joycon Driver - Driver For Direkte JoyCon Tilkobling + Driver for direkte Joycon-tilkobling @@ -4603,84 +5074,84 @@ UUID: %2 - + Enable - Aktiver + Skru på Ring Sensor Value - Sensorverdier For Ring + Sensorverdier for Ring - + Not connected - Ikke Tilkoblet + Ikke tilkoblet Restore Defaults - Gjenopprett Standardverdier + Gjenopprett standarder - + Clear - Fjern + Tøm - + [not set] - [ikke satt] + [ikke angitt] - + Invert axis - Inverter akse + Invertér akse - - + + Deadzone: %1% Dødsone: %1% - + Error enabling ring input Feil ved aktivering av ringinndata - + Direct Joycon driver is not enabled Driver for direkte JoyCon tilkobling er ikke aktivert - + Configuring Konfigurering - + The current mapped device doesn't support the ring controller Den gjeldende tilordnede enheten støtter ikke ringkontrolleren. - + The current mapped device doesn't have a ring attached Den gjeldende kartlagte enheten har ikke en ring festet - + The current mapped device is not connected Den tilordnede enheten er ikke tilkoblet - + Unexpected driver result %1 Uventet driverresultat %1 - + [waiting] [venter] @@ -4704,7 +5175,7 @@ UUID: %2 Kjerne - + Warning: "%1" is not a valid language for region "%2" Advarsel: "%1" er ikke et gyldig språk for region "%2" @@ -4716,14 +5187,10 @@ UUID: %2 TAS TAS - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the yuzu website.</p></body></html> - <html><head/><body><p>Leser kontrollerinndata fra script i samme format som TAS-nx–script.<br/>For en mer detaljert beskrivelse, se <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">hjelpesiden</span></a> på yuzus hjemmeside.</p></body></html> - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the eden website.</p></body></html> - + <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the user handbook.</p></body></html> + @@ -4756,17 +5223,22 @@ UUID: %2 Sett kjøring på vent under lasting - + + Show recording dialog + + + + Script Directory Skriptmappe - + Path - Sti + Filbane - + ... ... @@ -4774,12 +5246,12 @@ UUID: %2 ConfigureTasDialog - + TAS Configuration - TAS-konfigurasjon + TAS-oppsett - + Select TAS Load Directory... Velg TAS-lastemappe... @@ -4789,7 +5261,7 @@ UUID: %2 Configure Touchscreen Mappings - Konfigurer Kartlegging av Berøringsskjerm + Sett opp kartlegging av berøringsskjerm @@ -4843,7 +5315,7 @@ Dra punkter for å endre posisjon, eller dobbelttrykk på tabellfelter for å re New Profile - Ny Profil + Ny profil @@ -4853,17 +5325,17 @@ Dra punkter for å endre posisjon, eller dobbelttrykk på tabellfelter for å re Delete Profile - Slett Profil + Slett profil Delete profile %1? - Slett profil %1? + Vil du slette profilen %1? Rename Profile - Endre Navn på Profil + Gi nytt navn til profil @@ -4883,14 +5355,10 @@ Dra punkter for å endre posisjon, eller dobbelttrykk på tabellfelter for å re Configure Touchscreen Konfigurer Berøringsskjerm - - Warning: The settings in this page affect the inner workings of yuzu's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - Advarsel: Innstillingene på denne siden påvirker den indre funksjonaliteten av yuzu's emulerte berøringsskjerm. Endring av dem kan resultere i uønsket oppførsel, for eksempel at berøringsskjerm delvis eller ikke virker. Du bør bare bruke denne siden om du vet hva du gjør. - - Warning: The settings in this page affect the inner workings of eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - + Warning: The settings in this page affect the inner workings of Eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. + @@ -4915,70 +5383,49 @@ Dra punkter for å endre posisjon, eller dobbelttrykk på tabellfelter for å re Restore Defaults - Gjenopprett Standardverdier + Gjenopprett standarder ConfigureUI - - - + + None Ingen - - - Small (32x32) - Liten (32x32) - - Standard (64x64) - Standard (64x64) - - - - Large (128x128) - Stor (128x128) - - - - Full Size (256x256) - Full størrelse (256x256) - - - Small (24x24) Liten (24x24) - + Standard (48x48) Standard (48x48) - + Large (72x72) Stor (72x72) - + Filename Filnavn - + Filetype Filtype - + Title ID Tittel-ID - + Title Name Tittelnavn @@ -4998,7 +5445,7 @@ Dra punkter for å endre posisjon, eller dobbelttrykk på tabellfelter for å re General - Generelt + Generell @@ -5008,22 +5455,22 @@ Dra punkter for å endre posisjon, eller dobbelttrykk på tabellfelter for å re Interface language: - Brukergrensesnitt språk + Grensesnittspråk: Theme: - Tema + Tema: Game List - Spill liste + Spilliste Show Compatibility List - Vis Kompabilitetsliste + Vis kompatibilitetsliste @@ -5033,85 +5480,80 @@ Dra punkter for å endre posisjon, eller dobbelttrykk på tabellfelter for å re Show Size Column - Vis Kolonne For Størrelse + Vis størrelseskolonne Show File Types Column - Vis Kolonne For Filtype + Vis filtypekolonne Show Play Time Column - + - Game Icon Size: - Spillikonstørrelse: - - - Folder Icon Size: Mappeikonstørrelse: - + Row 1 Text: - Rad 1 Tekst: + Rad 1 tekst: - + Row 2 Text: - Rad 2 Tekst: + Rad 2 tekst: - + Screenshots Skjermbilder - + Ask Where To Save Screenshots (Windows Only) Spør om hvor skjermbilder skal lagres (kun for Windows) - + Screenshots Path: - Skjermbildebane: + Skjermbilde-filbane: - + ... ... - + TextLabel TextLabel - + Resolution: Oppløsning: - + Select Screenshots Path... - Velg Skermbildebane... + Velg skjermbilde-filbane... - + <System> <System> - + English Engelsk - + Auto (%1 x %2, %3 x %4) Screenshot width value Auto (%1 x %2, %3 x %4) @@ -5132,7 +5574,7 @@ Dra punkter for å endre posisjon, eller dobbelttrykk på tabellfelter for å re Vibration - Vibrasjon + Vibrering @@ -5209,176 +5651,184 @@ Dra punkter for å endre posisjon, eller dobbelttrykk på tabellfelter for å re Web Nett - - yuzu Web Service - yuzu Nettservice - - - By providing your username and token, you agree to allow yuzu to collect additional usage data, which may include user identifying information. - Ved å gi ditt brukernavn og token, sier du deg enig til å la yuzu samle inn ytterlige brukerdataer, som kan inkludere brukeridentifiserende informasjon. - - eden Web Service - + Eden Web Service + - - By providing your username and token, you agree to allow eden to collect additional usage data, which may include user identifying information. - - - - - Verify - Verifiser - - - - Sign up - Registrer deg - - - + Token: - Token: + Sjetong: - + Username: - Brukernavn: + Brukernavn: - - What is my token? - Hva er min token? + + Generate + - + Web Service configuration can only be changed when a public room isn't being hosted. Webtjenestekonfigurasjonen kan bare endres når et offentlig rom ikke blir arangert. - Telemetry - Telemetri - - - Share anonymous usage data with the yuzu team - Del anonym brukerdata med yuzu-teamet - - - Learn more - Lær mer - - - Telemetry ID: - Telemetri-ID - - - Regenerate - Regenerer - - - + Discord Presence - Discord Nærvær + Discord-tilstedeværelse - + Show Current Game in your Discord Status - Vis Gjeldene Spill på din Discord Status - - - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Lær mer</span></a> - - - - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Registrer deg</span></a> - - - - <a href='https://evilperson1337.notion.site/Hosting-a-Room-Inside-of-Eden-20457c2edaf680108abac6215a79acdb'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - - - - - Warning - + Vis nåværende spill på Discord-statusen din + - Verification is currently nonfunctional, instead generate a random 48-character string with only lowercase a-z. - - - - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">Hva er min token?</span></a> - - - Telemetry ID: 0x%1 - Telemetri-ID: 0x%1 - - - Unspecified - Uspesifisert - - - Token not verified - Nøkkel ikke verfisert - - - Token was not verified. The change to your token has not been saved. - Token ble ikke bekreftet. Endringen av tokenet ditt er ikke lagret. - - - - Unverified, please click Verify before saving configuration + All Good Tooltip - Ubekreftet, klikk på Bekreft før du lagrer konfigurasjonen. + Alt er i orden - Verifying... - Verifiserer... - - - Verified + + Must be between 4-20 characters Tooltip - Bekreftet + - Verification failed + + Must be 48 characters, and lowercase a-z Tooltip - Verifisering feilet - - - Verification failed - Verifisering feilet - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - Bekreftelsen mislyktes. Kontroller at du har tastet inn tokenet ditt riktig, og at internettforbindelsen din fungerer. + ControllerDialog - + Controller P1 Kontroller P1 - + &Controller P1 &Controller P1 + + DataDialog + + + Data Manager + Databehandler + + + + Deleting ANY data is IRREVERSABLE! + + + + + Shaders + Skyggeleggere + + + + UserNAND + + + + + SysNAND + SysNAND + + + + Mods + + + + + Saves + + + + + DataWidget + + + Form + + + + + Tooltip + + + + + Open with your system file manager + + + + + Delete all data in this directory. THIS IS 100% IRREVERSABLE! + + + + + Export all data in this directory. This may take a while! + + + + + Import data for this directory. This may take a while, and will delete ALL EXISTING DATA! + + + + + Calculating... + + + + + DepsDialog + + + Eden Dependencies + Eden-avhengigheter + + + + <html><head/><body><p><span style=" font-size:28pt;">Eden Dependencies</span></p></body></html> + + + + + <html><head/><body><p>The projects that make Eden possible</p></body></html> + + + + + Dependency + Avhengighet + + + + Version + Versjon + + DirectConnect Direct Connect - Direkte Tilkobling + Direktetilkobling @@ -5413,7 +5863,7 @@ Dra punkter for å endre posisjon, eller dobbelttrykk på tabellfelter for å re Connect - Koble Til + Koble til @@ -5421,12 +5871,12 @@ Dra punkter for å endre posisjon, eller dobbelttrykk på tabellfelter for å re Connecting - Kobler Til + Kobler til Connect - Koble Til + Koble til @@ -5434,1507 +5884,152 @@ Dra punkter for å endre posisjon, eller dobbelttrykk på tabellfelter for å re Username is not valid. Must be 4 to 20 alphanumeric characters. - Brukernavnet er ikke gyldig. Må være mellom 4 og 20 alfanumeriske karakterer. + Room name is not valid. Must be 4 to 20 alphanumeric characters. - Romnavnet er ikke gyldig. Må være mellom 4 og 20 alfanumeriske karakterer. + Username is already in use or not valid. Please choose another. - Brukernavnet er i bruk eller ikke gyldig. Vennligs velg et annet. + IP is not a valid IPv4 address. - IP er ikke en gyldig IPv4 adresse. + Port must be a number between 0 to 65535. - Porten må være et nummer mellom 0 og 65535. + You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - Du må velge et foretrukket spill for å være vert for et rom. Hvis du ikke har noen spill i spillelisten din ennå, kan du legge til en spillmappe ved å klikke på plussikonet i spillelisten. + Unable to find an internet connection. Check your internet settings. - Finner ikke en internettforbindelse. Sjekk internettinnstillingene dine. + Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - Kan ikke koble til verten. Kontroller at tilkoblingsinnstillingene er riktige. Hvis du fortsatt ikke kan koble til, kontakt romverten og kontroller at verten er riktig konfigurert med den eksterne porten videresendt. + Unable to connect to the room because it is already full. - Kan ikke koble til rommet fordi det allerede er fullt. + - Creating a room failed. Please retry. Restarting eden might be necessary. - + Creating a room failed. Please retry. Restarting Eden might be necessary. + The host of the room has banned you. Speak with the host to unban you or try a different room. - Verten for rommet har utestengt deg. Snakk med verten for å oppheve utestengingen eller prøv et annet rom. + - Version mismatch! Please update to the latest version of eden. If the problem persists, contact the room host and ask them to update the server. - + Version mismatch! Please update to the latest version of Eden. If the problem persists, contact the room host and ask them to update the server. + Incorrect password. - Feil passord. + Feil passord. An unknown error occurred. If this error continues to occur, please open an issue - Det oppstod en ukjent feil. Hvis denne feilen fortsetter å oppstå, vennligst åpne et problem. + Connection to room lost. Try to reconnect. - Forbindelsen til rommet er brutt. Prøv å koble til igjen. + You have been kicked by the room host. - Du har blitt sparket av romverten. + IP address is already in use. Please choose another. - IP-adressen er allerede i bruk. Vennligst velg en annen. + You do not have enough permission to perform this action. - Du har ikke tilstrekkelig tillatelse til å utføre denne handlingen. + The user you are trying to kick/ban could not be found. They may have left the room. - Brukeren du prøver å utestenge ble ikke funnet. -De kan ha forlatt rommet. + No valid network interface is selected. Please go to Configure -> System -> Network and make a selection. - Ingen gyldig nettverksgrensesnitt er valgt. -Gå til Konfigurer -> System -> Nettverk og gjør et valg. + Error - Feil - - - - GMainWindow - - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Anonymous data is collected</a> to help improve yuzu. <br/><br/>Would you like to share your usage data with us? - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Anonym data blir samlet inn</a>for å hjelpe til med å forbedre yuzu.<br/><br/>Vil du dele din bruksdata med oss? - - - Telemetry - Telemetri - - - - Broken Vulkan Installation Detected - Ødelagt Vulkan-installasjon oppdaget - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - Vulkan-initialisering mislyktes under oppstart.<br><br>Klikk<a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>her for instruksjoner for å løse problemet</a>. - - - - Running a game - TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping - Kjører et spill - - - - Loading Web Applet... - Laster web-applet... - - - - - Disable Web Applet - Slå av web-applet - - - - 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.) - 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). - - - - The amount of shaders currently being built - Antall shader-e som bygges for øyeblikket - - - - The current selected resolution scaling multiplier. - Den valgte oppløsningsskaleringsfaktoren. - - - - Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. - Nåværende emuleringshastighet. Verdier høyere eller lavere en 100% indikerer at emuleringen kjører raskere eller tregere enn en Switch. - - - - How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. - Hvor mange bilder per sekund spiller viser. Dette vil variere fra spill til spill og scene til scene. - - - - 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. - 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. - - - - Unmute - Slå på lyden - - - - Mute - Lydløs - - - - Reset Volume - Tilbakestill volum - - - - &Clear Recent Files - &Tøm Nylige Filer - - - - &Continue - &Fortsett - - - - &Pause - &Paus - - - - Warning Outdated Game Format - Advarsel: Utdatert Spillformat - - - 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.<br><br>For an explanation of the various Switch formats yuzu supports, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - 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.<br><br>For en forklaring på diverse Switch-formater som yuzu støtter,<a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>sjekk vår wiki</a>. Denne meldingen vil ikke bli vist igjen. - - - - - Error while loading ROM! - Feil under innlasting av ROM! - - - - The ROM format is not supported. - Dette ROM-formatet er ikke støttet. - - - - An error occurred initializing the video core. - En feil oppstod under initialisering av videokjernen. - - - 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: <a href='https://yuzu-emu.org/help/reference/log-files/'>How to Upload the Log File</a>. - 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: <a href='https://yuzu-emu.org/help/reference/log-files/'>How to Uploadd the Log File</a>. - - - - Error while loading ROM! %1 - %1 signifies a numeric error code. - Feil under lasting av ROM! %1 - - - %1<br>Please follow <a href='https://yuzu-emu.org/help/quickstart/'>the yuzu quickstart guide</a> to redump your files.<br>You can refer to the yuzu wiki</a> or the yuzu Discord</a> for help. - %1 signifies an error string. - %1<br>Vennligst følg <a href='https://yuzu-emu.org/help/quickstart/'>hurtigstartsguiden</a> for å redumpe filene dine. <br>Du kan henvise til yuzu wikien</a> eller yuzu Discorden</a> for hjelp. - - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://eden-emulator.github.io/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - - - - - Game Updates Warning - - - - - The game you are trying to launch is known to have performance or booting issues when updates are applied. Please try increasing the memory layout to 6GB or 8GB if any issues occur.<br><br>Press "OK" to continue launching, or "Cancel" to cancel the launch. - - - - - Don't show again for this game - - - - - 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.<br><br>For an explanation of the various Switch formats eden supports, <a href='https://eden-emulator.github.io/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - - - - - eden 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: <a href='https://eden-emulator.github.io/help/reference/log-files/'>How to Upload the Log File</a>. - - - - - %1<br>Please redump your files or ask on Discord for help. - %1 signifies an error string. - - - - - An unknown error occurred. Please see the log for more details. - En ukjent feil oppstod. Se loggen for flere detaljer. - - - - (64-bit) - (64-bit) - - - - (32-bit) - (32-bit) - - - - %1 %2 - %1 is the title name. %2 indicates if the title is 64-bit or 32-bit - %1 %2 - - - - Closing software... - Lukker programvare... - - - - Save Data - Lagre Data - - - - Mod Data - Mod Data - - - - Error Opening %1 Folder - Feil Under Åpning av %1 Mappen - - - - - Folder does not exist! - Mappen eksisterer ikke! - - - - Error Opening Transferable Shader Cache - Feil ved åpning av overførbar shaderbuffer - - - - Failed to create the shader cache directory for this title. - Kunne ikke opprette shader cache-katalogen for denne tittelen. - - - - Error Removing Contents - Feil ved fjerning av innhold - - - - Error Removing Update - Feil ved fjerning av oppdatering - - - - Error Removing DLC - Feil ved fjerning av DLC - - - - Remove Installed Game Contents? - Fjern Innstallert Spillinnhold? - - - - Remove Installed Game Update? - Fjern Installert Spilloppdatering? - - - - Remove Installed Game DLC? - Fjern Installert Spill DLC? - - - - Remove Entry - Fjern oppføring - - - - - - - - - Successfully Removed - Fjerning lykkes - - - - Successfully removed the installed base game. - Vellykket fjerning av det installerte basisspillet. - - - - The base game is not installed in the NAND and cannot be removed. - Grunnspillet er ikke installert i NAND og kan ikke bli fjernet. - - - - Successfully removed the installed update. - Fjernet vellykket den installerte oppdateringen. - - - - There is no update installed for this title. - Det er ingen oppdatering installert for denne tittelen. - - - - There are no DLC installed for this title. - Det er ingen DLC installert for denne tittelen. - - - - Successfully removed %1 installed DLC. - Fjernet vellykket %1 installerte DLC-er. - - - - Delete OpenGL Transferable Shader Cache? - Slette OpenGL Overførbar Shaderbuffer? - - - - Delete Vulkan Transferable Shader Cache? - Slette Vulkan Overførbar Shaderbuffer? - - - - Delete All Transferable Shader Caches? - Slette Alle Overførbare Shaderbuffere? - - - - Remove Custom Game Configuration? - Fjern Tilpasset Spillkonfigurasjon? - - - - Remove Cache Storage? - Fjerne Hurtiglagringen? - - - - Remove File - Fjern Fil - - - - Remove Play Time Data - - - - - Reset play time? - - - - - - Error Removing Transferable Shader Cache - Feil under fjerning av overførbar shader cache - - - - - A shader cache for this title does not exist. - En shaderbuffer for denne tittelen eksisterer ikke. - - - - Successfully removed the transferable shader cache. - Lykkes i å fjerne den overførbare shader cachen. - - - - Failed to remove the transferable shader cache. - Feil under fjerning av den overførbare shader cachen. - - - - Error Removing Vulkan Driver Pipeline Cache - Feil ved fjerning av Vulkan Driver-Rørledningsbuffer - - - - Failed to remove the driver pipeline cache. - Kunne ikke fjerne driverens rørledningsbuffer. - - - - - Error Removing Transferable Shader Caches - Feil ved fjerning av overførbare shaderbuffere - - - - Successfully removed the transferable shader caches. - Vellykket fjerning av overførbare shaderbuffere. - - - - Failed to remove the transferable shader cache directory. - Feil ved fjerning av overførbar shaderbuffer katalog. - - - - - Error Removing Custom Configuration - Feil Under Fjerning Av Tilpasset Konfigurasjon - - - - A custom configuration for this title does not exist. - En tilpasset konfigurasjon for denne tittelen finnes ikke. - - - - Successfully removed the custom game configuration. - Fjernet vellykket den tilpassede spillkonfigurasjonen. - - - - Failed to remove the custom game configuration. - Feil under fjerning av den tilpassede spillkonfigurasjonen. - - - - - RomFS Extraction Failed! - Utvinning av RomFS Feilet! - - - - There was an error copying the RomFS files or the user cancelled the operation. - Det oppstod en feil under kopiering av RomFS filene eller så kansellerte brukeren operasjonen. - - - - Full - Fullstendig - - - - Skeleton - Skjelett - - - - Select RomFS Dump Mode - Velg RomFS Dump Modus - - - - Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. - Velg hvordan du vil dumpe RomFS.<br>Fullstendig vil kopiere alle filene til en ny mappe mens <br>skjelett vil bare skape mappestrukturen. - - - - There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root - Det er ikke nok ledig plass på %1 til å pakke ut RomFS. Vennligst frigjør plass eller velg en annen dump-katalog under Emulering > Konfigurer > System > Filsystem > Dump Root. - - - - Extracting RomFS... - Utvinner RomFS... - - - - - - - - Cancel - Avbryt - - - - RomFS Extraction Succeeded! - RomFS Utpakking lyktes! - - - - - - The operation completed successfully. - Operasjonen fullført vellykket. - - - - Integrity verification couldn't be performed! - Integritetsverifisering kunne ikke utføres! - - - - File contents were not checked for validity. - Filinnholdet ble ikke kontrollert for gyldighet. - - - - - Verifying integrity... - Verifiserer integritet... - - - - - Integrity verification succeeded! - Integritetsverifisering vellykket! - - - - - Integrity verification failed! - Integritetsverifisering mislyktes! - - - - File contents may be corrupt. - Filinnholdet kan være skadet. - - - - - - - Create Shortcut - Lag Snarvei - - - - Do you want to launch the game in fullscreen? - - - - - Successfully created a shortcut to %1 - Opprettet en snarvei til %1 - - - - This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - Dette vil opprette en snarvei til gjeldende AppImage. Dette fungerer kanskje ikke bra hvis du oppdaterer. Fortsette? - - - - Failed to create a shortcut to %1 - - - - - Create Icon - Lag Ikon - - - - Cannot create icon file. Path "%1" does not exist and cannot be created. - Kan ikke opprette ikonfil. Stien "%1" finnes ikke og kan ikke opprettes. - - - - Error Opening %1 - Feil ved åpning av %1 - - - - Select Directory - Velg Mappe - - - - Properties - Egenskaper - - - - The game properties could not be loaded. - Spillets egenskaper kunne ikke bli lastet inn. - - - - Switch Executable (%1);;All Files (*.*) - %1 is an identifier for the Switch executable file extensions. - Switch Kjørbar Fil (%1);;Alle Filer (*.*) - - - - Load File - Last inn Fil - - - - Open Extracted ROM Directory - Åpne Utpakket ROM Mappe - - - - Invalid Directory Selected - Ugyldig Mappe Valgt - - - - The directory you have selected does not contain a 'main' file. - Mappen du valgte inneholder ikke en 'main' fil. - - - - Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - Installerbar Switch-Fil (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xcI) - - - - Install Files - Installer Filer - - - - %n file(s) remaining - - %n fil gjenstår - %n filer gjenstår - - - - - Installing file "%1"... - Installerer fil "%1"... - - - - - Install Results - Insallasjonsresultater - - - - To avoid possible conflicts, we discourage users from installing base games to the NAND. -Please, only use this feature to install updates and DLC. - For å unngå mulige konflikter fraråder vi brukere å installere basisspill på NAND. -Bruk kun denne funksjonen til å installere oppdateringer og DLC. - - - - %n file(s) were newly installed - - - %n fil ble nylig installert - - %n fil(er) ble nylig installert - - - - - - %n file(s) were overwritten - - - %n fil ble overskrevet - - %n filer ble overskrevet - - - - - - %n file(s) failed to install - - - %n fil ble ikke installert - - %n filer ble ikke installert - - - - - - System Application - Systemapplikasjon - - - - System Archive - Systemarkiv - - - - System Application Update - Systemapplikasjonsoppdatering - - - - Firmware Package (Type A) - Firmware Pakke (Type A) - - - - Firmware Package (Type B) - Firmware-Pakke (Type B) - - - - Game - Spill - - - - Game Update - Spilloppdatering - - - - Game DLC - Spill tilleggspakke - - - - Delta Title - Delta Tittel - - - - Select NCA Install Type... - Velg NCA Installasjonstype... - - - - Please select the type of title you would like to install this NCA as: -(In most instances, the default 'Game' is fine.) - Vennligst velg typen tittel du vil installere denne NCA-en som: -(I de fleste tilfellene, standarden 'Spill' fungerer.) - - - - Failed to Install - Feil under Installasjon - - - - The title type you selected for the NCA is invalid. - Titteltypen du valgte for NCA-en er ugyldig. - - - - File not found - Fil ikke funnet - - - - File "%1" not found - Filen "%1" ikke funnet - - - - OK - OK - - - - - Hardware requirements not met - Krav til maskinvare ikke oppfylt - - - - - Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled. - Systemet ditt oppfyller ikke de anbefalte maskinvarekravene. Kompatibilitetsrapportering er deaktivert. - - - - Missing yuzu Account - Mangler yuzu Bruker - - - - In order to submit a game compatibility test case, you must link your eden account.<br><br/>To link your eden account, go to Emulation &gt; Configuration &gt; Web. - - - - - Install decryption keys and restart eden before attempting to install firmware. - - - - - Firmware installation cancelled, firmware may be in bad state, restart eden or re-install firmware. - - - - - Encryption keys are missing. - - - - - Are you sure you want to close eden? - - - - - - - eden - - - - - The currently running application has requested eden to not exit. - -Would you like to bypass this and exit anyway? - - - - In order to submit a game compatibility test case, you must link your yuzu account.<br><br/>To link your yuzu account, go to Emulation &gt; Configuration &gt; Web. - For å sende inn et testtilfelle for spillkompatibilitet, må du linke yuzu-brukeren din.<br><br/>For å linke yuzu-brukeren din, gå til Emulasjon &gt; Konfigurasjon &gt; Nett. - - - - Error opening URL - Feil under åpning av URL - - - - Unable to open the URL "%1". - Kunne ikke åpne URL "%1". - - - - TAS Recording - TAS-innspilling - - - - Overwrite file of player 1? - Overskriv filen til spiller 1? - - - - Invalid config detected - Ugyldig konfigurasjon oppdaget - - - - Handheld controller can't be used on docked mode. Pro controller will be selected. - Håndholdt kontroller kan ikke brukes i dokket modus. Pro-kontroller vil bli valgt. - - - - - Amiibo - Amiibo - - - - - The current amiibo has been removed - Den valgte amiibo-en har blitt fjernet - - - - Error Feil - - - - The current game is not looking for amiibos - Det kjørende spillet sjekker ikke for amiibo-er - - - - Amiibo File (%1);; All Files (*.*) - Amiibo-Fil (%1);; Alle Filer (*.*) - - - - Load Amiibo - Last inn Amiibo - - - - Error loading Amiibo data - Feil ved lasting av Amiibo data - - - - The selected file is not a valid amiibo - Den valgte filen er ikke en gyldig amiibo - - - - The selected file is already on use - Den valgte filen er allerede i bruk - - - - An unknown error occurred - En ukjent feil oppso - - - - - Verification failed for the following files: - -%1 - Verifisering mislyktes for følgende filer: - -%1 - - - - Keys not installed - - - - - Select Dumped Firmware Source Location - - - - - Installing Firmware... - - - - - - - - Firmware install failed - - - - - Unable to locate potential firmware NCA files - - - - - Failed to delete one or more firmware file. - - - - - One or more firmware files failed to copy into NAND. - - - - - Firmware integrity verification failed! - - - - - Select Dumped Keys Location - - - - - - - Decryption Keys install failed - - - - - prod.keys is a required decryption key file. - - - - - One or more keys failed to copy. - - - - - Decryption Keys install succeeded - - - - - Decryption Keys were successfully installed - - - - - Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. - - - - - - - - - - - No firmware available - - - - - Please install the firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Controller Menu. - - - - - Controller Applet - Applet for kontroller - - - - Controller Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Home Menu. - - - - - - Home Menu Applet - - - - - - Home Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use Starter. - - - - - Starter Applet - - - - - Starter is not available. Please reinstall firmware. - - - - - Please install firmware to use the home menu. - - - - - Capture Screenshot - Ta Skjermbilde - - - - PNG Image (*.png) - PNG Bilde (*.png) - - - - Update Available - - - - - Update %1 for Eden is available. -Would you like to download it? - - - - - TAS state: Running %1/%2 - TAS-tilstand: Kjører %1/%2 - - - - TAS state: Recording %1 - TAS-tilstand: Spiller inn %1 - - - - TAS state: Idle %1/%2 - TAS-tilstand: Venter %1%2 - - - - TAS State: Invalid - TAS-tilstand: Ugyldig - - - - &Stop Running - &Stopp kjøring - - - - &Start - &Start - - - - Stop R&ecording - Stopp innspilling (&E) - - - - R&ecord - Spill inn (%E) - - - - Building: %n shader(s) - - Bygger: %n shader - Bygger: %n shader-e - - - - - Scale: %1x - %1 is the resolution scaling factor - Skala: %1x - - - - Speed: %1% / %2% - Hastighet: %1% / %2% - - - - Speed: %1% - Hastighet: %1% - - - Game: %1 FPS (Unlocked) - Spill: %1 FPS (ubegrenset) - - - - Game: %1 FPS - Spill: %1 FPS - - - - Frame: %1 ms - Ramme: %1 ms - - - - %1 %2 - %1 %2 - - - - - FSR - FSR - - - - NO AA - INGEN AA - - - - VOLUME: MUTE - VOLUM: DEMPET - - - - VOLUME: %1% - Volume percentage (e.g. 50%) - VOLUM: %1% - - - - Derivation Components Missing - Derivasjonskomponenter Mangler - - - - Select RomFS Dump Target - Velg RomFS Dump-Mål - - - - Please select which RomFS you would like to dump. - Vennligst velg hvilken RomFS du vil dumpe. - - - Are you sure you want to close yuzu? - Er du sikker på at du vil lukke yuzu? - - - yuzu - yuzu - - - - Are you sure you want to stop the emulation? Any unsaved progress will be lost. - Er du sikker på at du vil stoppe emulasjonen? All ulagret fremgang vil bli tapt. - - - The currently running application has requested yuzu to not exit. - -Would you like to bypass this and exit anyway? - Den kjørende applikasjonen har bedt yuzu om å ikke lukke. - -Vil du overstyre dette og lukke likevel? - - - - None - Ingen - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Nearest - Nærmest - - - - Bilinear - Bilineær - - - - Bicubic - Bikubisk - - - - Gaussian - Gaussisk - - - - ScaleForce - ScaleForce - - - - Area - - - - - Docked - Dokket - - - - Handheld - Håndholdt - - - - Normal - Normal - - - - High - Høy - - - - Extreme - Ekstrem - - - - Vulkan - Vulkan - - - - OpenGL - OpenGL - - - - Null - Null - - - - GLSL - GLSL - - - - GLASM - GLASM - - - - SPIRV - SPIRV - GRenderWindow - - + + OpenGL not available! OpenGL ikke tilgjengelig! - + OpenGL shared contexts are not supported. Delte OpenGL-kontekster støttes ikke. - yuzu has not been compiled with OpenGL support. - yuzu har ikke blitt kompilert med OpenGL-støtte. + + Eden has not been compiled with OpenGL support. + - - eden has not been compiled with OpenGL support. - - - - - + + Error while initializing OpenGL! Feil under initialisering av OpenGL! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. Det kan hende at GPU-en din ikke støtter OpenGL, eller at du ikke har den nyeste grafikkdriveren. - + Error while initializing OpenGL 4.6! Feil under initialisering av OpenGL 4.6! - + Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 Det kan hende at GPU-en din ikke støtter OpenGL 4.6, eller at du ikke har den nyeste grafikkdriveren.<br><br>GL-renderer:<br>%1 - + Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2 Det kan hende at GPU-en din ikke støtter én eller flere nødvendige OpenGL-utvidelser. Vennligst sørg for at du har den nyeste grafikkdriveren.<br><br>GL-renderer: <br>%1<br><br>Ikke-støttede utvidelser:<br>%2 @@ -6942,255 +6037,271 @@ Vil du overstyre dette og lukke likevel? GameList - + + &Add New Game Directory + Legg til ny spillm&appe + + + Favorite Legg til som favoritt - + Start Game - Start Spill + Start spill - + Start Game without Custom Configuration - Star Spill Uten Tilpasset Konfigurasjon + Start spill uten tilpasset oppsett - + Open Save Data Location - Åpne Lagret Data plassering + Åpne lagrefilplassering - + Open Mod Data Location - Åpne Mod Data plassering + Åpne moddataplassering - + Open Transferable Pipeline Cache - Åpne Overførbar Rørledningsbuffer + Åpne overførbar rørledningsbuffer - + + Link to Ryujinx + + + + Remove Fjern - + Remove Installed Update - Fjern Installert Oppdatering + Fjern installert oppdatering - + Remove All Installed DLC - Fjern All Installert DLC + Fjern all installert DLC - + Remove Custom Configuration - Fjern Tilpasset Konfigurasjon + Fjern tilpasset oppsett - - Remove Play Time Data - - - - + Remove Cache Storage - Fjern Hurtiglagring + Tøm hurtiglager - + Remove OpenGL Pipeline Cache - Fjer OpenGL Rørledningsbuffer + Fjern OpenGL-rørledningsbuffer - + Remove Vulkan Pipeline Cache - Fjern Vulkan Rørledningsbuffer + Fjern Vulkan-rørledningsbuffer - + Remove All Pipeline Caches - Fjern Alle Rørledningsbuffere + Fjern alle rørledningsbuffere - + Remove All Installed Contents - Fjern All Installert Innhold + Fjern alt installert innhold - - + + Manage Play Time + + + + + Edit Play Time Data + + + + + Remove Play Time Data + + + + + Dump RomFS Dump RomFS - + Dump RomFS to SDMC Dump RomFS til SDMC - + Verify Integrity Verifiser integritet - + Copy Title ID to Clipboard Kopier Tittel-ID til Utklippstavle - + Navigate to GameDB entry Naviger til GameDB-oppføring - + Create Shortcut - lag Snarvei + Opprett snarvei - + Add to Desktop Legg Til På Skrivebordet - + Add to Applications Menu Legg Til Applikasjonsmenyen - + Configure Game - + Oppsett av spillet - Properties - Egenskaper - - - + Scan Subfolders Skann Undermapper - + Remove Game Directory - Fjern Spillmappe + Fjern spillmappe - + ▲ Move Up ▲ Flytt Opp - + ▼ Move Down ▼ Flytt Ned - + Open Directory Location Åpne Spillmappe - + Clear - Fjern + Tøm - + Name Navn - + Compatibility Kompatibilitet - + Add-ons Tilleggsprogrammer - + File type - Fil Type + Filtype - + Size Størrelse - + Play time - + GameListItemCompat - + Ingame i Spillet - + Game starts, but crashes or major glitches prevent it from being completed. Spillet starter, men krasjer eller større feil gjør at det ikke kan fullføres. - + Perfect Perfekt - + Game can be played without issues. Spillet kan spilles uten problemer. - + Playable - Spillbart + Spillbar - + Game functions with minor graphical or audio glitches and is playable from start to finish. Spillet fungerer med mindre grafiske eller lydfeil og kan spilles fra start til slutt. - + Intro/Menu Intro/Meny - + Game loads, but is unable to progress past the Start Screen. Spillet lastes inn, men kan ikke gå videre forbi startskjermen. - + Won't Boot Vil ikke starte - + The game crashes when attempting to startup. Spillet krasjer under oppstart. - + Not Tested Ikke testet - + The game has not yet been tested. Spillet har ikke blitt testet ennå. @@ -7198,7 +6309,7 @@ Vil du overstyre dette og lukke likevel? GameListPlaceholder - + Double-click to add a new folder to the game list Dobbeltrykk for å legge til en ny mappe i spillisten @@ -7206,20 +6317,17 @@ Vil du overstyre dette og lukke likevel? GameListSearchField - + %1 of %n result(s) - - %1 of %n resultat - %1 of %n resultater - + %1 of %n resultat%1 av %n resultat(er) - + Filter: Filter: - + Enter pattern to filter Angi mønster for å filtrere @@ -7229,7 +6337,7 @@ Vil du overstyre dette og lukke likevel? Create Room - Opprett Rom + Opprett rom @@ -7295,242 +6403,250 @@ Vil du overstyre dette og lukke likevel? HostRoomWindow - + Error Feil - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. + + Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid Eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. Debug Message: - - - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid yuzu account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. -Debug Message: - Kunne ikke annonsere rommet til den offentlige lobbyen. For å være vert for et rom offentlig, må du ha en gyldig yuzu-konto konfigurert i Emulering -> Konfigurer -> Web. Hvis du ikke vil publisere et rom i den offentlige lobbyen, velger du ikke oppført i stedet. -Feilmelding: + Hotkeys - + Audio Mute/Unmute Lyd av/på - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Main Window Hovedvindu - + Audio Volume Down - Lydvolum Ned + Lydvolum ned - + Audio Volume Up - Lydvolum Opp + Lydvolum opp - + Capture Screenshot - Ta Skjermbilde + Ta skjermklipp - + Change Adapting Filter Endre tilpasningsfilter - + Change Docked Mode Endre forankret modus - - Change GPU Accuracy - Endre GPU-nøyaktighet + + Change GPU Mode + Endre GPU-modus - + Configure - Konfigurer + Sett opp - + Configure Current Game - + Sett opp nåværende spill - + Continue/Pause Emulation - Fortsett/Pause Emuleringen + Fortsett/Pause emuleringen - + Exit Fullscreen Avslutt fullskjerm - Exit yuzu - Avslutt yuzu + + Exit Eden + Avslutt Eden - - Exit eden - - - - + Fullscreen Fullskjerm - + Load File Last inn Fil - + Load/Remove Amiibo Last/Fjern Amiibo - - Multiplayer Browse Public Game Lobby - + + Browse Public Game Lobby + - - Multiplayer Create Room - + + Create Room + Opprett rom - - Multiplayer Direct Connect to Room - + + Direct Connect to Room + - - Multiplayer Leave Room - + + Leave Room + Forlat rom - - Multiplayer Show Current Room - + + Show Current Room + - + Restart Emulation - Omstart Emuleringen + Omstart emuleringen - + Stop Emulation - Stopp Emuleringen + Stopp emuleringen - + TAS Record Spill inn TAS - + TAS Reset Tilbakestill TAS - + TAS Start/Stop Start/Stopp TAS - + Toggle Filter Bar - Veksle Filterlinje + Veksle filterlinje - + Toggle Framerate Limit - Veksle Bildefrekvensgrense + Veksle bildefrekvensgrense - + + Toggle Turbo Speed + + + + + Toggle Slow Speed + + + + Toggle Mouse Panning - Veksle Muspanorering + Veksle musepanorering - + Toggle Renderdoc Capture - + - + Toggle Status Bar - Veksle Statuslinje + Veksle statuslinje + + + + Toggle Performance Overlay + InstallDialog - + Please confirm these are the files you wish to install. Vennligst bekreft at dette er filene du ønsker å installere. - + Installing an Update or DLC will overwrite the previously installed one. Installering av en oppdatering eller DLC vil overskrive den tidligere installerte. - + Install - Installer + Installér - + Install Files to NAND - Installer filer til NAND + Installér filer til NAND LimitableInputDialog - - The text can't contain any of the following characters: + + The text can't contain any of the following characters: %1 Teksten kan ikke inneholde noen av de følgende tegnene: %1 @@ -7541,37 +6657,37 @@ Feilmelding: Loading Shaders 387 / 1628 - Laster inn Shadere 387 / 1628 + Laster inn skyggeleggere 387 / 1628 Loading Shaders %v out of %m - Laster inn shadere %v / %m + Laster inn skyggeleggere %v / %m Estimated Time 5m 4s - Estimert Tid 5m 4s + Tidsanslag 5m 4s - + Loading... - Laster inn... + Laster inn ... - + Loading Shaders %1 / %2 - Laster inn Shadere %1 / %2 + Laster inn skyggeleggere %1 / %2 - + Launching... - Starter... + Starter ... - + Estimated Time %1 - Estimert Tid %1 + Anslått tid %1 @@ -7600,7 +6716,7 @@ Feilmelding: Games I Own - Spill Jeg Eier + Spill jeg eier @@ -7610,7 +6726,7 @@ Feilmelding: Hide Full Rooms - Gjem Fulle Rom + Skjul fulle rom @@ -7618,44 +6734,44 @@ Feilmelding: Oppdater Lobbyen - + Password Required to Join - Passord Kreves For Å Delta + Passord kreves for å bli med - + Password: Passord: - + Players Spillere - + Room Name Romnavn - + Preferred Game Foretrukket spill - + Host Vert - + Refreshing Oppdaterer - + Refresh List - Oppdater liste + Oppfrisk liste @@ -7673,365 +6789,1427 @@ Feilmelding: &Recent Files - Nylige file&r + &Nylige filer - + + Open &Eden Folders + Åpne &Eden-mapper + + + &Emulation &Emulering - + &View &Vis - + &Reset Window Size - Nullstill vindusstø&rrelse + &Tilbakestill vindusstørrelse - + &Debugging Feilsøking (&D) - + + &Game List Mode + &Spilliste-modus + + + + Game &Icon Size + Spill&ikonstørrelse + + + Reset Window Size to &720p - Tilbakestill vindusstørrelse til &720p + Tilbakestill vindusstørrelsen til &720p - + Reset Window Size to 720p - Tilbakestill vindusstørrelse til 720p + Tilbakestill vindusstørrelsen til 720p - + Reset Window Size to &900p - Tilbakestill vindusstørrelse til &900p + Tilbakestill vindusstørrelsen til &900p - + Reset Window Size to 900p - Tilbakestill vindusstørrelse til 900p + Tilbakestill vindusstørrelsen til 900p - + Reset Window Size to &1080p - Tilbakestill vindusstørrelse til &1080p + Tilbakestill vindusstørrelsen til &1080p - + Reset Window Size to 1080p - Tilbakestill vindusstørrelse til 1080p + Tilbakestill vindusstørrelsen til 1080p - + &Multiplayer - Flerspiller (&M) + &Flerspiller - + &Tools Verk&tøy - - &Amiibo - + + Am&iibo + am&iibo - + + Launch &Applet + + + + &TAS &TAS - + &Create Home Menu Shortcut - + - + + Install &Firmware + Installér &fastvare + + + &Help &Hjelp - + &Install Files to NAND... - &Installer filer til NAND... + &Installér filer til NAND ... - + L&oad File... - Last inn fil... (&O) - - - - Load &Folder... - Last inn mappe (&F) - - - - E&xit - &Avslutt - - - - &Pause - &Paus - - - - &Stop - &Stop - - - - &Verify Installed Contents - - - - - &About eden - - - - - Open &eden Folder - - - - - Open Home Menu - - - - - &Discord - - - - - Open &Setup - - - - - &Desktop - - - - - &Application Menu - - - - &About yuzu - Om yuzu (&A) + La&st inn fil ... - Single &Window Mode - Énvindusmodus (&W) + Load &Folder... + Last inn ma&ppe... + E&xit + A&vslutt + + + + + &Pause + &Pause + + + + &Stop + &Stopp + + + + &Verify Installed Contents + + + + + &About Eden + &Om Eden + + + + Single &Window Mode + Enkelt&vindusmodus + + + Con&figure... - Kon&figurer... + Se&tt opp ... - + Ctrl+, - + - - Display D&ock Widget Headers - Vis Overskrifter for Dock Widget (&O) + + Enable Overlay Display Applet + - + Show &Filter Bar Vis &filterlinje - + Show &Status Bar Vis &statuslinje - + Show Status Bar Vis statuslinje - + &Browse Public Game Lobby - Bla gjennom den offentlige spillobbyen (&B) + Bla gjennom den offentlige spillo&bbyen - + &Create Room - Opprett Rom (&C) + &Opprett rom - + &Leave Room - Forlat Rommet (&L) + &Forlat rom - + &Direct Connect to Room - Direkte Tilkobling Til Rommet (&D) + &Direkte tilkobling til rommet - + &Show Current Room - Vis nåværende rom (&S) + &Vis nåværende rom - + F&ullscreen F&ullskjerm - + &Restart - Omstart (&R) + &Omstart - + Load/Remove &Amiibo... - Last/Fjern Amiibo (&A) + Last/Fjern &amiibo ... - + &Report Compatibility - Rapporter kompatibilitet (&R) + Meld inn kompati&bilitet - + Open &Mods Page Åpne Modifikasjonssiden (&M) - + Open &Quickstart Guide Åpne Hurtigstartsguiden (&Q) - + &FAQ &FAQ - Open &yuzu Folder - Åpne &yuzu Mappen - - - + &Capture Screenshot - Ta Skjermbilde (&C) + &Ta skjermklipp - - Open &Album - + + &Album + &Album - + &Set Nickname and Owner - + - + &Delete Game Data - + &Slett spilldata - + &Restore Amiibo - + &Gjenopprett amiibo - + &Format Amiibo - + - - Open &Mii Editor - + + &Mii Editor + - + &Configure TAS... - Konfigurer TAS (&C) + &Konfigurer TAS ... - + Configure C&urrent Game... - Konfigurer Gjeldende Spill (&U) + Konfigurer nåværende spill ... - + + &Start &Start - + &Reset - Tilbakestill (&R) + &Omstart - + + R&ecord - Spill inn (%E) + T&a opp - + Open &Controller Menu - + Åpne &kontrollermeny - - Install Firmware - + + Install Decryption &Keys + - - Install Decryption Keys - + + &Home Menu + &Hjem-meny - - - MicroProfileDialog - - &MicroProfile - Mikroprofil (&M) + + &Desktop + &Skrivebord + + + + &Application Menu + &Appmeny + + + + &Root Data Folder + &Rotdatamappe + + + + &NAND Folder + &NAND-mappe + + + + &SDMC Folder + &SDMC-mappe + + + + &Mod Folder + &Mod-mappe + + + + &Log Folder + &Loggmappe + + + + From Folder + Fra mappe + + + + From ZIP + Fra ZIP + + + + &Eden Dependencies + &Eden-avhengigheter + + + + &Data Manager + &Databehandler + + + + &Tree View + &Trevisning + + + + &Grid View + &Rutenettvisning + + + + Game Icon Size + Spillikonstørrelse + + + + + + None + Ingen + + + + Show Game &Name + Vis spill&navn + + + + Show &Performance Overlay + Vis &ytelsesoverlegg + + + + Small (32x32) + Liten (32x32) + + + + Standard (64x64) + Standard (64x64) + + + + Large (128x128) + Stor (128x128) + + + + Full Size (256x256) + Full størrelse (256x256) + + + + Broken Vulkan Installation Detected + + + + + Vulkan initialization failed during boot. + + + + + Running a game + TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping + Kjører et spill + + + + Loading Web Applet... + + + + + + Disable Web Applet + + + + + 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.) + + + + + The amount of shaders currently being built + + + + + The current selected resolution scaling multiplier. + + + + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. + + + + + How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. + + + + + 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. + + + + + Unmute + Slå på lyd + + + + Mute + Demp + + + + Reset Volume + Tilbakestill volum + + + + &Clear Recent Files + &Tøm nylige filer + + + + &Continue + &Fortsett + + + + Warning: Outdated Game Format + + + + + 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.<br>For an explanation of the various Switch formats Eden supports, out our user handbook. This message will not be shown again. + + + + + + Error while loading ROM! + + + + + The ROM format is not supported. + + + + + An error occurred initializing the video core. + + + + + Eden 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: <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>How to Upload the Log File</a>. + + + + + Error while loading ROM! %1 + %1 signifies a numeric error code. + + + + + %1<br>Please redump your files or ask on Discord/Stoat for help. + %1 signifies an error string. + + + + + An unknown error occurred. Please see the log for more details. + + + + + (64-bit) + (64-bit) + + + + (32-bit) + (32-bit) + + + + %1 %2 + %1 is the title name. %2 indicates if the title is 64-bit or 32-bit + + + + + Closing software... + Lukker programvare ... + + + + Save Data + + + + + Mod Data + + + + + Error Opening %1 Folder + + + + + + Folder does not exist! + Mappen finnes ikke! + + + + Remove Installed Game Contents? + + + + + Remove Installed Game Update? + + + + + Remove Installed Game DLC? + + + + + Remove Entry + + + + + Delete OpenGL Transferable Shader Cache? + + + + + Delete Vulkan Transferable Shader Cache? + + + + + Delete All Transferable Shader Caches? + + + + + Remove Custom Game Configuration? + + + + + Remove Cache Storage? + + + + + Remove File + Fjern fil + + + + Remove Play Time Data + + + + + Reset play time? + + + + + + RomFS Extraction Failed! + + + + + There was an error copying the RomFS files or the user cancelled the operation. + + + + + Full + Full + + + + Skeleton + Skjelett + + + + Select RomFS Dump Mode + + + + + Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. + + + + + There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root + + + + + Extracting RomFS... + Utvinner RomFS... + + + + + Cancel + Avbryt + + + + RomFS Extraction Succeeded! + + + + + The operation completed successfully. + + + + + Error Opening %1 + + + + + Select Directory + Velg mappe + + + + Properties + Egenskaper + + + + The game properties could not be loaded. + + + + + Switch Executable (%1);;All Files (*.*) + %1 is an identifier for the Switch executable file extensions. + + + + + Load File + + + + + Open Extracted ROM Directory + + + + + Invalid Directory Selected + + + + + The directory you have selected does not contain a 'main' file. + + + + + Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) + + + + + Install Files + + + + + %n file(s) remaining + + + + + Installing file "%1"... + Installerer filen «%1» ... + + + + + Install Results + + + + + To avoid possible conflicts, we discourage users from installing base games to the NAND. +Please, only use this feature to install updates and DLC. + + + + + %n file(s) were newly installed + + + + + + %n file(s) were overwritten + + + + + + %n file(s) failed to install + + + + + + System Application + Systemapp + + + + System Archive + Systemarkiv + + + + System Application Update + + + + + Firmware Package (Type A) + Fastvarepakke (Type A) + + + + Firmware Package (Type B) + Fastvarepakke (Type B) + + + + Game + Spill + + + + Game Update + Spilloppdatering + + + + Game DLC + Spill-DLC + + + + Delta Title + + + + + Select NCA Install Type... + + + + + Please select the type of title you would like to install this NCA as: +(In most instances, the default 'Game' is fine.) + + + + + Failed to Install + + + + + The title type you selected for the NCA is invalid. + + + + + File not found + Filen ble ikke funnet + + + + File "%1" not found + + + + + OK + OK + + + + Function Disabled + + + + + Compatibility list reporting is currently disabled. Check back later! + + + + + Error opening URL + Feil under åpning av URL + + + + Unable to open the URL "%1". + + + + + TAS Recording + TAS-opptak + + + + Overwrite file of player 1? + + + + + Invalid config detected + + + + + Handheld controller can't be used on docked mode. Pro controller will be selected. + + + + + + Amiibo + amiibo + + + + + The current amiibo has been removed + + + + + Error + Feil + + + + + The current game is not looking for amiibos + Det nåværende spillet ser ikke etter amiiboer + + + + Amiibo File (%1);; All Files (*.*) + amiibo-fil (%1);; Alle filer (*.*) + + + + Load Amiibo + Last inn amiibo + + + + Error loading Amiibo data + + + + + The selected file is not a valid amiibo + + + + + The selected file is already on use + + + + + An unknown error occurred + + + + + + Keys not installed + + + + + + Install decryption keys and restart Eden before attempting to install firmware. + + + + + Select Dumped Firmware Source Location + + + + + Select Dumped Firmware ZIP + + + + + Zipped Archives (*.zip) + Zippede arkiver (*.zip) + + + + Firmware cleanup failed + + + + + Failed to clean up extracted firmware cache. +Check write permissions in the system temp directory and try again. +OS reported error: %1 + + + + + No firmware available + Ingen fastvare tilgjengelig + + + + Firmware Corrupted + + + + + Unknown applet + + + + + Applet doesn't map to a known value. + + + + + Record not found + + + + + Applet not found. Please reinstall firmware. + + + + + Capture Screenshot + Ta skjermklipp + + + + PNG Image (*.png) + PNG-bilde (*.png) + + + + Update Available + Oppdatering tilgjengelig + + + + Download %1? + Vil du laste ned %1? + + + + TAS state: Running %1/%2 + + + + + TAS state: Recording %1 + + + + + TAS state: Idle %1/%2 + + + + + TAS State: Invalid + + + + + &Stop Running + + + + + Stop R&ecording + + + + + Building: %n shader(s) + + + + + Scale: %1x + %1 is the resolution scaling factor + Skala: %1x + + + + Speed: %1% / %2% + Hastighet: %1% / %2% + + + + Speed: %1% + Hastighet: %1% + + + + Game: %1 FPS + Spill: %1 FPS + + + + Frame: %1 ms + Ramme: %1 ms + + + + + FSR + FSR + + + + NO AA + INGEN AA + + + + VOLUME: MUTE + VOLUM: DEMP + + + + VOLUME: %1% + Volume percentage (e.g. 50%) + VOLUM: %1% + + + + Derivation Components Missing + + + + + Decryption keys are missing. Install them now? + + + + + Wayland Detected! + + + + + Wayland is known to have significant performance issues and mysterious bugs. +It's recommended to use X11 instead. + +Would you like to force it for future launches? + + + + + Use X11 + Bruk X11 + + + + Continue with Wayland + + + + + Don't show again + Ikke vis igjen + + + + Restart Required + + + + + Restart Eden to apply the X11 backend. + + + + + Slow + Treg + + + + Turbo + Turbo + + + + Unlocked + Ubegrenset + + + + Select RomFS Dump Target + + + + + Please select which RomFS you would like to dump. + + + + + Are you sure you want to close Eden? + + + + + + + Eden + Eden + + + + Are you sure you want to stop the emulation? Any unsaved progress will be lost. + + + + + The currently running application has requested Eden to not exit. + +Would you like to bypass this and exit anyway? + + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Nearest + Nærmeste + + + + Bilinear + Bilineær + + + + Bicubic + Bikubisk + + + + Zero-Tangent + + + + + B-Spline + B-Spline + + + + Mitchell + Mitchell + + + + Spline-1 + Spline-1 + + + + Gaussian + Gaussisk + + + + Lanczos + Lanczos + + + + ScaleForce + + + + + Area + Område + + + + MMPX + MMPX + + + + Docked + I dokking + + + + Handheld + Håndholdt + + + + Fast + Rask + + + + Balanced + Balansert + + + + Accurate + Nøyaktig + + + + Vulkan + Vulkan + + + + OpenGL GLSL + OpenGL GLSL + + + + OpenGL SPIRV + OpenGL SPIRV + + + + OpenGL GLASM + OpenGL GLASM + + + + Null + Null MigrationWorker - - Data was migrated successfully. - - - - + Linking the old directory failed. You may need to re-run with administrative privileges on Windows. OS gave error: %1 - + - + + + +Note that your configuration and data will be shared with %1. +If this is not desirable, delete the following files: +%2 +%3 +%4 + + + + If you wish to clean up the files which were left in the old data location, you can do so by deleting the following directory: %1 - + + + + + Data was migrated successfully. + + + + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + @@ -8048,7 +8226,7 @@ If you wish to clean up the files which were left in the old data location, you - + Refreshing Oppdaterer @@ -8058,65 +8236,65 @@ If you wish to clean up the files which were left in the old data location, you Fjern Utestengning - + Subject Emne - + Type Type - + Forum Username - Forum Brukernavn + Forumbrukernavn - + IP Address - IP Adresse + IP-adresse - + Refresh - Oppdater + Oppfrisk MultiplayerState - + Current connection status Gjeldende tilkoblingsstatus - + Not Connected. Click here to find a room! Ikke tilkoblet. Klikk her for å finne et rom! - + Not Connected - Ikke Tilkoblet + Ikke tilkoblet - + Connected Tilkoblet - + New Messages Received Nye meldinger mottatt - + Error Feil - + Failed to update the room information. Please check your Internet connection and try hosting the room again. Debug Message: Kunne ikke oppdatere rominformasjonen. Kontroller Internett-tilkoblingen din og prøv å være vert for rommet på nytt. @@ -8125,90 +8303,6 @@ Feilsøkingsmelding: NetworkMessage - - Username is not valid. Must be 4 to 20 alphanumeric characters. - Brukernavnet er ikke gyldig. Må være mellom 4 og 20 alfanumeriske karakterer. - - - Room name is not valid. Must be 4 to 20 alphanumeric characters. - Romnavnet er ikke gyldig. Må være mellom 4 og 20 alfanumeriske karakterer. - - - Username is already in use or not valid. Please choose another. - Brukernavnet er i bruk eller ikke gyldig. Vennligs velg et annet. - - - IP is not a valid IPv4 address. - IP er ikke en gyldig IPv4 adresse. - - - Port must be a number between 0 to 65535. - Porten må være et nummer mellom 0 og 65535. - - - You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - Du må velge et foretrukket spill for å være vert for et rom. Hvis du ikke har noen spill i spillelisten din ennå, kan du legge til en spillmappe ved å klikke på plussikonet i spillelisten. - - - Unable to find an internet connection. Check your internet settings. - Finner ikke en internettforbindelse. Sjekk internettinnstillingene dine. - - - Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - Kan ikke koble til verten. Kontroller at tilkoblingsinnstillingene er riktige. Hvis du fortsatt ikke kan koble til, kontakt romverten og kontroller at verten er riktig konfigurert med den eksterne porten videresendt. - - - Unable to connect to the room because it is already full. - Kan ikke koble til rommet fordi det allerede er fullt. - - - Creating a room failed. Please retry. Restarting yuzu might be necessary. - Opprettelse av rom mislyktes. Vennligst prøv på nytt. Det kan være nødvendig å starte yuzu på nytt. - - - The host of the room has banned you. Speak with the host to unban you or try a different room. - Verten for rommet har utestengt deg. Snakk med verten for å oppheve utestengingen eller prøv et annet rom. - - - Version mismatch! Please update to the latest version of yuzu. If the problem persists, contact the room host and ask them to update the server. - Feil versjon! Vennligst oppdater til den nyeste versjonen av yuzu. Hvis problemet vedvarer, kontakt romverten og be dem om å oppdatere serveren. - - - Incorrect password. - Feil passord. - - - An unknown error occurred. If this error continues to occur, please open an issue - Det oppstod en ukjent feil. Hvis denne feilen fortsetter å oppstå, vennligst åpne et problem. - - - Connection to room lost. Try to reconnect. - Forbindelsen til rommet er brutt. Prøv å koble til igjen. - - - You have been kicked by the room host. - Du har blitt sparket av romverten. - - - IP address is already in use. Please choose another. - IP-adressen er allerede i bruk. Vennligst velg en annen. - - - You do not have enough permission to perform this action. - Du har ikke tilstrekkelig tillatelse til å utføre denne handlingen. - - - The user you are trying to kick/ban could not be found. -They may have left the room. - Brukeren du prøver å utestenge ble ikke funnet. -De kan ha forlatt rommet. - - - No valid network interface is selected. -Please go to Configure -> System -> Network and make a selection. - Ingen gyldig nettverksgrensesnitt er valgt. -Gå til Konfigurer -> System -> Nettverk og gjør et valg. - Game already running @@ -8224,7 +8318,7 @@ Fortsette likevel? Leave Room - Forlat Rommet + Forlat rom @@ -8243,10 +8337,132 @@ Fortsette likevel? - NetworkMessage::ErrorManager + NewUserDialog - Error - Feil + + + New User + Ny bruker + + + + Change Avatar + + + + + Set Image + + + + + UUID + UUID + + + + Eden + Eden + + + + Username + Brukernavn + + + + UUID must be 32 hex characters (0-9, A-F) + + + + + Generate + + + + + Select User Image + + + + + Image Formats (*.jpg *.jpeg *.png *.bmp) + Bildeformater (*.jpg *.jpeg *.png *.bmp) + + + + No firmware available + Ingen fastvare tilgjengelig + + + + Please install the firmware to use firmware avatars. + + + + + + Error loading archive + + + + + Archive is not available. Please install/reinstall firmware. + + + + + Could not locate RomFS. Your file or decryption keys may be corrupted. + + + + + Error extracting archive + + + + + Could not extract RomFS. Your file or decryption keys may be corrupted. + + + + + Error finding image directory + + + + + Failed to find image directory in the archive. + + + + + No images found + Ingen bilder ble funnet + + + + No avatar images were found in the archive. + + + + + + All Good + Tooltip + Alt er i orden + + + + Must be 32 hex characters (0-9, a-f) + Tooltip + + + + + Must be between 1 and 32 characters + Tooltip + @@ -8273,7 +8489,7 @@ Fortsette likevel? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -8282,85 +8498,200 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> + + PerformanceOverlay + + + Form + + + + + Frametime + Rammetid + + + + 0 ms + 0 ms + + + + + Min: 0 + + + + + + Max: 0 + Maks: 0 + + + + + Avg: 0 + Snitt: %1 + + + + FPS + FPS + + + + 0 fps + 0 fps + + + + %1 fps + %1 fps + + + + + Avg: %1 + Snitt: %1 + + + + + Min: %1 + + + + + + Max: %1 + Maks: %1 + + + + %1 ms + %1 ms + + PlayerControlPreview - + START/PAUSE - START/PAUS + START/PAUSE + + + + ProfileAvatarDialog + + + Select + + + + + Cancel + Avbryt + + + + Background Color + + + + + Select Firmware Avatar + QObject - - %1 is not playing a game - %1 spiller ikke et spill + + + + Migration + - - %1 is playing %2 - %1 spiller %2 + + Clear Shader Cache + - - Not playing a game - Spiller ikke et spill + + Keep Old Data + - - Installed SD Titles - Installerte SD-titler + + Clear Old Data + - - Installed NAND Titles - Installerte NAND-titler + + Link Old Directory + - - System Titles - System Titler + + + + + + + - - Add New Game Directory - Legg til ny spillmappe + + + No + Nei - - Favorites - Favoritter + + You can manually re-trigger this prompt by deleting the new config directory: +%1 + + + + + Migrating + + + + + Migrating, this may take a while... + - - + + Shift Shift - - + + Ctrl Ctrl - - + + Alt Alt - - - - + + + + [not set] - [ikke satt] + [ikke angitt] @@ -8368,15 +8699,15 @@ p, li { white-space: pre-wrap; } Hatt %1 %2 - - - - - - - - + + + + + + + + Axis %1%2 Akse %1%2 @@ -8386,359 +8717,383 @@ p, li { white-space: pre-wrap; } Knapp %1 - - - - - - + + + + + + [unknown] [ukjent] - - - + + + Left Venstre - - - + + + Right Høyre - - - + + + Down Ned - - - + + + Up Opp - - + + Z Z - - + + R R - - + + L L - - + + A A - - + + B B - - + + X X - - + + Y Y - - + + Start Start - - + + L1 L1 - - + + L2 L2 - - + + L3 L3 - - + + R1 R1 - - + + R2 R2 - - + + R3 R3 - - + + Circle Sirkel - - + + Cross Kryss - - + + Square Firkant - - + + Triangle Trekant - - + + Share Del - - + + Options - Instillinger + Innstillinger - - + + [undefined] [udefinert] - + %1%2 %1%2 - - + + [invalid] [ugyldig] - - + + %1%2Hat %3 %1%2Hat %3 - - - + + + %1%2Axis %3 %1%2Akse %3 - - + + %1%2Axis %3,%4,%5 %1%2Akse %3,%4,%5 - - + + %1%2Motion %3 %1%2Bevegelse %3 - - + + %1%2Button %3 %1%2Knapp %3 - - + + [unused] [ubrukt] - + ZR ZR - + ZL ZL - + SR SR - + SL SL - + Stick L - Venstre Stikke + Venstre styrepinne - + Stick R - Høyre Stikke + Høyre styrepinne - + Plus Pluss - + Minus Minus - - + + Home Hjem - + Capture Opptak - + Touch - Touch + Berøring - + Wheel Indicates the mouse wheel Hjul - + Backward Bakover - + Forward Fremover - + Task - oppgave + Oppgave - + Extra Ekstra - + %1%2%3%4 %1%2%3%4 - - + + %1%2%3Hat %4 %1%2%3Hat %4 - - + + %1%2%3Axis %4 %1%2%3Akse %4 - - + + %1%2%3Button %4 %1%2%3Knapp %4 - - - - Migration - + + Not playing a game + Spiller ikke et spill - - - - - + + %1 is not playing a game + %1 spiller ikke et spill - - - No - + + %1 is playing %2 + %1 spiller %2 - - You can manually re-trigger this prompt by deleting the new config directory: -%1 - + + Play Time: %1 + Tid spilt: %1 - - Migrating - + + Never Played + Aldri spilt - - Migrating, this may take a while... - + + Version: %1 + Versjon: %1 + + + + Version: 1.0.0 + Versjon: 1.0.0 + + + + Installed SD Titles + Installerte SD-titler + + + + Installed NAND Titles + Installerte NAND-titler + + + + System Titles + Systemtitler + + + + Add New Game Directory + Legg til ny spillmappe + + + + Favorites + Favoritter @@ -8746,12 +9101,12 @@ p, li { white-space: pre-wrap; } Amiibo Settings - Amiibo Innstillinger + Amiibo-innstillinger Amiibo Info - Amiibo Info + amiibo-info @@ -8761,7 +9116,7 @@ p, li { white-space: pre-wrap; } Type - TypeType + Type @@ -8771,12 +9126,12 @@ p, li { white-space: pre-wrap; } Amiibo Data - Amiibo Data + amiibo-data Custom Name - Tilpasset Navn + Tilpasset navn @@ -8786,7 +9141,7 @@ p, li { white-space: pre-wrap; } Creation Date - Skapelsesdato + Opprettingsdato @@ -8796,7 +9151,7 @@ p, li { white-space: pre-wrap; } Modification Date - Modifiseringsdato + Endringsdato @@ -8811,12 +9166,12 @@ p, li { white-space: pre-wrap; } Game Id - Spillid + Spill-ID Mount Amiibo - Monter Amiibo + Montér amiibo @@ -8829,31 +9184,817 @@ p, li { white-space: pre-wrap; } Filbane - + No game data present Ingen spilldata til stede - + The following amiibo data will be formatted: Følgende amiibo-data vil bli formatert: - + The following game data will removed: Følgende spilldata vil bli fjernet: - + Set nickname and owner: Angi kallenavn og eier: - + Do you wish to restore this amiibo? Ønsker du å gjenopprette denne amiiboen? + + QtCommon::Content + + + Game Requires Firmware + Spillet krever fastvare + + + + The game you are trying to launch requires firmware to boot or to get past the opening menu. Please <a href='https://yuzu-mirror.github.io/help/quickstart'>dump and install firmware</a>, or press "OK" to launch anyways. + + + + + Installing Firmware... + Installerer fastvare ... + + + + + + + + Cancel + Avbryt + + + + Firmware Install Failed + + + + + Firmware Install Succeeded + + + + + Firmware integrity verification failed! + + + + + + Verification failed for the following files: + +%1 + + + + + + Verifying integrity... + + + + + + Integrity verification succeeded! + + + + + + The operation completed successfully. + + + + + + Integrity verification failed! + + + + + File contents may be corrupt or missing. + + + + + Integrity verification couldn't be performed + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity. + + + + + Select Dumped Keys Location + + + + + Decryption Keys install succeeded + + + + + Decryption Keys install failed + + + + + Orphaned Profiles Detected! + + + + + UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br> + + + + + Really clear data? + + + + + Important data may be lost! + + + + + Are you REALLY sure? + Er du HELT sikker? + + + + Once deleted, your data will NOT come back! +Only do this if you're 100% sure you want to delete this data. + + + + + Clearing... + + + + + Select Export Location + + + + + %1.zip + %1.zip + + + + + Zipped Archives (*.zip) + Zippede arkiver (*.zip) + + + + Exporting data. This may take a while... + + + + + Exporting + Eksporterer + + + + Exported Successfully + + + + + Data was exported successfully. + + + + + Export Cancelled + + + + + Export was cancelled by the user. + + + + + Export Failed + Eksportering mislyktes + + + + Ensure you have write permissions on the targeted directory and try again. + + + + + Select Import Location + + + + + Import Warning + + + + + All previous data in this directory will be deleted. Are you sure you wish to proceed? + + + + + Importing data. This may take a while... + + + + + Importing + Importerer + + + + Imported Successfully + Importeringen var vellykket + + + + Data was imported successfully. + + + + + Import Cancelled + + + + + Import was cancelled by the user. + + + + + Import Failed + Importering mislyktes + + + + Ensure you have read permissions on the targeted directory and try again. + + + + + QtCommon::FS + + + Linked Save Data + + + + + Save data has been linked. + + + + + Failed to link save data + + + + + Could not link directory: + %1 +To: + %2 + + + + + Already Linked + + + + + This title is already linked to Ryujinx. Would you like to unlink it? + + + + + Failed to unlink old directory + + + + + + OS returned error: %1 + + + + + Failed to copy save data + + + + + Unlink Successful + + + + + Successfully unlinked Ryujinx save data. Save data has been kept intact. + + + + + Could not find Ryujinx installation + + + + + Could not find a valid Ryujinx installation. This may typically occur if you are using Ryujinx in portable mode. + +Would you like to manually select a portable folder to use? + + + + + Ryujinx Portable Location + + + + + Not a valid Ryujinx directory + + + + + The specified directory does not contain valid Ryujinx data. + + + + + + Could not find Ryujinx save data + + + + + QtCommon::Game + + + Error Removing Contents + + + + + Error Removing Update + + + + + Error Removing DLC + + + + + + + + + + Successfully Removed + + + + + Successfully removed the installed base game. + + + + + The base game is not installed in the NAND and cannot be removed. + + + + + Successfully removed the installed update. + + + + + There is no update installed for this title. + + + + + There are no DLCs installed for this title. + + + + + Successfully removed %1 installed DLC. + + + + + + Error Removing Transferable Shader Cache + + + + + + A shader cache for this title does not exist. + + + + + Successfully removed the transferable shader cache. + + + + + Failed to remove the transferable shader cache. + + + + + Error Removing Vulkan Driver Pipeline Cache + + + + + Failed to remove the driver pipeline cache. + + + + + + Error Removing Transferable Shader Caches + + + + + Successfully removed the transferable shader caches. + + + + + Failed to remove the transferable shader cache directory. + + + + + + Error Removing Custom Configuration + + + + + A custom configuration for this title does not exist. + + + + + Successfully removed the custom game configuration. + + + + + Failed to remove the custom game configuration. + + + + + Reset Metadata Cache + + + + + The metadata cache is already empty. + + + + + The operation completed successfully. + + + + + The metadata cache couldn't be deleted. It might be in use or non-existent. + + + + + Create Shortcut + Opprett snarvei + + + + Do you want to launch the game in fullscreen? + + + + + Shortcut Created + + + + + Successfully created a shortcut to %1 + + + + + Shortcut may be Volatile! + + + + + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? + + + + + Failed to Create Shortcut + + + + + Failed to create a shortcut to %1 + + + + + Create Icon + Opprett ikon + + + + Cannot create icon file. Path "%1" does not exist and cannot be created. + + + + + No firmware available + Ingen fastvare tilgjengelig + + + + Please install firmware to use the home menu. + + + + + Home Menu Applet + + + + + Home Menu is not available. Please reinstall firmware. + + + + + QtCommon::Mod + + + Mod Name + Mod-navn + + + + What should this mod be called? + + + + + RomFS + RomFS + + + + ExeFS/Patch + ExeFS/Patch + + + + Cheat + + + + + Mod Type + Mod-type + + + + Could not detect mod type automatically. Please manually specify the type of mod you downloaded. + +Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods. + + + + + + Mod Extract Failed + + + + + Failed to create temporary directory %1 + + + + + Zip file %1 is empty + «%1»-zip-filen er tom + + + + QtCommon::Path + + + Error Opening Shader Cache + + + + + Failed to create or open shader cache for this title, ensure your app data directory has write permissions. + + + + + QtCommon::StringLookup + + + Contains game save data. DO NOT REMOVE UNLESS YOU KNOW WHAT YOU'RE DOING! + + + + + Contains Vulkan and OpenGL pipeline caches. Generally safe to remove. + + + + + Contains updates and DLC for games. + + + + + Contains firmware and applet data. + + + + + Contains game mods, patches, and cheats. + + + + + Decryption Keys were successfully installed + + + + + Unable to read key directory, aborting + + + + + One or more keys failed to copy. + + + + + Verify your keys file has a .keys extension and try again. + + + + + Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. + + + + + Successfully installed firmware version %1 + + + + + Unable to locate potential firmware NCA files + + + + + Failed to delete one or more firmware files. + + + + + One or more firmware files failed to copy into NAND. + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. Restart Eden or re-install firmware. + + + + + Firmware missing. Firmware is required to run certain games and use the Home Menu. + + + + + Firmware reported as present, but was unable to be read. Check for decryption keys and redump firmware if necessary. + + + + + Eden has detected user data for the following emulators: + + + + + Would you like to migrate your data for use in Eden? +Select the corresponding button to migrate data from that emulator. +This may take a while. + + + + + Clearing shader cache is recommended for all users. +Do not uncheck unless you know what you're doing. + + + + + Keeps the old data directory. This is recommended if you aren't +space-constrained and want to keep separate data for the old emulator. + + + + + Deletes the old data directory. +This is recommended on devices with space constraints. + + + + + Creates a filesystem link between the old directory and Eden directory. +This is recommended if you want to share data between emulators. + + + + + Ryujinx title database does not exist. + + + + + Invalid header on Ryujinx title database. + + + + + Invalid magic header on Ryujinx title database. + + + + + Invalid byte alignment on Ryujinx title database. + + + + + No items found in Ryujinx title database. + + + + + Title %1 not found in Ryujinx title database. + + + QtControllerSelectorDialog @@ -8890,9 +10031,9 @@ p, li { white-space: pre-wrap; } - + Pro Controller - Pro-Kontroller + Pro Controller @@ -8903,7 +10044,7 @@ p, li { white-space: pre-wrap; } - + Dual Joycons Doble Joycons @@ -8916,7 +10057,7 @@ p, li { white-space: pre-wrap; } - + Left Joycon Venstre Joycon @@ -8929,7 +10070,7 @@ p, li { white-space: pre-wrap; } - + Right Joycon Høyre Joycon @@ -8958,7 +10099,7 @@ p, li { white-space: pre-wrap; } - + Handheld Håndholdt @@ -8990,23 +10131,23 @@ p, li { white-space: pre-wrap; } Console Mode - Konsollmodus + Bærbar modus Docked - Dokket + I dokking Vibration - Vibrasjon + Vibrering Configure - Konfigurer + Sett opp @@ -9021,7 +10162,7 @@ p, li { white-space: pre-wrap; } Create - Lag + Opprett @@ -9076,64 +10217,64 @@ p, li { white-space: pre-wrap; } Not enough controllers - + Ikke nok kontrollere - + GameCube Controller GameCube-kontroller - + Poke Ball Plus - Poke Ball Plus + Poké Ball Plus - + NES Controller NES-kontroller - + SNES Controller SNES-kontroller - + N64 Controller N64-kontroller - + Sega Genesis - Sega Genesis + Sega Mega Drive QtErrorDisplay - - - + + + Error Code: %1-%2 (0x%3) Feilkode: %1-%2 (0x%3) - + An error has occurred. Please try again or contact the developer of the software. En feil har oppstått. Vennligst prøv igjen eller kontakt programmets utvikler. - + An error occurred on %1 at %2. Please try again or contact the developer of the software. Det oppstod en feil på %1 ved %2. Prøv igjen eller kontakt utvikleren av programvaren. - + An error has occurred. %1 @@ -9149,7 +10290,7 @@ Prøv igjen eller kontakt utvikleren av programvaren. QtProfileSelectionDialog - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -9157,7 +10298,7 @@ Prøv igjen eller kontakt utvikleren av programvaren. %2 - + Users Brukere @@ -9175,7 +10316,7 @@ Prøv igjen eller kontakt utvikleren av programvaren. Profile Icon Editor - Redigering av profilikon + Profilikonredigerer @@ -9238,7 +10379,7 @@ Prøv igjen eller kontakt utvikleren av programvaren. Software Keyboard - Programvare Tastatur + Programvaretastatur @@ -9250,7 +10391,7 @@ Prøv igjen eller kontakt utvikleren av programvaren. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -9259,163 +10400,91 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - - + + OK OK - + Cancel Avbryt + + RyujinxDialog + + + Ryujinx Link + + + + + Linking save data to Ryujinx lets both Ryujinx and Eden reference the same save files for your games. + +By selecting "From Eden", previous save data stored in Ryujinx will be deleted, and vice versa for "From Ryujinx". + + + + + From Eden + Fra Eden + + + + From Ryujinx + Fra Ryujinx + + + + Cancel + Avbryt + + + + Failed to link save data + + + + + OS returned error: %1 + + + SequenceDialog Enter a hotkey - Skriv inn en hurtigtast + Velg en hurtigtast - WaitTreeCallstack + SetPlayTimeDialog - - Call stack - Anropsstabel - - - - WaitTreeSynchronizationObject - - - [%1] %2 - [%1] %2 + + Set Play Time Data + - - waited by no thread - ventet på ingen tråd - - - - WaitTreeThread - - - runnable - kjørbar + + Hours: + Timer: - - paused - pauset + + Minutes: + Minutter: - - sleeping - sover + + Seconds: + Sekunder: - - waiting for IPC reply - venter på IPC-svar - - - - waiting for objects - venter på objekter - - - - waiting for condition variable - venter på tilstandsvariabel - - - - waiting for address arbiter - venter på adresseforhandler - - - - waiting for suspend resume - venter på gjenopptakelse av suspensjon - - - - waiting - venter - - - - initialized - initialisert - - - - terminated - terminert - - - - unknown - ukjent - - - - PC = 0x%1 LR = 0x%2 - PC = 0x%1 LR = 0x%2 - - - - ideal - ideell - - - - core %1 - kjerne %1 - - - - processor = %1 - prosessor = %1 - - - - affinity mask = %1 - affinitetsmaske = %1 - - - - thread id = %1 - tråd id = %1 - - - - priority = %1(current) / %2(normal) - prioritet = %1(nåværende) / %2(normal) - - - - last running ticks = %1 - siste løpende tick = %1 - - - - WaitTreeThreadList - - - waited by thread - ventet med tråd - - - - WaitTreeWidget - - - &Wait Tree - Ventetre (&W) + + Total play time reached maximum. + diff --git a/dist/languages/nl.ts b/dist/languages/nl.ts index e58b12429f..869ead9df0 100644 --- a/dist/languages/nl.ts +++ b/dist/languages/nl.ts @@ -1,25 +1,15 @@ - - - + AboutDialog - - About yuzu - Over yuzu - - - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - - About eden - + About Eden + Over Eden - <html><head/><body><p><span style=" font-size:28pt;">eden</span></p></body></html> - + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> + Eden @@ -34,70 +24,50 @@ p, li { white-space: pre-wrap; } hr { height: 1px; border-width: 0; } li.unchecked::marker { content: "\2610"; } li.checked::marker { content: "\2612"; } -</style></head><body style=" font-family:'Adwaita Sans'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> - +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> + - <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">This software should not be used to play games you have not legally obtained.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu is een experimentele open-source emulator voor de Nintendo Switch met een licentie onder GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Deze software mag niet worden gebruikt om spellen te spelen die je niet legaal hebt verkregen.</span></p></body></html> - - - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Broncode</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Bijdragers</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licentie</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. eden is not affiliated with Nintendo in any way.</span></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is een handelsmerk van Nintendo. yuzu is op geen enkele manier met Nintendo verbonden.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. Eden is not affiliated with Nintendo in any way.</span></p></body></html> + CalibrationConfigurationDialog - + Communicating with the server... Communiceren met de server... - + Cancel Annuleer - + Touch the top left corner <br>of your touchpad. Raak de linkerbovenhoek <br> van je touchpad aan. - + Now touch the bottom right corner <br>of your touchpad. Raak nu de rechterbenedenhoek <br>van je touchpad aan. - + Configuration completed! Configuratie compleet! - + OK OK @@ -120,78 +90,78 @@ p, li { white-space: pre-wrap; } Verzend Bericht - + Members Leden - + %1 has joined %1 heeft deelgenomen - + %1 has left %1 is weggegaan - + %1 has been kicked %1 is kicked - + %1 has been banned %1 is verbannen - + %1 has been unbanned Ban van %1 is ongedaan gemaakt - + View Profile Bekijk Profiel - - + + Block Player Blokkeer Speler - + When you block a player, you will no longer receive chat messages from them.<br><br>Are you sure you would like to block %1? Als je een speler blokkeert, ontvang je geen chatberichten meer van ze.<br><br>Weet je zeker dat je %1 wilt blokkeren? - + Kick Kick - + Ban Ban - + Kick Player Kick Speler - + Are you sure you would like to <b>kick</b> %1? Weet je zeker dat je %1 wil <b>kicken</b>? - + Ban Player Ban Speler - + Are you sure you would like to <b>kick and ban</b> %1? This would ban both their forum username and their IP address. @@ -226,17 +196,17 @@ Dit zou zowel hun forum gebruikersnaam als hun IP-adres verbannen. ClientRoomWindow - + Connected Verbonden - + Disconnected Verbinding verbroken - + %1 - %2 (%3/%4 members) - connected %1 - %2 (%3/%4 leden) - verbonden @@ -259,14 +229,10 @@ Dit zou zowel hun forum gebruikersnaam als hun IP-adres verbannen. Report Game Compatibility Rapporteer Spelcompatibiliteit - - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of yuzu you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected yuzu account</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Als je kiest een test case op te sturen naar de </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu-compatibiliteitslijst</span></a><span style=" font-size:10pt;">, zal de volgende informatie worden verzameld en getoond op de site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware-informatie (CPU / GPU / Besturingssysteem)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Welke versie van yuzu je draait</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Het verbonden yuzu-account</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">eden Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of eden you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected eden account</li></ul></body></html> - + @@ -374,22 +340,22 @@ Dit zou zowel hun forum gebruikersnaam als hun IP-adres verbannen. Bedankt voor je inzending! - + Submitting Inzenden - + Communication error Communicatiefout - + An error occurred while sending the Testcase Er is een fout gebeurd tijdens het versturen van de Testcase - + Next Volgende @@ -397,1528 +363,1874 @@ Dit zou zowel hun forum gebruikersnaam als hun IP-adres verbannen. ConfigurationShared - + % % - + Amiibo editor - + - + Controller configuration - + Controller instellingen - + Data erase - + Gegevens verwijderen - + Error Fout - + Net connect - + - + Player select - + Selecteer speler - + Software keyboard - + - + Mii Edit - + - + Online web - + - + Shop - + Winkel - + Photo viewer - + - + Offline web - + - + Login share - + - + Wifi web auth - + - + My page - + - + + Enable Overlay Applet + + + + + Enables Horizon's built-in overlay applet. Press and hold the home button for 1 second to show it. + + + + Output Engine: Uitvoer-engine: - + Output Device: Uitvoerapparaat: - + Input Device: Invoerapparaat: - + Mute audio - + Audio dempen - + Volume: Volume: - + Mute audio when in background Demp audio op de achtergrond - + Multicore CPU Emulation Multicore CPU-emulatie - - This option increases CPU emulation thread use from 1 to the Switch’s maximum of 4. -This is mainly a debug option and shouldn’t be disabled. - + + This option increases CPU emulation thread use from 1 to the maximum of 4. +This is mainly a debug option and shouldn't be disabled. + Deze optie verhoogt het gebruik van CPU-emulatiethreads van 1 tot maximaal 4. Dit is voornamelijk een debugoptie en mag niet worden uitgeschakeld. - + Memory Layout - + Geheugenindeling - - Increases the amount of emulated RAM from the stock 4GB of the retail Switch to the developer kit's 8/6GB. -It’s doesn’t improve stability or performance and is intended to let big texture mods fit in emulated RAM. -Enabling it will increase memory use. It is not recommended to enable unless a specific game with a texture mod needs it. - + + Increases the amount of emulated RAM. +Doesn't affect performance/stability but may allow HD texture mods to load. + - + Limit Speed Percent Beperk Snelheidspercentage - - Controls the game's maximum rendering speed, but it’s up to each game if it runs faster or not. + + Controls the game's maximum rendering speed, but it's up to each game if it runs faster or not. 200% for a 30 FPS game is 60 FPS, and for a 60 FPS game it will be 120 FPS. Disabling it means unlocking the framerate to the maximum your PC can reach. - + Regelt de maximale weergavesnelheid van het spel, maar het is aan elk spel om te bepalen of het sneller draait of niet. +200% voor een spel met 30 FPS is 60 FPS, en voor een spel met 60 FPS is dat 120 FPS. +Als je deze optie uitschakelt, wordt de framerate ontgrendeld tot het maximum dat je pc kan bereiken. - + + Turbo Speed + + + + + When the Turbo Speed hotkey is pressed, the speed will be limited to this percentage. + + + + + Slow Speed + + + + + When the Slow Speed hotkey is pressed, the speed will be limited to this percentage. + + + + Synchronize Core Speed - + Synchroniseer kernsnelheid - - Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). -Compatibility varies by game; many (especially older ones) may not respond well. + + Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). Can help reduce stuttering at lower framerates. - + Synchroniseert de CPU-kernsnelheid met de maximale weergavesnelheid van de game om de FPS te verhogen zonder de gamesnelheid (animaties, fysica, enz.) te beïnvloeden. +Kan helpen om haperingen bij lagere framerates te verminderen. - + Accuracy: Nauwkeurigheid: - - This setting controls the accuracy of the emulated CPU. -Don't change this unless you know what you are doing. - + + Change the accuracy of the emulated CPU (for debugging only). + - - + + Backend: - + - - Fast CPU Time - + + CPU Overclock + - + Overclocks the emulated CPU to remove some FPS limiters. Weaker CPUs may see reduced performance, and certain games may behave improperly. Use Boost (1700MHz) to run at the Switch's highest native clock, or Fast (2000MHz) to run at 2x clock. - + Overklokt de geëmuleerde CPU om enkele FPS-beperkingen op te heffen. Zwakkere CPU's kunnen minder presteren en bepaalde games kunnen mogelijk niet goed werken. +Gebruik Boost (1700 MHz) om op de hoogste native kloksnelheid van de Switch te draaien, of Fast (2000 MHz) om op 2x kloksnelheid te draaien. + - + + Custom CPU Ticks + Aangepaste CPU-ticks + + + + Set a custom value of CPU ticks. Higher values can increase performance, but may cause deadlocks. A range of 77-21000 is recommended. + + + + + Enable Host MMU Emulation (fastmem) + Host MMU-emulatie inschakelen (fastmem) + + + + This optimization speeds up memory accesses by the guest program. +Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU. +Disabling this forces all memory accesses to use Software MMU Emulation. + Deze optimalisatie versnelt de geheugentoegang door het gastprogramma. +Als u deze optie inschakelt, worden lees- en schrijfbewerkingen in het gastgeheugen rechtstreeks in het geheugen uitgevoerd en wordt gebruikgemaakt van de MMU van de host. +Als u deze optie uitschakelt, worden alle geheugentoegangen gedwongen om gebruik te maken van software-MMU-emulatie. + + + Unfuse FMA (improve performance on CPUs without FMA) Ontbind FMA (verbeterd prestatie op CPU's zonder FMA) - + This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support. - + Deze optie verbetert de snelheid door de nauwkeurigheid van fused-multiply-add-instructies op CPU's zonder native FMA-ondersteuning te verminderen. - + Faster FRSQRTE and FRECPE Snellere FRSRTE en FRECPE - + This option improves the speed of some approximate floating-point functions by using less accurate native approximations. - + Deze optie verbetert de snelheid van sommige benaderende drijvende-kommagetal-functies door minder nauwkeurige native benaderingen te gebruiken. - + Faster ASIMD instructions (32 bits only) Snellere ASIMD-instructies (alleen 32-bits) - + This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes. - + Deze optie verbetert de snelheid van 32-bits ASIMD-drijvende-kommagetallen door te werken met onjuiste afrondingsmodi. - + Inaccurate NaN handling Onnauwkeurige NaN-verwerking - + This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions. - + Deze optie verbetert de snelheid door NaN-controle te verwijderen. +Houd er rekening mee dat dit ook de nauwkeurigheid van bepaalde drijvende-kommainstructies vermindert. - + Disable address space checks Schakel adresruimtecontroles uit - - This option improves speed by eliminating a safety check before every memory read/write in guest. -Disabling it may allow a game to read/write the emulator's memory. - + + This option improves speed by eliminating a safety check before every memory operation. +Disabling it may allow arbitrary code execution. + - + Ignore global monitor Negeer globale monitor - + 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. - + Deze optie verbetert de snelheid door alleen te vertrouwen op de semantiek van cmpxchg om de veiligheid van exclusieve toegangsinstructies te waarborgen. +Houd er rekening mee dat dit kan leiden tot deadlocks en andere race conditions. - + API: API: - - Switches between the available graphics APIs. -Vulkan is recommended in most cases. - + + Changes the output graphics API. +Vulkan is recommended. + - + Device: Apparaat: - - This setting selects the GPU to use with the Vulkan backend. - + + This setting selects the GPU to use (Vulkan only). + - - Shader Backend: - Shader Backend: - - - - The shader backend to use for the OpenGL renderer. -GLSL is the fastest in performance and the best in rendering accuracy. -GLASM is a deprecated NVIDIA-only backend that offers much better shader building performance at the cost of FPS and rendering accuracy. -SPIR-V compiles the fastest, but yields poor results on most GPU drivers. - - - - + Resolution: Resolutie: - - Forces the game to render at a different resolution. -Higher resolutions require much more VRAM and bandwidth. -Options lower than 1X can cause rendering issues. - + + Forces to render at a different resolution. +Higher resolutions require more VRAM and bandwidth. +Options lower than 1X can cause artifacts. + - + Window Adapting Filter: Window Adapting Filter: - + FSR Sharpness: FSR-scherpte: - - Determines how sharpened the image will look while using FSR’s dynamic contrast. - + + Determines how sharpened the image will look using FSR's dynamic contrast. + - + Anti-Aliasing Method: Antialiasing-methode: - + The anti-aliasing method to use. SMAA offers the best quality. -FXAA has a lower performance impact and can produce a better and more stable picture under very low resolutions. - +FXAA can produce a more stable picture in lower resolutions. + - + Fullscreen Mode: Volledig scherm modus: - + The method used to render the window in fullscreen. Borderless offers the best compatibility with the on-screen keyboard that some games request for input. Exclusive fullscreen may offer better performance and better Freesync/Gsync support. - + - + Aspect Ratio: Aspect Ratio: - - Stretches the game to fit the specified aspect ratio. -Switch games only support 16:9, so custom game mods are required to get other ratios. + + Stretches the renderer to fit the specified aspect ratio. +Most games only support 16:9, so modifications are required to get other ratios. Also controls the aspect ratio of captured screenshots. - + - - Use disk pipeline cache - Gebruik schijfpijplijn-cache + + Use persistent pipeline cache + - + Allows saving shaders to storage for faster loading on following game boots. Disabling it is only intended for debugging. - + - - Optimize SPIRV output shader - + + Optimize SPIRV output + - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. This feature is experimental. - + - - Use asynchronous GPU emulation - Gebruik asynchrone GPU-emulatie - - - - Uses an extra CPU thread for rendering. -This option should always remain enabled. - - - - + NVDEC emulation: NVDEC-emulatie: - + Specifies how videos should be decoded. It can either use the CPU or the GPU for decoding, or perform no decoding at all (black screen on videos). In most cases, GPU decoding provides the best performance. - + - + ASTC Decoding Method: - + ASTC Decodeer Methode: - + This option controls how ASTC textures should be decoded. -CPU: Use the CPU for decoding, slowest but safest method. -GPU: Use the GPU's compute shaders to decode ASTC textures, recommended for most games and users. -CPU Asynchronously: Use the CPU to decode ASTC textures as they arrive. Completely eliminates ASTC decoding -stuttering at the cost of rendering issues while the texture is being decoded. - +CPU: Use the CPU for decoding. +GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). +CPU Asynchronously: Use the CPU to decode ASTC textures on demand. EliminatesASTC decoding +stuttering but may present artifacts. + - + ASTC Recompression Method: - + - - Almost all desktop and laptop dedicated GPUs lack support for ASTC textures, forcing the emulator to decompress to an intermediate format any card supports, RGBA8. -This option recompresses RGBA8 to either the BC1 or BC3 format, saving VRAM but negatively affecting image quality. - + + Most GPUs lack support for ASTC textures and must decompress to anintermediate format: RGBA8. +BC1/BC3: The intermediate format will be recompressed to BC1 or BC3 format, + saving VRAM but degrading image quality. + - + + Frame Pacing Mode (Vulkan only) + + + + + Controls how the emulator manages frame pacing to reduce stuttering and make the frame rate smoother and more consistent. + + + + VRAM Usage Mode: - + - - Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. Has no effect on integrated graphics. Aggressive mode may severely impact the performance of other applications such as recording software. - + + Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. +Aggressive mode may impact performance of other applications such as recording software. + - + + Skip CPU Inner Invalidation + + + + + Skips certain cache invalidations during memory updates, reducing CPU usage and improving latency. This may cause soft-crashes. + + + + VSync Mode: VSync-modus: - + FIFO (VSync) does not drop frames or exhibit tearing but is limited by the screen refresh rate. -FIFO Relaxed is similar to FIFO but allows tearing as it recovers from a slow down. +FIFO Relaxed 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. - FIFO (VSync) dropt geen frames en vertoont geen scheuren, maar wordt beperkt door de vernieuwingsfrequentie van het scherm. -FIFO Relaxed is vergelijkbaar met FIFO, maar staat scheuren toe wanneer het zich herstelt van een vertraging. -Mailbox kan een lagere latentie hebben dan FIFO en scheurt niet, maar kan frames droppen. -Immediate (geen synchronisatie) presenteert gewoon wat beschikbaar is en kan scheuren vertonen. +Immediate (no synchronization) presents whatever is available and can exhibit tearing. + - + + Sync Memory Operations + + + + + Ensures data consistency between compute and memory operations. +This option fixes issues in games, but may degrade performance. +Unreal Engine 4 games often see the most significant changes thereof. + + + + Enable asynchronous presentation (Vulkan only) Schakel asynchrone presentatie in (alleen Vulkan) - + Slightly improves performance by moving presentation to a separate CPU thread. - + - + Force maximum clocks (Vulkan only) Forceer maximale klokken (alleen Vulkan) - + Runs work in the background while waiting for graphics commands to keep the GPU from lowering its clock speed. Werkt op de achtergrond terwijl er wordt gewacht op grafische opdrachten om te voorkomen dat de GPU zijn kloksnelheid verlaagt. - + Anisotropic Filtering: Anisotrope Filtering: - + Controls the quality of texture rendering at oblique angles. -It’s a light setting and safe to set at 16x on most GPUs. - +Safe to set at 16x on most GPUs. + - - Accuracy Level: - Nauwkeurigheidsniveau: + + GPU Mode: + - - GPU emulation accuracy. -Most games render fine with Normal, but High is still required for some. -Particles tend to only render correctly with High accuracy. -Extreme should only be used for debugging. -This option can be changed while playing. -Some games may require booting on high to render properly. - + + Controls the GPU emulation mode. +Most games render fine with Fast or Balanced modes, but Accurate is still required for some. +Particles tend to only render correctly with Accurate mode. + - - Use asynchronous shader building (Hack) - Gebruik asynchrone shaderbouw (Hack) + + DMA Accuracy: + - - Enables asynchronous shader compilation, which may reduce shader stutter. -This feature is experimental. - + + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. + - Use Fast GPU Time (Hack) - Gebruik Snelle GPU-tijd (Hack) + + Enable asynchronous shader compilation + - Enables Fast GPU Time. This option will force most games to run at their highest native resolution. - Schakelt Snelle GPU-tijd in. Deze optie forceert de meeste games om op hun hoogste native resolutie te draaien. + + May reduce shader stutter. + - + + Fast GPU Time + + + + + Overclocks the emulated GPU to increase dynamic resolution and render distance. +Use 256 for maximal performance and 512 for maximal graphics fidelity. + + + + + GPU Unswizzle + + + + + Accelerates BCn 3D texture decoding using GPU compute. +Disable if experiencing crashes or graphical glitches. + + + + + GPU Unswizzle Max Texture Size + + + + + Sets the maximum size (MiB) for GPU-based texture unswizzling. +While the GPU is faster for medium and large textures, the CPU may be more efficient for very small ones. +Adjust this to find the balance between GPU acceleration and CPU overhead. + + + + + GPU Unswizzle Stream Size + + + + + Sets the maximum amount of texture data (in MiB) processed per frame. +Higher values can reduce stutter during texture loading but may impact frame consistency. + + + + + GPU Unswizzle Chunk Size + + + + + Determines the number of depth slices processed in a single dispatch. +Increasing this can improve throughput on high-end GPUs but may cause TDR or driver timeouts on weaker hardware. + + + + Use Vulkan pipeline cache Gebruik Vulkan-pijplijn-cache - + Enables GPU vendor-specific pipeline cache. This option can improve shader loading time significantly in cases where the Vulkan driver does not store pipeline cache files internally. - + - + Enable Compute Pipelines (Intel Vulkan Only) - + - - Enable compute pipelines, required by some games. -This setting only exists for Intel proprietary drivers, and may crash if enabled. + + 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. - + - + Enable Reactive Flushing Schakel Reactive Flushing In - + Uses reactive flushing instead of predictive flushing, allowing more accurate memory syncing. - + - + Sync to framerate of video playback - + - + Run the game at normal speed during video playback, even when the framerate is unlocked. - + - + Barrier feedback loops - + - + Improves rendering of transparency effects in specific games. - + - + + Enable buffer history + + + + + Enables access to previous buffer states. +This option may improve rendering quality and performance consistency in some games. + + + + + Fix bloom effects + + + + + Removes bloom in Burnout. + + + + + Enable Legacy Rescale Pass + + + + + May fix rescale issues in some games by relying on behavior from the previous implementation. +Legacy behavior workaround that fixes line artifacts on AMD and Intel GPUs, and grey texture flicker on Nvidia GPUs in Luigis Mansion 3. + + + + + Extended Dynamic State + + + + + Controls the number of features that can be used in Extended Dynamic State. +Higher states allow for more features and can increase performance, but may cause additional graphical issues. + + + + + Vertex Input Dynamic State + + + + + Enables vertex input dynamic state feature for better quality and performance. + + + + + Sample Shading + + + + + Allows the fragment shader to execute per sample in a multi-sampled fragment instead of once per fragment. Improves graphics quality at the cost of performance. +Higher values improve quality but degrade performance. + + + + RNG Seed RNG Seed - + Controls the seed of the random number generator. -Mainly used for speedrunning purposes. - +Mainly used for speedrunning. + - + Device Name Apparaatnaam - - The name of the emulated Switch. - + + The name of the console. + - + Custom RTC Date: - + Aangepaste RTC Datum: - - This option allows to change the emulated clock of the Switch. + + This option allows to change the clock of the console. Can be used to manipulate time in games. - + - + + The number of seconds from the current unix time + + + + Language: - + Taal: - - Note: this can be overridden when region setting is auto-select - Opmerking: dit kan worden overschreven wanneer de regio-instelling automatisch wordt geselecteerd + + This option can be overridden when region setting is auto-select + - + Region: Regio: - - The region of the emulated Switch. - + + The region of the console. + - + Time Zone: Tijdzone: - - The time zone of the emulated Switch. - + + The time zone of the console. + - + Sound Output Mode: Geluidsuitvoermodus: - + Console Mode: - + Console Modus: - - Selects if the console is emulated in Docked or Handheld mode. + + Selects if the console is in Docked or Handheld mode. Games will change their resolution, details and supported controllers and depending on this setting. Setting to Handheld can help improve performance for low end systems. - + - - Prompt for user on game boot - Vraag aan gebruiker bij opstarten van het spel + + Unit Serial + - - Pause emulation when in background - Emulatie onderbreken op de achtergrond + + Battery Serial + - - Fast GPU Time (Hack) - + + Debug knobs + - - Overclocks the emulated GPU to increase dynamic resolution and render distance. -Use 128 for maximal performance and 512 for maximal graphics fidelity. - + + Prompt for user profile on boot + - - Extended Dynamic State - + + Useful if multiple people use the same PC. + - - Enables the VkExtendedDynamicState* extensions. -Higher dynamic states will generally improve performance, but may cause issues on certain games or devices. - + + Pause when not in focus + - - Provoking Vertex - + + Pauses emulation when focusing on other windows. + - - Improves lighting and vertex handling in certain games. -Only Vulkan 1.0+ devices support this extension. - - - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - - Ask to select a user profile on each boot, useful if multiple people use eden on the same PC. - - - - - This setting pauses eden when focusing other windows. - - - - + Confirm before stopping emulation - + Bevestig voordat u de emulatie stopt - - This setting overrides game prompts asking to confirm stopping the game. + + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - + - + Hide mouse on inactivity Verberg muis wanneer inactief - - This setting hides the mouse after 2.5s of inactivity. - + + Hides the mouse after 2.5s of inactivity. + - + Disable controller applet - + Controller-applet uitschakelen - - Forcibly disables the use of the controller applet by guests. -When a guest attempts to open the controller applet, it is immediately closed. - + + Forcibly disables the use of the controller applet in emulated programs. +When a program attempts to open the controller applet, it is immediately closed. + - + Check for updates - + - + Whether or not to check for updates upon startup. - + - + Enable Gamemode - + - + + Force X11 as Graphics Backend + + + + Custom frontend - + - + Real applet - + - + Never - + - + On Load - + - + Always - + - + CPU CPU - + GPU - + - + CPU Asynchronous - + - + Uncompressed (Best quality) - + - + BC1 (Low quality) BC1 (Lage Kwaliteit) - + BC3 (Medium quality) BC3 (Gemiddelde kwaliteit) - - Conservative - - - - - Aggressive - - - - - OpenGL - OpenGL - - - - Vulkan - Vulkan - - - - Null - Null - - - - GLSL - GLSL - - - - GLASM (Assembly Shaders, NVIDIA Only) - GLASM (Assembly Shaders, alleen NVIDIA) - - - - SPIR-V (Experimental, AMD/Mesa Only) - - - - - Normal - Normaal - - - - High - Hoog - - - - Extreme - Extreme - - - + + Auto Auto - + + 30 FPS + + + + + 60 FPS + + + + + 90 FPS + + + + + 120 FPS + + + + + Conservative + + + + + Aggressive + + + + + Vulkan + Vulkan + + + + OpenGL GLSL + + + + + OpenGL GLASM (Assembly Shaders, NVIDIA Only) + + + + + OpenGL SPIR-V (Experimental, AMD/Mesa Only) + + + + + Null + Null + + + + Fast + + + + + Balanced + + + + + Accurate Accuraat - - Unsafe - Onveilig - - - - Paranoid (disables most optimizations) - Paranoid (schakelt de meeste optimalisaties uit) - - - - Dynarmic - - - - - NCE - - - - - Borderless Windowed - Randloos Venster - - - - Exclusive Fullscreen - Exclusief Volledig Scherm - - - - No Video Output - Geen Video-uitvoer - - - - CPU Video Decoding - CPU Videodecodering - - - - GPU Video Decoding (Default) - GPU Videodecodering (Standaard) - - - - 0.25X (180p/270p) [EXPERIMENTAL] - - - - - 0.5X (360p/540p) [EXPERIMENTAL] - - - - - 0.75X (540p/810p) [EXPERIMENTAL] - 0.75X (540p/810p) [EXPERIMENTEEL] - - - - 1X (720p/1080p) - 1X (720p/1080p) - - - - 1.5X (1080p/1620p) [EXPERIMENTAL] - 1.5X (1080p/1620p) [EXPERIMENTEEL] - - - - 2X (1440p/2160p) - 2X (1440p/2160p) - - - - 3X (2160p/3240p) - 3X (2160p/3240p) - - - - 4X (2880p/4320p) - 4X (2880p/4320p) - - - - 5X (3600p/5400p) - 5X (3600p/5400p) - - - - 6X (4320p/6480p) - 6X (4320p/6480p) - - - - 7X (5040p/7560p) - 7X (5040p/7560p) - - - - 8X (5760p/8640p) - 8X (5760p/8640p) - - - - Nearest Neighbor - Nearest Neighbor - - - - Bilinear - Bilinear - - - - Bicubic - Bicubic - - - - Gaussian - Gaussian - - - - ScaleForce - ScaleForce - - - - AMD FidelityFX™️ Super Resolution - AMD FidelityFX™️ Super Resolution - - - - Area - - - - - None - Geen - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Default (16:9) - Standaart (16:9) - - - - Force 4:3 - Forceer 4:3 - - - - Force 21:9 - Forceer 21:9 - - - - Force 16:10 - Forceer 16:10 - - - - Stretch to Window - Uitrekken naar Venster - - - - Automatic - Automatisch - - - + + Default Standaard - + + Unsafe (fast) + + + + + Safe (stable) + + + + + Unsafe + Onveilig + + + + Paranoid (disables most optimizations) + Paranoid (schakelt de meeste optimalisaties uit) + + + + Debugging + + + + + Dynarmic + + + + + NCE + + + + + Borderless Windowed + Randloos Venster + + + + Exclusive Fullscreen + Exclusief Volledig Scherm + + + + No Video Output + Geen Video-uitvoer + + + + CPU Video Decoding + CPU Videodecodering + + + + GPU Video Decoding (Default) + GPU Videodecodering (Standaard) + + + + 0.25X (180p/270p) [EXPERIMENTAL] + + + + + 0.5X (360p/540p) [EXPERIMENTAL] + + + + + 0.75X (540p/810p) [EXPERIMENTAL] + 0.75X (540p/810p) [EXPERIMENTEEL] + + + + 1X (720p/1080p) + 1X (720p/1080p) + + + + 1.25X (900p/1350p) [EXPERIMENTAL] + + + + + 1.5X (1080p/1620p) [EXPERIMENTAL] + 1.5X (1080p/1620p) [EXPERIMENTEEL] + + + + 2X (1440p/2160p) + 2X (1440p/2160p) + + + + 3X (2160p/3240p) + 3X (2160p/3240p) + + + + 4X (2880p/4320p) + 4X (2880p/4320p) + + + + 5X (3600p/5400p) + 5X (3600p/5400p) + + + + 6X (4320p/6480p) + 6X (4320p/6480p) + + + + 7X (5040p/7560p) + 7X (5040p/7560p) + + + + 8X (5760p/8640p) + 8X (5760p/8640p) + + + + Nearest Neighbor + Nearest Neighbor + + + + Bilinear + Bilinear + + + + Bicubic + Bicubic + + + + Gaussian + Gaussian + + + + Lanczos + + + + + ScaleForce + ScaleForce + + + + AMD FidelityFX Super Resolution + + + + + Area + + + + + MMPX + + + + + Zero-Tangent + + + + + B-Spline + + + + + Mitchell + + + + + Spline-1 + + + + + + None + Geen + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Default (16:9) + Standaart (16:9) + + + + Force 4:3 + Forceer 4:3 + + + + Force 21:9 + Forceer 21:9 + + + + Force 16:10 + Forceer 16:10 + + + + Stretch to Window + Uitrekken naar Venster + + + + Automatic + Automatisch + + + 2x 2x - + 4x 4x - + 8x 8x - + 16x 16x - + + 32x + + + + + 64x + + + + Japanese (日本語) Japans (日本語) - + American English Amerikaans-Engels - + French (français) Frans (Français) - + German (Deutsch) Duits (Deutsch) - + Italian (italiano) Italiaans (italiano) - + Spanish (español) Spaans (Español) - + Chinese Chinees - + Korean (한국어) Koreaans (한국어) - + Dutch (Nederlands) Nederlands (Nederlands) - + Portuguese (português) Portugees (português) - + Russian (Русский) Russisch (Русский) - + Taiwanese Taiwanese - + British English Brits-Engels - + Canadian French Canadees-Frans - + Latin American Spanish Latijns-Amerikaans Spaans - + Simplified Chinese Vereenvoudigd Chinees - + Traditional Chinese (正體中文) Traditioneel Chinees (正體中文) - + Brazilian Portuguese (português do Brasil) Braziliaans-Portugees (português do Brasil) - - + + Polish (polska) + + + + + Thai (แบบไทย) + + + + + Japan Japan - + USA USA - + Europe Europa - + Australia Australië - + China China - + Korea Korea - + Taiwan Taiwan - + Auto (%1) Auto select time zone Auto (%1) - + Default (%1) Default time zone Standaard (%1) - + CET CET - + CST6CDT CST6CDT - + Cuba Cuba - + EET EET - + Egypt Egypte - + Eire Eire - + EST EST - + EST5EDT EST5EDT - + GB GB - + GB-Eire GB-Eire - + GMT GMT - + GMT+0 GMT+0 - + GMT-0 GMT-0 - + GMT0 GMT0 - + Greenwich Greenwich - + Hongkong Hongkong - + HST HST - + Iceland Ijsland - + Iran Iran - + Israel Israel - + Jamaica Jamaica - + Kwajalein Kwajalein - + Libya Libië - + MET MET - + MST MST - + MST7MDT MST7MDT - + Navajo Navajo - + NZ NZ - + NZ-CHAT NZ-CHAT - + Poland Polen - + Portugal Portugal - + PRC PRC - + PST8PDT PST8PDT - + ROC ROC - + ROK ROK - + Singapore Singapore - + Turkey Turkije - + UCT UCT - + Universal Universeel - + UTC UTC - + W-SU W-SU - + WET WET - + Zulu Zulu - + Mono Mono - + Stereo Stereo - + Surround Surround - + 4GB DRAM (Default) - + - + 6GB DRAM (Unsafe) - + - + 8GB DRAM - + - + 10GB DRAM (Unsafe) - + - + 12GB DRAM (Unsafe) - + - - Low (128) - - - - - Medium (256) - - - - - High (512) - - - - + Docked Docked - + Handheld Handheld - + + + Off + + + + Boost (1700MHz) - + - + Fast (2000MHz) - + - + Always ask (Default) - + - + Only if game specifies not to stop - + - + Never ask - + + + + + + Medium (256) + + + + + + High (512) + + + + + Very Small (16 MB) + + + + + Small (32 MB) + + + + + Normal (128 MB) + + + + + Large (256 MB) + + + + + Very Large (512 MB) + + + + + Very Low (4 MB) + + + + + Low (8 MB) + + + + + Normal (16 MB) + + + + + Medium (32 MB) + + + + + High (64 MB) + + + + + Very Low (32) + + + + + Low (64) + + + + + Normal (128) + + + + + Disabled + + + + + ExtendedDynamicState 1 + + + + + ExtendedDynamicState 2 + + + + + ExtendedDynamicState 3 + + + + + Tree View + + + + + Grid View + @@ -1931,12 +2243,12 @@ When a guest attempts to open the controller applet, it is immediately closed. Applets - + Applet mode preference - + @@ -1991,7 +2303,7 @@ When a guest attempts to open the controller applet, it is immediately closed.Standaard Herstellen - + Auto Auto @@ -2021,7 +2333,7 @@ When a guest attempts to open the controller applet, it is immediately closed. CPU Backend - + @@ -2170,7 +2482,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all memory accesses to use Software MMU Emulation.</div> @@ -2187,7 +2499,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up exclusive memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all exclusive memory accesses to use Software MMU Emulation.</div> @@ -2219,7 +2531,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up memory accesses by allowing invalid memory accesses to succeed.</div> - <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> + <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> <div style="white-space: nowrap">Deze optimalisering versnelt geheugentoepassingen door ongeldige geheugentoepassingen te laten slagen.</div> @@ -2259,30 +2571,30 @@ When a guest attempts to open the controller applet, it is immediately closed.Loggen - - Open Log Location - Open Loglocatie - - - + Global Log Filter Globale Log Filter - + When checked, the max size of the log increases from 100 MB to 1 GB Indien aangevinkt, neemt de maximale grootte van de log toe van 100 MB tot 1 GB - + Enable Extended Logging** Schakel Uitgebreid Loggen** in - + Show Log in Console Toon Login-console + + + Open Log Location + Open Loglocatie + Homebrew @@ -2386,12 +2698,12 @@ When a guest attempts to open the controller applet, it is immediately closed. <html><head/><body><p>When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.</p></body></html> - + Disable Buffer Reorder - + @@ -2419,18 +2731,9 @@ When a guest attempts to open the controller applet, it is immediately closed.Schakel Alle Controler-soorten in - - Censor username in logs - - - - - **This will be reset automatically when eden closes. - - - - Enable Auto-Stub** - Schakel Auto-Stub** in + + Enable Auto-Stub + @@ -2439,8 +2742,8 @@ When a guest attempts to open the controller applet, it is immediately closed. - Enable CPU Debugging - Schakel CPU-foutopsporing in + Use dev.keys + @@ -2453,43 +2756,74 @@ When a guest attempts to open the controller applet, it is immediately closed.Debugging - - Flush log output on each line - + + Battery Serial: + - - Enable FS Access Log - Schakel FS-toegangslogboek in + + Bitmask for quick development toggles + - + + Set debug knobs (bitmask) + + + + + 16-bit debug knob set for quick development toggles + + + + + (bitmask) + + + + + Debug Knobs: + + + + + Unit Serial: + + + + Enable this to output the latest generated audio command list to the console. Only affects games using the audio renderer. Zet dit aan om de laatst gegenereerde audio commandolijst naar de console te sturen. Alleen van invloed op spellen die de audio renderer gebruiken. - - Enable Auto-Stub - - - - + Dump Audio Commands To Console** Dump Audio-opdrachten naar Console** - + + Flush log output on each line + + + + + Enable FS Access Log + Schakel FS-toegangslogboek in + + + Enable Verbose Reporting Services** Schakel Verbose Reporting Services** in - **This will be reset automatically when yuzu closes. - **Deze optie wordt automatisch gereset wanneer yuzu is gesloten. + + Censor username in logs + - - Web applet not compiled - Webapplet niet gecompileerd + + **This will be reset automatically when Eden closes. + @@ -2531,14 +2865,10 @@ When a guest attempts to open the controller applet, it is immediately closed. ConfigureDialog - - yuzu Configuration - yuzu-configuratie - - eden Configuration - + Eden Configuration + @@ -2546,88 +2876,88 @@ When a guest attempts to open the controller applet, it is immediately closed.Sommige instellingen zijn alleen beschikbaar als een spel niet actief is. - + Applets - + - - + + Audio Audio - - + + CPU CPU - + Debug Debug - + Filesystem Bestandssysteem - - + + General Algemeen - - + + Graphics Graphics - + GraphicsAdvanced Geavanceerde Graphics - - GraphicsExtensions - + + GraphicsExtra + - + Hotkeys Sneltoetsen - - + + Controls Bediening - + Profiles Profielen - + Network Netwerk - - + + System Systeem - + Game List Spellijst - + Web Web @@ -2657,9 +2987,10 @@ When a guest attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2669,107 +3000,183 @@ When a guest attempts to open the controller applet, it is immediately closed.SD-kaart - + + Save Data + + + + Gamecard Spelkaart - + Path Pad - + Inserted Geplaatst - + Current Game Huidig Spel - + Patch Manager Patch-beheer - + Dump Decompressed NSOs Dump Uitgepakte NSO's - + Dump ExeFS Dump ExeFS - + Mod Load Root Mod Laad Root - + Dump Root Dump Root - + Caching Caching - + Cache Game List Metadata Cache Metagegevens van Spellijst - - - - + Reset Metadata Cache Herstel Metagegevenscache - + Select Emulated NAND Directory... Selecteer Geëmuleerde NAND-map... - + Select Emulated SD Directory... Selecteer Geëmuleerde SD-map... - + + + Select Save Data Directory... + + + + Select Gamecard Path... Selecteer Spelkaartpad... - + Select Dump Directory... Selecteer Dump-map... - + Select Mod Load Directory... Selecteer Mod-laadmap... - - The metadata cache is already empty. - De metagegevenscache is al leeg. + + Save Data Directory + - - The operation completed successfully. - De operatie is succesvol voltooid. + + Choose an action for the save data directory: + - - The metadata cache couldn't be deleted. It might be in use or non-existent. - De metagegevenscache kon niet worden verwijderd. Het wordt mogelijk gebruikt of bestaat niet. + + Set Custom Path + + + + + Reset to NAND + + + + + Save data exists in both the old and new locations. + +Old: %1 +New: %2 + +Would you like to migrate saves from the old location? +WARNING: This will overwrite any conflicting saves in the new location! + + + + + Would you like to migrate your save data to the new location? + +From: %1 +To: %2 + + + + + Migrate Save Data + + + + + Migrating save data... + + + + + Cancel + + + + + + Migration Failed + + + + + Failed to create destination directory. + + + + + Failed to migrate save data: +%1 + + + + + Migration Complete + + + + + Save data has been migrated successfully. + +Would you like to delete the old save data? + @@ -2787,28 +3194,54 @@ When a guest attempts to open the controller applet, it is immediately closed. - Linux - + External Content + - + + Add directories to scan for DLCs and Updates without installing to NAND + + + + + Add Directory + + + + + Remove Selected + + + + Reset All Settings Reset Alle Instellingen - yuzu - yuzu + + Eden + - - eden - - - - + This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed? Hiermee worden alle instellingen gereset en alle configuraties per game verwijderd. Hiermee worden gamedirectory's, profielen of invoerprofielen niet verwijderd. Doorgaan? + + + Select External Content Directory... + + + + + Directory Already Added + + + + + This directory is already in the list. + + ConfigureGraphics @@ -2838,33 +3271,33 @@ When a guest attempts to open the controller applet, it is immediately closed.Achtergrondkleur: - + % FSR sharpening percentage (e.g. 50%) % - + Off Uit - + VSync Off VSync Uit - + Recommended Aanbevolen - + On Aan - + VSync On VSync Aan @@ -2882,7 +3315,7 @@ When a guest attempts to open the controller applet, it is immediately closed.Geavanceerd - + Advanced Graphics Settings Geavanceerde Grafische Instellingen @@ -2892,24 +3325,38 @@ When a guest attempts to open the controller applet, it is immediately closed. Form - Vorm + - Extensions - + Extras + - - Vulkan Extension Settings - + + Hacks + - - While it's recommended to use state 3, some games may perform better on lower states. Setting to 0 (disabled) may also break games. -If your GPU is older (i.e. RX570/580 or older), it may not support these features. If this is the case, set the slider to 0 and uncheck all boxes. -These settings are experimental, and may cause black screens. If your games fail to boot or are stuck on a black screen, change these settings around. - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + + + + + % + Sample Shading percentage (e.g. 50%) + + + + + Extended Dynamic State is disabled on macOS due to MoltenVK compatibility issues that cause black screens. + @@ -2940,75 +3387,75 @@ These settings are experimental, and may cause black screens. If your games fail Standaard Herstellen - + Action Actie - + Hotkey Sneltoets - + Controller Hotkey Controller-sneltoets - - - + + + Conflicting Key Sequence Ongeldige Toetsvolgorde - - + + The entered key sequence is already assigned to: %1 De ingevoerde toetsencombinatie is al in gebruik door: %1 - + [waiting] [aan het wachten] - + Invalid Ongeldig - + Invalid hotkey settings - + - + An error occurred. Please report this issue on github. - + - + Restore Default Standaard Herstellen - + Clear Wis - + Conflicting Button Sequence Conflicterende Knoppencombinatie - + The default button sequence is already assigned to: %1 De standaard knoppencombinatie is al toegewezen aan: %1 - + The default key sequence is already assigned to: %1 De ingevoerde toetsencombinatie is al in gebruik door: %1 @@ -3328,12 +3775,8 @@ These settings are experimental, and may cause black screens. If your games fail - Requires restarting eden - - - - Requires restarting yuzu - Vereist het herstarten van yuzu + Requires restarting Eden + @@ -3483,30 +3926,19 @@ These settings are experimental, and may cause black screens. If your games fail - + Left Stick Linker Stick - - - - - - - Up - Omhoog - - - - - - - - - - Left - Links + + + + + + + Down + Omlaag @@ -3520,14 +3952,25 @@ These settings are experimental, and may cause black screens. If your games fail Rechts - - - - - - - Down - Omlaag + + + + + + + + Left + Links + + + + + + + + + Up + Omhoog @@ -3574,14 +4017,6 @@ These settings are experimental, and may cause black screens. If your games fail D-Pad D-Pad - - - - - - SL - SL - @@ -3591,59 +4026,55 @@ These settings are experimental, and may cause black screens. If your games fail SR - - - - L - L + + + + + SL + SL - + ZL ZL + + + + + L + L + Minus Min - - - - Capture - Vastleggen - - + Plus Plus - - - Home - Home + + + + ZR + ZR - - + + R R - - - - - ZR - ZR - Motion 1 @@ -3654,6 +4085,18 @@ These settings are experimental, and may cause black screens. If your games fail Motion 2 Beweging 2 + + + + Capture + Vastleggen + + + + + Home + Home + Face Buttons @@ -3666,10 +4109,10 @@ These settings are experimental, and may cause black screens. If your games fail X - - - Y - Y + + + B + B @@ -3678,14 +4121,14 @@ These settings are experimental, and may cause black screens. If your games fail A - - - B - B + + + Y + Y - + Right Stick Rechter Stick @@ -3700,242 +4143,242 @@ These settings are experimental, and may cause black screens. If your games fail Configureer - - - - + + + + Clear Wis - - - - - + + + + + [not set] [niet ingesteld] - - - + + + Invert button Knop omkeren - - + + Toggle button Schakel-knop - + Turbo button Turbo-knop - - + + Invert axis Spiegel as - - - + + + Set threshold Stel drempel in - - + + Choose a value between 0% and 100% Kies een waarde tussen 0% en 100% - + Toggle axis Schakel as - + Set gyro threshold Stel gyro-drempel in - + Calibrate sensor Kalibreer sensor - + Map Analog Stick Analoge Stick Toewijzen - + After pressing OK, first move your joystick horizontally, and then vertically. To invert the axes, first move your joystick vertically, and then horizontally. Nadat je op OK hebt gedrukt, beweeg je de joystick eerst horizontaal en vervolgens verticaal. Om de assen om te keren, beweeg je de joystick eerst verticaal en vervolgens horizontaal. - + Center axis Midden as - - + + Deadzone: %1% Deadzone: %1% - - + + Modifier Range: %1% Modificatorbereik: %1% - - + + Pro Controller Pro Controller - + Dual Joycons Twee Joycons - + Left Joycon Linker Joycon - + Right Joycon Rechter Joycon - + Handheld Handheld - + GameCube Controller GameCube-controller - + Poke Ball Plus Poke Ball Plus - + NES Controller NES-controller - + SNES Controller SNES-controller - + N64 Controller N64-controller - + Sega Genesis Sega Genesis - + Start / Pause Begin / Onderbreken - + Z Z - + Control Stick Control Stick - + C-Stick C-Stick - + Shake! Schud! - + [waiting] [aan het wachten] - + New Profile Nieuw Profiel - + Enter a profile name: Voer een profielnaam in: - - + + Create Input Profile Maak Invoerprofiel - + The given profile name is not valid! De ingevoerde profielnaam is niet geldig! - + Failed to create the input profile "%1" Kon invoerprofiel "%1" niet maken - + Delete Input Profile Verwijder Invoerprofiel - + Failed to delete the input profile "%1" Kon invoerprofiel "%1" niet verwijderen - + Load Input Profile Laad Invoerprofiel - + Failed to load the input profile "%1" Kon invoerprofiel "%1" niet laden - + Save Input Profile Sla Invoerprofiel op - + Failed to save the input profile "%1" Kon invoerprofiel "%1" niet opslaan @@ -3958,15 +4401,6 @@ Om de assen om te keren, beweeg je de joystick eerst verticaal en vervolgens hor Standaardinstellingen - - ConfigureLinuxTab - - - - Linux - - - ConfigureMotionTouch @@ -3992,7 +4426,7 @@ Om de assen om te keren, beweeg je de joystick eerst verticaal en vervolgens hor - + Configure Configureer @@ -4022,111 +4456,93 @@ Om de assen om te keren, beweeg je de joystick eerst verticaal en vervolgens hor Poort: - - Learn More - Meer Info - - - - + + Test Test - + Add Server Voeg Server toe - + Remove Server Verwijder Server - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Meer Info</span></a> - - - + %1:%2 %1:%2 - yuzu - yuzu + + + + + + + Eden + - - <a href='https://eden-emulator.github.io/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - - - - + Port number has invalid characters Poortnummer bevat ongeldige tekens - - - - - - - eden - - - - + Port has to be in range 0 and 65353 Poort moet in bereik 0 en 65353 zijn - + IP address is not valid IP-adress is niet geldig - + This UDP server already exists Deze UDP-server bestaat al - + Unable to add more than 8 servers Kan niet meer dan 8 servers toevoegen - + Testing Testen - + Configuring Configureren - + Test Successful Test Succesvol - + Successfully received data from the server. De data van de server is succesvol ontvangen. - + Test Failed Test Gefaald - + Could not receive valid data from the server.<br>Please verify that the server is set up correctly and the address and port are correct. Kan niet de juiste data van de server ontvangen.<br>Controleer of de server correct is ingesteld en of het adres en de poort correct zijn. - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. UDP-test of kalibratieconfiguratie is bezig.<br>Wacht tot ze klaar zijn. @@ -4253,9 +4669,9 @@ De huidige waarden zijn %1% en %2%. Netwerkinterface - - None - Geen + + Enable Airplane Mode + @@ -4311,49 +4727,54 @@ De huidige waarden zijn %1% en %2%. Sommige instellingen zijn alleen beschikbaar als een spel niet actief is. - + Add-Ons Add-Ons - + System Systeem - + CPU CPU - + Graphics Graphics - + Adv. Graphics Adv. Graphics - - GPU Extensions - + + Ext. Graphics + - + Audio Audio - + Input Profiles Invoerprofielen - Linux - + Network + + + + + Applets + @@ -4374,15 +4795,110 @@ De huidige waarden zijn %1% en %2%. Add-Ons - + + Import Mod from ZIP + + + + + Import Mod from Folder + + + + Patch Name Patch-naam - + Version Versie + + + Mod Install Succeeded + + + + + Successfully installed all mods. + + + + + Mod Install Failed + + + + + Failed to install the following mods: + %1 +Check the log for details. + + + + + Mod Folder + + + + + Zipped Mod Location + + + + + Zipped Archives (*.zip) + + + + + Invalid Selection + + + + + Only mods, cheats, and patches can be deleted. +To delete NAND-installed updates, right-click the game in the game list and click Remove -> Remove Installed Update. + + + + + You are about to delete the following installed mods: + + + + + + +Once deleted, these can NOT be recovered. Are you 100% sure you want to delete them? + + + + + Delete add-on(s)? + + + + + Successfully deleted + + + + + Successfully deleted all selected mods. + + + + + &Delete + + + + + &Open in File Manager + + ConfigureProfileManager @@ -4412,32 +4928,17 @@ De huidige waarden zijn %1% en %2%. Gebruikersnaam - - Set Image - Stel Afbeelding In - - - + Add Toevoegen - - Rename - Hernoem - - - - Remove - Verwijder - - - + Profile management is available only when game is not running. Profielbeheer is alleen beschikbaar wanneer het spel niet bezig is. - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -4445,100 +4946,80 @@ De huidige waarden zijn %1% en %2%. %2 - - Enter Username - Voer Gebruikersnaam in - - - + Users Gebruikers - - Enter a username for the new user: - Voer een gebruikersnaam in voor de nieuwe gebruiker: - - - - Enter a new username: - Voer nieuwe gebruikersnaam in: - - - - Select User Image - Selecteer Gebruikersfoto - - - - JPEG Images (*.jpg *.jpeg) - JPEG-foto's (*.jpg *.jpeg) - - - + Error deleting image Fout tijdens verwijderen afbeelding - + Error occurred attempting to overwrite previous image at: %1. Er is een fout opgetreden bij het overschrijven van de vorige afbeelding in: %1. - + Error deleting file Fout tijdens verwijderen bestand - + Unable to delete existing file: %1. Kan bestaand bestand niet verwijderen: %1. - + Error creating user image directory Fout tijdens het maken van de map met afbeeldingen van de gebruiker - + Unable to create directory %1 for storing user images. Fout tijdens het maken van map %1 om gebruikersafbeeldingen in te bewaren. - - Error copying user image - Fout tijdens het kopiëren van de gebruiker afbeelding + + Error saving user image + - - Unable to copy image from %1 to %2 - Kan afbeelding niet kopiëren van %1 naar %2 + + Unable to save image to file + - - Error resizing user image - Fout bij het aanpassen van grootte van gebruikersafbeelding + + &Edit + - - Unable to resize image - Kon de grootte van de afbeelding niet wijzigen + + &Delete + + + + + Edit User + ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. Deze gebruiker verwijderen? Alle opgeslagen gegevens van de gebruiker worden verwijderd. - + Confirm Delete Bevestig Verwijdering - + Name: %1 UUID: %2 Naam: %1 @@ -4591,7 +5072,7 @@ UUID: %2 - + Enable Inschakelen @@ -4602,7 +5083,7 @@ UUID: %2 - + Not connected Niet verbonden @@ -4612,63 +5093,63 @@ UUID: %2 Standaard Herstellen - + Clear Wis - + [not set] [niet ingesteld] - + Invert axis Spiegel as - - + + Deadzone: %1% Deadzone: %1% - + Error enabling ring input Fout tijdens inschakelen van ringinvoer - + Direct Joycon driver is not enabled Direct Joycon-driver niet ingeschakeld - + Configuring Configureren - + The current mapped device doesn't support the ring controller Het huidige apparaat ondersteunt de ringcontroller niet - + The current mapped device doesn't have a ring attached Het huidige apparaat heeft geen ring - + The current mapped device is not connected Het huidige toegewezen apparaat is niet aangesloten - + Unexpected driver result %1 Onverwacht driverresultaat %1 - + [waiting] [aan het wachten] @@ -4692,7 +5173,7 @@ UUID: %2 Core - + Warning: "%1" is not a valid language for region "%2" Waarschuwing: "%1" is geen geldige taal voor regio "%2" @@ -4704,14 +5185,10 @@ UUID: %2 TAS TAS - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the yuzu website.</p></body></html> - <html><head/><body><p>Leest controller-invoer van scripts in hetzelfde formaat als TAS-nx-scripts.<br/>Voor een meer gedetailleerde uitleg kunt u de<a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help-pagina</span></a>op de yuzu-website raadplegen.</p></body></html> - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the eden website.</p></body></html> - + <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the user handbook.</p></body></html> + @@ -4744,17 +5221,22 @@ UUID: %2 Onderbreek de uitvoering tijdens ladingen - + + Show recording dialog + + + + Script Directory Script-map - + Path Pad - + ... ... @@ -4762,12 +5244,12 @@ UUID: %2 ConfigureTasDialog - + TAS Configuration TAS-configuratie - + Select TAS Load Directory... Selecteer TAS-laadmap... @@ -4871,14 +5353,10 @@ Versleep punten om de positie te veranderen, of dubbelklik op tabelcellen om waa Configure Touchscreen Configureer Touchscreen - - Warning: The settings in this page affect the inner workings of yuzu's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - Waarschuwing: De instellingen in deze pagina beïnvloeden de innerlijke werking van yuzu's geëmuleerde touchscreen. Het veranderen ervan kan leiden tot ongewenst gedrag, zoals het gedeeltelijk of niet werken van het touchscreen. Je moet deze pagina alleen gebruiken als je weet wat je doet. - - Warning: The settings in this page affect the inner workings of eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - + Warning: The settings in this page affect the inner workings of Eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. + @@ -4909,64 +5387,43 @@ Versleep punten om de positie te veranderen, of dubbelklik op tabelcellen om waa ConfigureUI - - - + + None Geen - - - Small (32x32) - Klein (32x32) - - Standard (64x64) - Standaard (64x64) - - - - Large (128x128) - Groot (128x128) - - - - Full Size (256x256) - Volledige Grootte (256x256) - - - Small (24x24) Klein (24x24) - + Standard (48x48) Standaard (48x48) - + Large (72x72) Groot (72x72) - + Filename Bestandsnaam - + Filetype Bestandstype - + Title ID Titel-ID - + Title Name Titelnaam @@ -5031,75 +5488,70 @@ Versleep punten om de positie te veranderen, of dubbelklik op tabelcellen om waa Show Play Time Column - + - Game Icon Size: - Grootte Spelicoon: - - - Folder Icon Size: Grootte Mapicoon: - + Row 1 Text: Rij 1 Tekst: - + Row 2 Text: Rij 2 Tekst: - + Screenshots Schermafbeelding - + Ask Where To Save Screenshots (Windows Only) Vraag waar schermafbeeldingen moeten worden opgeslagen (alleen Windows) - + Screenshots Path: Schermafbeeldingspad: - + ... ... - + TextLabel TextLabel - + Resolution: Resolutie: - + Select Screenshots Path... Selecteer Schermafbeeldingspad... - + <System> <System> - + English Engels - + Auto (%1 x %2, %3 x %4) Screenshot width value Auto (%1 x %2, %3 x %4) @@ -5197,170 +5649,178 @@ Versleep punten om de positie te veranderen, of dubbelklik op tabelcellen om waa Web Web - - yuzu Web Service - yuzu-webservice - - - By providing your username and token, you agree to allow yuzu to collect additional usage data, which may include user identifying information. - Door je gebruikersnaam en token op te geven, ga je ermee akkoord dat yuzu aanvullende gebruiksgegevens verzamelt, die informatie ter identificatie van de gebruiker kunnen bevatten. - - eden Web Service - + Eden Web Service + - - By providing your username and token, you agree to allow eden to collect additional usage data, which may include user identifying information. - - - - - Verify - Verifieer - - - - Sign up - Registreer - - - + Token: Token: - + Username: Gebruikersnaam: - - What is my token? - Wat is mijn token? + + Generate + - + Web Service configuration can only be changed when a public room isn't being hosted. De configuratie van de webservice kan alleen worden gewijzigd als er geen openbare ruimte wordt gehost. - Telemetry - Telemetrie - - - Share anonymous usage data with the yuzu team - Deel anonieme gebruiksdata met het yuzu-team - - - Learn more - Meer info - - - Telemetry ID: - Telemetrie-ID: - - - Regenerate - Regenereer - - - + Discord Presence Aanwezigheid in Discord - + Show Current Game in your Discord Status Toon huidige game in uw Discord-status - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Meer info</span></a> - - - - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Registreer</span></a> - - - - <a href='https://evilperson1337.notion.site/Hosting-a-Room-Inside-of-Eden-20457c2edaf680108abac6215a79acdb'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - - - - - Warning - - - + - Verification is currently nonfunctional, instead generate a random 48-character string with only lowercase a-z. - - - - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">Wat is mijn token?</span></a> - - - Telemetry ID: 0x%1 - Telemetrie-ID: 0x%1 - - - Unspecified - Niet gespecificeerd - - - Token not verified - Token niet geverifieerd - - - Token was not verified. The change to your token has not been saved. - Token is niet geverifieerd. De verandering aan uw token zijn niet opgeslagen. - - - - Unverified, please click Verify before saving configuration + All Good Tooltip - Niet geverifieerd, klik op Verifiëren voordat je de configuratie opslaat + - Verifying... - Verifiëren... - - - Verified + + Must be between 4-20 characters Tooltip - Geverifiëerd + - Verification failed + + Must be 48 characters, and lowercase a-z Tooltip - Verificatie mislukt - - - Verification failed - Verificatie mislukt - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - Verificatie mislukt. Controleer of je je token correct hebt ingevoerd en of je internetverbinding werkt. + ControllerDialog - + Controller P1 Controller P1 - + &Controller P1 &Controller P1 + + DataDialog + + + Data Manager + + + + + Deleting ANY data is IRREVERSABLE! + + + + + Shaders + + + + + UserNAND + + + + + SysNAND + + + + + Mods + + + + + Saves + + + + + DataWidget + + + Form + + + + + Tooltip + + + + + Open with your system file manager + + + + + Delete all data in this directory. THIS IS 100% IRREVERSABLE! + + + + + Export all data in this directory. This may take a while! + + + + + Import data for this directory. This may take a while, and will delete ALL EXISTING DATA! + + + + + Calculating... + + + + + DepsDialog + + + Eden Dependencies + + + + + <html><head/><body><p><span style=" font-size:28pt;">Eden Dependencies</span></p></body></html> + + + + + <html><head/><body><p>The projects that make Eden possible</p></body></html> + + + + + Dependency + + + + + Version + + + DirectConnect @@ -5422,1507 +5882,152 @@ Versleep punten om de positie te veranderen, of dubbelklik op tabelcellen om waa Username is not valid. Must be 4 to 20 alphanumeric characters. - Gebruikersnaam is niet geldig. Moet bestaan uit 4 tot 20 alfanumerieke tekens. + Room name is not valid. Must be 4 to 20 alphanumeric characters. - Kamernaam is niet geldig. Moet bestaan uit 4 tot 20 alfanumerieke tekens. + Username is already in use or not valid. Please choose another. - Gebruikersnaam is al in gebruik of niet geldig. Kies een andere. + IP is not a valid IPv4 address. - IP is geen geldig IPv4-adres. + Port must be a number between 0 to 65535. - De poort moet een getal zijn tussen 0 en 65535. + You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - Je moet een Voorkeursspel kiezen om een kamer te hosten. Als je nog geen spellen in je spellenlijst hebt, voeg dan een spellenmap toe door op het plus-icoon in de spellenlijst te klikken. + Unable to find an internet connection. Check your internet settings. - Kan geen internetverbinding vinden. Controleer je Internetinstellingen. + Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - Kan geen verbinding maken met de host. Controleer of de verbindingsinstellingen correct zijn. Als je nog steeds geen verbinding kunt maken, neem dan contact op met de ruimtehost en controleer of de host correct is geconfigureerd met de externe poort doorgestuurd. + Unable to connect to the room because it is already full. - Kan geen verbinding maken met de kamer omdat deze al vol is. + - Creating a room failed. Please retry. Restarting eden might be necessary. - + Creating a room failed. Please retry. Restarting Eden might be necessary. + The host of the room has banned you. Speak with the host to unban you or try a different room. - De host van de kamer heeft je verbannen. Praat met de host om je ban op te heffen of probeer een andere kamer. + - Version mismatch! Please update to the latest version of eden. If the problem persists, contact the room host and ask them to update the server. - + Version mismatch! Please update to the latest version of Eden. If the problem persists, contact the room host and ask them to update the server. + Incorrect password. - Verkeerd wachtwoord. + An unknown error occurred. If this error continues to occur, please open an issue - Er is een onbekende fout opgetreden. Als deze fout zich blijft voordoen, open dan een ticket + Connection to room lost. Try to reconnect. - Verbinding met kamer verloren. Probeer opnieuw verbinding te maken. + You have been kicked by the room host. - Je bent gekickt door de kamerhost. + IP address is already in use. Please choose another. - Het IP-adres is al in gebruik. Kies een ander. + You do not have enough permission to perform this action. - Je hebt niet genoeg rechten om deze actie uit te voeren. + The user you are trying to kick/ban could not be found. They may have left the room. - De gebruiker die je probeert te kicken/bannen kon niet gevonden worden. -Ze kunnen de ruimte hebben verlaten. + No valid network interface is selected. Please go to Configure -> System -> Network and make a selection. - Er is geen geldige netwerkinterface geselecteerd. -Ga naar Configuratie -> Systeem -> Netwerk en maak een selectie. + Error - Fout - - - - GMainWindow - - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Anonymous data is collected</a> to help improve yuzu. <br/><br/>Would you like to share your usage data with us? - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Annonieme gegevens worden verzameld</a> om yuzu te helpen verbeteren. <br/><br/> Zou je jouw gebruiksgegevens met ons willen delen? - - - Telemetry - Telemetrie - - - - Broken Vulkan Installation Detected - Beschadigde Vulkan-installatie gedetecteerd - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - Vulkan-initialisatie mislukt tijdens het opstarten.<br><br>Klik <a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>hier voor instructies om het probleem op te lossen</a>. - - - - Running a game - TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping - Een spel uitvoeren - - - - Loading Web Applet... - Web Applet Laden... - - - - - Disable Web Applet - Schakel Webapplet uit - - - - 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.) - 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). - - - - The amount of shaders currently being built - Het aantal shaders dat momenteel wordt gebouwd - - - - The current selected resolution scaling multiplier. - De huidige geselecteerde resolutieschaalmultiplier. - - - - Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. - Huidige emulatiesnelheid. Waarden hoger of lager dan 100% geven aan dat de emulatie sneller of langzamer werkt dan een Switch. - - - - How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. - Hoeveel beelden per seconde het spel momenteel weergeeft. Dit varieert van spel tot spel en van scène tot scène. - - - - 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. - 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. - - - - Unmute - Dempen opheffen - - - - Mute - Dempen - - - - Reset Volume - Herstel Volume - - - - &Clear Recent Files - &Wis Recente Bestanden - - - - &Continue - &Doorgaan - - - - &Pause - &Onderbreken - - - - Warning Outdated Game Format - Waarschuwing Verouderd Spelformaat - - - 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.<br><br>For an explanation of the various Switch formats yuzu supports, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - 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.<br><br>Voor een uitleg van de verschillende Switch-formaten die yuzu ondersteunt,<a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'> bekijk onze wiki</a>. Dit bericht wordt niet meer getoond. - - - - - Error while loading ROM! - Fout tijdens het laden van een ROM! - - - - The ROM format is not supported. - Het ROM-formaat wordt niet ondersteund. - - - - An error occurred initializing the video core. - Er is een fout opgetreden tijdens het initialiseren van de videokern. - - - 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: <a href='https://yuzu-emu.org/help/reference/log-files/'>How to Upload the Log File</a>. - 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: <a href='https://yuzu-emu.org/help/reference/log-files/'>Hoe upload je het logbestand</a>. - - - - Error while loading ROM! %1 - %1 signifies a numeric error code. - Fout tijdens het laden van ROM! %1 - - - %1<br>Please follow <a href='https://yuzu-emu.org/help/quickstart/'>the yuzu quickstart guide</a> to redump your files.<br>You can refer to the yuzu wiki</a> or the yuzu Discord</a> for help. - %1 signifies an error string. - %1<br>Volg de <a href='https://yuzu-emu.org/help/quickstart/'>yuzu snelstartgids</a> om je bestanden te redumpen.<br>Je kunt de yuzu-wiki</a>of de yuzu-Discord</a> raadplegen voor hulp. - - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://eden-emulator.github.io/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - - - - - Game Updates Warning - - - - - The game you are trying to launch is known to have performance or booting issues when updates are applied. Please try increasing the memory layout to 6GB or 8GB if any issues occur.<br><br>Press "OK" to continue launching, or "Cancel" to cancel the launch. - - - - - Don't show again for this game - - - - - 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.<br><br>For an explanation of the various Switch formats eden supports, <a href='https://eden-emulator.github.io/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - - - - - eden 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: <a href='https://eden-emulator.github.io/help/reference/log-files/'>How to Upload the Log File</a>. - - - - - %1<br>Please redump your files or ask on Discord for help. - %1 signifies an error string. - - - - - An unknown error occurred. Please see the log for more details. - Een onbekende fout heeft plaatsgevonden. Kijk in de log voor meer details. - - - - (64-bit) - (64-bit) - - - - (32-bit) - (32-bit) - - - - %1 %2 - %1 is the title name. %2 indicates if the title is 64-bit or 32-bit - %1 %2 - - - - Closing software... - Software sluiten... - - - - Save Data - Save Data - - - - Mod Data - Mod Data - - - - Error Opening %1 Folder - Fout tijdens het openen van %1 map - - - - - Folder does not exist! - Map bestaat niet! - - - - Error Opening Transferable Shader Cache - Fout bij het openen van overdraagbare shader-cache - - - - Failed to create the shader cache directory for this title. - Kon de shader-cache-map voor dit spel niet aanmaken. - - - - Error Removing Contents - Fout bij het verwijderen van de inhoud - - - - Error Removing Update - Fout bij het verwijderen van de update - - - - Error Removing DLC - Fout bij het verwijderen van DLC - - - - Remove Installed Game Contents? - Geïnstalleerde Spelinhoud Verwijderen? - - - - Remove Installed Game Update? - Geïnstalleerde Spel-update Verwijderen? - - - - Remove Installed Game DLC? - Geïnstalleerde Spel-DLC Verwijderen? - - - - Remove Entry - Verwijder Invoer - - - - - - - - - Successfully Removed - Met Succes Verwijderd - - - - Successfully removed the installed base game. - Het geïnstalleerde basisspel is succesvol verwijderd. - - - - The base game is not installed in the NAND and cannot be removed. - Het basisspel is niet geïnstalleerd in de NAND en kan niet worden verwijderd. - - - - Successfully removed the installed update. - De geïnstalleerde update is succesvol verwijderd. - - - - There is no update installed for this title. - Er is geen update geïnstalleerd voor dit spel. - - - - There are no DLC installed for this title. - Er is geen DLC geïnstalleerd voor dit spel. - - - - Successfully removed %1 installed DLC. - %1 geïnstalleerde DLC met succes verwijderd. - - - - Delete OpenGL Transferable Shader Cache? - Overdraagbare OpenGL-shader-cache Verwijderen? - - - - Delete Vulkan Transferable Shader Cache? - Overdraagbare Vulkan-shader-cache Verwijderen? - - - - Delete All Transferable Shader Caches? - Alle Overdraagbare Shader-caches Verwijderen? - - - - Remove Custom Game Configuration? - Aangepaste Spelconfiguratie Verwijderen? - - - - Remove Cache Storage? - Verwijder Cache-opslag? - - - - Remove File - Verwijder Bestand - - - - Remove Play Time Data - - - - - Reset play time? - - - - - - Error Removing Transferable Shader Cache - Fout bij het verwijderen van Overdraagbare Shader-cache - - - - - A shader cache for this title does not exist. - Er bestaat geen shader-cache voor dit spel. - - - - Successfully removed the transferable shader cache. - De overdraagbare shader-cache is verwijderd. - - - - Failed to remove the transferable shader cache. - Kon de overdraagbare shader-cache niet verwijderen. - - - - Error Removing Vulkan Driver Pipeline Cache - Fout bij het verwijderen van Pijplijn-cache van Vulkan-driver - - - - Failed to remove the driver pipeline cache. - Kon de pijplijn-cache van de driver niet verwijderen. - - - - - Error Removing Transferable Shader Caches - Fout bij het verwijderen van overdraagbare shader-caches - - - - Successfully removed the transferable shader caches. - De overdraagbare shader-caches zijn verwijderd. - - - - Failed to remove the transferable shader cache directory. - Kon de overdraagbare shader-cache-map niet verwijderen. - - - - - Error Removing Custom Configuration - Fout bij het verwijderen van aangepaste configuratie - - - - A custom configuration for this title does not exist. - Er bestaat geen aangepaste configuratie voor dit spel. - - - - Successfully removed the custom game configuration. - De aangepaste spelconfiguratie is verwijderd. - - - - Failed to remove the custom game configuration. - Kon de aangepaste spelconfiguratie niet verwijderen. - - - - - RomFS Extraction Failed! - RomFS-extractie Mislukt! - - - - There was an error copying the RomFS files or the user cancelled the operation. - Er is een fout opgetreden bij het kopiëren van de RomFS-bestanden of de gebruiker heeft de bewerking geannuleerd. - - - - Full - Volledig - - - - Skeleton - Skelet - - - - Select RomFS Dump Mode - Selecteer RomFS-dumpmodus - - - - Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. - Selecteer hoe je de RomFS gedumpt wilt hebben.<br>Volledig zal alle bestanden naar de nieuwe map kopiëren, terwijl <br>Skelet alleen de mapstructuur zal aanmaken. - - - - There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root - Er is niet genoeg vrije ruimte op %1 om de RomFS uit te pakken. Maak ruimte vrij of kies een andere dumpmap bij Emulatie > Configuratie > Systeem > Bestandssysteem > Dump Root. - - - - Extracting RomFS... - RomFS uitpakken... - - - - - - - - Cancel - Annuleren - - - - RomFS Extraction Succeeded! - RomFS-extractie Geslaagd! - - - - - - The operation completed successfully. - De bewerking is succesvol voltooid. - - - - Integrity verification couldn't be performed! - Integriteitsverificatie kon niet worden uitgevoerd! - - - - File contents were not checked for validity. - De inhoud van bestanden werd niet gecontroleerd op geldigheid. - - - - - Verifying integrity... - Integriteit verifiëren... - - - - - Integrity verification succeeded! - Integriteitsverificatie geslaagd! - - - - - Integrity verification failed! - Integriteitsverificatie mislukt! - - - - File contents may be corrupt. - Bestandsinhoud kan corrupt zijn. - - - - - - - Create Shortcut - Maak Snelkoppeling - - - - Do you want to launch the game in fullscreen? - - - - - Successfully created a shortcut to %1 - Succesvol een snelkoppeling naar %1 gemaakt - - - - This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - Dit maakt een snelkoppeling naar de huidige AppImage. Dit werkt mogelijk niet goed als je een update uitvoert. Doorgaan? - - - - Failed to create a shortcut to %1 - - - - - Create Icon - Maak Icoon - - - - Cannot create icon file. Path "%1" does not exist and cannot be created. - Kan geen icoonbestand maken. Pad "%1" bestaat niet en kan niet worden aangemaakt. - - - - Error Opening %1 - Fout bij openen %1 - - - - Select Directory - Selecteer Map - - - - Properties - Eigenschappen - - - - The game properties could not be loaded. - De speleigenschappen kunnen niet geladen worden. - - - - Switch Executable (%1);;All Files (*.*) - %1 is an identifier for the Switch executable file extensions. - Switch Executable (%1);;Alle Bestanden (*.*) - - - - Load File - Laad Bestand - - - - Open Extracted ROM Directory - Open Uitgepakte ROM-map - - - - Invalid Directory Selected - Ongeldige Map Geselecteerd - - - - The directory you have selected does not contain a 'main' file. - De map die je hebt geselecteerd bevat geen 'main'-bestand. - - - - Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - Installeerbaar Switch-bestand (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - - - - Install Files - Installeer Bestanden - - - - %n file(s) remaining - - %n bestand(en) resterend - %n bestand(en) resterend - - - - - Installing file "%1"... - Bestand "%1" Installeren... - - - - - Install Results - Installeerresultaten - - - - To avoid possible conflicts, we discourage users from installing base games to the NAND. -Please, only use this feature to install updates and DLC. - 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. - - - - %n file(s) were newly installed - - - %n bestand(en) zijn recent geïnstalleerd - - %n bestand(en) zijn recent geïnstalleerd - - - - - - %n file(s) were overwritten - - - %n bestand(en) werden overschreven - - %n bestand(en) werden overschreven - - - - - - %n file(s) failed to install - - - %n bestand(en) niet geïnstalleerd - - %n bestand(en) niet geïnstalleerd - - - - - - System Application - Systeemapplicatie - - - - System Archive - Systeemarchief - - - - System Application Update - Systeemapplicatie-update - - - - Firmware Package (Type A) - Filmware-pakket (Type A) - - - - Firmware Package (Type B) - Filmware-pakket (Type B) - - - - Game - Spel - - - - Game Update - Spelupdate - - - - Game DLC - Spel-DLC - - - - Delta Title - Delta Titel - - - - Select NCA Install Type... - Selecteer NCA-installatiesoort... - - - - Please select the type of title you would like to install this NCA as: -(In most instances, the default 'Game' is fine.) - Selecteer het type titel waarin je deze NCA wilt installeren: -(In de meeste gevallen is de standaard "Spel" prima). - - - - Failed to Install - Installatie Mislukt - - - - The title type you selected for the NCA is invalid. - Het soort title dat je hebt geselecteerd voor de NCA is ongeldig. - - - - File not found - Bestand niet gevonden - - - - File "%1" not found - Bestand "%1" niet gevonden - - - - OK - OK - - - - - Hardware requirements not met - Er is niet voldaan aan de hardwarevereisten - - - - - Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled. - Je systeem voldoet niet aan de aanbevolen hardwarevereisten. Compatibiliteitsrapportage is uitgeschakeld. - - - - Missing yuzu Account - yuzu-account Ontbreekt - - - - In order to submit a game compatibility test case, you must link your eden account.<br><br/>To link your eden account, go to Emulation &gt; Configuration &gt; Web. - - - - - Install decryption keys and restart eden before attempting to install firmware. - - - - - Firmware installation cancelled, firmware may be in bad state, restart eden or re-install firmware. - - - - - Encryption keys are missing. - - - - - Are you sure you want to close eden? - - - - - - - eden - - - - - The currently running application has requested eden to not exit. - -Would you like to bypass this and exit anyway? - - - - In order to submit a game compatibility test case, you must link your yuzu account.<br><br/>To link your yuzu account, go to Emulation &gt; Configuration &gt; Web. - Om een spelcompatibiliteitstest in te dienen, moet je je yuzu-account koppelen.<br><br/>Om je yuzu-account te koppelen, ga naar Emulatie &gt; Configuratie &gt; Web. - - - - Error opening URL - Fout bij het openen van URL - - - - Unable to open the URL "%1". - Kan de URL "%1" niet openen. - - - - TAS Recording - TAS-opname - - - - Overwrite file of player 1? - Het bestand van speler 1 overschrijven? - - - - Invalid config detected - Ongeldige configuratie gedetecteerd - - - - Handheld controller can't be used on docked mode. Pro controller will be selected. - Handheld-controller kan niet gebruikt worden in docked-modus. Pro controller wordt geselecteerd. - - - - - Amiibo - Amiibo - - - - - The current amiibo has been removed - De huidige amiibo is verwijderd - - - - Error - Fout - - - - - The current game is not looking for amiibos - Het huidige spel is niet op zoek naar amiibo's - - - - Amiibo File (%1);; All Files (*.*) - Amiibo-bestand (%1);; Alle Bestanden (*.*) - - - - Load Amiibo - Laad Amiibo - - - - Error loading Amiibo data - Fout tijdens het laden van de Amiibo-gegevens - - - - The selected file is not a valid amiibo - Het geselecteerde bestand is geen geldige amiibo - - - - The selected file is already on use - Het geselecteerde bestand is al in gebruik - - - - An unknown error occurred - Er is een onbekende fout opgetreden - - - - - Verification failed for the following files: - -%1 - Verificatie mislukt voor de volgende bestanden: - -%1 - - - - Keys not installed - - - - - Select Dumped Firmware Source Location - - - - - Installing Firmware... - - - - - - - - Firmware install failed - - - - - Unable to locate potential firmware NCA files - - - - - Failed to delete one or more firmware file. - - - - - One or more firmware files failed to copy into NAND. - - - - - Firmware integrity verification failed! - - - - - Select Dumped Keys Location - - - - - - - Decryption Keys install failed - - - - - prod.keys is a required decryption key file. - - - - - One or more keys failed to copy. - - - - - Decryption Keys install succeeded - - - - - Decryption Keys were successfully installed - - - - - Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. - - - - - - - - - - - No firmware available - - - - - Please install the firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Controller Menu. - - - - - Controller Applet - Controller Applet - - - - Controller Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Home Menu. - - - - - - Home Menu Applet - - - - - - Home Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use Starter. - - - - - Starter Applet - - - - - Starter is not available. Please reinstall firmware. - - - - - Please install firmware to use the home menu. - - - - - Capture Screenshot - Leg Schermafbeelding Vast - - - - PNG Image (*.png) - PNG-afbeelding (*.png) - - - - Update Available - - - - - Update %1 for Eden is available. -Would you like to download it? - - - - - TAS state: Running %1/%2 - TAS-status: %1/%2 In werking - - - - TAS state: Recording %1 - TAS-status: %1 Aan het opnemen - - - - TAS state: Idle %1/%2 - TAS-status: %1/%2 Inactief - - - - TAS State: Invalid - TAS-status: Ongeldig - - - - &Stop Running - &Stop Uitvoering - - - - &Start - &Start - - - - Stop R&ecording - Stop Opname - - - - R&ecord - Opnemen - - - - Building: %n shader(s) - - Bouwen: %n shader(s) - Bouwen: %n shader(s) - - - - - Scale: %1x - %1 is the resolution scaling factor - Schaal: %1x - - - - Speed: %1% / %2% - Snelheid: %1% / %2% - - - - Speed: %1% - Snelheid: %1% - - - Game: %1 FPS (Unlocked) - Spel: %1 FPS (Ontgrendeld) - - - - Game: %1 FPS - Game: %1 FPS - - - - Frame: %1 ms - Frame: %1 ms - - - - %1 %2 - %1 %2 - - - - - FSR - FSR - - - - NO AA - GEEN AA - - - - VOLUME: MUTE - VOLUME: GEDEMPT - - - - VOLUME: %1% - Volume percentage (e.g. 50%) - VOLUME: %1% - - - - Derivation Components Missing - Afleidingscomponenten ontbreken - - - - Select RomFS Dump Target - Selecteer RomFS-dumpdoel - - - - Please select which RomFS you would like to dump. - Selecteer welke RomFS je zou willen dumpen. - - - Are you sure you want to close yuzu? - Weet je zeker dat je yuzu wilt sluiten? - - - yuzu - yuzu - - - - Are you sure you want to stop the emulation? Any unsaved progress will be lost. - Weet je zeker dat je de emulatie wilt stoppen? Alle niet opgeslagen voortgang zal verloren gaan. - - - The currently running application has requested yuzu to not exit. - -Would you like to bypass this and exit anyway? - De momenteel actieve toepassing heeft yuzu gevraagd om niet af te sluiten. - -Wil je toch afsluiten? - - - - None - Geen - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Nearest - Nearest - - - - Bilinear - Bilinear - - - - Bicubic - Bicubic - - - - Gaussian - Gaussian - - - - ScaleForce - ScaleForce - - - - Area - - - - - Docked - Docked - - - - Handheld - Handheld - - - - Normal - Normaal - - - - High - Hoog - - - - Extreme - Extreme - - - - Vulkan - Vulkan - - - - OpenGL - OpenGL - - - - Null - Null - - - - GLSL - GLSL - - - - GLASM - GLASM - - - - SPIRV - SPIRV + GRenderWindow - - + + OpenGL not available! OpenGL niet beschikbaar! - + OpenGL shared contexts are not supported. OpenGL gedeelde contexten worden niet ondersteund. - yuzu has not been compiled with OpenGL support. - yuzu is niet gecompileerd met OpenGL-ondersteuning. + + Eden has not been compiled with OpenGL support. + - - eden has not been compiled with OpenGL support. - - - - - + + Error while initializing OpenGL! Fout tijdens het initialiseren van OpenGL! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. Je GPU ondersteunt mogelijk geen OpenGL, of je hebt niet de laatste grafische stuurprogramma. - + Error while initializing OpenGL 4.6! Fout tijdens het initialiseren van OpenGL 4.6! - + Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 Je GPU ondersteunt mogelijk OpenGL 4.6 niet, of je hebt niet het laatste grafische stuurprogramma.<br><br>GL Renderer:<br>%1 - + Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2 Je GPU ondersteunt mogelijk een of meer vereiste OpenGL-extensies niet. Zorg ervoor dat je het laatste grafische stuurprogramma hebt.<br><br>GL Renderer:<br>%1<br><br>Ondersteunde extensies:<br>%2 @@ -6930,255 +6035,271 @@ Wil je toch afsluiten? GameList - + + &Add New Game Directory + + + + Favorite Favoriet - + Start Game Start Spel - + Start Game without Custom Configuration Start Spel zonder Aangepaste Configuratie - + Open Save Data Location Open Locatie van Save-data - + Open Mod Data Location Open Locatie van Mod-data - + Open Transferable Pipeline Cache Open Overdraagbare Pijplijn-cache - + + Link to Ryujinx + + + + Remove Verwijder - + Remove Installed Update Verwijder Geïnstalleerde Update - + Remove All Installed DLC Verwijder Alle Geïnstalleerde DLC's - + Remove Custom Configuration Verwijder Aangepaste Configuraties - - Remove Play Time Data - - - - + Remove Cache Storage Verwijder Cache-opslag - + Remove OpenGL Pipeline Cache Verwijder OpenGL-pijplijn-cache - + Remove Vulkan Pipeline Cache Verwijder Vulkan-pijplijn-cache - + Remove All Pipeline Caches Verwijder Alle Pijplijn-caches - + Remove All Installed Contents Verwijder Alle Geïnstalleerde Inhoud - - + + Manage Play Time + + + + + Edit Play Time Data + + + + + Remove Play Time Data + + + + + Dump RomFS Dump RomFS - + Dump RomFS to SDMC Dump RomFS naar SDMC - + Verify Integrity Verifieer Integriteit - + Copy Title ID to Clipboard Kopiëer Titel-ID naar Klembord - + Navigate to GameDB entry Navigeer naar GameDB-invoer - + Create Shortcut Maak Snelkoppeling - + Add to Desktop Toevoegen aan Bureaublad - + Add to Applications Menu Toevoegen aan menu Toepassingen - + Configure Game - + - Properties - Eigenschappen - - - + Scan Subfolders Scan Submappen - + Remove Game Directory Verwijder Spelmap - + ▲ Move Up ▲ Omhoog - + ▼ Move Down ▼ Omlaag - + Open Directory Location Open Maplocatie - + Clear Verwijder - + Name Naam - + Compatibility Compatibiliteit - + Add-ons Add-ons - + File type Bestandssoort - + Size Grootte - + Play time - + GameListItemCompat - + Ingame In het spel - + Game starts, but crashes or major glitches prevent it from being completed. Het spel start, maar crashes of grote glitches voorkomen dat het wordt voltooid. - + Perfect Perfect - + Game can be played without issues. Het spel kan zonder problemen gespeeld worden. - + Playable Speelbaar - + Game functions with minor graphical or audio glitches and is playable from start to finish. Het spel werkt met kleine grafische of audiofouten en is speelbaar van begin tot eind. - + Intro/Menu Intro/Menu - + Game loads, but is unable to progress past the Start Screen. Het spel wordt geladen, maar komt niet verder dan het startscherm. - + Won't Boot Start niet op - + The game crashes when attempting to startup. Het spel loopt vast bij het opstarten. - + Not Tested Niet Getest - + The game has not yet been tested. Het spel is nog niet getest. @@ -7186,7 +6307,7 @@ Wil je toch afsluiten? GameListPlaceholder - + Double-click to add a new folder to the game list Dubbel-klik om een ​​nieuwe map toe te voegen aan de spellijst @@ -7194,20 +6315,17 @@ Wil je toch afsluiten? GameListSearchField - + %1 of %n result(s) - - %1 van %n resultaat(en) - %1 van %n resultaat(en) - + %1 van %n resultaat(en)%1 van %n resultaat(en) - + Filter: Filter: - + Enter pattern to filter Voer patroon in om te filteren @@ -7283,233 +6401,241 @@ Wil je toch afsluiten? HostRoomWindow - + Error Fout - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. + + Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid Eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. Debug Message: - - - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid yuzu account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. -Debug Message: - Het is niet gelukt om de kamer aan te kondigen in de openbare lobby. Om een kamer openbaar te hosten, moet je een geldige yuzu-account geconfigureerd hebben in Emulatie -> Configuratie -> Web. Als je geen kamer wilt publiceren in de openbare lobby, selecteer dan in plaats daarvan Niet Vermeld. -Debug-bericht: + Hotkeys - + Audio Mute/Unmute Audio Dempen/Dempen Opheffen - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Main Window Hoofdvenster - + Audio Volume Down Audiovolume Omlaag - + Audio Volume Up Audiovolume Omhoog - + Capture Screenshot Leg Schermafbeelding Vast - + Change Adapting Filter Wijzig Aanpassingsfilter - + Change Docked Mode Wijzig Docked-modus - - Change GPU Accuracy - Wijzig GPU-nauwkeurigheid + + Change GPU Mode + - + Configure - Configureer + - + Configure Current Game - + - + Continue/Pause Emulation Emulatie Doorgaan/Onderbreken - + Exit Fullscreen Volledig Scherm Afsluiten - Exit yuzu - yuzu afsluiten + + Exit Eden + - - Exit eden - - - - + Fullscreen Volledig Scherm - + Load File Laad Bestand - + Load/Remove Amiibo Laad/Verwijder Amiibo - - Multiplayer Browse Public Game Lobby - + + Browse Public Game Lobby + - - Multiplayer Create Room - + + Create Room + - - Multiplayer Direct Connect to Room - + + Direct Connect to Room + - - Multiplayer Leave Room - + + Leave Room + - - Multiplayer Show Current Room - + + Show Current Room + - + Restart Emulation Herstart Emulatie - + Stop Emulation Stop Emulatie - + TAS Record TAS Opname - + TAS Reset TAS Reset - + TAS Start/Stop TAS Start/Stop - + Toggle Filter Bar Schakel Filterbalk - + Toggle Framerate Limit Schakel Frameratelimiet - + + Toggle Turbo Speed + + + + + Toggle Slow Speed + + + + Toggle Mouse Panning Schakel Muispanning - + Toggle Renderdoc Capture - + - + Toggle Status Bar Schakel Statusbalk + + + Toggle Performance Overlay + + InstallDialog - + Please confirm these are the files you wish to install. Bevestig dat dit de bestanden zijn die je wilt installeren. - + Installing an Update or DLC will overwrite the previously installed one. Het installeren van een Update of DLC overschrijft de eerder geïnstalleerde. - + Install Installeer - + Install Files to NAND Installeer Bestanden naar NAND @@ -7517,8 +6643,8 @@ Debug-bericht: LimitableInputDialog - - The text can't contain any of the following characters: + + The text can't contain any of the following characters: %1 De tekst kan geen van de volgende tekens bevatten: %1 @@ -7542,22 +6668,22 @@ Debug-bericht: Geschatte Tijd 5m 4s - + Loading... Laden... - + Loading Shaders %1 / %2 Shaders Laden %1 / %2 - + Launching... Starten... - + Estimated Time %1 Geschatte Tijd %1 @@ -7606,42 +6732,42 @@ Debug-bericht: Vernieuw Lobby - + Password Required to Join Wachtwoord vereist om toegang te krijgen - + Password: Wachtwoord: - + Players Spelers - + Room Name Kamernaam - + Preferred Game Voorkeursspel - + Host Host - + Refreshing Vernieuwen - + Refresh List Vernieuw Lijst @@ -7664,362 +6790,1424 @@ Debug-bericht: &Recente Bestanden - + + Open &Eden Folders + + + + &Emulation &Emulatie - + &View &Weergeven - + &Reset Window Size &Herstel Venstergrootte - + &Debugging &Debuggen - + + &Game List Mode + + + + + Game &Icon Size + + + + Reset Window Size to &720p Herstel Venstergrootte naar &720p - + Reset Window Size to 720p Herstel Venstergrootte naar 720p - + Reset Window Size to &900p Herstel Venstergrootte naar &900p - + Reset Window Size to 900p Herstel Venstergrootte naar 900p - + Reset Window Size to &1080p Herstel Venstergrootte naar &1080p - + Reset Window Size to 1080p Herstel Venstergrootte naar 1080p - + &Multiplayer &Multiplayer - + &Tools &Tools - - &Amiibo - + + Am&iibo + - + + Launch &Applet + + + + &TAS &TAS - + &Create Home Menu Shortcut - + - + + Install &Firmware + + + + &Help &Help - + &Install Files to NAND... &Installeer Bestanden naar NAND... - + L&oad File... L&aad Bestand... - + Load &Folder... Laad &Map... - + E&xit A&fsluiten - + + &Pause &Onderbreken - + &Stop &Stop - + &Verify Installed Contents - + - - &About eden - + + &About Eden + - - Open &eden Folder - - - - - Open Home Menu - - - - - &Discord - - - - - Open &Setup - - - - - &Desktop - - - - - &Application Menu - - - - &About yuzu - &Over yuzu - - - + Single &Window Mode Modus Enkel Venster - + Con&figure... Con&figureer... - + Ctrl+, - + - - Display D&ock Widget Headers - Toon Dock Widget Kopteksten + + Enable Overlay Display Applet + - + Show &Filter Bar Toon &Filterbalk - + Show &Status Bar Toon &Statusbalk - + Show Status Bar Toon Statusbalk - + &Browse Public Game Lobby &Bladeren door Openbare Spellobby - + &Create Room &Maak Kamer - + &Leave Room &Verlaat Kamer - + &Direct Connect to Room &Directe Verbinding met Kamer - + &Show Current Room &Toon Huidige Kamer - + F&ullscreen Volledig Scherm - + &Restart &Herstart - + Load/Remove &Amiibo... Laad/Verwijder &Amiibo... - + &Report Compatibility &Rapporteer Compatibiliteit - + Open &Mods Page Open &Mod-pagina - + Open &Quickstart Guide Open &Snelstartgids - + &FAQ &FAQ - Open &yuzu Folder - Open &yuzu-map - - - + &Capture Screenshot &Leg Schermafbeelding Vast - - Open &Album - + + &Album + - + &Set Nickname and Owner - + - + &Delete Game Data - + - + &Restore Amiibo - + - + &Format Amiibo - + - - Open &Mii Editor - + + &Mii Editor + - + &Configure TAS... &Configureer TAS... - + Configure C&urrent Game... Configureer Huidig Spel... - + + &Start &Start - + &Reset &Herstel - + + R&ecord Opnemen - + Open &Controller Menu - + - - Install Firmware - + + Install Decryption &Keys + - - Install Decryption Keys - + + &Home Menu + - - - MicroProfileDialog - - &MicroProfile - &MicroProfile + + &Desktop + + + + + &Application Menu + + + + + &Root Data Folder + + + + + &NAND Folder + + + + + &SDMC Folder + + + + + &Mod Folder + + + + + &Log Folder + + + + + From Folder + + + + + From ZIP + + + + + &Eden Dependencies + + + + + &Data Manager + + + + + &Tree View + + + + + &Grid View + + + + + Game Icon Size + + + + + + + None + + + + + Show Game &Name + + + + + Show &Performance Overlay + + + + + Small (32x32) + + + + + Standard (64x64) + + + + + Large (128x128) + + + + + Full Size (256x256) + + + + + Broken Vulkan Installation Detected + + + + + Vulkan initialization failed during boot. + + + + + Running a game + TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping + + + + + Loading Web Applet... + + + + + + Disable Web Applet + + + + + 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.) + + + + + The amount of shaders currently being built + + + + + The current selected resolution scaling multiplier. + + + + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. + + + + + How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. + + + + + 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. + + + + + Unmute + + + + + Mute + + + + + Reset Volume + + + + + &Clear Recent Files + + + + + &Continue + + + + + Warning: Outdated Game Format + + + + + 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.<br>For an explanation of the various Switch formats Eden supports, out our user handbook. This message will not be shown again. + + + + + + Error while loading ROM! + + + + + The ROM format is not supported. + + + + + An error occurred initializing the video core. + + + + + Eden 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: <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>How to Upload the Log File</a>. + + + + + Error while loading ROM! %1 + %1 signifies a numeric error code. + + + + + %1<br>Please redump your files or ask on Discord/Stoat for help. + %1 signifies an error string. + + + + + An unknown error occurred. Please see the log for more details. + + + + + (64-bit) + + + + + (32-bit) + + + + + %1 %2 + %1 is the title name. %2 indicates if the title is 64-bit or 32-bit + + + + + Closing software... + + + + + Save Data + + + + + Mod Data + + + + + Error Opening %1 Folder + + + + + + Folder does not exist! + + + + + Remove Installed Game Contents? + + + + + Remove Installed Game Update? + + + + + Remove Installed Game DLC? + + + + + Remove Entry + + + + + Delete OpenGL Transferable Shader Cache? + + + + + Delete Vulkan Transferable Shader Cache? + + + + + Delete All Transferable Shader Caches? + + + + + Remove Custom Game Configuration? + + + + + Remove Cache Storage? + + + + + Remove File + + + + + Remove Play Time Data + + + + + Reset play time? + + + + + + RomFS Extraction Failed! + + + + + There was an error copying the RomFS files or the user cancelled the operation. + + + + + Full + + + + + Skeleton + + + + + Select RomFS Dump Mode + + + + + Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. + + + + + There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root + + + + + Extracting RomFS... + + + + + + Cancel + + + + + RomFS Extraction Succeeded! + + + + + The operation completed successfully. + + + + + Error Opening %1 + + + + + Select Directory + + + + + Properties + + + + + The game properties could not be loaded. + + + + + Switch Executable (%1);;All Files (*.*) + %1 is an identifier for the Switch executable file extensions. + + + + + Load File + + + + + Open Extracted ROM Directory + + + + + Invalid Directory Selected + + + + + The directory you have selected does not contain a 'main' file. + + + + + Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) + + + + + Install Files + + + + + %n file(s) remaining + + + + + Installing file "%1"... + + + + + + Install Results + + + + + To avoid possible conflicts, we discourage users from installing base games to the NAND. +Please, only use this feature to install updates and DLC. + + + + + %n file(s) were newly installed + + + + + + %n file(s) were overwritten + + + + + + %n file(s) failed to install + + + + + + System Application + + + + + System Archive + + + + + System Application Update + + + + + Firmware Package (Type A) + + + + + Firmware Package (Type B) + + + + + Game + + + + + Game Update + + + + + Game DLC + + + + + Delta Title + + + + + Select NCA Install Type... + + + + + Please select the type of title you would like to install this NCA as: +(In most instances, the default 'Game' is fine.) + + + + + Failed to Install + + + + + The title type you selected for the NCA is invalid. + + + + + File not found + + + + + File "%1" not found + + + + + OK + + + + + Function Disabled + + + + + Compatibility list reporting is currently disabled. Check back later! + + + + + Error opening URL + + + + + Unable to open the URL "%1". + + + + + TAS Recording + + + + + Overwrite file of player 1? + + + + + Invalid config detected + + + + + Handheld controller can't be used on docked mode. Pro controller will be selected. + + + + + + Amiibo + + + + + + The current amiibo has been removed + + + + + Error + + + + + + The current game is not looking for amiibos + + + + + Amiibo File (%1);; All Files (*.*) + + + + + Load Amiibo + + + + + Error loading Amiibo data + + + + + The selected file is not a valid amiibo + + + + + The selected file is already on use + + + + + An unknown error occurred + + + + + + Keys not installed + + + + + + Install decryption keys and restart Eden before attempting to install firmware. + + + + + Select Dumped Firmware Source Location + + + + + Select Dumped Firmware ZIP + + + + + Zipped Archives (*.zip) + + + + + Firmware cleanup failed + + + + + Failed to clean up extracted firmware cache. +Check write permissions in the system temp directory and try again. +OS reported error: %1 + + + + + No firmware available + + + + + Firmware Corrupted + + + + + Unknown applet + + + + + Applet doesn't map to a known value. + + + + + Record not found + + + + + Applet not found. Please reinstall firmware. + + + + + Capture Screenshot + + + + + PNG Image (*.png) + + + + + Update Available + + + + + Download %1? + + + + + TAS state: Running %1/%2 + + + + + TAS state: Recording %1 + + + + + TAS state: Idle %1/%2 + + + + + TAS State: Invalid + + + + + &Stop Running + + + + + Stop R&ecording + + + + + Building: %n shader(s) + + + + + Scale: %1x + %1 is the resolution scaling factor + + + + + Speed: %1% / %2% + + + + + Speed: %1% + + + + + Game: %1 FPS + + + + + Frame: %1 ms + + + + + + FSR + + + + + NO AA + + + + + VOLUME: MUTE + + + + + VOLUME: %1% + Volume percentage (e.g. 50%) + + + + + Derivation Components Missing + + + + + Decryption keys are missing. Install them now? + + + + + Wayland Detected! + + + + + Wayland is known to have significant performance issues and mysterious bugs. +It's recommended to use X11 instead. + +Would you like to force it for future launches? + + + + + Use X11 + + + + + Continue with Wayland + + + + + Don't show again + + + + + Restart Required + + + + + Restart Eden to apply the X11 backend. + + + + + Slow + + + + + Turbo + + + + + Unlocked + + + + + Select RomFS Dump Target + + + + + Please select which RomFS you would like to dump. + + + + + Are you sure you want to close Eden? + + + + + + + Eden + + + + + Are you sure you want to stop the emulation? Any unsaved progress will be lost. + + + + + The currently running application has requested Eden to not exit. + +Would you like to bypass this and exit anyway? + + + + + FXAA + + + + + SMAA + + + + + Nearest + + + + + Bilinear + + + + + Bicubic + + + + + Zero-Tangent + + + + + B-Spline + + + + + Mitchell + + + + + Spline-1 + + + + + Gaussian + + + + + Lanczos + + + + + ScaleForce + + + + + Area + + + + + MMPX + + + + + Docked + + + + + Handheld + + + + + Fast + + + + + Balanced + + + + + Accurate + + + + + Vulkan + + + + + OpenGL GLSL + + + + + OpenGL SPIRV + + + + + OpenGL GLASM + + + + + Null + MigrationWorker - - Data was migrated successfully. - - - - + Linking the old directory failed. You may need to re-run with administrative privileges on Windows. OS gave error: %1 - + - + + + +Note that your configuration and data will be shared with %1. +If this is not desirable, delete the following files: +%2 +%3 +%4 + + + + If you wish to clean up the files which were left in the old data location, you can do so by deleting the following directory: %1 - + + + + + Data was migrated successfully. + + + + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + @@ -8036,7 +8224,7 @@ If you wish to clean up the files which were left in the old data location, you - + Refreshing Vernieuwen @@ -8046,27 +8234,27 @@ If you wish to clean up the files which were left in the old data location, you Ontban - + Subject Onderwerp - + Type Soort - + Forum Username Forum Gebruikersnaam - + IP Address IP-adres - + Refresh Vernieuw @@ -8074,37 +8262,37 @@ If you wish to clean up the files which were left in the old data location, you MultiplayerState - + Current connection status Huidige verbindingsstatus - + Not Connected. Click here to find a room! Niet Verbonden. Klik hier om een kamer te vinden! - + Not Connected Niet Verbonden - + Connected Verbonden - + New Messages Received Nieuwe Berichten Ontvangen - + Error Fout - + Failed to update the room information. Please check your Internet connection and try hosting the room again. Debug Message: Het is niet gelukt om de kamerinformatie bij te werken. Controleer je internetverbinding en probeer de kamer opnieuw te hosten. @@ -8113,90 +8301,6 @@ Debug-bericht: NetworkMessage - - Username is not valid. Must be 4 to 20 alphanumeric characters. - Gebruikersnaam is niet geldig. Moet bestaan uit 4 tot 20 alfanumerieke tekens. - - - Room name is not valid. Must be 4 to 20 alphanumeric characters. - Kamernaam is niet geldig. Moet bestaan uit 4 tot 20 alfanumerieke tekens. - - - Username is already in use or not valid. Please choose another. - Gebruikersnaam is al in gebruik of niet geldig. Kies een andere. - - - IP is not a valid IPv4 address. - IP is geen geldig IPv4-adres. - - - Port must be a number between 0 to 65535. - De poort moet een getal zijn tussen 0 en 65535. - - - You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - Je moet een Voorkeursspel kiezen om een kamer te hosten. Als je nog geen spellen in je spellenlijst hebt, voeg dan een spellenmap toe door op het plus-icoon in de spellenlijst te klikken. - - - Unable to find an internet connection. Check your internet settings. - Kan geen internetverbinding vinden. Controleer je Internetinstellingen. - - - Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - Kan geen verbinding maken met de host. Controleer of de verbindingsinstellingen correct zijn. Als je nog steeds geen verbinding kunt maken, neem dan contact op met de ruimtehost en controleer of de host correct is geconfigureerd met de externe poort doorgestuurd. - - - Unable to connect to the room because it is already full. - Kan geen verbinding maken met de kamer omdat deze al vol is. - - - Creating a room failed. Please retry. Restarting yuzu might be necessary. - Het aanmaken van een kamer is mislukt. Probeer het opnieuw. Het herstarten van yuzu kan nodig zijn. - - - The host of the room has banned you. Speak with the host to unban you or try a different room. - De host van de kamer heeft je verbannen. Praat met de host om je ban op te heffen of probeer een andere kamer. - - - Version mismatch! Please update to the latest version of yuzu. If the problem persists, contact the room host and ask them to update the server. - Versie komt niet overeen! Update naar de laatste versie van yuzu. Als het probleem aanhoudt, neem dan contact op met de room host en vraag hen om de server bij te werken. - - - Incorrect password. - Verkeerd wachtwoord. - - - An unknown error occurred. If this error continues to occur, please open an issue - Er is een onbekende fout opgetreden. Als deze fout zich blijft voordoen, open dan een ticket - - - Connection to room lost. Try to reconnect. - Verbinding met kamer verloren. Probeer opnieuw verbinding te maken. - - - You have been kicked by the room host. - Je bent gekickt door de kamerhost. - - - IP address is already in use. Please choose another. - Het IP-adres is al in gebruik. Kies een ander. - - - You do not have enough permission to perform this action. - Je hebt niet genoeg rechten om deze actie uit te voeren. - - - The user you are trying to kick/ban could not be found. -They may have left the room. - De gebruiker die je probeert te kicken/bannen kon niet gevonden worden. -Ze kunnen de ruimte hebben verlaten. - - - No valid network interface is selected. -Please go to Configure -> System -> Network and make a selection. - Er is geen geldige netwerkinterface geselecteerd. -Ga naar Configuratie -> Systeem -> Netwerk en maak een selectie. - Game already running @@ -8231,10 +8335,132 @@ Toch doorgaan? - NetworkMessage::ErrorManager + NewUserDialog - Error - Fout + + + New User + + + + + Change Avatar + + + + + Set Image + + + + + UUID + + + + + Eden + + + + + Username + + + + + UUID must be 32 hex characters (0-9, A-F) + + + + + Generate + + + + + Select User Image + + + + + Image Formats (*.jpg *.jpeg *.png *.bmp) + + + + + No firmware available + + + + + Please install the firmware to use firmware avatars. + + + + + + Error loading archive + + + + + Archive is not available. Please install/reinstall firmware. + + + + + Could not locate RomFS. Your file or decryption keys may be corrupted. + + + + + Error extracting archive + + + + + Could not extract RomFS. Your file or decryption keys may be corrupted. + + + + + Error finding image directory + + + + + Failed to find image directory in the archive. + + + + + No images found + + + + + No avatar images were found in the archive. + + + + + + All Good + Tooltip + + + + + Must be 32 hex characters (0-9, a-f) + Tooltip + + + + + Must be between 1 and 32 characters + Tooltip + @@ -8261,7 +8487,7 @@ Toch doorgaan? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -8270,83 +8496,196 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> + + PerformanceOverlay + + + Form + + + + + Frametime + + + + + 0 ms + + + + + + Min: 0 + + + + + + Max: 0 + + + + + + Avg: 0 + + + + + FPS + + + + + 0 fps + + + + + %1 fps + + + + + + Avg: %1 + + + + + + Min: %1 + + + + + + Max: %1 + + + + + %1 ms + + + PlayerControlPreview - + START/PAUSE START/ONDERBREKEN + + ProfileAvatarDialog + + + Select + + + + + Cancel + + + + + Background Color + + + + + Select Firmware Avatar + + + QObject - - %1 is not playing a game - %1 speelt geen spel + + + + Migration + - - %1 is playing %2 - %1 speelt %2 + + Clear Shader Cache + - - Not playing a game - Geen spel aan het spelen + + Keep Old Data + - - Installed SD Titles - Geïnstalleerde SD-titels + + Clear Old Data + - - Installed NAND Titles - Geïnstalleerde NAND-titels + + Link Old Directory + - - System Titles - Systeemtitels + + + + + - - Add New Game Directory - Voeg Nieuwe Spelmap Toe + + + No + - - Favorites - Favorieten + + You can manually re-trigger this prompt by deleting the new config directory: +%1 + + + + + Migrating + + + + + Migrating, this may take a while... + - - + + Shift Shift - - + + Ctrl Ctrl - - + + Alt Alt - - - - + + + + [not set] [niet aangegeven] @@ -8356,15 +8695,15 @@ p, li { white-space: pre-wrap; } Hat %1 %2 - - - - - - - - + + + + + + + + Axis %1%2 Axis %1%2 @@ -8374,359 +8713,383 @@ p, li { white-space: pre-wrap; } Knop %1 - - - - - - + + + + + + [unknown] [onbekend] - - - + + + Left Links - - - + + + Right Rechts - - - + + + Down Omlaag - - - + + + Up Omhoog - - + + Z Z - - + + R R - - + + L L - - + + A A - - + + B B - - + + X X - - + + Y Y - - + + Start Start - - + + L1 L1 - - + + L2 L2 - - + + L3 L3 - - + + R1 R1 - - + + R2 R2 - - + + R3 R3 - - + + Circle Cirkel - - + + Cross Kruis - - + + Square Vierkant - - + + Triangle Driehoek - - + + Share Deel - - + + Options Opties - - + + [undefined] [ongedefinieerd] - + %1%2 %1%2 - - + + [invalid] [ongeldig] - - + + %1%2Hat %3 %1%2Hat %3 - - - + + + %1%2Axis %3 %1%2As %3 - - + + %1%2Axis %3,%4,%5 %1%2As %3,%4,%5 - - + + %1%2Motion %3 %1%2Beweging %3 - - + + %1%2Button %3 %1%2Knop %3 - - + + [unused] [ongebruikt] - + ZR ZR - + ZL ZL - + SR SR - + SL SL - + Stick L Stick L - + Stick R Stick R - + Plus Plus - + Minus Min - - + + Home Home - + Capture Vastleggen - + Touch Touch - + Wheel Indicates the mouse wheel Wiel - + Backward Achteruit - + Forward Vooruit - + Task Taak - + Extra Extra - + %1%2%3%4 %1%2%3%4 - - + + %1%2%3Hat %4 %1%2%3Hat %4 - - + + %1%2%3Axis %4 %1%2%3As %4 - - + + %1%2%3Button %4 %1%2%3Knop %4 - - - - Migration - + + Not playing a game + Geen spel aan het spelen - - - - - + + %1 is not playing a game + %1 speelt geen spel - - - No - + + %1 is playing %2 + %1 speelt %2 - - You can manually re-trigger this prompt by deleting the new config directory: -%1 - + + Play Time: %1 + - - Migrating - + + Never Played + - - Migrating, this may take a while... - + + Version: %1 + + + + + Version: 1.0.0 + + + + + Installed SD Titles + Geïnstalleerde SD-titels + + + + Installed NAND Titles + Geïnstalleerde NAND-titels + + + + System Titles + Systeemtitels + + + + Add New Game Directory + Voeg Nieuwe Spelmap Toe + + + + Favorites + Favorieten @@ -8817,31 +9180,817 @@ p, li { white-space: pre-wrap; } Bestandspad - + No game data present Geen spelgegevens aanwezig - + The following amiibo data will be formatted: De volgende amiibo-gegevens worden zo geformatteerd: - + The following game data will removed: De volgende spelgegevens worden verwijderd: - + Set nickname and owner: Stel gebruikersnaam en eigenaar in: - + Do you wish to restore this amiibo? Wil je deze amiibo herstellen? + + QtCommon::Content + + + Game Requires Firmware + + + + + The game you are trying to launch requires firmware to boot or to get past the opening menu. Please <a href='https://yuzu-mirror.github.io/help/quickstart'>dump and install firmware</a>, or press "OK" to launch anyways. + + + + + Installing Firmware... + + + + + + + + + Cancel + + + + + Firmware Install Failed + + + + + Firmware Install Succeeded + + + + + Firmware integrity verification failed! + + + + + + Verification failed for the following files: + +%1 + + + + + + Verifying integrity... + + + + + + Integrity verification succeeded! + + + + + + The operation completed successfully. + + + + + + Integrity verification failed! + + + + + File contents may be corrupt or missing. + + + + + Integrity verification couldn't be performed + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity. + + + + + Select Dumped Keys Location + + + + + Decryption Keys install succeeded + + + + + Decryption Keys install failed + + + + + Orphaned Profiles Detected! + + + + + UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br> + + + + + Really clear data? + + + + + Important data may be lost! + + + + + Are you REALLY sure? + + + + + Once deleted, your data will NOT come back! +Only do this if you're 100% sure you want to delete this data. + + + + + Clearing... + + + + + Select Export Location + + + + + %1.zip + + + + + + Zipped Archives (*.zip) + + + + + Exporting data. This may take a while... + + + + + Exporting + + + + + Exported Successfully + + + + + Data was exported successfully. + + + + + Export Cancelled + + + + + Export was cancelled by the user. + + + + + Export Failed + + + + + Ensure you have write permissions on the targeted directory and try again. + + + + + Select Import Location + + + + + Import Warning + + + + + All previous data in this directory will be deleted. Are you sure you wish to proceed? + + + + + Importing data. This may take a while... + + + + + Importing + + + + + Imported Successfully + + + + + Data was imported successfully. + + + + + Import Cancelled + + + + + Import was cancelled by the user. + + + + + Import Failed + + + + + Ensure you have read permissions on the targeted directory and try again. + + + + + QtCommon::FS + + + Linked Save Data + + + + + Save data has been linked. + + + + + Failed to link save data + + + + + Could not link directory: + %1 +To: + %2 + + + + + Already Linked + + + + + This title is already linked to Ryujinx. Would you like to unlink it? + + + + + Failed to unlink old directory + + + + + + OS returned error: %1 + + + + + Failed to copy save data + + + + + Unlink Successful + + + + + Successfully unlinked Ryujinx save data. Save data has been kept intact. + + + + + Could not find Ryujinx installation + + + + + Could not find a valid Ryujinx installation. This may typically occur if you are using Ryujinx in portable mode. + +Would you like to manually select a portable folder to use? + + + + + Ryujinx Portable Location + + + + + Not a valid Ryujinx directory + + + + + The specified directory does not contain valid Ryujinx data. + + + + + + Could not find Ryujinx save data + + + + + QtCommon::Game + + + Error Removing Contents + + + + + Error Removing Update + + + + + Error Removing DLC + + + + + + + + + + Successfully Removed + + + + + Successfully removed the installed base game. + + + + + The base game is not installed in the NAND and cannot be removed. + + + + + Successfully removed the installed update. + + + + + There is no update installed for this title. + + + + + There are no DLCs installed for this title. + + + + + Successfully removed %1 installed DLC. + + + + + + Error Removing Transferable Shader Cache + + + + + + A shader cache for this title does not exist. + + + + + Successfully removed the transferable shader cache. + + + + + Failed to remove the transferable shader cache. + + + + + Error Removing Vulkan Driver Pipeline Cache + + + + + Failed to remove the driver pipeline cache. + + + + + + Error Removing Transferable Shader Caches + + + + + Successfully removed the transferable shader caches. + + + + + Failed to remove the transferable shader cache directory. + + + + + + Error Removing Custom Configuration + + + + + A custom configuration for this title does not exist. + + + + + Successfully removed the custom game configuration. + + + + + Failed to remove the custom game configuration. + + + + + Reset Metadata Cache + + + + + The metadata cache is already empty. + + + + + The operation completed successfully. + + + + + The metadata cache couldn't be deleted. It might be in use or non-existent. + + + + + Create Shortcut + + + + + Do you want to launch the game in fullscreen? + + + + + Shortcut Created + + + + + Successfully created a shortcut to %1 + + + + + Shortcut may be Volatile! + + + + + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? + + + + + Failed to Create Shortcut + + + + + Failed to create a shortcut to %1 + + + + + Create Icon + + + + + Cannot create icon file. Path "%1" does not exist and cannot be created. + + + + + No firmware available + + + + + Please install firmware to use the home menu. + + + + + Home Menu Applet + + + + + Home Menu is not available. Please reinstall firmware. + + + + + QtCommon::Mod + + + Mod Name + + + + + What should this mod be called? + + + + + RomFS + + + + + ExeFS/Patch + + + + + Cheat + + + + + Mod Type + + + + + Could not detect mod type automatically. Please manually specify the type of mod you downloaded. + +Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods. + + + + + + Mod Extract Failed + + + + + Failed to create temporary directory %1 + + + + + Zip file %1 is empty + + + + + QtCommon::Path + + + Error Opening Shader Cache + + + + + Failed to create or open shader cache for this title, ensure your app data directory has write permissions. + + + + + QtCommon::StringLookup + + + Contains game save data. DO NOT REMOVE UNLESS YOU KNOW WHAT YOU'RE DOING! + + + + + Contains Vulkan and OpenGL pipeline caches. Generally safe to remove. + + + + + Contains updates and DLC for games. + + + + + Contains firmware and applet data. + + + + + Contains game mods, patches, and cheats. + + + + + Decryption Keys were successfully installed + + + + + Unable to read key directory, aborting + + + + + One or more keys failed to copy. + + + + + Verify your keys file has a .keys extension and try again. + + + + + Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. + + + + + Successfully installed firmware version %1 + + + + + Unable to locate potential firmware NCA files + + + + + Failed to delete one or more firmware files. + + + + + One or more firmware files failed to copy into NAND. + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. Restart Eden or re-install firmware. + + + + + Firmware missing. Firmware is required to run certain games and use the Home Menu. + + + + + Firmware reported as present, but was unable to be read. Check for decryption keys and redump firmware if necessary. + + + + + Eden has detected user data for the following emulators: + + + + + Would you like to migrate your data for use in Eden? +Select the corresponding button to migrate data from that emulator. +This may take a while. + + + + + Clearing shader cache is recommended for all users. +Do not uncheck unless you know what you're doing. + + + + + Keeps the old data directory. This is recommended if you aren't +space-constrained and want to keep separate data for the old emulator. + + + + + Deletes the old data directory. +This is recommended on devices with space constraints. + + + + + Creates a filesystem link between the old directory and Eden directory. +This is recommended if you want to share data between emulators. + + + + + Ryujinx title database does not exist. + + + + + Invalid header on Ryujinx title database. + + + + + Invalid magic header on Ryujinx title database. + + + + + Invalid byte alignment on Ryujinx title database. + + + + + No items found in Ryujinx title database. + + + + + Title %1 not found in Ryujinx title database. + + + QtControllerSelectorDialog @@ -8878,7 +10027,7 @@ p, li { white-space: pre-wrap; } - + Pro Controller Pro Controller @@ -8891,7 +10040,7 @@ p, li { white-space: pre-wrap; } - + Dual Joycons Twee Joycons @@ -8904,7 +10053,7 @@ p, li { white-space: pre-wrap; } - + Left Joycon Linker Joycon @@ -8917,7 +10066,7 @@ p, li { white-space: pre-wrap; } - + Right Joycon Rechter Joycon @@ -8946,7 +10095,7 @@ p, li { white-space: pre-wrap; } - + Handheld Handheld @@ -9064,35 +10213,35 @@ p, li { white-space: pre-wrap; } Not enough controllers - + - + GameCube Controller GameCube-controller - + Poke Ball Plus Poke Ball Plus - + NES Controller NES-controller - + SNES Controller SNES-controller - + N64 Controller N64-controller - + Sega Genesis Sega Genesis @@ -9100,28 +10249,28 @@ p, li { white-space: pre-wrap; } QtErrorDisplay - - - + + + Error Code: %1-%2 (0x%3) Foutcode: %1-%2 (0x%3) - + An error has occurred. Please try again or contact the developer of the software. Er is een fout opgetreden. Probeer het opnieuw of neem contact op met de software-ontwikkelaar. - + An error occurred on %1 at %2. Please try again or contact the developer of the software. Er is een fout opgetreden op %1 bij %2. Probeer het opnieuw of neem contact op met de software-ontwikkelaar. - + An error has occurred. %1 @@ -9137,7 +10286,7 @@ Probeer het opnieuw of neem contact op met de software-ontwikkelaar. QtProfileSelectionDialog - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -9145,7 +10294,7 @@ Probeer het opnieuw of neem contact op met de software-ontwikkelaar. - + Users Gebruikers @@ -9238,7 +10387,7 @@ Probeer het opnieuw of neem contact op met de software-ontwikkelaar.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -9247,17 +10396,57 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - - + + OK OK - + Cancel Annuleer + + RyujinxDialog + + + Ryujinx Link + + + + + Linking save data to Ryujinx lets both Ryujinx and Eden reference the same save files for your games. + +By selecting "From Eden", previous save data stored in Ryujinx will be deleted, and vice versa for "From Ryujinx". + + + + + From Eden + + + + + From Ryujinx + + + + + Cancel + + + + + Failed to link save data + + + + + OS returned error: %1 + + + SequenceDialog @@ -9267,143 +10456,31 @@ p, li { white-space: pre-wrap; } - WaitTreeCallstack + SetPlayTimeDialog - - Call stack - Call stack - - - - WaitTreeSynchronizationObject - - - [%1] %2 - [%1] %2 + + Set Play Time Data + - - waited by no thread - wachtend door geen thread - - - - WaitTreeThread - - - runnable - uitvoerbaar + + Hours: + - - paused - onderbroken + + Minutes: + - - sleeping - slapen + + Seconds: + - - waiting for IPC reply - wachten op IPC-antwoord - - - - waiting for objects - wachten op objecten - - - - waiting for condition variable - wachten op conditie variabele - - - - waiting for address arbiter - wachten op adres arbiter - - - - waiting for suspend resume - wachtend op hervatten onderbreking - - - - waiting - aan het wachten - - - - initialized - geïnitialiseerd - - - - terminated - beëindigd - - - - unknown - onbekend - - - - PC = 0x%1 LR = 0x%2 - PC = 0x%1 LR = 0x%2 - - - - ideal - ideaal - - - - core %1 - kern %1 - - - - processor = %1 - processor = %1 - - - - affinity mask = %1 - affiniteit masker = %1 - - - - thread id = %1 - thread-id = %1 - - - - priority = %1(current) / %2(normal) - prioriteit = %1(huidige) / %2(normaal) - - - - last running ticks = %1 - laatste lopende ticks = %1 - - - - WaitTreeThreadList - - - waited by thread - wachtend door thread - - - - WaitTreeWidget - - - &Wait Tree - &Wait Tree + + Total play time reached maximum. + diff --git a/dist/languages/pl.ts b/dist/languages/pl.ts index 07232eed27..6668939f93 100644 --- a/dist/languages/pl.ts +++ b/dist/languages/pl.ts @@ -1,25 +1,15 @@ - - - + AboutDialog - - About yuzu - O yuzu - - - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - - About eden - + About Eden + O Eden - <html><head/><body><p><span style=" font-size:28pt;">eden</span></p></body></html> - + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> @@ -34,70 +24,57 @@ p, li { white-space: pre-wrap; } hr { height: 1px; border-width: 0; } li.unchecked::marker { content: "\2610"; } li.checked::marker { content: "\2612"; } -</style></head><body style=" font-family:'Adwaita Sans'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> - +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css"> +p, li { white-space: pre-wrap; } +hr { height: 1px; border-width: 0; } +li.unchecked::marker { content: "\2610"; } +li.checked::marker { content: "\2612"; } +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden to eksperymentalny emulator open source dla Nintendo Switch na licencji GPLv3.0+, oparty na emulatorze yuzu, którego rozwój zakończył się w marcu 2024 roku. <br /><br />TTo oprogramowanie nie powinno być używane do grania w gry, które nie zostały legalnie nabyte.</span></p></body></html> - <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">This software should not be used to play games you have not legally obtained.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu jest eksperymentalnym emulatorem konsoli Nintendo Switch z otwartym kodem źródłowym, na licencji GPLv3.0+</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Nie należy używać tego programu żeby grać w gry uzyskane nielegalnie.</span></p></body></html> - - - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Strona</span></a>I<a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Kod Źródłowy</span></a>I<a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Kontrybutorzy</span></a>I<a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licencja</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Strona</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Kod źródłowy</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Współtwórcy</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licencja</span></a></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. eden is not affiliated with Nintendo in any way.</span></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; jest znakiem towarowym Nintendo. yuzu nie jest stowarzyszony w żaden sposób z Nintendo.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. Eden is not affiliated with Nintendo in any way.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; jest znakiem towarowym firmy Nintendo. Eden nie jest w żaden sposób powiązany z Nintendo.</p></body></html> CalibrationConfigurationDialog - + Communicating with the server... Łączenie z serwerem... - + Cancel Anuluj - + Touch the top left corner <br>of your touchpad. Dotknij lewy górny róg <br> swojego touchpada - + Now touch the bottom right corner <br>of your touchpad. Dotknij prawy dolny róg <br> swojego touchpada - + Configuration completed! Konfiguracja zakończona! - + OK OK @@ -120,78 +97,78 @@ p, li { white-space: pre-wrap; } Wyślij Wiadomość - + Members Członkowie - + %1 has joined %1 dołączył/a - + %1 has left %1 wyszedł/ła - + %1 has been kicked %1 został/a wyrzucony/a - + %1 has been banned %1 został/a zbanowany/a - + %1 has been unbanned %1 został/a odbanowany/a - + View Profile Wyświetl Profil - - + + Block Player Zablokuj Gracza - + When you block a player, you will no longer receive chat messages from them.<br><br>Are you sure you would like to block %1? Po zablokowaniu gracza nie będziesz otrzymywał od niego/jej wiadomości. <br><br>Czy na pewno chcesz zablokować %1? - + Kick Wyrzuć - + Ban Zbanuj - + Kick Player Wyrzuć Gracza - + Are you sure you would like to <b>kick</b> %1? Na pewno chcesz <b>wyrzucić</b> %1? - + Ban Player Zbanuj Gracza - + Are you sure you would like to <b>kick and ban</b> %1? This would ban both their forum username and their IP address. @@ -226,17 +203,17 @@ To zbanuje jego/jej nick na forum, oraz jego/jej adres IP. ClientRoomWindow - + Connected Połączono - + Disconnected Rozłączono - + %1 - %2 (%3/%4 members) - connected %1 - %2 (%3/%4 członków) - połączono @@ -259,14 +236,10 @@ To zbanuje jego/jej nick na forum, oraz jego/jej adres IP. Report Game Compatibility Zgłoś kompatybilność gry - - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of yuzu you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected yuzu account</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Jeśli postanowisz wysłać wyniki testu na </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">listę kompatybilności yuzu</span></a><span style=" font-size:10pt;">, następujące informacja zostaną zebrane i wyświetlone na stronie:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Informacja o sprzęcie komputerowym (procesor / karta graficzna / system operacyjny)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Wersja yuzu, której używasz</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Połączone konto yuzu</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">eden Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of eden you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected eden account</li></ul></body></html> - + <html><head/><body><p><span style=" font-size:10pt;">Jeśli zdecydujesz się przesłać przypadek testowy do </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">listy kompatybilności Edenu</span></a><span style=" font-size:10pt;">, następujące informacje zostaną zebrane i wyświetlone na stronie:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Informacje o sprzęcie (procesor / karta graficzna / system operacyjny)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Wersja Eden, z której korzystasz</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Połączone konto Eden</li></ul></body></html> @@ -374,22 +347,22 @@ To zbanuje jego/jej nick na forum, oraz jego/jej adres IP. Dziękujemy za Twoją opinię! - + Submitting Wysyłanie - + Communication error Błąd komunikacyjny - + An error occurred while sending the Testcase Wystąpił błąd podczas wysyłania Testcase'u - + Next Następny @@ -397,1525 +370,1914 @@ To zbanuje jego/jej nick na forum, oraz jego/jej adres IP. ConfigurationShared - + % % - + Amiibo editor - + Edytor amiibo - + Controller configuration - + Konfiguracja kontrolera - + Data erase - + Usuń dane - + Error Błąd - + Net connect - + Połączenie sieciowe - + Player select - + Wybór gracza - + Software keyboard Klawiatura programowa - + Mii Edit - + Edycja Mii - + Online web - + Strona online - + Shop - + Sklep - + Photo viewer - + Przeglądarka zdjęć - + Offline web - + Strona offline - + Login share - + Udostępnij Login - + Wifi web auth - + Uwierzytelnianie Wi-Fi w przeglądarce - + My page - + Moja strona - + + Enable Overlay Applet + Włącz aplet nakładki + + + + Enables Horizon's built-in overlay applet. Press and hold the home button for 1 second to show it. + + + + Output Engine: Silnik wyjściowy - + Output Device: Urządzenie wyjściowe: - + Input Device: Urządzenie wejściowe: - + Mute audio Wycisz dźwięk - + Volume: Głośność: - + Mute audio when in background Wyciszaj audio gdy yuzu działa w tle - + Multicore CPU Emulation Emulacja CPU Wielordzeniowa - - This option increases CPU emulation thread use from 1 to the Switch’s maximum of 4. -This is mainly a debug option and shouldn’t be disabled. - + + This option increases CPU emulation thread use from 1 to the maximum of 4. +This is mainly a debug option and shouldn't be disabled. + Ta opcja zwiększa liczbę wątków emulacji CPU z 1 do maksymalnie 4. +To głównie opcja do debugowania i nie powinna być wyłączana. - + Memory Layout - + Układ pamięci - - Increases the amount of emulated RAM from the stock 4GB of the retail Switch to the developer kit's 8/6GB. -It’s doesn’t improve stability or performance and is intended to let big texture mods fit in emulated RAM. -Enabling it will increase memory use. It is not recommended to enable unless a specific game with a texture mod needs it. - + + Increases the amount of emulated RAM. +Doesn't affect performance/stability but may allow HD texture mods to load. + - + Limit Speed Percent Procent limitu prędkości - - Controls the game's maximum rendering speed, but it’s up to each game if it runs faster or not. + + Controls the game's maximum rendering speed, but it's up to each game if it runs faster or not. 200% for a 30 FPS game is 60 FPS, and for a 60 FPS game it will be 120 FPS. Disabling it means unlocking the framerate to the maximum your PC can reach. - + Steruje maksymalną prędkością renderowania gry, ale to sama gra decyduje, czy faktycznie będzie działać szybciej. +200% dla gry 30 FPS to 60 FPS, a dla gry 60 FPS będzie to 120 FPS. +Wyłączenie oznacza odblokowanie liczby klatek do maksimum, jakie osiągnie Twój PC. - + + Turbo Speed + + + + + When the Turbo Speed hotkey is pressed, the speed will be limited to this percentage. + + + + + Slow Speed + + + + + When the Slow Speed hotkey is pressed, the speed will be limited to this percentage. + + + + Synchronize Core Speed - + Synchronizuj prędkość rdzenia - - Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). -Compatibility varies by game; many (especially older ones) may not respond well. + + Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). Can help reduce stuttering at lower framerates. - + Synchronizuje prędkość rdzenia CPU z maksymalną prędkością renderowania gry, aby uzyskać najwyższy FPS bez wpływu na prędkość samej gry (animacje, fizyka itp.). +Może pomóc zredukować przycięcia przy niższej liczbie klatek. - + Accuracy: Precyzja: - - This setting controls the accuracy of the emulated CPU. -Don't change this unless you know what you are doing. - + + Change the accuracy of the emulated CPU (for debugging only). + Zmień dokładność emulowanego CPU (tylko do debugowania). - - + + Backend: - + Backend: - - Fast CPU Time - + + CPU Overclock + Podkręcanie CPU - + Overclocks the emulated CPU to remove some FPS limiters. Weaker CPUs may see reduced performance, and certain games may behave improperly. Use Boost (1700MHz) to run at the Switch's highest native clock, or Fast (2000MHz) to run at 2x clock. - + Podkręca emulowany procesor, aby usunąć niektóre ograniczenia liczby klatek na sekundę. Słabsze procesory mogą wykazywać obniżoną wydajność, a niektóre gry mogą działać nieprawidłowo. +Użyj opcji Boost (1700 MHz), aby uruchomić urządzenie z najwyższą natywną częstotliwością taktowania Switch, lub Szybki (2000 MHz), aby uruchomić urządzenie z dwukrotnie wyższą częstotliwością taktowania. - + + Custom CPU Ticks + Niestandardowe cykle CPU + + + + Set a custom value of CPU ticks. Higher values can increase performance, but may cause deadlocks. A range of 77-21000 is recommended. + Ustaw niestandardową wartość taktów CPU. Wyższe wartości mogą zwiększyć wydajność, ale mogą też powodować zawieszanie się gry. Zalecany zakres to 77–21000. + + + + Enable Host MMU Emulation (fastmem) + Włącz emulację MMU hosta (fastmem) + + + + This optimization speeds up memory accesses by the guest program. +Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU. +Disabling this forces all memory accesses to use Software MMU Emulation. + Ta optymalizacja przyspiesza dostęp do pamięci po stronie programu-gościa. +Włączenie powoduje, że odczyty/zapisy pamięci gościa trafiają bezpośrednio do pamięci i korzystają z MMU hosta. +Wyłączenie wymusza użycie emulacji programowej MMU dla wszystkich dostępów do pamięci. + + + Unfuse FMA (improve performance on CPUs without FMA) Unfuse FMA (zwiększ wydajność na procesorach bez FMA) - + This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support. - + Ta opcja zwiększa szybkość kosztem dokładności instrukcji FMA (fused-multiply-add) na procesorach bez natywnego wsparcia FMA. - + Faster FRSQRTE and FRECPE Szybsze FRSQRTE i FRECPE - + This option improves the speed of some approximate floating-point functions by using less accurate native approximations. - + Ta opcja poprawia szybkość niektórych funkcji zmiennoprzecinkowych, używając mniej dokładnych natywnych aproksymacji. - + Faster ASIMD instructions (32 bits only) Szybsze instrukcje ASIMD (Tylko 32-bit) - + This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes. - + Ta opcja przyspiesza 32-bitowe funkcje zmiennoprzecinkowe ASIMD, uruchamiając je z nieprawidłowymi trybami zaokrąglania. - + Inaccurate NaN handling Niedokładna obsługa NaN - + This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions. - + Ta opcja zwiększa szybkość poprzez wyłączenie sprawdzania NaN. +Uwaga: obniża to dokładność niektórych instrukcji zmiennoprzecinkowych. - + Disable address space checks Wyłącz sprawdzanie przestrzeni adresów - - This option improves speed by eliminating a safety check before every memory read/write in guest. -Disabling it may allow a game to read/write the emulator's memory. - + + This option improves speed by eliminating a safety check before every memory operation. +Disabling it may allow arbitrary code execution. + Ta opcja poprawia szybkość poprzez usunięcie sprawdzania bezpieczeństwa przed każdą operacją pamięci. +Wyłączenie może umożliwić wykonanie dowolnego kodu. - + Ignore global monitor Ignoruj ogólne monitorowanie - + 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. - + Ta opcja zwiększa szybkość, polegając wyłącznie na semantyce „cmpxchg” w celu zapewnienia bezpieczeństwa instrukcji z dostępem wyłącznym. +Uwaga: może to prowadzić do zakleszczeń i innych warunków wyścigu. - + API: API: - - Switches between the available graphics APIs. -Vulkan is recommended in most cases. - + + Changes the output graphics API. +Vulkan is recommended. + Zmienia wyjściowe API grafiki. +Zalecany jest Vulkan. - + Device: Urządzenie: - - This setting selects the GPU to use with the Vulkan backend. - + + This setting selects the GPU to use (Vulkan only). + To ustawienie wybiera używany GPU (tylko Vulkan). - - Shader Backend: - Backend Shaderów: - - - - The shader backend to use for the OpenGL renderer. -GLSL is the fastest in performance and the best in rendering accuracy. -GLASM is a deprecated NVIDIA-only backend that offers much better shader building performance at the cost of FPS and rendering accuracy. -SPIR-V compiles the fastest, but yields poor results on most GPU drivers. - - - - + Resolution: Rozdzielczość: - - Forces the game to render at a different resolution. -Higher resolutions require much more VRAM and bandwidth. -Options lower than 1X can cause rendering issues. - + + Forces to render at a different resolution. +Higher resolutions require more VRAM and bandwidth. +Options lower than 1X can cause artifacts. + Wymusza renderowanie w innej rozdzielczości. +Wyższe rozdzielczości wymagają więcej VRAM i przepustowości. +Opcje poniżej 1x mogą powodować artefakty. - + Window Adapting Filter: Filtr Adaptującego Okna: - + FSR Sharpness: Ostrość FSR: - - Determines how sharpened the image will look while using FSR’s dynamic contrast. - + + Determines how sharpened the image will look using FSR's dynamic contrast. + Określa, jak bardzo obraz będzie wyostrzony przy użyciu dynamicznego kontrastu FSR. - + Anti-Aliasing Method: Metoda Anty-Aliasingu: - + The anti-aliasing method to use. SMAA offers the best quality. -FXAA has a lower performance impact and can produce a better and more stable picture under very low resolutions. - +FXAA can produce a more stable picture in lower resolutions. + Metoda wygładzania krawędzi (antyaliasing). +SMAA oferuje najlepszą jakość. +FXAA może zapewnić stabilniejszy obraz w niższych rozdzielczościach. - + Fullscreen Mode: Tryb Pełnoekranowy: - + The method used to render the window in fullscreen. Borderless offers the best compatibility with the on-screen keyboard that some games request for input. Exclusive fullscreen may offer better performance and better Freesync/Gsync support. - + Metoda renderowania okna w trybie pełnoekranowym. +Tryb bez ramek zapewnia najlepszą zgodność z klawiaturą ekranową wymaganą przez część gier. +Pełny ekran wyłączny może oferować lepszą wydajność i lepsze wsparcie FreeSync/G-Sync. - + Aspect Ratio: Format obrazu: - - Stretches the game to fit the specified aspect ratio. -Switch games only support 16:9, so custom game mods are required to get other ratios. + + Stretches the renderer to fit the specified aspect ratio. +Most games only support 16:9, so modifications are required to get other ratios. Also controls the aspect ratio of captured screenshots. - + Rozciąga obraz renderera do wskazanego współczynnika proporcji. +Większość gier obsługuje wyłącznie 16:9, więc inne proporcje wymagają modyfikacji. +Kontroluje także proporcje przechwytywanych zrzutów ekranu. - - Use disk pipeline cache - Użyj Pamięci Podręcznej Pipeline z dysku + + Use persistent pipeline cache + Używaj trwałej pamięci podręcznej (cache) potoków - + Allows saving shaders to storage for faster loading on following game boots. Disabling it is only intended for debugging. - + Pozwala zapisywać shadery w pamięci masowej, aby przyspieszyć ładowanie przy kolejnych uruchomieniach gry. +Wyłączanie tej opcji jest przeznaczone do debugowania. - - Optimize SPIRV output shader - + + Optimize SPIRV output + Optymalizacja wydajności SPIRV - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. This feature is experimental. - + Wykonuje dodatkowe przejście optymalizacyjne na wygenerowanych shaderach SPIRV. +Zwiększa czas wymagany na kompilację shaderów. +Może nieznacznie poprawić wydajność. +Funkcja eksperymentalna. - - Use asynchronous GPU emulation - Użyj asynchronicznej emulacji GPU - - - - Uses an extra CPU thread for rendering. -This option should always remain enabled. - - - - + NVDEC emulation: Emulacja NVDEC: - + Specifies how videos should be decoded. It can either use the CPU or the GPU for decoding, or perform no decoding at all (black screen on videos). In most cases, GPU decoding provides the best performance. - + Określa sposób dekodowania wideo. +Dekodowanie może być wykonywane przez CPU albo GPU, albo może być całkowicie wyłączone (czarny ekran dla wideo). +W większości przypadków najlepszą wydajność zapewnia dekodowanie na GPU. - + ASTC Decoding Method: - + Metoda dekodowania ASTC: - + This option controls how ASTC textures should be decoded. -CPU: Use the CPU for decoding, slowest but safest method. -GPU: Use the GPU's compute shaders to decode ASTC textures, recommended for most games and users. -CPU Asynchronously: Use the CPU to decode ASTC textures as they arrive. Completely eliminates ASTC decoding -stuttering at the cost of rendering issues while the texture is being decoded. - +CPU: Use the CPU for decoding. +GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). +CPU Asynchronously: Use the CPU to decode ASTC textures on demand. EliminatesASTC decoding +stuttering but may present artifacts. + Ta opcja określa sposób dekodowania tekstur ASTC. +CPU: użyj CPU do dekodowania. +GPU: użyj shaderów obliczeniowych GPU do dekodowania tekstur ASTC (zalecane). +CPU asynchronicznie: użyj CPU do dekodowania na żądanie. Eliminuje zacięcia podczas dekodowania ASTC, ale może powodować artefakty. - + ASTC Recompression Method: - + Metoda rekompresji ASTC: - - Almost all desktop and laptop dedicated GPUs lack support for ASTC textures, forcing the emulator to decompress to an intermediate format any card supports, RGBA8. -This option recompresses RGBA8 to either the BC1 or BC3 format, saving VRAM but negatively affecting image quality. - + + Most GPUs lack support for ASTC textures and must decompress to anintermediate format: RGBA8. +BC1/BC3: The intermediate format will be recompressed to BC1 or BC3 format, + saving VRAM but degrading image quality. + Większość GPU nie obsługuje natywnie tekstur ASTC i musi je zdekompresować do formatu pośredniego: RGBA8. +BC1/BC3: format pośredni zostanie ponownie skompresowany do BC1 lub BC3 — oszczędza VRAM kosztem jakości obrazu. - + + Frame Pacing Mode (Vulkan only) + + + + + Controls how the emulator manages frame pacing to reduce stuttering and make the frame rate smoother and more consistent. + + + + VRAM Usage Mode: - + Tryb wykorzystania VRAM: - - Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. Has no effect on integrated graphics. Aggressive mode may severely impact the performance of other applications such as recording software. - + + Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. +Aggressive mode may impact performance of other applications such as recording software. + Określa, czy emulator ma oszczędzać pamięć, czy maksymalnie wykorzystywać dostępną pamięć wideo dla wydajności. +Tryb agresywny może pogorszyć działanie innych aplikacji, np. oprogramowania do nagrywania. - + + Skip CPU Inner Invalidation + Pomiń wewnętrzne unieważnienie procesora CPU + + + + Skips certain cache invalidations during memory updates, reducing CPU usage and improving latency. This may cause soft-crashes. + Pomija niektóre unieważnienia pamięci podręcznej po stronie CPU podczas aktualizacji pamięci, zmniejszając użycie CPU i poprawiając jego wydajność. Może powodować błędy lub awarie w niektórych grach. + + + VSync Mode: Tryb synchronizacji pionowej: - + FIFO (VSync) does not drop frames or exhibit tearing but is limited by the screen refresh rate. -FIFO Relaxed is similar to FIFO but allows tearing as it recovers from a slow down. +FIFO Relaxed 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. - +Immediate (no synchronization) presents whatever is available and can exhibit tearing. + FIFO (VSync) nie gubi klatek ani nie powoduje rozrywania obrazu (tearingu), ale jest ograniczony częstotliwością odświeżania ekranu. +FIFO Relaxed dopuszcza tearing przy „odrabianiu” spadków wydajności. +Mailbox może mieć niższe opóźnienia niż FIFO i nie powoduje tearingu, ale może gubić klatki. +Immediate (bez synchronizacji) wyświetla wszystko, co jest dostępne, i może powodować tearing. - + + Sync Memory Operations + Synchronizuj operacje pamięci + + + + Ensures data consistency between compute and memory operations. +This option fixes issues in games, but may degrade performance. +Unreal Engine 4 games often see the most significant changes thereof. + Zapewnia spójność danych między operacjami obliczeniowymi i pamięciowymi. Ta opcja powinna naprawiać problemy w niektórych grach, ale może zmniejszyć wydajność w niektórych przypadkach. +Gry z Unreal Engine 4 mogą być najbardziej dotknięte. + + + Enable asynchronous presentation (Vulkan only) - + Włącz asynchroniczną prezentację (tylko Vulkan) - + Slightly improves performance by moving presentation to a separate CPU thread. - + Nieznacznie poprawia wydajność, przenosząc prezentację na oddzielny wątek CPU. - + Force maximum clocks (Vulkan only) Wymuś maksymalne zegary (Tylko Vulkan) - + Runs work in the background while waiting for graphics commands to keep the GPU from lowering its clock speed. Uruchamia pracę w tle podczas oczekiwania na komendy graficzne aby GPU nie obniżało taktowania. - + Anisotropic Filtering: Filtrowanie anizotropowe: - + Controls the quality of texture rendering at oblique angles. -It’s a light setting and safe to set at 16x on most GPUs. - +Safe to set at 16x on most GPUs. + Steruje jakością renderowania tekstur pod ostrymi kątami. +Na większości GPU bezpieczną wartością jest 16x. - - Accuracy Level: - Precyzja: + + GPU Mode: + Tryb GPU: - - GPU emulation accuracy. -Most games render fine with Normal, but High is still required for some. -Particles tend to only render correctly with High accuracy. -Extreme should only be used for debugging. -This option can be changed while playing. -Some games may require booting on high to render properly. - + + Controls the GPU emulation mode. +Most games render fine with Fast or Balanced modes, but Accurate is still required for some. +Particles tend to only render correctly with Accurate mode. + Steruje trybem emulacji GPU. +Większość gier renderuje się poprawnie w trybach Szybki lub Zrównoważony, ale dla niektórych nadal wymagany jest tryb Dokładny. +Efekty cząsteczkowe zwykle renderują się poprawnie tylko w trybie Dokładnym. - - Use asynchronous shader building (Hack) - Użyj asynchronicznego budowania shaderów (Hack) + + DMA Accuracy: + Dokładność DMA: - - Enables asynchronous shader compilation, which may reduce shader stutter. -This feature is experimental. - + + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. + Steruje precyzją DMA. Tryb „bezpieczna precyzja” usuwa problemy w niektórych grach, ale może pogorszyć wydajność. - Use Fast GPU Time (Hack) - Użyj Szybszego Czasu GPU (Hack) + + Enable asynchronous shader compilation + Włącz asynchroniczną kompilację shaderów - Enables Fast GPU Time. This option will force most games to run at their highest native resolution. - Włącza Szybszy Czas GPU. Ta opcja zmusza większość gier do wyświetlania w swojej najwyższej natywnej rozdzielczości. + + May reduce shader stutter. + Może zmniejszyć zacięcia spowodowane kompilacją shaderów. - + + Fast GPU Time + Szybki czas GPU + + + + Overclocks the emulated GPU to increase dynamic resolution and render distance. +Use 256 for maximal performance and 512 for maximal graphics fidelity. + Podkręca emulowane GPU, aby zwiększyć dynamiczną rozdzielczość i zasięg renderowania. +Ustaw 256 dla maksymalnej wydajności, a 512 dla maksymalnej jakości grafiki. + + + + GPU Unswizzle + + + + + Accelerates BCn 3D texture decoding using GPU compute. +Disable if experiencing crashes or graphical glitches. + + + + + GPU Unswizzle Max Texture Size + + + + + Sets the maximum size (MiB) for GPU-based texture unswizzling. +While the GPU is faster for medium and large textures, the CPU may be more efficient for very small ones. +Adjust this to find the balance between GPU acceleration and CPU overhead. + + + + + GPU Unswizzle Stream Size + + + + + Sets the maximum amount of texture data (in MiB) processed per frame. +Higher values can reduce stutter during texture loading but may impact frame consistency. + + + + + GPU Unswizzle Chunk Size + + + + + Determines the number of depth slices processed in a single dispatch. +Increasing this can improve throughput on high-end GPUs but may cause TDR or driver timeouts on weaker hardware. + + + + Use Vulkan pipeline cache Użyj pamięci podręcznej strumienia dla Vulkana - + Enables GPU vendor-specific pipeline cache. This option can improve shader loading time significantly in cases where the Vulkan driver does not store pipeline cache files internally. - + Włącza specyficzną dla producenta GPU pamięć podręczną potoków. +Ta opcja może znacząco skrócić czas ładowania shaderów w przypadkach, gdy sterownik Vulkan nie przechowuje wewnętrznie plików pamięci podręcznej potoków. - + Enable Compute Pipelines (Intel Vulkan Only) - + Włącz potoki obliczeniowe (tylko Intel Vulkan) - - Enable compute pipelines, required by some games. -This setting only exists for Intel proprietary drivers, and may crash if enabled. + + 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. - + Wymagane przez niektóre gry. +To ustawienie istnieje wyłącznie dla sterowników Intela i może spowodować błędy. +Na wszystkich pozostałych sterownikach potoki obliczeniowe są zawsze włączone. - + Enable Reactive Flushing - + Włącz reaktywne opróżnianie buforów - + Uses reactive flushing instead of predictive flushing, allowing more accurate memory syncing. - + Używa opróżniania reaktywnego zamiast predykcyjnego, co umożliwia dokładniejsze synchronizowanie pamięci. - + Sync to framerate of video playback - + Synchronizuj do liczby klatek odtwarzanego wideo - + Run the game at normal speed during video playback, even when the framerate is unlocked. - + Uruchamiaj grę z normalną prędkością podczas odtwarzania wideo, nawet przy odblokowanej liczbie klatek na sekundę. - + Barrier feedback loops - + Pętle sprzężenia zwrotnego barier - + Improves rendering of transparency effects in specific games. - + Poprawia renderowanie efektów przezroczystości w niektórych grach. - + + Enable buffer history + + + + + Enables access to previous buffer states. +This option may improve rendering quality and performance consistency in some games. + + + + + Fix bloom effects + + + + + Removes bloom in Burnout. + + + + + Enable Legacy Rescale Pass + + + + + May fix rescale issues in some games by relying on behavior from the previous implementation. +Legacy behavior workaround that fixes line artifacts on AMD and Intel GPUs, and grey texture flicker on Nvidia GPUs in Luigis Mansion 3. + + + + + Extended Dynamic State + Rozszerzony stan dynamiczny + + + + Controls the number of features that can be used in Extended Dynamic State. +Higher states allow for more features and can increase performance, but may cause additional graphical issues. + Kontroluje liczbę funkcji, które mogą być używane w Extended Dynamic State. +Wyższe poziomy pozwalają na użycie większej liczby funkcji i mogą zwiększyć wydajność, ale mogą powodować dodatkowe problemy z grafiką. + + + + Vertex Input Dynamic State + Dynamiczny stan wejścia wierzchołków + + + + Enables vertex input dynamic state feature for better quality and performance. + Włącza funkcję dynamicznego stanu wejścia wierzchołków, poprawiając jakość i wydajność. + + + + Sample Shading + Cieniowanie próbkowe + + + + Allows the fragment shader to execute per sample in a multi-sampled fragment instead of once per fragment. Improves graphics quality at the cost of performance. +Higher values improve quality but degrade performance. + Pozwala wykonywać shader fragmentów dla każdej próbki we fragmencie wielokrotnie próbkowanym zamiast raz dla każdego fragmentu. Poprawia jakość grafiki kosztem wydajności. +Wyższe wartości poprawiają jakość, ale obniżają wydajność. + + + RNG Seed Ziarno RNG - + Controls the seed of the random number generator. -Mainly used for speedrunning purposes. - +Mainly used for speedrunning. + Ustala ziarno generatora liczb losowych. +Głównie używane do speedrunów. - + Device Name Nazwa urządzenia - - The name of the emulated Switch. - + + The name of the console. + The name of the console. - + Custom RTC Date: - + Własna data RTC - - This option allows to change the emulated clock of the Switch. + + This option allows to change the clock of the console. Can be used to manipulate time in games. - + Ta opcja pozwala zmienić zegar konsoli. +Może służyć do manipulowania czasem w grach. - + + The number of seconds from the current unix time + Liczba sekund od bieżącego czasu Unix + + + Language: - + Język: - - Note: this can be overridden when region setting is auto-select - Uwaga: można to zmienić, gdy ustawienie regionu jest wybierane automatycznie + + This option can be overridden when region setting is auto-select + Ta opcja może zostać nadpisana, gdy ustawienie regionu to automatyczny wybór. - + Region: Region: - - The region of the emulated Switch. - + + The region of the console. + Region konsoli. - + Time Zone: Strefa czasowa: - - The time zone of the emulated Switch. - + + The time zone of the console. + Strefa czasowa konsoli. - + Sound Output Mode: Tryb wyjścia dźwięku: - + Console Mode: - + Tryb konsoli - - Selects if the console is emulated in Docked or Handheld mode. + + Selects if the console is in Docked or Handheld mode. Games will change their resolution, details and supported controllers and depending on this setting. Setting to Handheld can help improve performance for low end systems. - + Wybiera tryb konsoli: stacjonarny (Docked) lub przenośny (Handheld). +W zależności od tego ustawienia gry zmienią swoją rozdzielczość, szczegóły i obsługiwane kontrolery. +Ustawienie na Handheld może poprawić wydajność na słabszych komputerach. - - Prompt for user on game boot - Pytaj o użytkownika podczas uruchamiania gry + + Unit Serial + - - Pause emulation when in background - Wstrzymaj emulację w tle + + Battery Serial + - - Fast GPU Time (Hack) - + + Debug knobs + - - Overclocks the emulated GPU to increase dynamic resolution and render distance. -Use 128 for maximal performance and 512 for maximal graphics fidelity. - + + Prompt for user profile on boot + Pytaj o profil użytkownika przy uruchomieniu. - - Extended Dynamic State - + + Useful if multiple people use the same PC. + Przydatne, gdy z tego samego PC korzysta wiele osób. - - Enables the VkExtendedDynamicState* extensions. -Higher dynamic states will generally improve performance, but may cause issues on certain games or devices. - + + Pause when not in focus + Wstrzymuj, gdy okno nie jest aktywne - - Provoking Vertex - + + Pauses emulation when focusing on other windows. + Wstrzymuje emulację po przełączeniu na inne okna. - - Improves lighting and vertex handling in certain games. -Only Vulkan 1.0+ devices support this extension. - - - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - - Ask to select a user profile on each boot, useful if multiple people use eden on the same PC. - - - - - This setting pauses eden when focusing other windows. - - - - + Confirm before stopping emulation - + Potwierdzaj przed zatrzymaniem emulacji - - This setting overrides game prompts asking to confirm stopping the game. + + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - + Nadpisuje monity z prośbą o potwierdzenie zatrzymania emulacji. +Włączenie powoduje pominięcie takich monitów i bezpośrednie wyjście z emulacji. - + Hide mouse on inactivity Ukryj mysz przy braku aktywności - - This setting hides the mouse after 2.5s of inactivity. - + + Hides the mouse after 2.5s of inactivity. + Ukrywa kursor po 2,5 s bezczynności. - + Disable controller applet - + Wyłącz aplet kontrolera - - Forcibly disables the use of the controller applet by guests. -When a guest attempts to open the controller applet, it is immediately closed. - + + Forcibly disables the use of the controller applet in emulated programs. +When a program attempts to open the controller applet, it is immediately closed. + Wymusza wyłączenie użycia apletu kontrolera w oprogramowaniu uruchamianym w emulacji. +Jeśli emulowane oprogramowanie próbuje otworzyć aplet kontrolera, jest on natychmiast zamykany. - + Check for updates - + Sprawdź aktualizacje - + Whether or not to check for updates upon startup. - + Czy sprawdzać aktualizacje przy uruchomieniu. - + Enable Gamemode - + Włącz Tryb gry - + + Force X11 as Graphics Backend + Wymuś X11 jako backend grafiki + + + Custom frontend - + Niestandardowy frontend - + Real applet - + Prawdziwy aplet - + Never - + Nigdy - + On Load - + Przy wczytywaniu - + Always - + Zawsze - + CPU CPU - + GPU - + GPU - + CPU Asynchronous - + Asynchroniczne CPU - + Uncompressed (Best quality) Brak (najlepsza jakość) - + BC1 (Low quality) BC1 (niska jakość) - + BC3 (Medium quality) BC3 (średnia jakość) - - Conservative - - - - - Aggressive - - - - - OpenGL - - - - - Vulkan - Vulkan - - - - Null - - - - - GLSL - - - - - GLASM (Assembly Shaders, NVIDIA Only) - GLASM (Zgromadzone Shadery, tylko NVIDIA) - - - - SPIR-V (Experimental, AMD/Mesa Only) - - - - - Normal - Normalny - - - - High - Wysoki - - - - Extreme - - - - + + Auto Automatyczny - + + 30 FPS + + + + + 60 FPS + + + + + 90 FPS + + + + + 120 FPS + + + + + Conservative + Konserwatywny + + + + Aggressive + Agresywny + + + + Vulkan + Vulkan + + + + OpenGL GLSL + + + + + OpenGL GLASM (Assembly Shaders, NVIDIA Only) + + + + + OpenGL SPIR-V (Experimental, AMD/Mesa Only) + + + + + Null + Null + + + + Fast + Szybkie + + + + Balanced + Zrównoważony + + + + Accurate Dokładny - - Unsafe - Niebezpieczny - - - - Paranoid (disables most optimizations) - Paranoiczne (wyłącza większość optymalizacji) - - - - Dynarmic - - - - - NCE - - - - - Borderless Windowed - W oknie (Bezramkowy) - - - - Exclusive Fullscreen - Exclusive Fullscreen - - - - No Video Output - Brak wyjścia wideo - - - - CPU Video Decoding - Dekodowanie Wideo przez CPU - - - - GPU Video Decoding (Default) - Dekodowanie Wideo przez GPU (Domyślne) - - - - 0.25X (180p/270p) [EXPERIMENTAL] - - - - - 0.5X (360p/540p) [EXPERIMENTAL] - - - - - 0.75X (540p/810p) [EXPERIMENTAL] - 0.75X (540p/810p) [EKSPERYMENTALNE] - - - - 1X (720p/1080p) - 1X (720p/1080p) - - - - 1.5X (1080p/1620p) [EXPERIMENTAL] - 1.5X (1080p/1620p) [Ekperymentalnie] - - - - 2X (1440p/2160p) - 2X (1440p/2160p) - - - - 3X (2160p/3240p) - 3X (2160p/3240p) - - - - 4X (2880p/4320p) - 4X (2880p/4320p) - - - - 5X (3600p/5400p) - 5X (3600p/5400p) - - - - 6X (4320p/6480p) - 6X (4320p/6480p) - - - - 7X (5040p/7560p) - 7X (5040p/7560p) - - - - 8X (5760p/8640p) - 8X (5760p/8640p) - - - - Nearest Neighbor - Najbliższy sąsiadujący - - - - Bilinear - Bilinearny - - - - Bicubic - Bikubiczny - - - - Gaussian - Kulisty - - - - ScaleForce - ScaleForce - - - - AMD FidelityFX™️ Super Resolution - AMD FidelityFX™️ Super Resolution - - - - Area - - - - - None - Żadna (wyłączony) - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Default (16:9) - Domyślne (16:9) - - - - Force 4:3 - Wymuś 4:3 - - - - Force 21:9 - Wymuś 21:9 - - - - Force 16:10 - Wymuś 16:10 - - - - Stretch to Window - Rozciągnij do Okna - - - - Automatic - Automatyczne - - - + + Default Domyślny - + + Unsafe (fast) + Niezalecane (szybkie) + + + + Safe (stable) + Bezpieczne (stabilne) + + + + Unsafe + Niebezpieczny + + + + Paranoid (disables most optimizations) + Paranoiczne (wyłącza większość optymalizacji) + + + + Debugging + Debugowanie + + + + Dynarmic + Dynamiczny + + + + NCE + NCE + + + + Borderless Windowed + W oknie (Bezramkowy) + + + + Exclusive Fullscreen + Exclusive Fullscreen + + + + No Video Output + Brak wyjścia wideo + + + + CPU Video Decoding + Dekodowanie Wideo przez CPU + + + + GPU Video Decoding (Default) + Dekodowanie Wideo przez GPU (Domyślne) + + + + 0.25X (180p/270p) [EXPERIMENTAL] + 0,25x (180p/270p) [EKSPERYMENTALNE] + + + + 0.5X (360p/540p) [EXPERIMENTAL] + 0,5x (360p/540p) [EKSPERYMENTALNE] + + + + 0.75X (540p/810p) [EXPERIMENTAL] + 0.75X (540p/810p) [EKSPERYMENTALNE] + + + + 1X (720p/1080p) + 1X (720p/1080p) + + + + 1.25X (900p/1350p) [EXPERIMENTAL] + 1.25X (900p/1350p) [EKSPERYMENTALNE] + + + + 1.5X (1080p/1620p) [EXPERIMENTAL] + 1.5X (1080p/1620p) [Ekperymentalnie] + + + + 2X (1440p/2160p) + 2X (1440p/2160p) + + + + 3X (2160p/3240p) + 3X (2160p/3240p) + + + + 4X (2880p/4320p) + 4X (2880p/4320p) + + + + 5X (3600p/5400p) + 5X (3600p/5400p) + + + + 6X (4320p/6480p) + 6X (4320p/6480p) + + + + 7X (5040p/7560p) + 7X (5040p/7560p) + + + + 8X (5760p/8640p) + 8X (5760p/8640p) + + + + Nearest Neighbor + Najbliższy sąsiadujący + + + + Bilinear + Bilinearny + + + + Bicubic + Bikubiczny + + + + Gaussian + Kulisty + + + + Lanczos + Lanczos + + + + ScaleForce + ScaleForce + + + + AMD FidelityFX Super Resolution + AMD FidelityFX Super Resolution + + + + Area + Obszar + + + + MMPX + MMPX + + + + Zero-Tangent + Zero-Tangent + + + + B-Spline + B-Spline + + + + Mitchell + Mitchell + + + + Spline-1 + Spline-1 + + + + + None + Żadna (wyłączony) + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Default (16:9) + Domyślne (16:9) + + + + Force 4:3 + Wymuś 4:3 + + + + Force 21:9 + Wymuś 21:9 + + + + Force 16:10 + Wymuś 16:10 + + + + Stretch to Window + Rozciągnij do Okna + + + + Automatic + Automatyczne + + + 2x 2x - + 4x 4x - + 8x 8x - + 16x 16x - + + 32x + 32x + + + + 64x + 64x + + + Japanese (日本語) Japoński (日本語) - + American English Angielski Amerykański - + French (français) Francuski (français) - + German (Deutsch) Niemiecki (Niemcy) - + Italian (italiano) Włoski (italiano) - + Spanish (español) Hiszpański (español) - + Chinese Chiński - + Korean (한국어) Koreański (한국어) - + Dutch (Nederlands) Duński (Holandia) - + Portuguese (português) Portugalski (português) - + Russian (Русский) Rosyjski (Русский) - + Taiwanese Tajwański - + British English Angielski Brytyjski - + Canadian French Fancuski (Kanada) - + Latin American Spanish Hiszpański (Latin American) - + Simplified Chinese Chiński (Uproszczony) - + Traditional Chinese (正體中文) Chiński tradycyjny (正體中文) - + Brazilian Portuguese (português do Brasil) Portugalski (português do Brasil) - - + + Polish (polska) + + + + + Thai (แบบไทย) + + + + + Japan Japonia - + USA USA - + Europe Europa - + Australia Australia - + China Chiny - + Korea Korea - + Taiwan Tajwan - + Auto (%1) Auto select time zone - + Auto (%1) - + Default (%1) Default time zone - + Domyślne (%1) - + CET CET - + CST6CDT CST6CDT - + Cuba Cuba - + EET EET - + Egypt Egipt - + Eire Irlandia - + EST EST - + EST5EDT EST5EDT - + GB GB - + GB-Eire GB-Eire - + GMT GMT - + GMT+0 GMT+0 - + GMT-0 GMT-0 - + GMT0 GMT0 - + Greenwich Greenwich - + Hongkong Hongkong - + HST HST - + Iceland Islandia - + Iran Iran - + Israel Izrael - + Jamaica Jamajka - + Kwajalein Kwajalein - + Libya Libia - + MET MET - + MST MST - + MST7MDT MST7MDT - + Navajo Navajo - + NZ NZ - + NZ-CHAT NZ-CHAT - + Poland Polska - + Portugal Portugalia - + PRC PRC - + PST8PDT PST8PDT - + ROC ROC - + ROK ROK - + Singapore Singapur - + Turkey Turcja - + UCT UCT - + Universal Uniwersalny - + UTC UTC - + W-SU W-SU - + WET WET - + Zulu Zulu - + Mono Mono - + Stereo Stereo - + Surround Surround - + 4GB DRAM (Default) - + 4GB DRAM (Domyślne) - + 6GB DRAM (Unsafe) - + 6GB DRAM (NIebezpieczne) - + 8GB DRAM - + 8GB DRAM - + 10GB DRAM (Unsafe) - + 10GB DRAM (NIebezpieczne) - + 12GB DRAM (Unsafe) - + 12GB DRAM (NIebezpieczne) - - Low (128) - - - - - Medium (256) - - - - - High (512) - - - - + Docked Zadokowany - + Handheld Przenośnie - + + + Off + Wyłączone + + + Boost (1700MHz) - + Boost (1700MHz) - + Fast (2000MHz) - + Szybki (2000MHz) - + Always ask (Default) - + Zawsze pytaj (Domyślne) - + Only if game specifies not to stop - + Tylko jeśli gra określa, aby nie zatrzymywać - + Never ask - + Nie pytaj więcej + + + + + Medium (256) + Średnie (256) + + + + + High (512) + Wysokie (512) + + + + Very Small (16 MB) + + + + + Small (32 MB) + + + + + Normal (128 MB) + + + + + Large (256 MB) + + + + + Very Large (512 MB) + + + + + Very Low (4 MB) + + + + + Low (8 MB) + + + + + Normal (16 MB) + + + + + Medium (32 MB) + + + + + High (64 MB) + + + + + Very Low (32) + + + + + Low (64) + + + + + Normal (128) + + + + + Disabled + Wyłączone + + + + ExtendedDynamicState 1 + ExtendedDynamicState 1 + + + + ExtendedDynamicState 2 + ExtendedDynamicState 2 + + + + ExtendedDynamicState 3 + ExtendedDynamicState 3 + + + + Tree View + + + + + Grid View + @@ -1928,12 +2290,12 @@ When a guest attempts to open the controller applet, it is immediately closed. Applets - + Aplety Applet mode preference - + Preferencje trybu apletu @@ -1988,7 +2350,7 @@ When a guest attempts to open the controller applet, it is immediately closed.Przywróć domyślne - + Auto Automatyczny @@ -2018,7 +2380,7 @@ When a guest attempts to open the controller applet, it is immediately closed. CPU Backend - + Backend CPU @@ -2175,7 +2537,7 @@ Gdy ta opcja jest włączona, niedopasowanie jest uruchamiane tylko wtedy, gdy d <div style="white-space: nowrap">This optimization speeds up memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all memory accesses to use Software MMU Emulation.</div> @@ -2192,7 +2554,7 @@ Gdy ta opcja jest włączona, niedopasowanie jest uruchamiane tylko wtedy, gdy d <div style="white-space: nowrap">This optimization speeds up exclusive memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all exclusive memory accesses to use Software MMU Emulation.</div> @@ -2225,7 +2587,7 @@ Gdy ta opcja jest włączona, niedopasowanie jest uruchamiane tylko wtedy, gdy d <div style="white-space: nowrap">This optimization speeds up memory accesses by allowing invalid memory accesses to succeed.</div> - <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> + <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> <div style="white-space: nowrap">Ta optymalizacja przyspiesza dostęp do pamięci, umożliwiając pomyślne uzyskanie nieprawidłowego dostępu do pamięci.</div> @@ -2266,30 +2628,30 @@ Gdy ta opcja jest włączona, niedopasowanie jest uruchamiane tylko wtedy, gdy d Logowanie - - Open Log Location - Otwórz miejsce rejestrów - - - + Global Log Filter Globalny filtr rejestrów - + When checked, the max size of the log increases from 100 MB to 1 GB Kiedy zaznaczony, maksymalny rozmiar logu wzrasta ze 100 MB do 1 GB - + Enable Extended Logging** Włącz Przedłużony Logging** - + Show Log in Console Pokaż Log w konsoli + + + Open Log Location + Otwórz miejsce rejestrów + Homebrew @@ -2348,7 +2710,7 @@ Gdy ta opcja jest włączona, niedopasowanie jest uruchamiane tylko wtedy, gdy d Enable Renderdoc Hotkey - + Włącz skrót klawiszowy RenderDoc @@ -2393,12 +2755,12 @@ Gdy ta opcja jest włączona, niedopasowanie jest uruchamiane tylko wtedy, gdy d <html><head/><body><p>When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.</p></body></html> - + <html><head/><body><p>Po zaznaczeniu wyłącza zmianę kolejności operacji przesyłania danych ze zmapowanej pamięci, co pozwala powiązać te przesyłania z konkretnymi wywołaniami rysowania. W niektórych przypadkach może obniżyć wydajność.</p></body></html> Disable Buffer Reorder - + Wyłącz zmianę kolejności buforów @@ -2426,18 +2788,9 @@ Gdy ta opcja jest włączona, niedopasowanie jest uruchamiane tylko wtedy, gdy d Włącz wszystkie Typy Kontrolerów - - Censor username in logs - - - - - **This will be reset automatically when eden closes. - - - - Enable Auto-Stub** - Włącz Auto-Stub** + + Enable Auto-Stub + Włącz Auto-Stub @@ -2446,8 +2799,8 @@ Gdy ta opcja jest włączona, niedopasowanie jest uruchamiane tylko wtedy, gdy d - Enable CPU Debugging - Włącz Debugowanie CPU + Use dev.keys + @@ -2460,43 +2813,74 @@ Gdy ta opcja jest włączona, niedopasowanie jest uruchamiane tylko wtedy, gdy d Debugowanie - - Flush log output on each line - + + Battery Serial: + Numer seryjny baterii: - - Enable FS Access Log - Włącz dziennik Dostępu FS + + Bitmask for quick development toggles + Maska bitowa szybkich przełączników deweloperskich - + + Set debug knobs (bitmask) + Ustaw przełączniki debugowania (maska bitowa) + + + + 16-bit debug knob set for quick development toggles + 16-bitowy zestaw przełączników debugowania do szybkiej zmiany ustawień deweloperskich + + + + (bitmask) + (maska bitowa) + + + + Debug Knobs: + Przełączniki debugowania: + + + + Unit Serial: + Przełączniki debugowania: + + + Enable this to output the latest generated audio command list to the console. Only affects games using the audio renderer. Włącz tę opcję, aby wyświetlić ostatnio wygenerowaną listę poleceń dźwiękowych na konsoli. Wpływa tylko na gry korzystające z renderera dźwięku. - - Enable Auto-Stub - - - - + Dump Audio Commands To Console** Zrzuć polecenia audio do konsoli** - + + Flush log output on each line + Wypisuj logi z opróżnieniem bufora po każdej linii + + + + Enable FS Access Log + Włącz dziennik Dostępu FS + + + Enable Verbose Reporting Services** Włącz Pełne Usługi Raportowania** - **This will be reset automatically when yuzu closes. - **To zresetuje się automatycznie po wyłączeniu yuzu. + + Censor username in logs + Ukrywaj nazwę użytkownika w logach - - Web applet not compiled - Aplet sieciowy nie został skompilowany + + **This will be reset automatically when Eden closes. + **To zostanie automatycznie zresetowane po zamknięciu Edena. @@ -2538,103 +2922,99 @@ Gdy ta opcja jest włączona, niedopasowanie jest uruchamiane tylko wtedy, gdy d ConfigureDialog - - yuzu Configuration - Ustawienia yuzu - - eden Configuration - + Eden Configuration + Konfiguracja Eden Some settings are only available when a game is not running. - + Niektóre ustawienia są dostępne tylko, gdy gra nie jest uruchomiona. - + Applets - + Aplety - - + + Audio Dźwięk - - + + CPU CPU - + Debug Wyszukiwanie usterek - + Filesystem System plików - - + + General Ogólne - - + + Graphics Grafika - + GraphicsAdvanced Zaawansowana grafika - - GraphicsExtensions - + + GraphicsExtra + GraphicsExtra - + Hotkeys Skróty klawiszowe - - + + Controls Sterowanie - + Profiles Profile - + Network Sieć - - + + System System - + Game List Lista Gier - + Web Web @@ -2664,9 +3044,10 @@ Gdy ta opcja jest włączona, niedopasowanie jest uruchamiane tylko wtedy, gdy d - - - + + + + ... ... @@ -2676,107 +3057,195 @@ Gdy ta opcja jest włączona, niedopasowanie jest uruchamiane tylko wtedy, gdy d Karta SD - + + Save Data + Dane zapisu + + + Gamecard Gamecard - + Path Ścieżka - + Inserted Włożona - + Current Game Obecna Gra - + Patch Manager Menedżer łatek - + Dump Decompressed NSOs Zrzuć rozpakowane pliki NSO - + Dump ExeFS Zrzuć ExeFS - + Mod Load Root Mod Load Root - + Dump Root Root zrzutów - + Caching Buforowanie - + Cache Game List Metadata Metadane listy gier w pamięci podręcznej - - - - + Reset Metadata Cache Zresetuj pamięć podręczną metadanych - + Select Emulated NAND Directory... Wybierz emulowany katalog NAND... - + Select Emulated SD Directory... Wybierz Emulowany katalog SD... - + + + Select Save Data Directory... + Wybierz katalog danych zapisu… + + + Select Gamecard Path... Wybierz Ścieżkę karty gry... - + Select Dump Directory... Wybierz katalog zrzutu... - + Select Mod Load Directory... Wybierz katalog ładowania modów... - - The metadata cache is already empty. - Pamięć podręczna metadanych jest już pusta. + + Save Data Directory + Katalog danych zapisu - - The operation completed successfully. - Operacja zakończona sukcesem. + + Choose an action for the save data directory: + Wybierz działanie dla katalogu danych zapisu: - - The metadata cache couldn't be deleted. It might be in use or non-existent. - Nie udało się usunąć pamięci podręcznej metadanych. Może być używana lub nie istnieje. + + Set Custom Path + Ustaw niestandardową ścieżkę + + + + Reset to NAND + Przywróć do NAND + + + + Save data exists in both the old and new locations. + +Old: %1 +New: %2 + +Would you like to migrate saves from the old location? +WARNING: This will overwrite any conflicting saves in the new location! + Dane zapisu istnieją zarówno w starej, jak i w nowej lokalizacji. + +Stara: %1 +Nowa: %2 + +Czy chcesz przenieść zapisy ze starej lokalizacji? +OSTRZEŻENIE: To nadpisze wszystkie kolidujące zapisy w nowej lokalizacji! + + + + Would you like to migrate your save data to the new location? + +From: %1 +To: %2 + Czy chcesz przenieść dane zapisu do nowej lokalizacji? + +Z: %1 +Do: %2 + + + + Migrate Save Data + Przenieś dane zapisu + + + + Migrating save data... + Przenoszenie danych zapisu... + + + + Cancel + Anuluj + + + + + Migration Failed + Przenoszenie nie powiodło się + + + + Failed to create destination directory. + Nie udało się utworzyć katalogu docelowego. + + + + Failed to migrate save data: +%1 + Nie udało się przenieść danych zapisu: +%1 + + + + Migration Complete + Przenoszenie zakończone + + + + Save data has been migrated successfully. + +Would you like to delete the old save data? + Dane zapisu zostały pomyślnie przeniesione. + +Czy chcesz usunąć stare dane zapisu? @@ -2794,28 +3263,54 @@ Gdy ta opcja jest włączona, niedopasowanie jest uruchamiane tylko wtedy, gdy d - Linux - + External Content + - + + Add directories to scan for DLCs and Updates without installing to NAND + + + + + Add Directory + + + + + Remove Selected + + + + Reset All Settings Resetuj wszystkie ustawienia - yuzu - yuzu + + Eden + Eden - - eden - - - - + This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed? Spowoduje to zresetowanie wszystkich ustawień i usunięcie wszystkich konfiguracji gier. Nie spowoduje to usunięcia katalogów gier, profili ani profili wejściowych. Kontynuować? + + + Select External Content Directory... + + + + + Directory Already Added + + + + + This directory is already in the list. + + ConfigureGraphics @@ -2845,33 +3340,33 @@ Gdy ta opcja jest włączona, niedopasowanie jest uruchamiane tylko wtedy, gdy d Kolor tła - + % FSR sharpening percentage (e.g. 50%) % - + Off Wyłączone - + VSync Off VSync wyłączony - + Recommended Zalecane - + On Włączone - + VSync On VSync aktywny @@ -2889,7 +3384,7 @@ Gdy ta opcja jest włączona, niedopasowanie jest uruchamiane tylko wtedy, gdy d Zaawansowane - + Advanced Graphics Settings Zaawansowane ustawienia grafiki @@ -2899,24 +3394,38 @@ Gdy ta opcja jest włączona, niedopasowanie jest uruchamiane tylko wtedy, gdy d Form - Forma + Formularz - Extensions - + Extras + Dodatki - - Vulkan Extension Settings - + + Hacks + Hacki - - While it's recommended to use state 3, some games may perform better on lower states. Setting to 0 (disabled) may also break games. -If your GPU is older (i.e. RX570/580 or older), it may not support these features. If this is the case, set the slider to 0 and uncheck all boxes. -These settings are experimental, and may cause black screens. If your games fail to boot or are stuck on a black screen, change these settings around. - + + Changing these options from their default may cause issues. Novitii cavete! + Zmiana tych opcji względem domyślnych może powodować problemy. Novitii cavete! + + + + Vulkan Extensions + Rozszerzenia Vulkan + + + + % + Sample Shading percentage (e.g. 50%) + % + + + + Extended Dynamic State is disabled on macOS due to MoltenVK compatibility issues that cause black screens. + Extended Dynamic State jest wyłączony na macOS z powodu problemów zgodności z MoltenVK, które powodują czarne ekrany. @@ -2947,75 +3456,75 @@ These settings are experimental, and may cause black screens. If your games fail Przywróć domyślne - + Action Akcja - + Hotkey Skrót klawiszowy - + Controller Hotkey Skrót Klawiszowy Kontrolera - - - + + + Conflicting Key Sequence Sprzeczna sekwencja klawiszy - - + + The entered key sequence is already assigned to: %1 Wprowadzona sekwencja klawiszy jest już przypisana do: %1 - + [waiting] [oczekiwanie] - + Invalid Nieprawidłowe - + Invalid hotkey settings - + Nieprawidłowe ustawienia skrótów klawiszowych - + An error occurred. Please report this issue on github. - + Wystąpił błąd. Zgłoś ten problem na GitHubie. - + Restore Default Przywróć ustawienia domyślne - + Clear Wyczyść - + Conflicting Button Sequence Sprzeczna Sekwencja Przycisków - + The default button sequence is already assigned to: %1 Domyślna sekwencja przycisków już jest przypisana do: %1 - + The default key sequence is already assigned to: %1 Domyślna sekwencja klawiszy jest już przypisana do: %1 @@ -3335,12 +3844,8 @@ These settings are experimental, and may cause black screens. If your games fail - Requires restarting eden - - - - Requires restarting yuzu - Należy zrestartować yuzu + Requires restarting Eden + Wymaga ponownego uruchomienia Edena @@ -3360,22 +3865,22 @@ These settings are experimental, and may cause black screens. If your games fail Enable direct JoyCon driver - + Włącz bezpośredni sterownik Joy-Con Enable direct Pro Controller driver [EXPERIMENTAL] - + Włącz bezpośredni sterownik kontrolera Pro [EKSPERYMENTALNE] Allows unlimited uses of the same Amiibo in games that would otherwise limit you to one use. - + Pozwala używać tego samego Amiibo dowolną liczbę razy w grach, które normalnie ograniczają do jednego użycia. Use random Amiibo ID - + Używaj losowego identyfikatora Amiibo @@ -3490,30 +3995,19 @@ These settings are experimental, and may cause black screens. If your games fail - + Left Stick Lewa gałka - - - - - - - Up - Góra - - - - - - - - - - Left - Lewo + + + + + + + Down + Dół @@ -3527,14 +4021,25 @@ These settings are experimental, and may cause black screens. If your games fail Prawo - - - - - - - Down - Dół + + + + + + + + Left + Lewo + + + + + + + + + Up + Góra @@ -3581,14 +4086,6 @@ These settings are experimental, and may cause black screens. If your games fail D-Pad D-Pad - - - - - - SL - SL - @@ -3598,59 +4095,55 @@ These settings are experimental, and may cause black screens. If your games fail SR - - - - L - L + + + + + SL + SL - + ZL ZL + + + + + L + L + Minus Minus - - - - Capture - Zrzut ekranu - - + Plus Plus - - - Home - Home + + + + ZR + ZR - - + + R R - - - - - ZR - ZR - Motion 1 @@ -3661,6 +4154,18 @@ These settings are experimental, and may cause black screens. If your games fail Motion 2 Ruch 2 + + + + Capture + Zrzut ekranu + + + + + Home + Home + Face Buttons @@ -3673,10 +4178,10 @@ These settings are experimental, and may cause black screens. If your games fail X - - - Y - Y + + + B + B @@ -3685,21 +4190,21 @@ These settings are experimental, and may cause black screens. If your games fail A - - - B - B + + + Y + Y - + Right Stick Prawa gałka Mouse panning - + Przesuwanie myszą @@ -3707,242 +4212,242 @@ These settings are experimental, and may cause black screens. If your games fail Konfiguruj - - - - + + + + Clear Wyczyść - - - - - + + + + + [not set] [nie ustawione] - - - + + + Invert button Odwróć przycisk - - + + Toggle button Przycisk Toggle - + Turbo button Przycisk TURBO - - + + Invert axis Odwróć oś - - - + + + Set threshold Ustaw próg - - + + Choose a value between 0% and 100% Wybierz wartość od 0% do 100% - + Toggle axis Przełącz oś - + Set gyro threshold Ustaw próg gyro - + Calibrate sensor Kalibracja sensora - + Map Analog Stick Przypisz Drążek Analogowy - + After pressing OK, first move your joystick horizontally, and then vertically. To invert the axes, first move your joystick vertically, and then horizontally. Po naciśnięciu OK, najpierw przesuń joystick w poziomie, a następnie w pionie. Aby odwrócić osie, najpierw przesuń joystick pionowo, a następnie poziomo. - + Center axis Środkowa oś - - + + Deadzone: %1% Martwa strefa: %1% - - + + Modifier Range: %1% Zasięg Modyfikatora: %1% - - + + Pro Controller Pro Controller - + Dual Joycons Para Joyconów - + Left Joycon Lewy Joycon - + Right Joycon Prawy Joycon - + Handheld Handheld - + GameCube Controller Kontroler GameCube - + Poke Ball Plus Poke Ball Plus - + NES Controller Kontroler NES/Pegasus - + SNES Controller Kontroler SNES - + N64 Controller Kontroler N64 - + Sega Genesis Sega Mega Drive - + Start / Pause Start / Pauza - + Z Z - + Control Stick Lewa gałka - + C-Stick C-gałka - + Shake! Potrząśnij! - + [waiting] [oczekiwanie] - + New Profile Nowy profil - + Enter a profile name: Wpisz nazwę profilu: - - + + Create Input Profile Utwórz profil wejściowy - + The given profile name is not valid! Podana nazwa profilu jest nieprawidłowa! - + Failed to create the input profile "%1" Nie udało się utworzyć profilu wejściowego "%1" - + Delete Input Profile Usuń profil wejściowy - + Failed to delete the input profile "%1" Nie udało się usunąć profilu wejściowego "%1" - + Load Input Profile Załaduj profil wejściowy - + Failed to load the input profile "%1" Nie udało się wczytać profilu wejściowego "%1" - + Save Input Profile Zapisz profil wejściowy - + Failed to save the input profile "%1" Nie udało się zapisać profilu wejściowego "%1" @@ -3965,15 +4470,6 @@ Aby odwrócić osie, najpierw przesuń joystick pionowo, a następnie poziomo.Domyślne - - ConfigureLinuxTab - - - - Linux - - - ConfigureMotionTouch @@ -3999,7 +4495,7 @@ Aby odwrócić osie, najpierw przesuń joystick pionowo, a następnie poziomo. - + Configure Konfiguruj @@ -4029,111 +4525,93 @@ Aby odwrócić osie, najpierw przesuń joystick pionowo, a następnie poziomo.Port: - - Learn More - Dowiedz się więcej - - - - + + Test Test - + Add Server Dodaj serwer - + Remove Server Usuń serwer - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Dowiedz się więcej</span></a> - - - + %1:%2 %1:%2 - yuzu - yuzu + + + + + + + Eden + Eden - - <a href='https://eden-emulator.github.io/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - - - - + Port number has invalid characters Port zawiera nieprawidłowe znaki - - - - - - - eden - - - - + Port has to be in range 0 and 65353 Port musi być w zakresie 0-65353 - + IP address is not valid Adres IP nie jest prawidłowy - + This UDP server already exists Ten serwer UDP już istnieje - + Unable to add more than 8 servers Nie można dodać więcej niż 8 serwerów - + Testing Testowanie - + Configuring Konfigurowanie - + Test Successful Test Udany - + Successfully received data from the server. Pomyślnie odebrano dane z serwera. - + Test Failed Test nieudany - + Could not receive valid data from the server.<br>Please verify that the server is set up correctly and the address and port are correct. Nie można odebrać poprawnych danych z serwera.<br>Sprawdź, czy serwer jest poprawnie skonfigurowany, a adres i port są prawidłowe. - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. Trwa konfiguracja testu UDP lub kalibracji.<br>Poczekaj na zakończenie. @@ -4143,27 +4621,27 @@ Aby odwrócić osie, najpierw przesuń joystick pionowo, a następnie poziomo. Configure mouse panning - + Skonfiguruj przesuwanie myszką Enable mouse panning - Włącz panoramowanie myszą + Włącz przesuwanie myszą Can be toggled via a hotkey. Default hotkey is Ctrl + F9 - + Można przełączać skrótem. Domyślny skrót: Ctrl + F9 Sensitivity - + Czułość Horizontal - + Poziomy @@ -4177,37 +4655,37 @@ Aby odwrócić osie, najpierw przesuń joystick pionowo, a następnie poziomo. Vertical - + Pionowy Deadzone counterweight - + Kompensacja martwej strefy Counteracts a game's built-in deadzone - + Kompensuje wbudowaną martwą strefę gry Deadzone - + Martwa strefa Stick decay - + Tłumienie drążka Strength - + Siła Minimum - + Minimum @@ -4218,12 +4696,13 @@ Aby odwrócić osie, najpierw przesuń joystick pionowo, a następnie poziomo. Mouse panning works better with a deadzone of 0% and a range of 100%. Current values are %1% and %2% respectively. - + Przewijanie myszą działa lepiej przy martwej strefie 0% i zakresie 100%. +Obecne wartości to odpowiednio %1% i %2%. Emulated mouse is enabled. This is incompatible with mouse panning. - + Włączono emulowaną mysz. Wyklucza się z przewijaniem myszą. @@ -4233,7 +4712,7 @@ Current values are %1% and %2% respectively. Real mouse input and mouse panning are incompatible. Please disable the emulated mouse in input advanced settings to allow mouse panning. - + Prawdziwe wejście myszy i przewijanie myszą są niezgodne. Wyłącz emulowaną mysz w zaawansowanych ustawieniach wejścia, aby umożliwić przewijanie. @@ -4259,9 +4738,9 @@ Current values are %1% and %2% respectively. Interfejs Sieciowy - - None - Żadny + + Enable Airplane Mode + Włącz tryb samolotowy @@ -4314,52 +4793,57 @@ Current values are %1% and %2% respectively. Some settings are only available when a game is not running. - + Niektóre ustawienia są dostępne tylko, gdy gra nie jest uruchomiona. - + Add-Ons Dodatki - + System System - + CPU CPU - + Graphics Grafika - + Adv. Graphics Zaaw. Grafika - - GPU Extensions - + + Ext. Graphics + Dodatkowa grafika - + Audio Dźwięk - + Input Profiles Profil wejściowy - Linux - + Network + Sieć + + + + Applets + @@ -4380,15 +4864,110 @@ Current values are %1% and %2% respectively. Dodatki - + + Import Mod from ZIP + + + + + Import Mod from Folder + + + + Patch Name Nazwa łatki - + Version Wersja + + + Mod Install Succeeded + + + + + Successfully installed all mods. + + + + + Mod Install Failed + + + + + Failed to install the following mods: + %1 +Check the log for details. + + + + + Mod Folder + + + + + Zipped Mod Location + + + + + Zipped Archives (*.zip) + + + + + Invalid Selection + + + + + Only mods, cheats, and patches can be deleted. +To delete NAND-installed updates, right-click the game in the game list and click Remove -> Remove Installed Update. + + + + + You are about to delete the following installed mods: + + + + + + +Once deleted, these can NOT be recovered. Are you 100% sure you want to delete them? + + + + + Delete add-on(s)? + + + + + Successfully deleted + + + + + Successfully deleted all selected mods. + + + + + &Delete + + + + + &Open in File Manager + + ConfigureProfileManager @@ -4418,32 +4997,17 @@ Current values are %1% and %2% respectively. Nazwa Użytkownika - - Set Image - Ustaw zdjęcie - - - + Add Dodaj - - Rename - Zmień nazwę - - - - Remove - Usuń - - - + Profile management is available only when game is not running. Menedżer Profili nie jest dostępny gdy gra jest uruchomiona. - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -4451,100 +5015,80 @@ Current values are %1% and %2% respectively. %2 - - Enter Username - Wpisz nazwę użytkownika - - - + Users Użytkownicy - - Enter a username for the new user: - Wprowadź nazwę dla nowego użytkownika: - - - - Enter a new username: - Wpisz nową nazwę użytkownika: - - - - Select User Image - Ustaw zdjęcie użytkownika - - - - JPEG Images (*.jpg *.jpeg) - Obrazki JPEG (*.jpg *.jpeg) - - - + Error deleting image Bład usunięcia zdjęcia - + Error occurred attempting to overwrite previous image at: %1. Błąd podczas próby nadpisania poprzedniego zdjęcia dla: %1. - + Error deleting file Błąd usunięcia pliku - + Unable to delete existing file: %1. Nie można usunąć istniejącego pliku: %1 - + Error creating user image directory Błąd podczas tworzenia folderu ze zdjęciem użytkownika - + Unable to create directory %1 for storing user images. Nie można utworzyć ścieżki %1 do przechowywania zdjęć użytkownika. - - Error copying user image - Błąd kopiowania zdjęcia użytkownika + + Error saving user image + Błąd zapisu obrazu użytkownika - - Unable to copy image from %1 to %2 - Nie można skopiować zdjęcia z %1 do %2 + + Unable to save image to file + Nie można zapisać obrazu do pliku - - Error resizing user image - Błąd podczas zmieniania rozmiaru obrazu użytkownika + + &Edit + - - Unable to resize image - Nie można zmienić rozmiaru obrazu + + &Delete + + + + + Edit User + ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. Czy usunąć tego użytkownika? Wszystkie dane zapisu użytkownika zostaną usunięte. - + Confirm Delete Potwierdź usunięcie - + Name: %1 UUID: %2 Nazwa: %1 @@ -4561,12 +5105,12 @@ UUID: %2 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. - + Aby używać Ring-Cona, przed uruchomieniem gry skonfiguruj gracza 1 jako prawy Joy-Con (zarówno fizyczny, jak i emulowany), a gracza 2 jako lewy Joy-Con (lewy fizyczny i emulowany podwójnie). Virtual Ring Sensor Parameters - + Parametry czujnika wirtualnego Ringa @@ -4588,27 +5132,27 @@ UUID: %2 Direct Joycon Driver - + Bezpośredni sterownik Joy-Con Enable Ring Input - + Włącz wejście z Ringa - + Enable - + Włącz Ring Sensor Value - + Wartość czujnika Ringa - + Not connected Niepodłączony @@ -4618,63 +5162,63 @@ UUID: %2 Przywróć domyślne - + Clear Wyczyść - + [not set] [nie ustawione] - + Invert axis Odwróć oś - - + + Deadzone: %1% Martwa strefa: %1% - + Error enabling ring input - + Błąd włączania wejścia z kontrolera Ring - + Direct Joycon driver is not enabled - + Bezpośredni sterownik Joy-Con nie jest włączony - + Configuring Konfigurowanie - + The current mapped device doesn't support the ring controller - - - - - The current mapped device doesn't have a ring attached - + Bieżące zmapowane urządzenie nie obsługuje kontrolera Ring + The current mapped device doesn't have a ring attached + Do bieżącego zmapowanego urządzenia nie jest podłączony kontroler Ring-Con + + + The current mapped device is not connected - + Aktualnie zmapowane urządzenie nie jest podłączone. - + Unexpected driver result %1 - + Nieoczekiwany wynik sterownika: %1 - + [waiting] [oczekiwanie] @@ -4695,10 +5239,10 @@ UUID: %2 Core - + Rdzeń - + Warning: "%1" is not a valid language for region "%2" Uwaga: "%1" nie jest poprawnym językiem dla regionu "%2" @@ -4710,14 +5254,10 @@ UUID: %2 TAS TAS - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the yuzu website.</p></body></html> - <html><head/><body><p>Odczytuje dane wejściowe kontrolera ze skryptów takiego samego formatu jak skrypty TAS-nx.<br/> Jeśli chcesz otrzymać bardziej szczegółowe wyjaśnienie, wejdź na <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">stronę pomocy</span></a> na stronie internetowej yuzu.</p></body></html> - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the eden website.</p></body></html> - + <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the user handbook.</p></body></html> + <html><head/><body><p>Odczytuje dane wejściowe kontrolera ze skryptów w tym samym formacie co skrypty TAS-nx.<br/>Szczegółowe wyjaśnienie znajdziesz w podręczniku użytkownika.</p></body></html> @@ -4750,17 +5290,22 @@ UUID: %2 Zatrzymuj wykonanie w trakcie ładowania - + + Show recording dialog + + + + Script Directory Ścieżka Skryptu - + Path Ścieżka - + ... ... @@ -4768,12 +5313,12 @@ UUID: %2 ConfigureTasDialog - + TAS Configuration Konfiguracja TAS - + Select TAS Load Directory... Wybierz Ścieżkę Załadowania TAS-a @@ -4877,14 +5422,10 @@ Przeciągnij punkty, aby zmienić pozycję, lub kliknij dwukrotnie komórki tabe Configure Touchscreen Skonfiguj ekran dotykowy - - Warning: The settings in this page affect the inner workings of yuzu's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - Ostrzeżenie: Ustawienia na tej stronie mają wpływ na działanie emulowanego ekranu dotykowego Yuzu. ch zmiana może spowodować niepożądane zachowanie, takie jak częściowo lub całkowicie nie działający ekran dotykowy. Powinieneś/naś używać tej strony tylko wtedy, gdy wiesz, co robisz. - - Warning: The settings in this page affect the inner workings of eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - + Warning: The settings in this page affect the inner workings of Eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. + Ostrzeżenie: Ustawienia na tej stronie mają wpływ na wewnętrzne działanie emulowanego ekranu dotykowego Eden. Ich zmiana może spowodować niepożądane zachowanie, takie jak częściowe lub całkowite nieprawidłowe działanie ekranu dotykowego. Z tej strony należy korzystać tylko wtedy, gdy wiesz, co robisz. @@ -4915,64 +5456,43 @@ Przeciągnij punkty, aby zmienić pozycję, lub kliknij dwukrotnie komórki tabe ConfigureUI - - - + + None Żadny - - - Small (32x32) - Małe (32x32) - - Standard (64x64) - Standardowe (64x64) - - - - Large (128x128) - Duże (128x128) - - - - Full Size (256x256) - Pełny Rozmiar (256x256) - - - Small (24x24) Małe (24x24) - + Standard (48x48) Standardowe (48x48) - + Large (72x72) Duże (72x72) - + Filename Nazwa pliku - + Filetype Typ pliku - + Title ID Identyfikator gry - + Title Name Nazwa Tytułu @@ -5037,78 +5557,73 @@ Przeciągnij punkty, aby zmienić pozycję, lub kliknij dwukrotnie komórki tabe Show Play Time Column - + Pokaż kolumnę z czasem gry - Game Icon Size: - Rozmiar Ikony Gry - - - Folder Icon Size: Rozmiar Ikony Folderu - + Row 1 Text: Tekst 1. linii - + Row 2 Text: Tekst 2. linii - + Screenshots Zrzuty ekranu - + Ask Where To Save Screenshots (Windows Only) Pytaj gdzie zapisać zrzuty ekranu (Tylko dla Windows) - + Screenshots Path: Ścieżka zrzutów ekranu: - + ... ... - + TextLabel - + TextLabel - + Resolution: Rozdzielczość: - + Select Screenshots Path... Wybierz ścieżkę zrzutów ekranu... - + <System> <System> - + English Angielski - + Auto (%1 x %2, %3 x %4) Screenshot width value - + Automatycznie (%1 x %2, %3 x %4) @@ -5203,170 +5718,178 @@ Przeciągnij punkty, aby zmienić pozycję, lub kliknij dwukrotnie komórki tabe Web Web - - yuzu Web Service - Usługa internetowa yuzu - - - By providing your username and token, you agree to allow yuzu to collect additional usage data, which may include user identifying information. - Podając swoją nazwę użytkownika i token, zgadzasz się na umożliwienie yuzu zbierania dodatkowych danych o użytkowaniu, które mogą zawierać informacje umożliwiające identyfikację użytkownika. - - eden Web Service - + Eden Web Service + Usługa sieciowa Eden - - By providing your username and token, you agree to allow eden to collect additional usage data, which may include user identifying information. - - - - - Verify - Zweryfikuj - - - - Sign up - Zaloguj się - - - + Token: Token: - + Username: Nazwa użytkownika: - - What is my token? - Czym jest mój token? + + Generate + Generuj - + Web Service configuration can only be changed when a public room isn't being hosted. Konfigurację usług sieciowych można tylko zmienić kiedy pokój publiczny nie jest hostowany. - Telemetry - Telemetria - - - Share anonymous usage data with the yuzu team - Udostępniaj anonimowe dane o użytkowaniu zespołowi yuzu - - - Learn more - Dowiedz się więcej - - - Telemetry ID: - Identyfikator telemetrii: - - - Regenerate - Wygeneruj ponownie - - - + Discord Presence Obecność na discordzie - + Show Current Game in your Discord Status Pokazuj obecną grę w twoim statusie Discorda - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Dowiedz się więcej</span></a> - - - - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Zaloguj się</span></a> - - - - <a href='https://evilperson1337.notion.site/Hosting-a-Room-Inside-of-Eden-20457c2edaf680108abac6215a79acdb'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - - - - - Warning - - - + - Verification is currently nonfunctional, instead generate a random 48-character string with only lowercase a-z. - - - - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">Czym jest mój token?</span></a> - - - Telemetry ID: 0x%1 - Identyfikator telemetrii: 0x%1 - - - Unspecified - Nieokreślona - - - Token not verified - Token niezweryfikowany - - - Token was not verified. The change to your token has not been saved. - Token nie został zweryfikowany. Zmiana w Twoim tokenie nie została zapisana. - - - - Unverified, please click Verify before saving configuration + All Good Tooltip - Niezweryfikowany, kliknij proszę przycisk Weryfikacji przed zapisaniem konfiguracji + Wszystko w porządku - Verifying... - Weryfikowanie... - - - Verified + + Must be between 4-20 characters Tooltip - Zweryfikowany + Musi mieć od 4 do 20 znaków - Verification failed + + Must be 48 characters, and lowercase a-z Tooltip - Weryfikowanie nieudane - - - Verification failed - Weryfikowanie nieudane - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - Weryfikacja nie powiodła się. Sprawdź, czy poprawnie podałeś swój token oraz czy działa twoje połączenie internetowe. + Musi mieć 48 znaków i składać się z małych liter a–z ControllerDialog - + Controller P1 Kontroler P1 - + &Controller P1 &Kontroler P1 + + DataDialog + + + Data Manager + Menedżer danych + + + + Deleting ANY data is IRREVERSABLE! + Usunięcie JAKICHKOLWIEK danych jest NIEODWRACALNE! + + + + Shaders + Shadery + + + + UserNAND + UserNAND + + + + SysNAND + SysNAND + + + + Mods + Mody + + + + Saves + Zapisy + + + + DataWidget + + + Form + Formularz + + + + Tooltip + Podpowiedź + + + + Open with your system file manager + Otwórz w menedżerze plików systemu + + + + Delete all data in this directory. THIS IS 100% IRREVERSABLE! + Usuń wszystkie dane w tym katalogu. TO JEST W 100% NIEODWRACALNE! + + + + Export all data in this directory. This may take a while! + Eksportuj wszystkie dane z tego katalogu. To może chwilę potrwać! + + + + Import data for this directory. This may take a while, and will delete ALL EXISTING DATA! + Zaimportuj dane dla tego katalogu. To może chwilę potrwać i USUNIE WSZYSTKIE ISTNIEJĄCE DANE! + + + + Calculating... + Obliczanie... + + + + DepsDialog + + + Eden Dependencies + Zależności Eden + + + + <html><head/><body><p><span style=" font-size:28pt;">Eden Dependencies</span></p></body></html> + <html><head/><body><p><span style=" font-size:28pt;">Zależności Eden</span></p></body></html> + + + + <html><head/><body><p>The projects that make Eden possible</p></body></html> + <html><head/><body><p>Projekty, dzięki którym Eden jest możliwy</p></body></html> + + + + Dependency + Zależność + + + + Version + Wersja + + DirectConnect @@ -5377,12 +5900,12 @@ Przeciągnij punkty, aby zmienić pozycję, lub kliknij dwukrotnie komórki tabe Server Address - + Adres serwera <html><head/><body><p>Server address of the host</p></body></html> - + <html><head/><body><p>Adres serwera hosta</p></body></html> @@ -5428,1508 +5951,154 @@ Przeciągnij punkty, aby zmienić pozycję, lub kliknij dwukrotnie komórki tabe Username is not valid. Must be 4 to 20 alphanumeric characters. - Nick nie jest poprawny. Musi zawierać od 4 do 20 znaków alfanumerycznych. + Nazwa użytkownika jest nieprawidłowa. Musi mieć od 4 do 20 znaków alfanumerycznych. Room name is not valid. Must be 4 to 20 alphanumeric characters. - Nazwa pokoju nie jest poprawna. Musi zawierać od 4 do 20 znaków alfanumerycznych. + Nazwa pokoju jest nieprawidłowa. Musi mieć od 4 do 20 znaków alfanumerycznych. Username is already in use or not valid. Please choose another. - Nick już jest w użyciu, albo nie jest aktualny. Wybierz inny. + Nazwa użytkownika jest już zajęta lub nieprawidłowa. Wybierz inną. IP is not a valid IPv4 address. - IP nie jest poprawnym adresem IPv4. + Adres IP nie jest prawidłowym adresem IPv4. Port must be a number between 0 to 65535. - Port musi być numerem od 0 do 65535. + Port musi być liczbą z przedziału od 0 do 65535. You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - Aby hostować pokój, musisz wybrać preferowaną grę. Jeżeli nie posiadasz żadnej gry w twojej liście gier, dodaj folder z grami poprzez kliknięcie ikonki plusa w liście gier. + Aby utworzyć pokój, musisz wybrać preferowaną grę. Aby dodać grę do listy preferowanych, otwórz jej menu kontekstowe lub dodaj folder gry, klikając ikonę plusa na liście gier. Unable to find an internet connection. Check your internet settings. - Nie znaleziono połączenia internetowego. Sprawdź swoje ustawienia internetu. + Nie można wykryć połączenia z internetem. Sprawdź ustawienia sieci. Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - Nie można nawiązać połączenia z hostem. Sprawdź czy ustawienia sieciowe są poprawne. Jeżeli wciąż nie będziesz mógł nawiązać połączenia, skontaktuj się z hostem pokoju oraz sprawdźcie czy host ma poprawne skonfigurowane przekazywanie portów. + Nie można połączyć się z hostem. Sprawdź, czy ustawienia połączenia są prawidłowe. Jeśli nadal nie możesz się połączyć, skontaktuj się z gospodarzem pokoju i sprawdź, czy host jest prawidłowo skonfigurowany z przekierowanym portem zewnętrznym. Unable to connect to the room because it is already full. - Nie można połączyć się z pokojem, ponieważ jest pełny. + Nie można dołączyć do pokoju, ponieważ jest już pełny. - Creating a room failed. Please retry. Restarting eden might be necessary. - + Creating a room failed. Please retry. Restarting Eden might be necessary. + Nie udało się utworzyć pokoju. Spróbuj ponownie. Może być konieczne ponowne uruchomienie Edena. The host of the room has banned you. Speak with the host to unban you or try a different room. - Host tego pokoju cię zbanował. Porozmawiaj z hostem, i poproś go, żeby cię odbanował, albo zagraj w innym pokoju. + Host pokoju zbanował Cię. Skontaktuj się z hostem w celu cofnięcia bana lub spróbuj dołączyć do innego pokoju. - Version mismatch! Please update to the latest version of eden. If the problem persists, contact the room host and ask them to update the server. - + Version mismatch! Please update to the latest version of Eden. If the problem persists, contact the room host and ask them to update the server. + Niezgodność wersji! Zaktualizuj do najnowszej dostępnej wersji. Jeśli problem będzie się powtarzał, skontaktuj się z hostem pokoju i poproś o aktualizację serwera. Incorrect password. - Niepoprawne hasło. + Nieprawidłowe hasło. An unknown error occurred. If this error continues to occur, please open an issue - Wystąpił nieznany błąd. Jeśli ten błąd będzie się powtarzał, otwórz problem + Wystąpił nieznany błąd. Jeśli będzie się powtarzał, zgłoś problem. Connection to room lost. Try to reconnect. - Utracono połączenie z pokojem multiplayer. Spróbuj znów się połączyć. + Utracono połączenie z pokojem. Spróbuj ponownie nawiązać połączenie. You have been kicked by the room host. - Zostałeś wyrzucony przez hosta. + Zostałeś wyrzucony przez hosta pokoju. IP address is already in use. Please choose another. - Adres IP już jest w użyciu. Wybierz inny. + Adres IP jest już w użyciu. Wybierz inny. You do not have enough permission to perform this action. - Nie masz wystarczających uprawnień żeby przeprowadzić tę czynność. + Nie masz wystarczających uprawnień, aby wykonać tę akcję. The user you are trying to kick/ban could not be found. They may have left the room. - Użytkownik, którego próbujesz wyrzucić/zbanować nie został znaleziony. -Możliwe, że opuścił/a pokój. + Nie znaleziono użytkownika, którego próbujesz wyrzucić/zbanować. +Mógł opuścić już pokój. No valid network interface is selected. Please go to Configure -> System -> Network and make a selection. - Nie wybrano prawidłowego interfejsu sieciowego. -Przejdź do Konfiguruj... -> System -> Sieć i dokonaj wyboru. + Nie wybrano żadnego prawidłowego interfejsu sieciowego. +Przejdź do sekcji Konfiguracja -> System -> Sieć i dokonaj wyboru. Error - Błąd - - - - GMainWindow - - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Anonymous data is collected</a> to help improve yuzu. <br/><br/>Would you like to share your usage data with us? - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Dane anonimowe są gromadzone</a> aby ulepszyć yuzu. <br/><br/>Czy chcesz udostępnić nam swoje dane o użytkowaniu? - - - Telemetry - Telemetria - - - - Broken Vulkan Installation Detected - Wykryto uszkodzoną instalację Vulkana - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - Inicjalizacja Vulkana nie powiodła się podczas uruchamiania.<br><br>Kliknij<a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>tutaj aby uzyskać instrukcje dotyczące rozwiązania tego problemu</a>. - - - - Running a game - TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping - - - - - Loading Web Applet... - Ładowanie apletu internetowego... - - - - - Disable Web Applet - Wyłącz Aplet internetowy - - - - 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.) - 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.) - - - - The amount of shaders currently being built - Ilość budowanych shaderów - - - - The current selected resolution scaling multiplier. - Obecnie wybrany mnożnik rozdzielczości. - - - - Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. - Aktualna prędkość emulacji. Wartości większe lub niższe niż 100% wskazują, że emulacja działa szybciej lub wolniej niż Switch. - - - - How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. - Ile klatek na sekundę gra aktualnie wyświetla. To będzie się różnić w zależności od gry, od sceny do sceny. - - - - 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. - 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. - - - - Unmute - - - - - Mute - - - - - Reset Volume - - - - - &Clear Recent Files - &Usuń Ostatnie pliki - - - - &Continue - &Kontynuuj - - - - &Pause - &Pauza - - - - Warning Outdated Game Format - OSTRZEŻENIE! Nieaktualny format gry - - - 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.<br><br>For an explanation of the various Switch formats yuzu supports, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - 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.<br><br> Aby znaleźć wyjaśnienie różnych formatów Switch obsługiwanych przez yuzu,<a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'> sprawdź nasze wiki</a>. Ta wiadomość nie pojawi się ponownie. - - - - - Error while loading ROM! - Błąd podczas wczytywania ROMu! - - - - The ROM format is not supported. - Ten format ROMu nie jest wspierany. - - - - An error occurred initializing the video core. - Wystąpił błąd podczas inicjowania rdzenia wideo. - - - 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: <a href='https://yuzu-emu.org/help/reference/log-files/'>How to Upload the Log File</a>. - 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: <a href='https://yuzu-emu.org/help/reference/log-files/'>Jak przesłać plik log</a>. - - - - Error while loading ROM! %1 - %1 signifies a numeric error code. - Błąd podczas wczytywania ROMu! %1 - - - %1<br>Please follow <a href='https://yuzu-emu.org/help/quickstart/'>the yuzu quickstart guide</a> to redump your files.<br>You can refer to the yuzu wiki</a> or the yuzu Discord</a> for help. - %1 signifies an error string. - %1<br>Postępuj zgodnie z<a href='https://yuzu-emu.org/help/quickstart/'>yuzu quickstart guide</a> aby zrzucić ponownie swoje pliki.<br>Możesz odwołać się do wiki yuzu</a>lub discord yuzu </a> po pomoc. - - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://eden-emulator.github.io/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - - - - - Game Updates Warning - - - - - The game you are trying to launch is known to have performance or booting issues when updates are applied. Please try increasing the memory layout to 6GB or 8GB if any issues occur.<br><br>Press "OK" to continue launching, or "Cancel" to cancel the launch. - - - - - Don't show again for this game - - - - - 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.<br><br>For an explanation of the various Switch formats eden supports, <a href='https://eden-emulator.github.io/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - - - - - eden 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: <a href='https://eden-emulator.github.io/help/reference/log-files/'>How to Upload the Log File</a>. - - - - - %1<br>Please redump your files or ask on Discord for help. - %1 signifies an error string. - - - - - An unknown error occurred. Please see the log for more details. - Wystąpił nieznany błąd. Więcej informacji można znaleźć w pliku log. - - - - (64-bit) - (64-bit) - - - - (32-bit) - (32-bit) - - - - %1 %2 - %1 is the title name. %2 indicates if the title is 64-bit or 32-bit - %1 %2 - - - - Closing software... - Zamykanie aplikacji... - - - - Save Data - Zapis danych - - - - Mod Data - Dane modów - - - - Error Opening %1 Folder - Błąd podczas otwarcia folderu %1 - - - - - Folder does not exist! - Folder nie istnieje! - - - - Error Opening Transferable Shader Cache - Błąd podczas otwierania przenośnej pamięci podręcznej Shaderów. - - - - Failed to create the shader cache directory for this title. - Nie udało się stworzyć ścieżki shaderów dla tego tytułu. - - - - Error Removing Contents - Błąd podczas usuwania zawartości - - - - Error Removing Update - Błąd podczas usuwania aktualizacji - - - - Error Removing DLC - Błąd podczas usuwania dodatków - - - - Remove Installed Game Contents? - Czy usunąć zainstalowaną zawartość gry? - - - - Remove Installed Game Update? - Czy usunąć zainstalowaną aktualizację gry? - - - - Remove Installed Game DLC? - Czy usunąć zainstalowane dodatki gry? - - - - Remove Entry - Usuń wpis - - - - - - - - - Successfully Removed - Pomyślnie usunięto - - - - Successfully removed the installed base game. - Pomyślnie usunięto zainstalowaną grę. - - - - The base game is not installed in the NAND and cannot be removed. - Gra nie jest zainstalowana w NAND i nie może zostać usunięta. - - - - Successfully removed the installed update. - Pomyślnie usunięto zainstalowaną łatkę. - - - - There is no update installed for this title. - Brak zainstalowanych łatek dla tego tytułu. - - - - There are no DLC installed for this title. - Brak zainstalowanych DLC dla tego tytułu. - - - - Successfully removed %1 installed DLC. - Pomyślnie usunięto %1 zainstalowane DLC. - - - - Delete OpenGL Transferable Shader Cache? - Usunąć Transferowalne Shadery OpenGL? - - - - Delete Vulkan Transferable Shader Cache? - Usunąć Transferowalne Shadery Vulkan? - - - - Delete All Transferable Shader Caches? - Usunąć Wszystkie Transferowalne Shadery? - - - - Remove Custom Game Configuration? - Usunąć niestandardową konfigurację gry? - - - - Remove Cache Storage? - Usunąć pamięć podręczną? - - - - Remove File - Usuń plik - - - - Remove Play Time Data - - - - - Reset play time? - - - - - - Error Removing Transferable Shader Cache - Błąd podczas usuwania przenośnej pamięci podręcznej Shaderów. - - - - - A shader cache for this title does not exist. - Pamięć podręczna Shaderów dla tego tytułu nie istnieje. - - - - Successfully removed the transferable shader cache. - Pomyślnie usunięto przenośną pamięć podręczną Shaderów. - - - - Failed to remove the transferable shader cache. - Nie udało się usunąć przenośnej pamięci Shaderów. - - - - Error Removing Vulkan Driver Pipeline Cache - Błąd podczas usuwania pamięci podręcznej strumienia sterownika Vulkana - - - - Failed to remove the driver pipeline cache. - Błąd podczas usuwania pamięci podręcznej strumienia sterownika. - - - - - Error Removing Transferable Shader Caches - Błąd podczas usuwania Transferowalnych Shaderów - - - - Successfully removed the transferable shader caches. - Pomyślnie usunięto transferowalne shadery. - - - - Failed to remove the transferable shader cache directory. - Nie udało się usunąć ścieżki transferowalnych shaderów. - - - - - Error Removing Custom Configuration - Błąd podczas usuwania niestandardowej konfiguracji - - - - A custom configuration for this title does not exist. - Niestandardowa konfiguracja nie istnieje dla tego tytułu. - - - - Successfully removed the custom game configuration. - Pomyślnie usunięto niestandardową konfiguracje gry. - - - - Failed to remove the custom game configuration. - Nie udało się usunąć niestandardowej konfiguracji gry. - - - - - RomFS Extraction Failed! - Wypakowanie RomFS nieudane! - - - - There was an error copying the RomFS files or the user cancelled the operation. - Wystąpił błąd podczas kopiowania plików RomFS lub użytkownik anulował operację. - - - - Full - Pełny - - - - Skeleton - Szkielet - - - - Select RomFS Dump Mode - Wybierz tryb zrzutu RomFS - - - - Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. - Proszę wybrać w jaki sposób chcesz, aby zrzut pliku RomFS został wykonany. <br>Pełna kopia ze wszystkimi plikami do nowego folderu, gdy <br>skielet utworzy tylko strukturę folderu. - - - - There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root - Nie ma wystarczająco miejsca w %1 aby wyodrębnić RomFS. -Zwolnij trochę miejsca, albo zmień ścieżkę zrzutu RomFs w Emulacja> Konfiguruj> System> System Plików> Źródło Zrzutu - - - - Extracting RomFS... - Wypakowywanie RomFS... - - - - - - - - Cancel - Anuluj - - - - RomFS Extraction Succeeded! - Wypakowanie RomFS zakończone pomyślnie! - - - - - - The operation completed successfully. - Operacja zakończona sukcesem. - - - - Integrity verification couldn't be performed! - - - - - File contents were not checked for validity. - - - - - - Verifying integrity... - - - - - - Integrity verification succeeded! - - - - - - Integrity verification failed! - - - - - File contents may be corrupt. - - - - - - - - Create Shortcut - Utwórz skrót - - - - Do you want to launch the game in fullscreen? - - - - - Successfully created a shortcut to %1 - Pomyślnie utworzono skrót do %1 - - - - This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - Utworzy to skrót do obecnego AppImage. Może nie działać dobrze po aktualizacji. Kontynuować? - - - - Failed to create a shortcut to %1 - - - - - Create Icon - Utwórz ikonę - - - - Cannot create icon file. Path "%1" does not exist and cannot be created. - Nie można utworzyć pliku ikony. Ścieżka "%1" nie istnieje oraz nie może być utworzona. - - - - Error Opening %1 - Błąd podczas otwierania %1 - - - - Select Directory - Wybierz folder... - - - - Properties - Właściwości - - - - The game properties could not be loaded. - Właściwości tej gry nie mogły zostać załadowane. - - - - Switch Executable (%1);;All Files (*.*) - %1 is an identifier for the Switch executable file extensions. - Plik wykonywalny Switcha (%1);;Wszystkie pliki (*.*) - - - - Load File - Załaduj plik... - - - - Open Extracted ROM Directory - Otwórz folder wypakowanego ROMu - - - - Invalid Directory Selected - Wybrano niewłaściwy folder - - - - The directory you have selected does not contain a 'main' file. - Folder wybrany przez ciebie nie zawiera 'głownego' pliku. - - - - Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - Instalacyjne pliki Switch'a (*.nca *.nsp *.xci);;Archiwum zawartości Nintendo (*.nca);;Pakiet poddany Nintendo (*.nsp);;Obraz z kartridża NX (*.xci) - - - - Install Files - Zainstaluj pliki - - - - %n file(s) remaining - - 1 plik został - %n plików zostało - %n plików zostało - - - - - Installing file "%1"... - Instalowanie pliku "%1"... - - - - - Install Results - Wynik instalacji - - - - To avoid possible conflicts, we discourage users from installing base games to the NAND. -Please, only use this feature to install updates and DLC. - Aby uniknąć ewentualnych konfliktów, odradzamy użytkownikom instalowanie gier na NAND. -Proszę, używaj tej funkcji tylko do instalowania łatek i DLC. - - - - %n file(s) were newly installed - - - 1 nowy plik został zainstalowany - - %n nowych plików zostało zainstalowane - - %n nowych plików zostało zainstalowane - - - - - - %n file(s) were overwritten - - - 1 plik został nadpisany - %n plików zostało nadpisane - %n plików zostało nadpisane - - - - - %n file(s) failed to install - - - 1 pliku nie udało się zainstalować - %n plików nie udało się zainstalować - %n plików nie udało się zainstalować - - - - - System Application - Aplikacja systemowa - - - - System Archive - Archiwum systemu - - - - System Application Update - Aktualizacja aplikacji systemowej - - - - Firmware Package (Type A) - Paczka systemowa (Typ A) - - - - Firmware Package (Type B) - Paczka systemowa (Typ B) - - - - Game - Gra - - - - Game Update - Aktualizacja gry - - - - Game DLC - Dodatek do gry - - - - Delta Title - Tytuł Delta - - - - Select NCA Install Type... - Wybierz typ instalacji NCA... - - - - Please select the type of title you would like to install this NCA as: -(In most instances, the default 'Game' is fine.) - Wybierz typ tytułu, do którego chcesz zainstalować ten NCA, jako: -(W większości przypadków domyślna "gra" jest w porządku.) - - - - Failed to Install - Instalacja nieudana - - - - The title type you selected for the NCA is invalid. - Typ tytułu wybrany dla NCA jest nieprawidłowy. - - - - File not found - Nie znaleziono pliku - - - - File "%1" not found - Nie znaleziono pliku "%1" - - - - OK - OK - - - - - Hardware requirements not met - Wymagania sprzętowe nie są spełnione - - - - - Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled. - Twój system nie spełnia rekomendowanych wymagań sprzętowych. Raportowanie kompatybilności zostało wyłączone. - - - - Missing yuzu Account - Brakuje konta Yuzu - - - - In order to submit a game compatibility test case, you must link your eden account.<br><br/>To link your eden account, go to Emulation &gt; Configuration &gt; Web. - - - - - Install decryption keys and restart eden before attempting to install firmware. - - - - - Firmware installation cancelled, firmware may be in bad state, restart eden or re-install firmware. - - - - - Encryption keys are missing. - - - - - Are you sure you want to close eden? - - - - - - - eden - - - - - The currently running application has requested eden to not exit. - -Would you like to bypass this and exit anyway? - - - - In order to submit a game compatibility test case, you must link your yuzu account.<br><br/>To link your yuzu account, go to Emulation &gt; Configuration &gt; Web. - Aby przesłać test zgodności gry, musisz połączyć swoje konto yuzu.<br><br/> Aby połączyć swoje konto yuzu, przejdź do opcji Emulacja &gt; Konfiguracja &gt; Sieć. - - - - Error opening URL - Błąd otwierania adresu URL - - - - Unable to open the URL "%1". - Nie można otworzyć adresu URL "%1". - - - - TAS Recording - Nagrywanie TAS - - - - Overwrite file of player 1? - Nadpisać plik gracza 1? - - - - Invalid config detected - Wykryto nieprawidłową konfigurację - - - - Handheld controller can't be used on docked mode. Pro controller will be selected. - Nie można używać kontrolera handheld w trybie zadokowanym. Zostanie wybrany kontroler Pro. - - - - - Amiibo - Amiibo - - - - - The current amiibo has been removed - Amiibo zostało "zdjęte" - - - - Error Błąd - - - - The current game is not looking for amiibos - Ta gra nie szuka amiibo - - - - Amiibo File (%1);; All Files (*.*) - Plik Amiibo (%1);;Wszyskie pliki (*.*) - - - - Load Amiibo - Załaduj Amiibo - - - - Error loading Amiibo data - Błąd podczas ładowania pliku danych Amiibo - - - - The selected file is not a valid amiibo - Wybrany plik nie jest poprawnym amiibo - - - - The selected file is already on use - Wybrany plik jest już w użyciu - - - - An unknown error occurred - Wystąpił nieznany błąd - - - - - Verification failed for the following files: - -%1 - - - - - Keys not installed - - - - - Select Dumped Firmware Source Location - - - - - Installing Firmware... - - - - - - - - Firmware install failed - - - - - Unable to locate potential firmware NCA files - - - - - Failed to delete one or more firmware file. - - - - - One or more firmware files failed to copy into NAND. - - - - - Firmware integrity verification failed! - - - - - Select Dumped Keys Location - - - - - - - Decryption Keys install failed - - - - - prod.keys is a required decryption key file. - - - - - One or more keys failed to copy. - - - - - Decryption Keys install succeeded - - - - - Decryption Keys were successfully installed - - - - - Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. - - - - - - - - - - - No firmware available - - - - - Please install the firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Controller Menu. - - - - - Controller Applet - Aplet kontrolera - - - - Controller Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Home Menu. - - - - - - Home Menu Applet - - - - - - Home Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use Starter. - - - - - Starter Applet - - - - - Starter is not available. Please reinstall firmware. - - - - - Please install firmware to use the home menu. - - - - - Capture Screenshot - Zrób zrzut ekranu - - - - PNG Image (*.png) - Obrazek PNG (*.png) - - - - Update Available - - - - - Update %1 for Eden is available. -Would you like to download it? - - - - - TAS state: Running %1/%2 - Status TAS: Działa %1%2 - - - - TAS state: Recording %1 - Status TAS: Nagrywa %1 - - - - TAS state: Idle %1/%2 - Status TAS: Bezczynny %1%2 - - - - TAS State: Invalid - Status TAS: Niepoprawny - - - - &Stop Running - &Wyłącz - - - - &Start - &Start - - - - Stop R&ecording - Przestań N&agrywać - - - - R&ecord - N&agraj - - - - Building: %n shader(s) - - Budowanie shadera - Budowanie: %n shaderów - Budowanie: %n shaderów - - - - - Scale: %1x - %1 is the resolution scaling factor - Skala: %1x - - - - Speed: %1% / %2% - Prędkość: %1% / %2% - - - - Speed: %1% - Prędkość: %1% - - - Game: %1 FPS (Unlocked) - Gra: %1 FPS (Odblokowane) - - - - Game: %1 FPS - Gra: %1 FPS - - - - Frame: %1 ms - Klatka: %1 ms - - - - %1 %2 - %1 %2 - - - - - FSR - FSR - - - - NO AA - BEZ AA - - - - VOLUME: MUTE - Głośność: Wyciszony - - - - VOLUME: %1% - Volume percentage (e.g. 50%) - Głośność: %1% - - - - Derivation Components Missing - Brak komponentów wyprowadzania - - - - Select RomFS Dump Target - Wybierz cel zrzutu RomFS - - - - Please select which RomFS you would like to dump. - Proszę wybrać RomFS, jakie chcesz zrzucić. - - - Are you sure you want to close yuzu? - Czy na pewno chcesz zamknąć yuzu? - - - yuzu - yuzu - - - - Are you sure you want to stop the emulation? Any unsaved progress will be lost. - Czy na pewno chcesz zatrzymać emulację? Wszystkie niezapisane postępy zostaną utracone. - - - The currently running application has requested yuzu to not exit. - -Would you like to bypass this and exit anyway? - Aktualnie uruchomiona aplikacja zażądała od yuzu, aby się nie zamykała. - -Czy chcesz to ominąć i mimo to wyjść? - - - - None - Żadna (wyłączony) - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Nearest - - - - - Bilinear - Bilinearny - - - - Bicubic - Bikubiczny - - - - Gaussian - Kulisty - - - - ScaleForce - ScaleForce - - - - Area - - - - - Docked - Zadokowany - - - - Handheld - Przenośnie - - - - Normal - Normalny - - - - High - Wysoki - - - - Extreme - - - - - Vulkan - Vulkan - - - - OpenGL - - - - - Null - - - - - GLSL - - - - - GLASM - - - - - SPIRV - - GRenderWindow - - + + OpenGL not available! OpenGL niedostępny! - + OpenGL shared contexts are not supported. Współdzielone konteksty OpenGL nie są obsługiwane. - yuzu has not been compiled with OpenGL support. - yuzu nie zostało skompilowane z obsługą OpenGL. + + Eden has not been compiled with OpenGL support. + Eden nie został skompilowany z obsługą OpenGL. - - eden has not been compiled with OpenGL support. - - - - - + + Error while initializing OpenGL! Błąd podczas inicjowania OpenGL! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. Twoja karta graficzna może nie obsługiwać OpenGL lub nie masz najnowszych sterowników karty graficznej. - + Error while initializing OpenGL 4.6! Błąd podczas inicjowania OpenGL 4.6! - + Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 Twoja karta graficzna może nie obsługiwać OpenGL 4.6 lub nie masz najnowszych sterowników karty graficznej.<br><br>GL Renderer:<br>%1 - + Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2 Twoja karta graficzna może nie obsługiwać co najmniej jednego wymaganego rozszerzenia OpenGL. Upewnij się, że masz najnowsze sterowniki karty graficznej<br><br>GL Renderer:<br>%1<br><br>Nieobsługiwane rozszerzenia:<br>%2 @@ -6937,255 +6106,271 @@ Czy chcesz to ominąć i mimo to wyjść? GameList - + + &Add New Game Directory + + + + Favorite Ulubione - + Start Game Uruchom grę - + Start Game without Custom Configuration Uruchom grę bez niestandardowej konfiguracji - + Open Save Data Location Otwórz lokalizację zapisów - + Open Mod Data Location Otwórz lokalizację modyfikacji - + Open Transferable Pipeline Cache Otwórz Transferowalną Pamięć Podręczną Pipeline - + + Link to Ryujinx + Połącz z Ryujinx + + + Remove Usuń - + Remove Installed Update Usuń zainstalowaną łatkę - + Remove All Installed DLC Usuń wszystkie zainstalowane DLC - + Remove Custom Configuration Usuń niestandardową konfigurację - - Remove Play Time Data - - - - + Remove Cache Storage Usuń pamięć podręczną - + Remove OpenGL Pipeline Cache Usuń Pamięć Podręczną Pipeline OpenGL - + Remove Vulkan Pipeline Cache Usuń Pamięć Podręczną Pipeline Vulkan - + Remove All Pipeline Caches Usuń całą pamięć podręczną Pipeline - + Remove All Installed Contents Usuń całą zainstalowaną zawartość - - + + Manage Play Time + Zarządzaj czasem gry + + + + Edit Play Time Data + Edytuj dane czasu gry + + + + Remove Play Time Data + Usuń dane dotyczące czasu gry + + + + Dump RomFS Zrzuć RomFS - + Dump RomFS to SDMC Zrzuć RomFS do SDMC - + Verify Integrity - + Sprawdź integralność - + Copy Title ID to Clipboard Kopiuj identyfikator gry do schowka - + Navigate to GameDB entry Nawiguj do wpisu kompatybilności gry - + Create Shortcut Utwórz skrót - + Add to Desktop Dodaj do pulpitu - + Add to Applications Menu Dodaj do menu aplikacji - + Configure Game - + Skonfiguruj grę - Properties - Właściwości - - - + Scan Subfolders Skanuj podfoldery - + Remove Game Directory Usuń katalog gier - + ▲ Move Up ▲ Przenieś w górę - + ▼ Move Down ▼ Przenieś w dół - + Open Directory Location Otwórz lokalizacje katalogu - + Clear Wyczyść - + Name Nazwa gry - + Compatibility Kompatybilność - + Add-ons Dodatki - + File type Typ pliku - + Size Rozmiar - + Play time - + Czas gry GameListItemCompat - + Ingame W grze - + Game starts, but crashes or major glitches prevent it from being completed. Gra uruchamia się, ale awarie lub poważne błędy uniemożliwiają jej ukończenie. - + Perfect Perfekcyjnie - + Game can be played without issues. Można grać bez problemów. - + Playable Grywalna - + Game functions with minor graphical or audio glitches and is playable from start to finish. Gra działa z drobnymi błędami graficznymi lub dźwiękowymi oraz jest grywalna od początku aż do końca. - + Intro/Menu Intro/Menu - + Game loads, but is unable to progress past the Start Screen. Gra się ładuje, ale nie może przejść przez ekran początkowy. - + Won't Boot Nie uruchamia się - + The game crashes when attempting to startup. Ta gra się zawiesza przy próbie startu. - + Not Tested Nie testowane - + The game has not yet been tested. Ta gra nie została jeszcze przetestowana. @@ -7193,7 +6378,7 @@ Czy chcesz to ominąć i mimo to wyjść? GameListPlaceholder - + Double-click to add a new folder to the game list Kliknij podwójnie aby dodać folder do listy gier @@ -7201,21 +6386,17 @@ Czy chcesz to ominąć i mimo to wyjść? GameListSearchField - + %1 of %n result(s) - - 1 z %n rezultatów - %1 z %n rezultatów - %1 z %n rezultatów - + %1 z %n wyniku%1 z %n wyników%1 z %n wyników%1 z %n wyników - + Filter: Filter: - + Enter pattern to filter Wpisz typ do filtra @@ -7280,7 +6461,7 @@ Czy chcesz to ominąć i mimo to wyjść? Unlisted - Nie katalogowany + Niepubliczny @@ -7291,233 +6472,242 @@ Czy chcesz to ominąć i mimo to wyjść? HostRoomWindow - + Error Błąd - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. + + Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid Eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. Debug Message: - - - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid yuzu account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. -Debug Message: - Nie udało się ogłosić pokoju w publicznym lobby. Aby udostępnić pokój publicznie, musisz mieć ważne konto yuzu skonfigurowane w Emulacja -> Konfiguruj... -> Sieć. Jeśli nie chcesz publikować pokoju w publicznym lobby, zamiast tego wybierz opcję Niepubliczny. -Komunikat debugowania: + Nie udało się ogłosić pokoju w publicznym lobby. Aby udostępnić pokój publicznie, musisz mieć ważne konto Eden skonfigurowane w Emulacja -> Konfiguracja -> Internet. Jeśli nie chcesz publikować pokoju w publicznym lobby, wybierz opcję Niepubliczny. +Komunikat debugowania: Hotkeys - + Audio Mute/Unmute Wycisz/Odcisz Audio - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Main Window Okno główne - + Audio Volume Down Zmniejsz głośność dźwięku - + Audio Volume Up Zwiększ głośność dźwięku - + Capture Screenshot Zrób zrzut ekranu - + Change Adapting Filter Zmień filtr adaptacyjny - + Change Docked Mode Zmień tryb dokowania - - Change GPU Accuracy - Zmień dokładność GPU + + Change GPU Mode + Zmień tryb GPU - + Configure - + Konfiguruj - + Configure Current Game - + Konfiguruj bieżącą grę - + Continue/Pause Emulation Kontynuuj/Zatrzymaj Emulację - + Exit Fullscreen Wyłącz Pełny Ekran - Exit yuzu - Wyjdź z yuzu + + Exit Eden + Opuść Eden - - Exit eden - - - - + Fullscreen Pełny ekran - + Load File Załaduj plik... - + Load/Remove Amiibo Załaduj/Usuń Amiibo - - Multiplayer Browse Public Game Lobby - + + Browse Public Game Lobby + - - Multiplayer Create Room - + + Create Room + - - Multiplayer Direct Connect to Room - + + Direct Connect to Room + - - Multiplayer Leave Room - + + Leave Room + - - Multiplayer Show Current Room - + + Show Current Room + - + Restart Emulation Zrestartuj Emulację - + Stop Emulation Zatrzymaj Emulację - + TAS Record Nagrywanie TAS - + TAS Reset Reset TAS - + TAS Start/Stop TAS Start/Stop - + Toggle Filter Bar Pokaż pasek filtrowania - + Toggle Framerate Limit Przełącz limit liczby klatek na sekundę - + + Toggle Turbo Speed + + + + + Toggle Slow Speed + + + + Toggle Mouse Panning Włącz przesuwanie myszką - + Toggle Renderdoc Capture - + Przełącz przechwytywanie RenderDoc - + Toggle Status Bar Przełącz pasek stanu + + + Toggle Performance Overlay + + InstallDialog - + Please confirm these are the files you wish to install. Potwierdź, że są to pliki, które chcesz zainstalować. - + Installing an Update or DLC will overwrite the previously installed one. Zainstalowanie łatki lub DLC spowoduje nadpisanie poprzednio zainstalowanego. - + Install Zainstaluj - + Install Files to NAND Zainstaluj pliki na NAND @@ -7525,8 +6715,8 @@ Komunikat debugowania: LimitableInputDialog - - The text can't contain any of the following characters: + + The text can't contain any of the following characters: %1 Tekst nie może zawierać tych znaków: %1 @@ -7550,22 +6740,22 @@ Komunikat debugowania: Szacowany czas 5m 4s - + Loading... Ładowanie... - + Loading Shaders %1 / %2 Ładowanie Shaderów %1 / %2 - + Launching... Uruchamianie... - + Estimated Time %1 Szacowany czas %1 @@ -7601,7 +6791,7 @@ Komunikat debugowania: Hide Empty Rooms - + Ukryj puste pokoje @@ -7614,42 +6804,42 @@ Komunikat debugowania: Odśwież Lobby - + Password Required to Join Aby dołączyć, potrzebne jest hasło - + Password: Hasło: - + Players Gracze - + Room Name Nazwa Pokoju - + Preferred Game Preferowana Gra - + Host Host - + Refreshing Odświeżam - + Refresh List Odśwież listę @@ -7672,362 +6862,1455 @@ Komunikat debugowania: &Ostatnie Pliki - + + Open &Eden Folders + Otwórz foldery &Eden + + + &Emulation &Emulacja - + &View &Widok - + &Reset Window Size - &Zresetuj Rozmiar Okna + &Resetuj Rozmiar Okna - + &Debugging &Debugowanie - + + &Game List Mode + + + + + Game &Icon Size + + + + Reset Window Size to &720p Zresetuj rozmiar okna do &720p - + Reset Window Size to 720p Zresetuj rozmiar okna do 720p - + Reset Window Size to &900p Zresetuj Rozmiar okna do &900p - + Reset Window Size to 900p Zresetuj Rozmiar okna do 900p - + Reset Window Size to &1080p Zresetuj rozmiar okna do &1080p - + Reset Window Size to 1080p Zresetuj rozmiar okna do 1080p - + &Multiplayer &Multiplayer - + &Tools &Narzędzia - - &Amiibo - + + Am&iibo + Am&iibo - + + Launch &Applet + + + + &TAS &TAS - + &Create Home Menu Shortcut - + &Utwórz skrót w Menu głównym - + + Install &Firmware + Zainstaluj &Firmware + + + &Help &Pomoc - + &Install Files to NAND... &Zainstaluj pliki na NAND... - + L&oad File... - Z&aładuj Plik... + &Załaduj Plik... - + Load &Folder... Załaduj &Folder... - + E&xit &Wyjście - + + &Pause &Pauza - + &Stop &Stop - + &Verify Installed Contents - + &Zweryfikuj zainstalowane zasoby - - &About eden - + + &About Eden + &O Eden - - Open &eden Folder - - - - - Open Home Menu - - - - - &Discord - - - - - Open &Setup - - - - - &Desktop - - - - - &Application Menu - - - - &About yuzu - &O yuzu - - - + Single &Window Mode Tryb &Pojedyńczego Okna - + Con&figure... - Kon&figuruj... + &Konfiguruj... - + Ctrl+, - + Ctrl+, - - Display D&ock Widget Headers - Wyłącz Nagłówek Widżetu Docku + + Enable Overlay Display Applet + Włącz aplet wyświetlania nakładki - + Show &Filter Bar - Pokaż &Pasek Filtrów + Pokaż Pasek &Filtrów - + Show &Status Bar - Pokaż &Pasek Statusu + Pokaż Pasek &Statusu - + Show Status Bar Pokaż pasek statusu - + &Browse Public Game Lobby &Przeglądaj publiczne lobby gier - + &Create Room &Utwórz Pokój - + &Leave Room &Wyjdź z Pokoju - + &Direct Connect to Room &Bezpośrednie połączenie z pokojem - + &Show Current Room &Pokaż bieżący pokój - + F&ullscreen - P&ełny Ekran + &Pełny ekran - + &Restart &Restart - + Load/Remove &Amiibo... Załaduj/Usuń &Amiibo... - + &Report Compatibility - &Zraportuj Kompatybilność + &Zaraportuj kompatybilność - + Open &Mods Page - Otwórz &Stronę z Modami + Otwórz stronę z &Modami - + Open &Quickstart Guide - Otwórz &Poradnik Szybkiego Startu + Otwórz &Poradnik szybkiego startu - + &FAQ &FAQ - Open &yuzu Folder - Otwórz &Folder yuzu - - - + &Capture Screenshot - &Zrób Zdjęcie + &Zrób zdjęcie - - Open &Album - + + &Album + - + &Set Nickname and Owner - + &Ustaw nick oraz właściciela - + &Delete Game Data - + &Usuń dane gry - + &Restore Amiibo - + &Przywróć Amiibo - + &Format Amiibo - + &Sformatuj Amiibo - - Open &Mii Editor - + + &Mii Editor + - + &Configure TAS... &Skonfiguruj TAS - + Configure C&urrent Game... - Skonfiguruj O&becną Grę... + Skonfiguruj &obecną grę... - + + &Start &Start - + &Reset &Zresetuj - + + R&ecord - N&agraj + &Nagraj - + Open &Controller Menu - + Otwórz Menu &kontrolera - - Install Firmware - + + Install Decryption &Keys + Zainstaluj &klucze deszyfrujące - - Install Decryption Keys - + + &Home Menu + - - - MicroProfileDialog - - &MicroProfile - &MikroProfil + + &Desktop + &Pulpit + + + + &Application Menu + Menu &Aplikacji + + + + &Root Data Folder + Folder &Root (danych głównych) + + + + &NAND Folder + Folder &NAND + + + + &SDMC Folder + Folder &SDMC + + + + &Mod Folder + Folder &modów + + + + &Log Folder + Folder &logów + + + + From Folder + Z Folderu + + + + From ZIP + Z pliku ZIP + + + + &Eden Dependencies + Zależności &Eden + + + + &Data Manager + Manager &Danych + + + + &Tree View + + + + + &Grid View + + + + + Game Icon Size + + + + + + + None + Żadna (wyłączony) + + + + Show Game &Name + + + + + Show &Performance Overlay + + + + + Small (32x32) + + + + + Standard (64x64) + + + + + Large (128x128) + + + + + Full Size (256x256) + + + + + Broken Vulkan Installation Detected + Wykryto uszkodzoną instalację Vulkan + + + + Vulkan initialization failed during boot. + Inicjalizacja Vulkana nie powiodła się podczas uruchamiania. + + + + Running a game + TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping + Gra uruchomiona + + + + Loading Web Applet... + Ładowanie apletu internetowego... + + + + + Disable Web Applet + Wyłącz Aplet sieciowy + + + + 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.) + Wyłączenie apletu sieciowego może prowadzić do nieprzewidywalnego działania i powinno być używane wyłącznie z Super Mario 3D All-Stars. Na pewno chcesz wyłączyć aplet sieciowy? +(Tę opcję można ponownie włączyć w ustawieniach debugowania). + + + + The amount of shaders currently being built + Liczba shaderów aktualnie budowanych + + + + The current selected resolution scaling multiplier. + Aktualnie wybrany mnożnik skalowania rozdzielczości. + + + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. + Bieżąca prędkość emulacji. Wartości wyższe lub niższe niż 100% oznaczają, że emulacja działa odpowiednio szybciej lub wolniej niż na Switchu. + + + + How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. + Liczba klatek na sekundę aktualnie wyświetlanych przez grę. Wartość ta zależy od gry oraz od konkretnej sceny. + + + + 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. + Czas potrzebny na emulację jednej klatki Switcha, bez uwzględniania ogranicznika klatek i synchronizacji pionowej. Dla emulacji z pełną prędkością powinno to być maksymalnie 16,67 ms. + + + + Unmute + Wyłącz wyciszenie + + + + Mute + Wycisz + + + + Reset Volume + Zresetuj głośność + + + + &Clear Recent Files + &Usuń Ostatnie pliki + + + + &Continue + &Kontynuuj + + + + Warning: Outdated Game Format + Ostrzeżenie: Nieaktualny format gry + + + + 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.<br>For an explanation of the various Switch formats Eden supports, out our user handbook. This message will not be shown again. + Używasz dla tej gry formatu katalogu zdekonstruowanego ROM-u, który jest przestarzały i został zastąpiony innymi formatami, takimi jak NCA, NAX, XCI czy NSP. Katalogi takich ROM-ów nie zawierają ikon, metadanych ani nie obsługują aktualizacji.<br>Aby uzyskać wyjaśnienie dotyczące różnych formatów Switcha obsługiwanych przez Eden, zajrzyj do naszego podręcznika użytkownika. Ten komunikat nie zostanie wyświetlony ponownie. + + + + + Error while loading ROM! + Błąd podczas wczytywania ROMu! + + + + The ROM format is not supported. + Ten format ROMu nie jest wspierany. + + + + An error occurred initializing the video core. + Wystąpił błąd podczas inicjowania rdzenia wideo. + + + + Eden 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: <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>How to Upload the Log File</a>. + Podczas uruchamiania rdzenia wideo wystąpił błąd. Zazwyczaj jest to spowodowane nieaktualnymi sterownikami GPU, w tym sterownikami zintegrowanymi. Więcej szczegółów można znaleźć w logu. Więcej informacji na temat dostępu do logu można znaleźć na następującej stronie: <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>Jak przesłać Log</a>. + + + + Error while loading ROM! %1 + %1 signifies a numeric error code. + Błąd podczas wczytywania ROMu! %1 + + + + %1<br>Please redump your files or ask on Discord/Stoat for help. + %1 signifies an error string. + %1<br>Proszę ponownie zrzucić pliki lub poprosić o pomoc na Discordzie/Stoat. + + + + An unknown error occurred. Please see the log for more details. + Wystąpił nieznany błąd. Więcej informacji można znaleźć w pliku log. + + + + (64-bit) + (64-bit) + + + + (32-bit) + (32-bit) + + + + %1 %2 + %1 is the title name. %2 indicates if the title is 64-bit or 32-bit + %1 %2 + + + + Closing software... + Zamykanie aplikacji... + + + + Save Data + Zapis danych + + + + Mod Data + Dane modów + + + + Error Opening %1 Folder + Błąd podczas otwierania folderu %1 + + + + + Folder does not exist! + Folder nie istnieje! + + + + Remove Installed Game Contents? + Usunąć zainstalowaną zawartość gry? + + + + Remove Installed Game Update? + Usunąć zainstalowaną aktualizację gry? + + + + Remove Installed Game DLC? + Usunąć zainstalowane DLC gry? + + + + Remove Entry + Usuń wpis + + + + Delete OpenGL Transferable Shader Cache? + Usunąć przenośną pamięć podręczną shaderów OpenGL? + + + + Delete Vulkan Transferable Shader Cache? + Usunąć przenośną pamięć podręczną shaderów Vulkan? + + + + Delete All Transferable Shader Caches? + Usunąć wszystkie przenośne pamięci podręczne shaderów? + + + + Remove Custom Game Configuration? + Usunąć niestandardową konfigurację gry? + + + + Remove Cache Storage? + Usunąć pamięć podręczną? + + + + Remove File + Usuń plik + + + + Remove Play Time Data + Usuń dane czasu gry + + + + Reset play time? + Zresetować czas gry? + + + + + RomFS Extraction Failed! + Wyodrębnianie RomFS nie powiodło się! + + + + There was an error copying the RomFS files or the user cancelled the operation. + Wystąpił błąd podczas kopiowania plików RomFS lub użytkownik przerwał operację. + + + + Full + Pełny + + + + Skeleton + Szkielet + + + + Select RomFS Dump Mode + Wybierz tryb zrzutu RomFS + + + + Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. + Wybierz sposób wykonania zrzutu RomFS. <br>Tryb „Pełny” skopiuje wszystkie pliki do nowego katalogu, <br>natomiast „Szkielet” utworzy jedynie strukturę katalogów. + + + + There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root + Nie ma wystarczająco miejsca w %1 aby wyodrębnić RomFS. +Zwolnij trochę miejsca, albo zmień ścieżkę zrzutu RomFs w Emulacja > Konfiguruj > System > System Plików > Źródło Zrzutu + + + + Extracting RomFS... + Wypakowywanie RomFS... + + + + + Cancel + Anuluj + + + + RomFS Extraction Succeeded! + Wypakowanie RomFS zakończone pomyślnie! + + + + The operation completed successfully. + Operacja zakończona pomyślnie. + + + + Error Opening %1 + Błąd podczas otwierania %1 + + + + Select Directory + Wybierz folder + + + + Properties + Właściwości + + + + The game properties could not be loaded. + Właściwości tej gry nie mogły zostać załadowane. + + + + Switch Executable (%1);;All Files (*.*) + %1 is an identifier for the Switch executable file extensions. + Plik wykonywalny Switcha (%1);;Wszystkie pliki (*.*) + + + + Load File + Załaduj plik + + + + Open Extracted ROM Directory + Otwórz folder wypakowanego ROMu + + + + Invalid Directory Selected + Wybrano niewłaściwy folder + + + + The directory you have selected does not contain a 'main' file. + Wybrany folder nie zawiera 'głównego' pliku. + + + + Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) + Instalacyjne pliki Switch'a (*.nca *.nsp *.xci);;Archiwum zawartości Nintendo (*.nca);;Pakiet poddany Nintendo (*.nsp);;Obraz z kartridża NX (*.xci) + + + + Install Files + Zainstaluj pliki + + + + %n file(s) remaining + Pozostał %n plikPozostały %n plikiPozostało %n plikówPozostało %n plików + + + + Installing file "%1"... + Instalowanie pliku "%1"... + + + + + Install Results + Wynik instalacji + + + + To avoid possible conflicts, we discourage users from installing base games to the NAND. +Please, only use this feature to install updates and DLC. + Aby uniknąć ewentualnych konfliktów, odradzamy użytkownikom instalowanie gier na NAND. +Proszę, używaj tej funkcji tylko do instalowania łatek i DLC. + + + + %n file(s) were newly installed + + %n plik został nowo zainstalowany +%n pliki zostały nowo zainstalowane +%n plików zostało nowo zainstalowanych +%n plików zostało nowo zainstalowanych + + + + + %n file(s) were overwritten + + %n plik został nadpisany +%n pliki zostały nadpisane +%n plików zostało nadpisanych +%n plików zostało nadpisanych + + + + + %n file(s) failed to install + + Nie udało się zainstalować %n pliku +Nie udało się zainstalować %n plików +Nie udało się zainstalować %n plików +Nie udało się zainstalować %n plików + + + + + System Application + Aplikacja systemowa + + + + System Archive + Archiwum systemu + + + + System Application Update + Aktualizacja aplikacji systemowej + + + + Firmware Package (Type A) + Paczka systemowa (Typ A) + + + + Firmware Package (Type B) + Paczka systemowa (Typ B) + + + + Game + Gra + + + + Game Update + Aktualizacja gry + + + + Game DLC + Dodatek do gry + + + + Delta Title + Tytuł Delta + + + + Select NCA Install Type... + Wybierz typ instalacji NCA... + + + + Please select the type of title you would like to install this NCA as: +(In most instances, the default 'Game' is fine.) + Wybierz typ tytułu, do którego chcesz zainstalować ten NCA, jako: +(W większości przypadków domyślna "gra" jest w porządku.) + + + + Failed to Install + Instalacja nieudana + + + + The title type you selected for the NCA is invalid. + Typ tytułu wybrany dla NCA jest nieprawidłowy. + + + + File not found + Nie znaleziono pliku + + + + File "%1" not found + Nie znaleziono pliku "%1" + + + + OK + OK + + + + Function Disabled + Funkcja wyłączona + + + + Compatibility list reporting is currently disabled. Check back later! + Zgłaszanie do listy kompatybilności jest obecnie wyłączone. Spróbuj ponownie później! + + + + Error opening URL + Błąd otwierania adresu URL + + + + Unable to open the URL "%1". + Nie można otworzyć adresu URL "%1". + + + + TAS Recording + Nagrywanie TAS + + + + Overwrite file of player 1? + Nadpisać plik gracza 1? + + + + Invalid config detected + Wykryto nieprawidłową konfigurację + + + + Handheld controller can't be used on docked mode. Pro controller will be selected. + Nie można używać kontrolera handheld w trybie zadokowanym. Zostanie wybrany kontroler Pro. + + + + + Amiibo + Amiibo + + + + + The current amiibo has been removed + Amiibo zostało "zdjęte" + + + + Error + Błąd + + + + + The current game is not looking for amiibos + Ta gra nie szuka amiibo + + + + Amiibo File (%1);; All Files (*.*) + Plik Amiibo (%1);;Wszyskie pliki (*.*) + + + + Load Amiibo + Zamontuj Amiibo + + + + Error loading Amiibo data + Błąd podczas ładowania danych Amiibo + + + + The selected file is not a valid amiibo + Wybrany plik nie jest poprawnym amiibo + + + + The selected file is already on use + Wybrany plik jest już w użyciu + + + + An unknown error occurred + Wystąpił nieznany błąd + + + + + Keys not installed + Klucze nie zainstalowane + + + + + Install decryption keys and restart Eden before attempting to install firmware. + Zainstaluj klucze deszyfrujące i uruchom ponownie Eden przed próbą instalacji firmware’u. + + + + Select Dumped Firmware Source Location + Wybierz lokalizację źródła zrzuconego firmware’u + + + + Select Dumped Firmware ZIP + Wybierz plik ZIP ze zrzuconym Firmwarem + + + + Zipped Archives (*.zip) + Archiwa ZIP (.zip) + + + + Firmware cleanup failed + Czyszczenie firmware’u nie powiodło się + + + + Failed to clean up extracted firmware cache. +Check write permissions in the system temp directory and try again. +OS reported error: %1 + Nie udało się wyczyścić pamięci podręcznej wyodrębnionego firmware’u. +Sprawdź uprawnienia zapisu do systemowego katalogu tymczasowego i spróbuj ponownie. +Błąd zgłoszony przez system: %1 + + + + No firmware available + Brak dostępnego firmware'u + + + + Firmware Corrupted + Uszkodzony Firmware + + + + Unknown applet + + + + + Applet doesn't map to a known value. + + + + + Record not found + + + + + Applet not found. Please reinstall firmware. + + + + + Capture Screenshot + Zrób zrzut ekranu + + + + PNG Image (*.png) + Obrazek PNG (*.png) + + + + Update Available + Dostępna aktualizacja + + + + Download %1? + + + + + TAS state: Running %1/%2 + Status TAS: Działa %1%2 + + + + TAS state: Recording %1 + Status TAS: Nagrywa %1 + + + + TAS state: Idle %1/%2 + Status TAS: Bezczynny %1%2 + + + + TAS State: Invalid + Status TAS: Niepoprawny + + + + &Stop Running + &Wyłącz + + + + Stop R&ecording + Przestań &Nagrywać + + + + Building: %n shader(s) + Budowanie: %n shaderBudowanie: %n shaderyBudowanie: %n shaderówBudowanie: %n shaderów + + + + Scale: %1x + %1 is the resolution scaling factor + Skala: %1x + + + + Speed: %1% / %2% + Prędkość: %1% / %2% + + + + Speed: %1% + Prędkość: %1% + + + + Game: %1 FPS + Gra: %1 FPS + + + + Frame: %1 ms + Klatka: %1 ms + + + + + FSR + FSR + + + + NO AA + BEZ AA + + + + VOLUME: MUTE + Głośność: Wyciszony + + + + VOLUME: %1% + Volume percentage (e.g. 50%) + Głośność: %1% + + + + Derivation Components Missing + Brak komponentów wyprowadzania + + + + Decryption keys are missing. Install them now? + + + + + Wayland Detected! + Wykryto Waylanda! + + + + Wayland is known to have significant performance issues and mysterious bugs. +It's recommended to use X11 instead. + +Would you like to force it for future launches? + Wiadomo, że Wayland powoduje poważne problemy z wydajnością i tajemnicze błędy. +Zaleca się zamiast tego używać X11. +Czy chcesz wymusić jego użycie przy przyszłych uruchomieniach? + + + + Use X11 + Używaj X11 + + + + Continue with Wayland + Kontynuuj z Waylandem + + + + Don't show again + Nie pokazuj ponownie + + + + Restart Required + Wymagane ponowne uruchomienie + + + + Restart Eden to apply the X11 backend. + Uruchom ponownie Edena, aby zastosować backend X11. + + + + Slow + + + + + Turbo + + + + + Unlocked + + + + + Select RomFS Dump Target + Wybierz cel zrzutu RomFS + + + + Please select which RomFS you would like to dump. + Proszę wybrać RomFS, jakie chcesz zrzucić. + + + + Are you sure you want to close Eden? + Czy na pewno chcesz zamknąć Edena? + + + + + + Eden + Eden + + + + Are you sure you want to stop the emulation? Any unsaved progress will be lost. + Czy na pewno chcesz zatrzymać emulację? Wszystkie niezapisane postępy zostaną utracone. + + + + The currently running application has requested Eden to not exit. + +Would you like to bypass this and exit anyway? + Aktualnie uruchomiona aplikacja poprosiła Edena, aby nie kończyć działania. +Czy chcesz to pominąć i wyjść mimo to? + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Nearest + Najbliższy + + + + Bilinear + Bilinearny + + + + Bicubic + Bikubiczny + + + + Zero-Tangent + Zero-Tangent + + + + B-Spline + B-Spline + + + + Mitchell + Mitchell + + + + Spline-1 + Spline-1 + + + + Gaussian + Kulisty + + + + Lanczos + Lanczos + + + + ScaleForce + ScaleForce + + + + Area + Area + + + + MMPX + MMPX + + + + Docked + Zadokowany + + + + Handheld + Przenośny + + + + Fast + Szybkie + + + + Balanced + Zrównoważony + + + + Accurate + Dokładny + + + + Vulkan + Vulkan + + + + OpenGL GLSL + + + + + OpenGL SPIRV + + + + + OpenGL GLASM + + + + + Null + Null MigrationWorker - - Data was migrated successfully. - - - - + Linking the old directory failed. You may need to re-run with administrative privileges on Windows. OS gave error: %1 - + Nie udało się połączyć starego katalogu. Może być konieczne ponowne uruchomienie z uprawnieniami administratora w systemie Windows. +System operacyjny zgłosił błąd: %1 - + + + +Note that your configuration and data will be shared with %1. +If this is not desirable, delete the following files: +%2 +%3 +%4 + + +Pamiętaj, że Twoja konfiguracja i dane zostaną udostępnione %1. +Jeśli nie chcesz, żeby tak się stało, usuń następujące pliki: +%2 +%3 +%4 + + + If you wish to clean up the files which were left in the old data location, you can do so by deleting the following directory: %1 - + + +Jeśli chcesz usunąć pliki, które pozostały w starej lokalizacji danych, możesz to zrobić, usuwając następujący katalog: +%1 + + + + Data was migrated successfully. + Dane zostały pomyślnie przeniesione. + + + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + @@ -8044,7 +8327,7 @@ If you wish to clean up the files which were left in the old data location, you - + Refreshing Odświeżam @@ -8054,27 +8337,27 @@ If you wish to clean up the files which were left in the old data location, you Unban - + Subject Temat - + Type Typ - + Forum Username Nazwa użytkownika forum - + IP Address Adres IP - + Refresh Odśwież @@ -8082,37 +8365,37 @@ If you wish to clean up the files which were left in the old data location, you MultiplayerState - + Current connection status Bieżący stan połączenia - + Not Connected. Click here to find a room! Nie połączono. Kliknij tutaj aby znaleźć pokój! - + Not Connected Nie połączono - + Connected Połączony - + New Messages Received Otrzymano nowe wiadomości - + Error Błąd - + Failed to update the room information. Please check your Internet connection and try hosting the room again. Debug Message: Nie udało się zaktualizować informacji o pokoju. Sprawdź swoje połączenie internetowe i spróbuj ponownie zahostować pokój. @@ -8121,90 +8404,6 @@ Komunikat debugowania: NetworkMessage - - Username is not valid. Must be 4 to 20 alphanumeric characters. - Nick nie jest poprawny. Musi zawierać od 4 do 20 znaków alfanumerycznych. - - - Room name is not valid. Must be 4 to 20 alphanumeric characters. - Nazwa pokoju nie jest poprawna. Musi zawierać od 4 do 20 znaków alfanumerycznych. - - - Username is already in use or not valid. Please choose another. - Nick już jest w użyciu, albo nie jest aktualny. Wybierz inny. - - - IP is not a valid IPv4 address. - IP nie jest poprawnym adresem IPv4. - - - Port must be a number between 0 to 65535. - Port musi być numerem od 0 do 65535. - - - You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - Aby hostować pokój, musisz wybrać preferowaną grę. Jeżeli nie posiadasz żadnej gry w twojej liście gier, dodaj folder z grami poprzez kliknięcie ikonki plusa w liście gier. - - - Unable to find an internet connection. Check your internet settings. - Nie znaleziono połączenia internetowego. Sprawdź swoje ustawienia internetu. - - - Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - Nie można nawiązać połączenia z hostem. Sprawdź czy ustawienia sieciowe są poprawne. Jeżeli wciąż nie będziesz mógł nawiązać połączenia, skontaktuj się z hostem pokoju oraz sprawdźcie czy host ma poprawne skonfigurowane przekazywanie portów. - - - Unable to connect to the room because it is already full. - Nie można połączyć się z pokojem, ponieważ jest pełny. - - - Creating a room failed. Please retry. Restarting yuzu might be necessary. - Nie udało się utworzyć pokoju. Spróbuj ponownie. Możliwe, że należy zrestartować yuzu. - - - The host of the room has banned you. Speak with the host to unban you or try a different room. - Host tego pokoju cię zbanował. Porozmawiaj z hostem, i poproś go, żeby cię odbanował, albo zagraj w innym pokoju. - - - Version mismatch! Please update to the latest version of yuzu. If the problem persists, contact the room host and ask them to update the server. - Niezgodna wersja! Powinieneś zaktualizować yuzu do najnowszej wersji. Jeśli ten problem nie zniknie, skontaktuj się z hostem. - - - Incorrect password. - Niepoprawne hasło. - - - An unknown error occurred. If this error continues to occur, please open an issue - Wystąpił nieznany błąd. Jeśli ten błąd będzie się powtarzał, otwórz problem - - - Connection to room lost. Try to reconnect. - Utracono połączenie z pokojem multiplayer. Spróbuj znów się połączyć. - - - You have been kicked by the room host. - Zostałeś wyrzucony przez hosta. - - - IP address is already in use. Please choose another. - Adres IP już jest w użyciu. Wybierz inny. - - - You do not have enough permission to perform this action. - Nie masz wystarczających uprawnień żeby przeprowadzić tę czynność. - - - The user you are trying to kick/ban could not be found. -They may have left the room. - Użytkownik, którego próbujesz wyrzucić/zbanować nie został znaleziony. -Możliwe, że opuścił/a pokój. - - - No valid network interface is selected. -Please go to Configure -> System -> Network and make a selection. - Nie wybrano prawidłowego interfejsu sieciowego. -Przejdź do Konfiguruj... -> System -> Sieć i dokonaj wyboru. - Game already running @@ -8239,10 +8438,132 @@ Czy kontynuować mimo to? - NetworkMessage::ErrorManager + NewUserDialog - Error - Błąd + + + New User + + + + + Change Avatar + + + + + Set Image + + + + + UUID + + + + + Eden + + + + + Username + + + + + UUID must be 32 hex characters (0-9, A-F) + + + + + Generate + + + + + Select User Image + + + + + Image Formats (*.jpg *.jpeg *.png *.bmp) + + + + + No firmware available + + + + + Please install the firmware to use firmware avatars. + + + + + + Error loading archive + + + + + Archive is not available. Please install/reinstall firmware. + + + + + Could not locate RomFS. Your file or decryption keys may be corrupted. + + + + + Error extracting archive + + + + + Could not extract RomFS. Your file or decryption keys may be corrupted. + + + + + Error finding image directory + + + + + Failed to find image directory in the archive. + + + + + No images found + + + + + No avatar images were found in the archive. + + + + + + All Good + Tooltip + + + + + Must be 32 hex characters (0-9, a-f) + Tooltip + + + + + Must be between 1 and 32 characters + Tooltip + @@ -8269,7 +8590,7 @@ Czy kontynuować mimo to? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -8278,83 +8599,199 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> + + PerformanceOverlay + + + Form + + + + + Frametime + + + + + 0 ms + + + + + + Min: 0 + + + + + + Max: 0 + + + + + + Avg: 0 + + + + + FPS + + + + + 0 fps + + + + + %1 fps + + + + + + Avg: %1 + + + + + + Min: %1 + + + + + + Max: %1 + + + + + %1 ms + + + PlayerControlPreview - + START/PAUSE START/PAUZA + + ProfileAvatarDialog + + + Select + + + + + Cancel + + + + + Background Color + + + + + Select Firmware Avatar + + + QObject - - %1 is not playing a game - %1 nie gra w żadną grę + + + + Migration + Migracja - - %1 is playing %2 - %1 gra w %2 + + Clear Shader Cache + Wyczyść pamięć podręczną shaderów - - Not playing a game - Nie gra w żadną grę + + Keep Old Data + Zachowaj stare dane - - Installed SD Titles - Zainstalowane tytuły SD + + Clear Old Data + Wyczyść stare dane - - Installed NAND Titles - Zainstalowane tytuły NAND + + Link Old Directory + Połącz stary katalog - - System Titles - Tytuły systemu + + + + + + + - - Add New Game Directory - Dodaj nowy katalog gier + + + No + Nie - - Favorites - Ulubione + + You can manually re-trigger this prompt by deleting the new config directory: +%1 + Możesz ręcznie wywołać to okno ponownie, usuwając nowy katalog konfiguracyjny: +% + + + + Migrating + Trwa migracja + + + + Migrating, this may take a while... + Migrowanie, może to chwilę potrwać... - - + + Shift Shift - - + + Ctrl Ctrl - - + + Alt Alt - - - - + + + + [not set] [nie ustawione] @@ -8364,15 +8801,15 @@ p, li { white-space: pre-wrap; } Krzyżak %1 %2 - - - - - - - - + + + + + + + + Axis %1%2 Oś %1%2 @@ -8382,359 +8819,383 @@ p, li { white-space: pre-wrap; } Przycisk %1 - - - - - - + + + + + + [unknown] [nieznane] - - - + + + Left Lewo - - - + + + Right Prawo - - - + + + Down Dół - - - + + + Up Góra - - + + Z Z - - + + R R - - + + L L - - + + A A - - + + B B - - + + X X - - + + Y Y - - + + Start Start - - + + L1 L1 - - + + L2 L2 - - + + L3 L3 - - + + R1 R1 - - + + R2 R2 - - + + R3 R3 - - + + Circle Kółko - - + + Cross Krzyż - - + + Square Kwadrat - - + + Triangle Trójkąt - - + + Share Udostępnij - - + + Options Opcje - - + + [undefined] [niezdefiniowane] - + %1%2 %1%2 - - + + [invalid] [niepoprawne] - - + + %1%2Hat %3 %1%2Drążek %3 - - - + + + %1%2Axis %3 %1%2Oś %3 - - + + %1%2Axis %3,%4,%5 %1%2Oś %3,%4,%5 - - + + %1%2Motion %3 %1%2Ruch %3 - - + + %1%2Button %3 %1%2Przycisk %3 - - + + [unused] [nieużywane] - + ZR ZR - + ZL ZL - + SR SR - + SL SL - + Stick L Lewa gałka - + Stick R Prawa gałka - + Plus Plus - + Minus Minus - - + + Home Home - + Capture Zrzut ekranu - + Touch Dotyk - + Wheel Indicates the mouse wheel Kółko - + Backward Do tyłu - + Forward Do przodu - + Task Zadanie - + Extra Dodatkowe - + %1%2%3%4 %1%2%3%4 - - + + %1%2%3Hat %4 %1%2%3Krzyżak %4 - - + + %1%2%3Axis %4 %1%2%3Oś %4 - - + + %1%2%3Button %4 %1%2%3Przycisk %4 - - - - Migration - + + Not playing a game + Nie gra w żadną grę - - - - - + + %1 is not playing a game + %1 nie gra w żadną grę - - - No - + + %1 is playing %2 + %1 gra w %2 - - You can manually re-trigger this prompt by deleting the new config directory: -%1 - + + Play Time: %1 + - - Migrating - + + Never Played + - - Migrating, this may take a while... - + + Version: %1 + + + + + Version: 1.0.0 + + + + + Installed SD Titles + Zainstalowane tytuły SD + + + + Installed NAND Titles + Zainstalowane tytuły NAND + + + + System Titles + Tytuły systemu + + + + Add New Game Directory + Dodaj nowy katalog gier + + + + Favorites + Ulubione @@ -8825,31 +9286,829 @@ p, li { white-space: pre-wrap; } Ścieżka pliku - + No game data present Brak danych gry - + The following amiibo data will be formatted: Następujące dane amiibo zostaną sformatowane: - + The following game data will removed: Następujące dane gry zostaną usunięte: - + Set nickname and owner: Ustaw nick oraz właściciela: - + Do you wish to restore this amiibo? Czy chcesz odnowić to amiibo? + + QtCommon::Content + + + Game Requires Firmware + Gra wymaga firmware’u + + + + The game you are trying to launch requires firmware to boot or to get past the opening menu. Please <a href='https://yuzu-mirror.github.io/help/quickstart'>dump and install firmware</a>, or press "OK" to launch anyways. + Gra, którą próbujesz uruchomić, wymaga firmware’u do startu lub do przejścia ekranu początkowego. Please <a href='https://yuzu-mirror.github.io/help/quickstart'>Zrzuć i zainstaluj firmware</a> albo naciśnij „OK”, aby mimo to uruchomić. + + + + Installing Firmware... + Instalacja Firmware... + + + + + + + + Cancel + Anuluj + + + + Firmware Install Failed + Instalacja firmware’u nie powiodła się + + + + Firmware Install Succeeded + Instalacja firmware’u powiodła się + + + + Firmware integrity verification failed! + Weryfikacja integralności firmware’u nie powiodła się! + + + + + Verification failed for the following files: + +%1 + Weryfikacja nie powiodła się dla następujących plików: +%1 + + + + + Verifying integrity... + Weryfikacja integralności... + + + + + Integrity verification succeeded! + Weryfikacja integralności zakończona sukcesem! + + + + + The operation completed successfully. + Operacja zakończona pomyślnie. + + + + + Integrity verification failed! + Weryfikacja integralności nie powiodła się! + + + + File contents may be corrupt or missing. + Zawartość pliku może być uszkodzona lub brakująca. + + + + Integrity verification couldn't be performed + Nie można było przeprowadzić weryfikacji integralności + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity. + Instalacja firmware’u została anulowana — firmware może być w złym stanie lub uszkodzony. Nie udało się sprawdzić poprawności zawartości plików. + + + + Select Dumped Keys Location + Wybierz lokalizację zrzutu kluczy + + + + Decryption Keys install succeeded + Instalacja kluczy deszyfrujących powiodła się + + + + Decryption Keys install failed + Instalacja kluczy deszyfrujących nie powiodła się + + + + Orphaned Profiles Detected! + Wykryto osierocone profile! + + + + UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br> + MOGĄ WYSTĄPIĆ NIEOCZEKIWANE PROBLEMY, JEŚLI TEGO NIE PRZECZYTASZ!<br>Eden wykrył następujące katalogi zapisów bez przypisanego profilu:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Kliknij „OK”, aby otworzyć folder zapisów i naprawić profile.<br>Wskazówka: skopiuj zawartość największego lub ostatnio modyfikowanego folderu w inne miejsce, usuń wszystkie osierocone profile, a następnie przenieś skopiowaną zawartość do właściwego profilu.<br><br>Nadal masz wątpliwości? Zobacz<a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>tronę pomocy</a>.<br> + + + + Really clear data? + Na pewno wyczyścić dane? + + + + Important data may be lost! + Ważne dane mogą zostać utracone! + + + + Are you REALLY sure? + Czy NA PEWNO chcesz to zrobić? + + + + Once deleted, your data will NOT come back! +Only do this if you're 100% sure you want to delete this data. + Po usunięciu Twoje dane NIE WRÓCĄ! +Wykonaj to tylko, jeśli w 100% chcesz usunąć te dane. + + + + Clearing... + Czyszczenie… + + + + Select Export Location + Wybierz lokalizację eksportu + + + + %1.zip + %1.zip + + + + + Zipped Archives (*.zip) + Archiwa ZIP (.zip) + + + + Exporting data. This may take a while... + Eksportowanie danych. To może chwilę potrwać… + + + + Exporting + Eksportowanie + + + + Exported Successfully + Wyeksportowano pomyślnie + + + + Data was exported successfully. + Dane zostały pomyślnie wyeksportowane. + + + + Export Cancelled + Eksport anulowany + + + + Export was cancelled by the user. + Eksport został anulowany przez użytkownika. + + + + Export Failed + Eksport nie powiódł się + + + + Ensure you have write permissions on the targeted directory and try again. + Upewnij się, że masz uprawnienia zapisu do docelowego katalogu i spróbuj ponownie. + + + + Select Import Location + Wybierz lokalizację importu + + + + Import Warning + Ostrzeżenie dotyczące importu + + + + All previous data in this directory will be deleted. Are you sure you wish to proceed? + Wszystkie dotychczasowe dane w tym katalogu zostaną usunięte. Czy na pewno chcesz kontynuować? + + + + Importing data. This may take a while... + Importowanie danych. To może chwilę potrwać… + + + + Importing + Importowanie + + + + Imported Successfully + Zaimportowano pomyślnie + + + + Data was imported successfully. + Dane zostały pomyślnie zaimportowane. + + + + Import Cancelled + Import anulowany + + + + Import was cancelled by the user. + Import został anulowany przez użytkownika. + + + + Import Failed + Import nie powiódł się + + + + Ensure you have read permissions on the targeted directory and try again. + Upewnij się, że masz uprawnienia odczytu do docelowego katalogu i spróbuj ponownie. + + + + QtCommon::FS + + + Linked Save Data + Powiązane dane zapisu + + + + Save data has been linked. + Dane zapisu zostały powiązane. + + + + Failed to link save data + Nie udało się powiązać danych zapisu + + + + Could not link directory: + %1 +To: + %2 + Nie można było powiązać katalogu: + %1 +Z: + %2 + + + + Already Linked + Już powiązane + + + + This title is already linked to Ryujinx. Would you like to unlink it? + Ten tytuł jest już powiązany z Ryujinx. Czy chcesz usunąć to powiązanie? + + + + Failed to unlink old directory + Nie udało się odłączyć starego katalogu + + + + + OS returned error: %1 + System operacyjny zwrócił błąd: %1 + + + + Failed to copy save data + Nie udało się skopiować danych zapisu + + + + Unlink Successful + Pomyślnie usunięto powiązanie + + + + Successfully unlinked Ryujinx save data. Save data has been kept intact. + Pomyślnie odłączono dane zapisu Ryujinx. Dane zapisu zostały zachowane. + + + + Could not find Ryujinx installation + Nie można znaleźć instalacji Ryujinx + + + + Could not find a valid Ryujinx installation. This may typically occur if you are using Ryujinx in portable mode. + +Would you like to manually select a portable folder to use? + Nie można znaleźć prawidłowej instalacji Ryujinx. Zwykle dzieje się tak, gdy używasz Ryujinx w trybie przenośnym. + +Czy chcesz ręcznie wybrać folder przenośny do użycia? + + + + Ryujinx Portable Location + Lokalizacja przenośnej instalacji Ryujinx + + + + Not a valid Ryujinx directory + To nie jest prawidłowy katalog Ryujinx + + + + The specified directory does not contain valid Ryujinx data. + Wskazany katalog nie zawiera prawidłowych danych Ryujinx. + + + + + Could not find Ryujinx save data + Nie można odnaleźć danych zapisu Ryujinx + + + + QtCommon::Game + + + Error Removing Contents + Błąd podczas usuwania zawartości + + + + Error Removing Update + Błąd podczas usuwania aktualizacji + + + + Error Removing DLC + Błąd podczas usuwania DLC + + + + + + + + + Successfully Removed + Pomyślnie usunięto + + + + Successfully removed the installed base game. + Pomyślnie usunięto zainstalowaną grę podstawową. + + + + The base game is not installed in the NAND and cannot be removed. + Gra podstawowa nie jest zainstalowana w NAND i nie można jej usunąć. + + + + Successfully removed the installed update. + Pomyślnie usunięto zainstalowaną aktualizację. + + + + There is no update installed for this title. + Dla tego tytułu nie zainstalowano aktualizacji. + + + + There are no DLCs installed for this title. + Dla tego tytułu nie zainstalowano DLC. + + + + Successfully removed %1 installed DLC. + Pomyślnie usunięto zainstalowane DLC: %1. + + + + + Error Removing Transferable Shader Cache + Błąd podczas usuwania przenośnej pamięci podręcznej shaderów + + + + + A shader cache for this title does not exist. + Pamięć podręczna shaderów dla tego tytułu nie istnieje. + + + + Successfully removed the transferable shader cache. + Pomyślnie usunięto przenośną pamięć podręczną shaderów. + + + + Failed to remove the transferable shader cache. + Nie udało się usunąć cache'a przenośnego shadera. + + + + Error Removing Vulkan Driver Pipeline Cache + Błąd podczas usuwania pamięci podręcznej potoków sterownika Vulkan + + + + Failed to remove the driver pipeline cache. + Nie udało się usunąć pamięci podręcznej potoków sterownika. + + + + + Error Removing Transferable Shader Caches + Błąd podczas usuwania przenośnej pamięci podręcznej shaderów + + + + Successfully removed the transferable shader caches. + Pomyślnie usunięto przenośne pamięci podręczne shaderów. + + + + Failed to remove the transferable shader cache directory. + Nie udało się usunąć katalogu przenośnej pamięci podręcznej shaderów. + + + + + Error Removing Custom Configuration + Błąd podczas usuwania niestandardowej konfiguracji + + + + A custom configuration for this title does not exist. + Niestandardowa konfiguracja dla tego tytułu nie istnieje. + + + + Successfully removed the custom game configuration. + Pomyślnie usunięto niestandardową konfigurację gry. + + + + Failed to remove the custom game configuration. + Nie udało się usunąć niestandardowej konfiguracji gry. + + + + Reset Metadata Cache + Resetuj cache metadanych + + + + The metadata cache is already empty. + Pamięć podręczna metadanych jest już pusta. + + + + The operation completed successfully. + Operacja zakończona pomyślnie. + + + + The metadata cache couldn't be deleted. It might be in use or non-existent. + Nie można było usunąć pamięci podręcznej metadanych. Może być używana albo nie istnieje. + + + + Create Shortcut + Utwórz skrót + + + + Do you want to launch the game in fullscreen? + Uruchomić grę w trybie pełnoekranowym? + + + + Shortcut Created + Utworzono skrót + + + + Successfully created a shortcut to %1 + Pomyślnie utworzono skrót do %1 + + + + Shortcut may be Volatile! + Skrót może być nietrwały! + + + + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? + Zostanie utworzony skrót do bieżącego AppImage. Po aktualizacji może działać nieprawidłowo. Kontynuować? + + + + Failed to Create Shortcut + Nie udało się utworzyć skrótu + + + + Failed to create a shortcut to %1 + Nie udało się utworzyć skrótu do %1 + + + + Create Icon + Utwórz ikonę + + + + Cannot create icon file. Path "%1" does not exist and cannot be created. + Nie można utworzyć pliku ikony. Ścieżka „%1” nie istnieje i nie można jej utworzyć. + + + + No firmware available + Brak dostępnego firmware'u + + + + Please install firmware to use the home menu. + Zainstaluj firmware, aby używać Menu głównego. + + + + Home Menu Applet + Aplet „Menu główne” + + + + Home Menu is not available. Please reinstall firmware. + Menu główne jest niedostępne. Zainstaluj ponownie firmware. + + + + QtCommon::Mod + + + Mod Name + + + + + What should this mod be called? + + + + + RomFS + + + + + ExeFS/Patch + + + + + Cheat + + + + + Mod Type + + + + + Could not detect mod type automatically. Please manually specify the type of mod you downloaded. + +Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods. + + + + + + Mod Extract Failed + + + + + Failed to create temporary directory %1 + + + + + Zip file %1 is empty + + + + + QtCommon::Path + + + Error Opening Shader Cache + Błąd podczas otwierania pamięci podręcznej shaderów + + + + Failed to create or open shader cache for this title, ensure your app data directory has write permissions. + Nie udało się utworzyć ani otworzyć pamięci podręcznej shaderów dla tego tytułu; upewnij się, że katalog danych aplikacji ma uprawnienia zapisu. + + + + QtCommon::StringLookup + + + Contains game save data. DO NOT REMOVE UNLESS YOU KNOW WHAT YOU'RE DOING! + Zawiera dane zapisu gry. NIE USUWAJ, JEŚLI NIE WIESZ, CO ROBISZ! + + + + Contains Vulkan and OpenGL pipeline caches. Generally safe to remove. + Zawiera pamięci podręczne potoków Vulkan i OpenGL. Zwykle bezpieczne do usunięcia. + + + + Contains updates and DLC for games. + Zawiera aktualizacje i DLC do gier. + + + + Contains firmware and applet data. + Zawiera dane firmware’u i apletów. + + + + Contains game mods, patches, and cheats. + Zawiera mody, łatki i kody do gier. + + + + Decryption Keys were successfully installed + Klucze deszyfrujące zostały pomyślnie zainstalowane + + + + Unable to read key directory, aborting + Nie można odczytać katalogu kluczy — przerywanie + + + + One or more keys failed to copy. + Nie udało się skopiować co najmniej jednego klucza. + + + + Verify your keys file has a .keys extension and try again. + Upewnij się, że plik kluczy ma rozszerzenie .keys i spróbuj ponownie. + + + + Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. + Nie udało się zainicjalizować kluczy deszyfrujących. Sprawdź, czy narzędzia do zrzutu są aktualne, i wykonaj ponowny zrzut kluczy. + + + + Successfully installed firmware version %1 + Pomyślnie zainstalowano firmware w wersji %1 + + + + Unable to locate potential firmware NCA files + Nie można zlokalizować potencjalnych plików firmware’u NCA + + + + Failed to delete one or more firmware files. + Nie udało się usunąć co najmniej jednego pliku firmware’u. + + + + One or more firmware files failed to copy into NAND. + Nie udało się skopiować co najmniej jednego pliku firmware’u do NAND. + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. Restart Eden or re-install firmware. + Instalacja firmware’u została anulowana — firmware może być w złym stanie lub uszkodzony. Uruchom ponownie Eden lub zainstaluj firmware ponownie. + + + + Firmware missing. Firmware is required to run certain games and use the Home Menu. + + + + + Firmware reported as present, but was unable to be read. Check for decryption keys and redump firmware if necessary. + Oprogramowanie sprzętowe jest obecne, ale nie można go odczytać. Sprawdź klucze deszyfrujące i w razie potrzeby zrzuć oprogramowanie ponownie. + + + + Eden has detected user data for the following emulators: + Eden wykrył dane użytkownika dla następujących emulatorów: + + + + Would you like to migrate your data for use in Eden? +Select the corresponding button to migrate data from that emulator. +This may take a while. + Czy chcesz przenieść swoje dane do użytku w Edenie? +Wybierz odpowiedni przycisk, aby przenieść dane z tego emulatora. +To może chwilę potrwać. + + + + Clearing shader cache is recommended for all users. +Do not uncheck unless you know what you're doing. + Zaleca się wyczyszczenie pamięci podręcznej shaderów dla wszystkich użytkowników. +Nie odznaczaj, jeśli nie wiesz, co robisz. + + + + Keeps the old data directory. This is recommended if you aren't +space-constrained and want to keep separate data for the old emulator. + Zachowuje stary katalog danych. Zalecane, jeśli nie masz ograniczeń miejsca i chcesz przechowywać osobne dane dla starego emulatora. + + + + Deletes the old data directory. +This is recommended on devices with space constraints. + Usuwa stary katalog danych. +Zalecane na urządzeniach z ograniczoną ilością miejsca. + + + + Creates a filesystem link between the old directory and Eden directory. +This is recommended if you want to share data between emulators. + Tworzy powiązanie systemu plików między starym katalogiem a katalogiem Eden. +Zalecane, jeśli chcesz współdzielić dane między emulatorami. + + + + Ryujinx title database does not exist. + Baza tytułów Ryujinx nie istnieje. + + + + Invalid header on Ryujinx title database. + Nieprawidłowy nagłówek w bazie tytułów Ryujinx. + + + + Invalid magic header on Ryujinx title database. + Nieprawidłowy „magic” nagłówek w bazie tytułów Ryujinx. + + + + Invalid byte alignment on Ryujinx title database. + Nieprawidłowe wyrównanie bajtów w bazie tytułów Ryujinx. + + + + No items found in Ryujinx title database. + Nie znaleziono żadnych elementów w bazie tytułów Ryujinx. + + + + Title %1 not found in Ryujinx title database. + Tytułu %1 nie znaleziono w bazie tytułów Ryujinx. + + QtControllerSelectorDialog @@ -8886,7 +10145,7 @@ p, li { white-space: pre-wrap; } - + Pro Controller Pro kontroler @@ -8899,7 +10158,7 @@ p, li { white-space: pre-wrap; } - + Dual Joycons Para Joyconów @@ -8912,7 +10171,7 @@ p, li { white-space: pre-wrap; } - + Left Joycon Lewy Joycon @@ -8925,7 +10184,7 @@ p, li { white-space: pre-wrap; } - + Right Joycon Prawy Joycon @@ -8954,7 +10213,7 @@ p, li { white-space: pre-wrap; } - + Handheld Handheld @@ -9072,35 +10331,35 @@ p, li { white-space: pre-wrap; } Not enough controllers - + Za mało kontrolerów - + GameCube Controller Kontroler GameCube - + Poke Ball Plus Poke Ball Plus - + NES Controller Kontroler NES/Pegasus - + SNES Controller Kontroler SNES - + N64 Controller Kontroler N64 - + Sega Genesis Sega Mega Drive @@ -9108,28 +10367,28 @@ p, li { white-space: pre-wrap; } QtErrorDisplay - - - + + + Error Code: %1-%2 (0x%3) Kod błędu: %1-%2 (0x%3) - + An error has occurred. Please try again or contact the developer of the software. Wystąpił błąd. Spróbuj ponownie lub skontaktuj się z twórcą oprogramowania. - + An error occurred on %1 at %2. Please try again or contact the developer of the software. Wystąpił błąd w %1 o %2. Spróbuj ponownie lub skontaktuj się z twórcą oprogramowania. - + An error has occurred. %1 @@ -9145,7 +10404,7 @@ Spróbuj ponownie lub skontaktuj się z twórcą oprogramowania. QtProfileSelectionDialog - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -9153,7 +10412,7 @@ Spróbuj ponownie lub skontaktuj się z twórcą oprogramowania. %2 - + Users Użytkownicy @@ -9181,47 +10440,47 @@ Spróbuj ponownie lub skontaktuj się z twórcą oprogramowania. Who will receive the points? - + Kto otrzyma punkty? Who is using Nintendo eShop? - + Kto korzysta z Nintendo eShop? Who is making this purchase? - + Kto dokonuje tego zakupu? Who is posting? - + Kto publikuje? Select a user to link to a Nintendo Account. - + Wybierz użytkownika do powiązania z kontem Nintendo. Change settings for which user? - + Zmień ustawienia którego użytkownika? Format data for which user? - + Sformatować dane którego użytkownika? Which user will be transferred to another console? - + Który użytkownik zostanie przeniesiony na inną konsolę? Send save data for which user? - + Wysłać zapisane dane którego użytkownika? @@ -9246,7 +10505,7 @@ Spróbuj ponownie lub skontaktuj się z twórcą oprogramowania. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -9255,17 +10514,59 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - - + + OK OK - + Cancel Anuluj + + RyujinxDialog + + + Ryujinx Link + Połączenie z Ryujinx + + + + Linking save data to Ryujinx lets both Ryujinx and Eden reference the same save files for your games. + +By selecting "From Eden", previous save data stored in Ryujinx will be deleted, and vice versa for "From Ryujinx". + Powiązanie danych zapisu z Ryujinx pozwala, aby zarówno Ryujinx, jak i Eden korzystały z tych samych plików zapisu dla Twoich gier. + +Wybierając „Z Eden”, dotychczasowe dane zapisu przechowywane w Ryujinx zostaną usunięte — i odwrotnie w przypadku „Z Ryujinx”. + + + + From Eden + Z Eden + + + + From Ryujinx + Z Ryujinx + + + + Cancel + Anuluj + + + + Failed to link save data + Nie udało się powiązać danych zapisu + + + + OS returned error: %1 + System operacyjny zwrócił błąd: %1 + + SequenceDialog @@ -9275,143 +10576,31 @@ p, li { white-space: pre-wrap; } - WaitTreeCallstack + SetPlayTimeDialog - - Call stack - Stos wywołań - - - - WaitTreeSynchronizationObject - - - [%1] %2 - + + Set Play Time Data + Ustaw dane czasu gry - - waited by no thread - czekam bez żadnego wątku - - - - WaitTreeThread - - - runnable - Jakoś działa + + Hours: + Godziny: - - paused - Spauzowana + + Minutes: + Minuty: - - sleeping - spanie + + Seconds: + Sekundy: - - waiting for IPC reply - czekam na odpowiedź IPC - - - - waiting for objects - oczekiwanie na obiekty - - - - waiting for condition variable - oczekiwanie na zmienną warunkową - - - - waiting for address arbiter - czekam na arbitra adresu - - - - waiting for suspend resume - czekam na zawieszenie wznowienia - - - - waiting - oczekiwanie - - - - initialized - zainicjowano - - - - terminated - zakończony - - - - unknown - nieznany - - - - PC = 0x%1 LR = 0x%2 - PC = 0x%1 LR = 0x%2 - - - - ideal - Idealnie - - - - core %1 - rdzeń %1 - - - - processor = %1 - procesor = %1 - - - - affinity mask = %1 - maska powinowactwa = %1 - - - - thread id = %1 - identyfikator wątku = %1 - - - - priority = %1(current) / %2(normal) - piorytet = %1(obecny) / %2(normalny) - - - - last running ticks = %1 - ostatnie działające kleszcze = %1 - - - - WaitTreeThreadList - - - waited by thread - czekanie na wątek - - - - WaitTreeWidget - - - &Wait Tree - &Drzewo Czekania + + Total play time reached maximum. + Łączny czas gry osiągnął maksimum. diff --git a/dist/languages/pt_BR.ts b/dist/languages/pt_BR.ts index 9fa987646b..c0ff995256 100644 --- a/dist/languages/pt_BR.ts +++ b/dist/languages/pt_BR.ts @@ -1,25 +1,15 @@ - - - + AboutDialog - - About yuzu - Sobre o yuzu - - - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - - About eden - + About Eden + Sobre o Eden - <html><head/><body><p><span style=" font-size:28pt;">eden</span></p></body></html> - + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> @@ -34,70 +24,57 @@ p, li { white-space: pre-wrap; } hr { height: 1px; border-width: 0; } li.unchecked::marker { content: "\2610"; } li.checked::marker { content: "\2612"; } -</style></head><body style=" font-family:'Adwaita Sans'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> - +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css"> +p, li { white-space: pre-wrap; } +hr { height: 1px; border-width: 0; } +li.unchecked::marker { content: "\2610"; } +li.checked::marker { content: "\2612"; } +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden é um emulador experimental de código aberto para o Nintendo Switch licenciado sob a licença GPLv3.0+ baseado no emulador yuzu cujo desenvolvimento foi encerrado em Março de 2024 <br /><br />Esse software não deve ser utilizado para jogar jogos obtidos de forma ilegal</span></p></body></html> - <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">This software should not be used to play games you have not legally obtained.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu é um emulador experimental de código aberto para o Nintendo Switch licenciado sob a licença GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Esse programa não deve ser utilizado para jogar jogos que você não obteve legalmente.</span></p></body></html> - - - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Site</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Código-fonte</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Colaboradores</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licença</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Código Fonte</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contribuidores</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licença</span></a></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. eden is not affiliated with Nintendo in any way.</span></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; é uma marca comercial da Nintendo. O yuzu não é afiliado com a Nintendo de nenhuma forma.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. Eden is not affiliated with Nintendo in any way.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; é uma marca registrada da Nintendo. Eden não é afiliada à Nintendo de forma alguma.</span></p></body></html> CalibrationConfigurationDialog - + Communicating with the server... - Comunicando com o servidor... + A comunicar com o servidor... - + Cancel Cancelar - + Touch the top left corner <br>of your touchpad. - Toque no canto superior esquerdo <br>do seu touchpad + Toque no canto superior esquerdo <br>do seu touchpad. - + Now touch the bottom right corner <br>of your touchpad. - Agora toque no canto inferior direito <br>do seu touchpad + Agora toque no canto inferior direito <br> do seu touchpad. - + Configuration completed! - Configuração concluída! + Configuração completa! - + OK OK @@ -112,7 +89,7 @@ p, li { white-space: pre-wrap; } Send Chat Message - Enviar mensagem no bate-papo + Enviar mensagem @@ -120,84 +97,84 @@ p, li { white-space: pre-wrap; } Enviar mensagem - + Members Membros - + %1 has joined %1 entrou - + %1 has left %1 saiu - + %1 has been kicked - %1 foi expulso(a) + %1 foi expulso - + %1 has been banned %1 foi banido(a) - + %1 has been unbanned %1 foi desbanido(a) - + View Profile Ver perfil - - + + Block Player Bloquear jogador - + When you block a player, you will no longer receive chat messages from them.<br><br>Are you sure you would like to block %1? - Quando bloquear um jogador, você não receberá mais mensagens dele.<br><br>Você deseja mesmo bloquear %1? + Quando bloqueia um jogador, você não receberá mais mensagens dele.<br><br>Você deseja mesmo bloquear %1? - + Kick Expulsar - + Ban Banir - + Kick Player - Expulsar Jogador + Expulsar jogador - + Are you sure you would like to <b>kick</b> %1? - Tem certeza de que deseja <b>expulsar</b> %1? + Tem certeza que você deseja <b>expulsar</b> %1? - + Ban Player Banir jogador - + Are you sure you would like to <b>kick and ban</b> %1? This would ban both their forum username and their IP address. Você deseja mesmo <b>expulsar e banir</b> %1? -Isto banirá tanto o nome de usuário do fórum como o endereço IP. +Isto banirá tanto o nome de usuário como o endereço IP do fórum. @@ -226,19 +203,19 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP. ClientRoomWindow - + Connected Conectado - + Disconnected Desconectado - + %1 - %2 (%3/%4 members) - connected - %1 - %2 (%3/%4 membros) - conectado + %1 - %2 (%3/%4 membros) - conectados @@ -246,7 +223,7 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP. Report Compatibility - Informar compatibilidade + Reportar Compatibilidade @@ -257,16 +234,12 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP. Report Game Compatibility - Informar compatibilidade de jogo - - - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of yuzu you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected yuzu account</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Ao enviar um caso de teste à </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">lista de compatibilidade do yuzu</span></a><span style=" font-size:10pt;">, as seguintes informações serão recolhidas e exibidas no site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Informações de hardware (CPU / GPU / sistema operacional)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Qual versão do yuzu você está usando</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">A conta do yuzu conectada</li></ul></body></html> + Reportar compatibilidade de jogos <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">eden Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of eden you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected eden account</li></ul></body></html> - + <html><head/><body><p><span style=" font-size:10pt;">Caso opte por enviar um teste para a</span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">Lista de Compatibilidade do eden</span></a><span style=" font-size:10pt;">, As seguintes informações serão coletadas e exibidas no site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Informações de Hardware (CPU/GPU/Sistema Operacional)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Qual versão do eden está sendo utilizada</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">A conta eden conectada.</li></ul></body></html> @@ -281,7 +254,7 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP. No The game doesn't get past the "Launching..." screen - Não O Jogo não passou da tela de inicialização "Launching..." + Não. O Jogo não passou da tela de inicialização "Launching..." @@ -296,27 +269,27 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP. <html><head/><body><p>Does the game reach gameplay?</p></body></html> - <html><head/><body><p>O jogo chega a ser jogável?</p></body></html> + <html><head/><body><p>O jogo chega a gameplay?</p></body></html> Yes The game works without crashes - Sim O jogo funciona sem travar + Sim O jogo funciona sem crashes No The game crashes or freezes during gameplay - Não O jogo trava ou congela durante a jogatina + Não O jogo crasha ou congela durante a gameplay <html><head/><body><p>Does the game work without crashing, freezing or locking up during gameplay?</p></body></html> - <html><head/><body><p>O jogo funciona sem interrupção, congelamento ou travamento durante a jogatina?</p></body></html> + <html><head/><body><p>O jogo funciona sem crashar, congelar ou travar durante a gameplay?</p></body></html> Yes The game can be finished without any workarounds - Sim O jogo pode ser concluído sem o uso de soluções alternativas + Sim O jogo pode ser concluido sem o uso de soluções alternativas @@ -331,7 +304,7 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP. Major The game has major graphical errors - Graves O jogo tem graves erros gráficos + Grave O jogo tem grandes erros gráficos @@ -356,12 +329,12 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP. Minor The game has minor audio errors - Pequenas O jogo tem pequenos erros de áudio + Pequenos O jogo tem pequenos erros de audio None Audio is played perfectly - Nenhuma O áudio é reproduzido perfeitamente + Nenhum O áudio é reproduzido perfeitamente @@ -371,25 +344,25 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP. Thank you for your submission! - Agradecemos pelo seu relatório! + Obrigado pelo seu envio! - + Submitting Enviando - + Communication error Erro de comunicação - + An error occurred while sending the Testcase Um erro ocorreu ao enviar o caso de teste - + Next Próximo @@ -397,1604 +370,1910 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP. ConfigurationShared - + % % - + Amiibo editor Editor de Amiibo - + Controller configuration Configuração de controles - + Data erase Apagamento de dados - + Error Erro - + Net connect Conectar à rede - + Player select Seleção de jogador - + Software keyboard - Teclado do software + Teclado de software - + Mii Edit Editar Mii - + Online web - Rede online + Serviço online - + Shop Loja - + Photo viewer Visualizador de imagens - + Offline web Rede offline - + Login share Compartilhamento de Login - + Wifi web auth - Autenticação web por Wifi + Autenticação Wi-Fi - + My page Minha página - - Output Engine: - Mecanismo de Saída: + + Enable Overlay Applet + Ativar Applet de Sobreposição - + + Enables Horizon's built-in overlay applet. Press and hold the home button for 1 second to show it. + + + + + Output Engine: + Motor de Saída: + + + Output Device: Dispositivo de Saída - + Input Device: Dispositivo de Entrada - + Mute audio Mutar Áudio - + Volume: Volume: - + Mute audio when in background - Silencia o áudio quando a janela ficar em segundo plano + Silenciar audio quando a janela ficar em segundo plano - + Multicore CPU Emulation - Emulação de CPU multinúcleo + Emulação de CPU Multicore - - This option increases CPU emulation thread use from 1 to the Switch’s maximum of 4. -This is mainly a debug option and shouldn’t be disabled. - Esta opção aumenta o uso de threads de emulação da CPU de 1 para o máximo de 4 do switch. -Isso é prioritariamente uma opção de depuração e não deve ser desabilitada. + + This option increases CPU emulation thread use from 1 to the maximum of 4. +This is mainly a debug option and shouldn't be disabled. + Esta opção aumenta o uso de threads de emulação da CPU de 1 para o máximo de 4. Isso é prioritariamente uma opção de depuração e não deve ser desabilitada. - + Memory Layout - Layout de Memória + Layout de memória - - Increases the amount of emulated RAM from the stock 4GB of the retail Switch to the developer kit's 8/6GB. -It’s doesn’t improve stability or performance and is intended to let big texture mods fit in emulated RAM. -Enabling it will increase memory use. It is not recommended to enable unless a specific game with a texture mod needs it. - Aumenta a quantidade padrão de 4GB de memória RAM emulada do Switch do varejo, para os 8/6GB dos kits de desenvolvedor do console. -Isso não melhora a estabilidade ou performance e só serve para comportar grandes mods de textura na RAM emulada. -Habilitar essa opção aumentará o uso de memória. Não é recomendado habilitar isso a não ser que um jogo específico com um mod de textura precise. + + Increases the amount of emulated RAM. +Doesn't affect performance/stability but may allow HD texture mods to load. + Aumenta a quantidade de RAM emulada. Não afeta desempenho/estabilidade mas pode permitir o carregamento de texturas em alta definição. - + Limit Speed Percent - Limitar percentual de velocidade + Percentagem do limitador de velocidade - - Controls the game's maximum rendering speed, but it’s up to each game if it runs faster or not. + + Controls the game's maximum rendering speed, but it's up to each game if it runs faster or not. 200% for a 30 FPS game is 60 FPS, and for a 60 FPS game it will be 120 FPS. Disabling it means unlocking the framerate to the maximum your PC can reach. - Controla a velocidade máxima de renderização de um jogo, mas vai depender de cada jogo se ele roda mais rápido ou não. -200% para um jogo de 30 FPS são 60 FPS e para um de 60 FPS, serão 120 FPS. -Desabilitar essa opção faz com que você destrave a taxa de quadros para o máximo que seu PC consegue alcançar. + Controla a velocidade máxima de renderização de um jogo, mas depende de cada jogo se ele roda mais rápido ou não. +200% para um jogo de 30 FPS são 60 FPS, e para um de 60 FPS serão 120 FPS. +Desabilitar essa opção faz com que você destrave a taxa de quadros para o máximo que seu computador consegue alcançar. - + + Turbo Speed + + + + + When the Turbo Speed hotkey is pressed, the speed will be limited to this percentage. + + + + + Slow Speed + + + + + When the Slow Speed hotkey is pressed, the speed will be limited to this percentage. + + + + Synchronize Core Speed - + Sincronizar velocidade do núcleo - - Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). -Compatibility varies by game; many (especially older ones) may not respond well. + + Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). Can help reduce stuttering at lower framerates. - + Sincroniza a velocidade do núcleo da CPU com a taxa máxima de renderização do jogo para aumentar o FPS sem afetar a velocidade do jogo (animações, física, etc.). +Pode ajudar a reduzir travamentos (engasgos) em taxas de quadros mais baixas. - + Accuracy: Precisão: - - This setting controls the accuracy of the emulated CPU. -Don't change this unless you know what you are doing. - Esta configuração controla a precisão da CPU emulada. -Não altere isso a menos que saiba o que está fazendo. + + Change the accuracy of the emulated CPU (for debugging only). + Muda a precisão do CPU emulado (apenas para depuração). - - + + Backend: Backend: - - Fast CPU Time - + + CPU Overclock + - + Overclocks the emulated CPU to remove some FPS limiters. Weaker CPUs may see reduced performance, and certain games may behave improperly. Use Boost (1700MHz) to run at the Switch's highest native clock, or Fast (2000MHz) to run at 2x clock. - + Faz overclock na CPU emulada para remover alguns limitadores de FPS. CPUs mais fracas podem apresentar redução de desempenho, e certos jogos podem se comportar de forma anormal. +Use 'Boost' (1700MHz) para rodar no clock nativo mais alto do Switch, ou 'Rápido' (2000MHz) para rodar com o dobro do clock. - + + Custom CPU Ticks + + + + + Set a custom value of CPU ticks. Higher values can increase performance, but may cause deadlocks. A range of 77-21000 is recommended. + + + + + Enable Host MMU Emulation (fastmem) + Ativar Emulação de MMU do Anfitrião (fastmem) + + + + This optimization speeds up memory accesses by the guest program. +Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU. +Disabling this forces all memory accesses to use Software MMU Emulation. + Esta otimização acelera os acessos à memória pelo programa convidado. +Ativá-la faz com que as leituras/escritas de memória do convidado sejam feitas diretamente na memória e utilizem a MMU do Hospedeiro. +Desativar esta opção força todos os acessos à memória a usarem a Emulação de MMU por Software. + + + Unfuse FMA (improve performance on CPUs without FMA) - Não usar FMA (melhora o desempenho em CPUs sem FMA) + FMA inseguro (melhora desempenho no CPU sem FMA) - + This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support. 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. - + Faster FRSQRTE and FRECPE - FRSQRTE e FRECPE mais rápidos + FRSQRTE e FRECPE mais rápido - + This option improves the speed of some approximate floating-point functions by using less accurate native approximations. - Essa opção melhora a velocidade de algumas funções aproximadas de pontos flutuantes ao usar aproximações nativas menos precisas. + Essa opção melhora a velocidade de algumas funções aproximadas de pontos flutuantes ao usar aproximações nativas precisas. - + Faster ASIMD instructions (32 bits only) Instruções ASIMD mais rápidas (apenas 32 bits) - + This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes. Essa opção melhora a velocidade de funções de pontos flutuantes de 32 bits ASIMD ao executá-las com modos de arredondamento incorretos. - + Inaccurate NaN handling Tratamento impreciso de NaN - + This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions. Esta opção melhora a velocidade ao remover a checagem NaN. Por favor, note que isso também reduzirá a precisão de certas instruções de ponto flutuante. - + Disable address space checks Desativar a verificação do espaço de endereços - - This option improves speed by eliminating a safety check before every memory read/write in guest. -Disabling it may allow a game to read/write the emulator's memory. - Esta opção melhora a velocidade ao eliminar a checagem de segurança antes de cada leitura/escrita de memória no dispositivo convidado. -Desabilitar essa opção pode permitir que um jogo leia/escreva na memória do emulador. + + This option improves speed by eliminating a safety check before every memory operation. +Disabling it may allow arbitrary code execution. + - + Ignore global monitor Ignorar monitor global - + 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. Esta opção melhora a velocidade ao depender apenas das semânticas do cmpxchg pra garantir a segurança das instruções de acesso exclusivo. Por favor, note que isso pode resultar em travamentos e outras condições de execução. - + API: API: - - Switches between the available graphics APIs. -Vulkan is recommended in most cases. - Alterna entre as APIs gráficas disponíveis. -Vulkan é a recomendada na maioria dos casos. + + Changes the output graphics API. +Vulkan is recommended. + - + Device: Dispositivo: - - This setting selects the GPU to use with the Vulkan backend. - Esta opção seleciona a GPU a ser usada com a Vulkan. + + This setting selects the GPU to use (Vulkan only). + - - Shader Backend: - Backend de Shaders: - - - - The shader backend to use for the OpenGL renderer. -GLSL is the fastest in performance and the best in rendering accuracy. -GLASM is a deprecated NVIDIA-only backend that offers much better shader building performance at the cost of FPS and rendering accuracy. -SPIR-V compiles the fastest, but yields poor results on most GPU drivers. - O backend de shaders a ser usado com a OpenGL. -GLSL é o mais rápido em performance e o melhor na precisão da renderização. -GLASM é um backend exclusivo descontinuado da NVIDIA que oferece uma performance de compilação de shaders muito melhor ao custo de FPS e precisão de renderização. -SPIR-V é o mais rápido ao compilar shaders, mas produz resultados ruins na maioria dos drivers de GPU. - - - + Resolution: Resolução: - - Forces the game to render at a different resolution. -Higher resolutions require much more VRAM and bandwidth. -Options lower than 1X can cause rendering issues. - Força o jogo a renderizar em uma resolução diferente. -Resoluções maiores requerem mais VRAM e largura de banda. -Opções menores do que 1X podem causar problemas na renderização. + + Forces to render at a different resolution. +Higher resolutions require more VRAM and bandwidth. +Options lower than 1X can cause artifacts. + - + Window Adapting Filter: Filtro de adaptação de janela: - + FSR Sharpness: - Nitidez do FSR: + FSR Sharpness: - - Determines how sharpened the image will look while using FSR’s dynamic contrast. - Determina a nitidez da imagem ao utilizar o contraste dinâmico do FSR. + + Determines how sharpened the image will look using FSR's dynamic contrast. + - + Anti-Aliasing Method: - Método de Anti-Aliasing: + Método de Anti-Aliasing - + The anti-aliasing method to use. SMAA offers the best quality. -FXAA has a lower performance impact and can produce a better and more stable picture under very low resolutions. +FXAA can produce a more stable picture in lower resolutions. O método anti-aliasing a ser utilizado. SMAA oferece a melhor qualidade. -FXAA tem um impacto menor na performance e pode produzir uma imagem melhor e mais estável em resoluções muito baixas. +FXAA pode produzir uma imagem mais estável em resoluções mais baixas. - + Fullscreen Mode: - Modo de Tela Cheia: + Tela Cheia - + The method used to render the window in fullscreen. Borderless offers the best compatibility with the on-screen keyboard that some games request for input. Exclusive fullscreen may offer better performance and better Freesync/Gsync support. O método utilizado ao renderizar a janela em tela cheia. Sem borda oferece a melhor compatibilidade com o teclado na tela que alguns jogos requerem pra entrada de texto. -Tela cheia exclusiva pode oferecer melhor performance e melhor suporte a Freesync/Gsync. +Tela cheia exclusiva pode oferecer melhor desempenho e melhor suporte a Freesync/Gsync. - + Aspect Ratio: - Proporção de Tela: + Proporção do Ecrã: - - Stretches the game to fit the specified aspect ratio. -Switch games only support 16:9, so custom game mods are required to get other ratios. + + Stretches the renderer to fit the specified aspect ratio. +Most games only support 16:9, so modifications are required to get other ratios. Also controls the aspect ratio of captured screenshots. - Estica a imagem do jogo para a proporção de tela especificada. -Jogos do Switch somente suportam 16:9, por isso mods customizados por jogo são necessários para outras proporções. -Isso também controla a proporção de aspecto de capturas de telas. + - - Use disk pipeline cache - Usar cache de pipeline em disco + + Use persistent pipeline cache + - + Allows saving shaders to storage for faster loading on following game boots. Disabling it is only intended for debugging. Permite guardar os shaders para carregar os jogos nas execuções seguintes. Desabiltar essa opção só serve para propósitos de depuração. - - Optimize SPIRV output shader - + + Optimize SPIRV output + - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. This feature is experimental. - + Executa uma passagem de otimização adicional nos shaders SPIR-V gerados. + Irá aumentar o tempo necessário para a compilação de shaders. + Pode melhorar ligeiramente o desempenho. + Este recurso é experimental. - - Use asynchronous GPU emulation - Usar emulação assíncrona da GPU - - - - Uses an extra CPU thread for rendering. -This option should always remain enabled. - Usa uma thread de CPU extra para renderização. -Esta opção deve estar sempre habilitada. - - - + NVDEC emulation: Emulação NVDEC: - + Specifies how videos should be decoded. It can either use the CPU or the GPU for decoding, or perform no decoding at all (black screen on videos). In most cases, GPU decoding provides the best performance. Especifica como os vídeos devem ser decodificados. Tanto a CPU quanto a GPU podem ser utilizadas para decodificação, ou não decodificar nada (tela preta nos vídeos). -Na maioria dos casos, a decodificação pela GPU fornece uma melhor performance. +Na maioria dos casos, a decodificação pela GPU fornece um melhor desempenho. - + ASTC Decoding Method: Método de Decodificação ASTC: - + This option controls how ASTC textures should be decoded. -CPU: Use the CPU for decoding, slowest but safest method. -GPU: Use the GPU's compute shaders to decode ASTC textures, recommended for most games and users. -CPU Asynchronously: Use the CPU to decode ASTC textures as they arrive. Completely eliminates ASTC decoding -stuttering at the cost of rendering issues while the texture is being decoded. +CPU: Use the CPU for decoding. +GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). +CPU Asynchronously: Use the CPU to decode ASTC textures on demand. EliminatesASTC decoding +stuttering but may present artifacts. Esta opção controla como as texturas ASTC devem ser decodificadas. -CPU: Usa a CPU para a decodificação. Método mais lento, porém o mais seguro. -GPU: Usa os shaders de computação da GPU para decodificar texturas ASTC. Recomendado para a maioria dos jogos e usuários. -CPU de Forma Assíncrona: Usa a CPU para decodificar texturas ASTC à medida que aparecem. Elimina completamente os travamentos de -decodificação ASTC ao custo de problemas na renderização enquanto as texturas estão sendo decodificadas. +CPU: Usa a CPU para a decodificação. +GPU: Usa os compute shaders da GPU para decodificar texturas ASTC (recomendado). +CPU Assíncrona: Usa a CPU para decodificar texturas ASTC sob demanda. Elimina travamentos (engasgos) de decodificação ASTC, +mas pode apresentar artefatos visuais. - + ASTC Recompression Method: Método de Recompressão ASTC: - - Almost all desktop and laptop dedicated GPUs lack support for ASTC textures, forcing the emulator to decompress to an intermediate format any card supports, RGBA8. -This option recompresses RGBA8 to either the BC1 or BC3 format, saving VRAM but negatively affecting image quality. - Quase todas as GPUs de desktop e laptop não possuem suporte para texturas ASTC, o que força o emulador a descompactá-las para um formato intermediário que qualquer placa suporta, o RGBA8. -Esta opção recompacta o RGBA8 ou pro formato BC1 ou pro BC3, economizando VRAM mas afetando negativamente a qualidade da imagem. + + Most GPUs lack support for ASTC textures and must decompress to anintermediate format: RGBA8. +BC1/BC3: The intermediate format will be recompressed to BC1 or BC3 format, + saving VRAM but degrading image quality. + - + + Frame Pacing Mode (Vulkan only) + + + + + Controls how the emulator manages frame pacing to reduce stuttering and make the frame rate smoother and more consistent. + Controle como o emulador gerencia o ritmo de quadros para reduzir travamentos (engasgos) e deixar a taxa de quadros mais suave e consistente. + + + VRAM Usage Mode: Modo de Uso da VRAM: - - Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. Has no effect on integrated graphics. Aggressive mode may severely impact the performance of other applications such as recording software. - Define se o emulador deve preferir conservar ou fazer o uso máximo da memória de vídeo disponível para melhorar a performance. Não tem efeito em gráficos integrados. O modo Agressivo pode impactar fortemente na performance de outras aplicações, tipo programas de gravação de tela. + + Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. +Aggressive mode may impact performance of other applications such as recording software. + Define se o emulador deve priorizar a economia de memória ou fazer o uso máximo da memória de vídeo disponível para melhorar o desempenho. +O modo agressivo pode impactar a performance de outros aplicativos, como softwares de gravação. - + + Skip CPU Inner Invalidation + + + + + Skips certain cache invalidations during memory updates, reducing CPU usage and improving latency. This may cause soft-crashes. + + + + VSync Mode: - Modo de VSync: + Modo de Sincronização vertical: - + FIFO (VSync) does not drop frames or exhibit tearing but is limited by the screen refresh rate. -FIFO Relaxed is similar to FIFO but allows tearing as it recovers from a slow down. +FIFO Relaxed 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. - 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. -Imediata (sem sincronização) simplesmente apresenta o que estiver disponível e pode exibir tearing. +Immediate (no synchronization) presents whatever is available and can exhibit tearing. + - + + Sync Memory Operations + + + + + Ensures data consistency between compute and memory operations. +This option fixes issues in games, but may degrade performance. +Unreal Engine 4 games often see the most significant changes thereof. + Garante a consistência de dados entre as operações de computação e memória. +Esta opção corrige problemas em diversos jogos, mas pode reduzir o desempenho. +Jogos baseados na Unreal Engine 4 costumam apresentar as mudanças mais significativas. + + + Enable asynchronous presentation (Vulkan only) Ativar apresentação assíncrona (Somente Vulkan) - + Slightly improves performance by moving presentation to a separate CPU thread. Melhora ligeiramente o desempenho ao mover a apresentação para uma thread de CPU separada. - + Force maximum clocks (Vulkan only) - Forçar velocidade máxima (somente Vulkan) + Forçar clock máximo (somente Vulkan) - + Runs work in the background while waiting for graphics commands to keep the GPU from lowering its clock speed. - Executa trabalho em segundo plano aguardando pelos comandos gráficos para evitar a GPU de reduzir sua velocidade. + Executa trabalho em segundo plano aguardando pelos comandos gráficos para evitar a GPU de reduzir seu clock. - + Anisotropic Filtering: - Filtragem anisotrópica: + Filtro Anisotrópico: - + Controls the quality of texture rendering at oblique angles. -It’s a light setting and safe to set at 16x on most GPUs. - Controla a qualidade da renderização de texturas em ângulos oblíquos. -É uma configuração leve, e é seguro deixar em 16x na maioria das GPUs. +Safe to set at 16x on most GPUs. + - - Accuracy Level: - Nível de precisão: + + GPU Mode: + - - GPU emulation accuracy. -Most games render fine with Normal, but High is still required for some. -Particles tend to only render correctly with High accuracy. -Extreme should only be used for debugging. -This option can be changed while playing. -Some games may require booting on high to render properly. - Precisão da emulação da GPU. -A maioria dos jogos renderiza bem na precisão Normal, mas a Alta ainda é obrigatória para alguns. -Partículas tendem a renderizar corretamente somente com a precisão Alta. -Extrema só deve ser utilizada para depuração. -Esta opção pode ser alterada durante o jogo. -Alguns jogos podem exigir serem iniciados na precisão alta pra renderizarem corretamente. + + Controls the GPU emulation mode. +Most games render fine with Fast or Balanced modes, but Accurate is still required for some. +Particles tend to only render correctly with Accurate mode. + - - Use asynchronous shader building (Hack) - Usar compilação assíncrona de shaders (Hack) + + DMA Accuracy: + - - Enables asynchronous shader compilation, which may reduce shader stutter. -This feature is experimental. - Ativa a compilação de shaders assíncrona, o que pode reduzir engasgos. -Esta opção é experimental. + + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. + Controla a precisão do DMA. A precisão Segura corrige problemas em alguns jogos, mas pode reduzir o desempenho. - Use Fast GPU Time (Hack) - Usar Tempo de Resposta Tápido da GPU (Hack) + + Enable asynchronous shader compilation + - Enables Fast GPU Time. This option will force most games to run at their highest native resolution. - Ativa um tempo de resposta rápido da GPU. Esta opção forçará a maioria dos jogos a rodar em sua resolução nativa mais alta. + + May reduce shader stutter. + - + + Fast GPU Time + + + + + Overclocks the emulated GPU to increase dynamic resolution and render distance. +Use 256 for maximal performance and 512 for maximal graphics fidelity. + + + + + GPU Unswizzle + + + + + Accelerates BCn 3D texture decoding using GPU compute. +Disable if experiencing crashes or graphical glitches. + + + + + GPU Unswizzle Max Texture Size + + + + + Sets the maximum size (MiB) for GPU-based texture unswizzling. +While the GPU is faster for medium and large textures, the CPU may be more efficient for very small ones. +Adjust this to find the balance between GPU acceleration and CPU overhead. + + + + + GPU Unswizzle Stream Size + + + + + Sets the maximum amount of texture data (in MiB) processed per frame. +Higher values can reduce stutter during texture loading but may impact frame consistency. + + + + + GPU Unswizzle Chunk Size + + + + + Determines the number of depth slices processed in a single dispatch. +Increasing this can improve throughput on high-end GPUs but may cause TDR or driver timeouts on weaker hardware. + + + + Use Vulkan pipeline cache Utilizar cache de pipeline do Vulkan - + Enables GPU vendor-specific pipeline cache. This option can improve shader loading time significantly in cases where the Vulkan driver does not store pipeline cache files internally. - Ativa o cache de pipeline da fabricante da GPU. + Habilita o cache de pipeline da fabricante da GPU. Esta opção pode melhorar o tempo de carregamento de shaders significantemente em casos onde o driver Vulkan não armazena o cache de pipeline internamente. - + Enable Compute Pipelines (Intel Vulkan Only) - Habilitar Pipelines de Computação (Somente Vulkan da Intel) + Habilitar Pipeline de Computação (Somente Intel Vulkan) - - Enable compute pipelines, required by some games. -This setting only exists for Intel proprietary drivers, and may crash if enabled. + + 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. - 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. + - + Enable Reactive Flushing - Ativar Flushing Reativo + Habilitar Flushing Reativo - + Uses reactive flushing instead of predictive flushing, allowing more accurate memory syncing. Usa flushing reativo ao invés de flushing preditivo, permitindo mais precisão na sincronização da memória. - + Sync to framerate of video playback Sincronizar com o framerate da reprodução de vídeo - + Run the game at normal speed during video playback, even when the framerate is unlocked. Executa o jogo na velocidade normal durante a reprodução de vídeo, mesmo se o framerate estiver desbloqueado. - + Barrier feedback loops Ciclos de feedback de barreira - + Improves rendering of transparency effects in specific games. Melhora a renderização de efeitos de transparência em jogos específicos. - + + Enable buffer history + + + + + Enables access to previous buffer states. +This option may improve rendering quality and performance consistency in some games. + + + + + Fix bloom effects + + + + + Removes bloom in Burnout. + + + + + Enable Legacy Rescale Pass + + + + + May fix rescale issues in some games by relying on behavior from the previous implementation. +Legacy behavior workaround that fixes line artifacts on AMD and Intel GPUs, and grey texture flicker on Nvidia GPUs in Luigis Mansion 3. + + + + + Extended Dynamic State + + + + + Controls the number of features that can be used in Extended Dynamic State. +Higher states allow for more features and can increase performance, but may cause additional graphical issues. + + + + + Vertex Input Dynamic State + + + + + Enables vertex input dynamic state feature for better quality and performance. + + + + + Sample Shading + + + + + Allows the fragment shader to execute per sample in a multi-sampled fragment instead of once per fragment. Improves graphics quality at the cost of performance. +Higher values improve quality but degrade performance. + Permite que o shader de fragmento seja processado por cada amostra em fragmentos multiamostrados, em vez de uma única vez por fragmento. Melhora a qualidade gráfica ao custo de desempenho. + Valores mais altos aumentam a qualidade, mas reduzem a performance. + + + RNG Seed - Semente RNG + Semente de RNG - + Controls the seed of the random number generator. -Mainly used for speedrunning purposes. - Controla a semente do gerador de números aleatórios. -Usado principalmente para propósitos de speedrunning. +Mainly used for speedrunning. + - + Device Name Nome do Dispositivo - - The name of the emulated Switch. - O nome do Switch emulado. + + The name of the console. + - + Custom RTC Date: - Data personalizada do sistema: + Data personalizada do RTC: - - This option allows to change the emulated clock of the Switch. + + This option allows to change the clock of the console. Can be used to manipulate time in games. - Esta opção permite alterar o relógio do Switch emulado. -Pode ser utilizada para manipular o tempo nos jogos. + - + + The number of seconds from the current unix time + + + + Language: Idioma: - - Note: this can be overridden when region setting is auto-select - Nota: isso pode ser substituído caso a configuração de região automática esteja ativada + + This option can be overridden when region setting is auto-select + - + Region: Região: - - The region of the emulated Switch. - A região do Switch emulado. + + The region of the console. + - + Time Zone: - Fuso horário: + Fuso Horário: - - The time zone of the emulated Switch. - O fuso horário do Switch emulado. + + The time zone of the console. + - + Sound Output Mode: - Modo de Saída de Som: + Modo de saída de som - + Console Mode: Modo Console: - - Selects if the console is emulated in Docked or Handheld mode. + + Selects if the console is in Docked or Handheld mode. Games will change their resolution, details and supported controllers and depending on this setting. Setting to Handheld can help improve performance for low end systems. - Seleciona se o console é emulado no Modo TV ou portátil. -Os jogos mudarão suas resoluções, detalhes e controles suportados de acordo com essa opção. -Configurar essa opção para o Modo Portátil pode ajudar a melhorar a performance em sistemas mais fracos. + - - Prompt for user on game boot - Escolher um usuário ao iniciar um jogo + + Unit Serial + - Ask to select a user profile on each boot, useful if multiple people use yuzu on the same PC. - Pede para selecionar um perfil de usuário a cada boot, útil se várias pessoas utilizam o yuzu no mesmo PC. + + Battery Serial + - - Pause emulation when in background - Pausar emulação quando a janela ficar em segundo plano + + Debug knobs + - This setting pauses yuzu when focusing other windows. - Esta opção pausa o yuzu quando outras janelas estão ativas. + + Prompt for user profile on boot + - - Fast GPU Time (Hack) - + + Useful if multiple people use the same PC. + - - Overclocks the emulated GPU to increase dynamic resolution and render distance. -Use 128 for maximal performance and 512 for maximal graphics fidelity. - + + Pause when not in focus + - - Extended Dynamic State - + + Pauses emulation when focusing on other windows. + - - Enables the VkExtendedDynamicState* extensions. -Higher dynamic states will generally improve performance, but may cause issues on certain games or devices. - - - - - Provoking Vertex - - - - - Improves lighting and vertex handling in certain games. -Only Vulkan 1.0+ devices support this extension. - - - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - - Ask to select a user profile on each boot, useful if multiple people use eden on the same PC. - - - - - This setting pauses eden when focusing other windows. - - - - + Confirm before stopping emulation Confirmar antes de parar a emulação - - This setting overrides game prompts asking to confirm stopping the game. + + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - Esta configuração desconsidera as solicitações dos jogos que pedem pra confirmarem a interrupção deles. -Ativar essa configuração ignora essas solicitações e sai da emulação direto. + - + Hide mouse on inactivity - Esconder cursor do mouse enquanto ele estiver inativo + Esconder rato quando inactivo. - - This setting hides the mouse after 2.5s of inactivity. - Esta configuração esconde o mouse após 2,5s de inatividade. + + Hides the mouse after 2.5s of inactivity. + - + Disable controller applet - Desativar miniaplicativo dos controles + Desabilitar applet de controle - - Forcibly disables the use of the controller applet by guests. -When a guest attempts to open the controller applet, it is immediately closed. - Força a desativação do uso do miniaplicativo dos controles pelos dispositivos convidados. -Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele é imediatamente fechado. + + Forcibly disables the use of the controller applet in emulated programs. +When a program attempts to open the controller applet, it is immediately closed. + - + Check for updates - + - + Whether or not to check for updates upon startup. - + - + Enable Gamemode - Ativar Gamemode + Habilitar Gamemode - + + Force X11 as Graphics Backend + + + + Custom frontend Frontend customizado - + Real applet - Miniaplicativo real + Applet real - + Never - + Nunca - + On Load - + - + Always - + Sempre - + CPU CPU - + GPU GPU - + CPU Asynchronous CPU Assíncrona - + Uncompressed (Best quality) - Descompactado (Melhor qualidade) + Descompactado (Melhor Qualidade) - + BC1 (Low quality) BC1 (Baixa qualidade) - + BC3 (Medium quality) BC3 (Média qualidade) - + + + Auto + Automático + + + + 30 FPS + + + + + 60 FPS + + + + + 90 FPS + + + + + 120 FPS + + + + Conservative Conservador - + Aggressive Agressivo - - OpenGL - OpenGL - - - + Vulkan - Vulkan + Vulcano - + + OpenGL GLSL + + + + + OpenGL GLASM (Assembly Shaders, NVIDIA Only) + + + + + OpenGL SPIR-V (Experimental, AMD/Mesa Only) + + + + Null - Nenhuma (desativado) - - - - GLSL - GLSL - - - - GLASM (Assembly Shaders, NVIDIA Only) - GLASM (Shaders Assembly, apenas NVIDIA) - - - - SPIR-V (Experimental, AMD/Mesa Only) - SPIR-V (Experimental, Somente para AMD/Mesa) - - - - Normal - Normal - - - - High - Alta - - - - Extreme - Extrema - - - - Auto - Automática - - - - Accurate - Precisa - - - - Unsafe - Não segura - - - - Paranoid (disables most optimizations) - Paranoica (desativa a maioria das otimizações) - - - - Dynarmic - Dynarmic - - - - NCE - NCE - - - - Borderless Windowed - Janela em Tela Cheia - - - - Exclusive Fullscreen - Tela Cheia Exclusiva - - - - No Video Output - Sem Saída de Vídeo - - - - CPU Video Decoding - Decodificação de Vídeo pela CPU - - - - GPU Video Decoding (Default) - Decodificação de Vídeo pela GPU (Padrão) - - - - 0.25X (180p/270p) [EXPERIMENTAL] - - - - - 0.5X (360p/540p) [EXPERIMENTAL] - 0.5X (360p/540p) [EXPERIMENTAL] - - - - 0.75X (540p/810p) [EXPERIMENTAL] - 0.75X (540p/810p) [EXPERIMENTAL] - - - - 1X (720p/1080p) - 1X (720p/1080p) - - - - 1.5X (1080p/1620p) [EXPERIMENTAL] - 1.5X (1080p/1620p) [EXPERIMENTAL] - - - - 2X (1440p/2160p) - 2X (1440p/2160p) - - - - 3X (2160p/3240p) - 3X (2160p/3240p) - - - - 4X (2880p/4320p) - 4X (2880p/4320p) - - - - 5X (3600p/5400p) - 5X (3600p/5400p) - - - - 6X (4320p/6480p) - 6X (4320p/6480p) - - - - 7X (5040p/7560p) - 7X (5040p/7560p) - - - - 8X (5760p/8640p) - 8X (5760p/8640p) - - - - Nearest Neighbor - Vizinho mais próximo - - - - Bilinear - Bilinear - - - - Bicubic - Bicúbico - - - - Gaussian - Gaussiano - - - - ScaleForce - ScaleForce - - - - AMD FidelityFX™️ Super Resolution - AMD FidelityFX™️ Super Resolution - - - - Area - - - - - None Nenhum - - FXAA - FXAA + + Fast + - - SMAA - SMAA + + Balanced + - - Default (16:9) - Padrão (16:9) + + + Accurate + Preciso - - Force 4:3 - Forçar 4:3 - - - - Force 21:9 - Forçar 21:9 - - - - Force 16:10 - Forçar 16:10 - - - - Stretch to Window - Esticar à janela - - - - Automatic - Automática - - - + + Default Padrão - + + Unsafe (fast) + + + + + Safe (stable) + + + + + Unsafe + Inseguro + + + + Paranoid (disables most optimizations) + Paranoia (desativa a maioria das otimizações) + + + + Debugging + Depuração + + + + Dynarmic + Dynarmic + + + + NCE + NCE + + + + Borderless Windowed + Janela sem bordas + + + + Exclusive Fullscreen + Tela cheia exclusiva + + + + No Video Output + Sem saída de vídeo + + + + CPU Video Decoding + Decodificação de vídeo pela CPU + + + + GPU Video Decoding (Default) + Decodificação de vídeo pela GPU (Padrão) + + + + 0.25X (180p/270p) [EXPERIMENTAL] + + + + + 0.5X (360p/540p) [EXPERIMENTAL] + 0.5X (360p/540p) [EXPERIMENTAL] + + + + 0.75X (540p/810p) [EXPERIMENTAL] + 0.75X (540p/810p) [EXPERIMENTAL] + + + + 1X (720p/1080p) + 1X (720p/1080p) + + + + 1.25X (900p/1350p) [EXPERIMENTAL] + + + + + 1.5X (1080p/1620p) [EXPERIMENTAL] + 1.5X (1080p/1620p) [EXPERIMENTAL] + + + + 2X (1440p/2160p) + 2X (1440p/2160p) + + + + 3X (2160p/3240p) + 3X (2160p/3240p) + + + + 4X (2880p/4320p) + 4X (2880p/4320p) + + + + 5X (3600p/5400p) + 5X (3600p/5400p) + + + + 6X (4320p/6480p) + 6X (4320p/6480p) + + + + 7X (5040p/7560p) + 7X (5040p/7560p) + + + + 8X (5760p/8640p) + 8X (5760p/8640p) + + + + Nearest Neighbor + Vizinho mais próximo + + + + Bilinear + Bilinear + + + + Bicubic + Bicúbico + + + + Gaussian + Gaussiano + + + + Lanczos + + + + + ScaleForce + ScaleForce + + + + AMD FidelityFX Super Resolution + + + + + Area + Área + + + + MMPX + + + + + Zero-Tangent + + + + + B-Spline + + + + + Mitchell + + + + + Spline-1 + + + + + + None + Nenhum + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Default (16:9) + Padrão (16:9) + + + + Force 4:3 + Forçar 4:3 + + + + Force 21:9 + Forçar 21:9 + + + + Force 16:10 + Forçar 16:10 + + + + Stretch to Window + Esticar à Janela + + + + Automatic + Automático + + + 2x 2x - + 4x 4x - + 8x 8x - + 16x 16x - - Japanese (日本語) - Japônes (日本語) + + 32x + - + + 64x + + + + + Japanese (日本語) + Japonês (日本語) + + + American English Inglês Americano - + French (français) Francês (français) - + German (Deutsch) Alemão (Deutsch) - + Italian (italiano) Italiano (italiano) - + Spanish (español) Espanhol (español) - + Chinese Chinês - + Korean (한국어) Coreano (한국어) - + Dutch (Nederlands) Holandês (Nederlands) - + Portuguese (português) - Português + Português (português) - + Russian (Русский) Russo (Русский) - + Taiwanese Taiwanês - + British English - Inglês Britânico (British English) + Inglês Britânico - + Canadian French - Francês canadense (Canadian French) + Francês Canadense - + Latin American Spanish - Espanhol latino-americano + Espanhol Latino-Americano - + Simplified Chinese - Chinês simplificado + Chinês Simplificado - + Traditional Chinese (正體中文) - Chinês tradicional (正體中文) + Chinês Tradicional (正 體 中文) - + Brazilian Portuguese (português do Brasil) - Português do Brasil + Português do Brasil (Brazilian Portuguese) - - + + Polish (polska) + + + + + Thai (แบบไทย) + + + + + Japan Japão - + USA EUA - + Europe Europa - + Australia Austrália - + China China - + Korea - Coréia + Coreia - + Taiwan Taiwan - + Auto (%1) Auto select time zone Auto (%1) - + Default (%1) Default time zone Padrão (%1) - + CET CET - + CST6CDT CST6CDT - + Cuba Cuba - + EET EET - + Egypt Egito - + Eire - Eire + Irlanda - + EST EST - + EST5EDT EST5EDT - + GB GB - + GB-Eire - GB-Eire + GB-Irlanda - + GMT GMT - + GMT+0 GMT+0 - + GMT-0 GMT-0 - + GMT0 GMT0 - + Greenwich Greenwich - + Hongkong - Hong Kong + Hongkong - + HST HST - + Iceland Islândia - + Iran Irã - + Israel Israel - + Jamaica Jamaica - + Kwajalein - Ilhas Marshall + Kwajalein - + Libya Líbia - + MET MET - + MST MST - + MST7MDT MST7MDT - + Navajo Navajo - + NZ NZ - + NZ-CHAT NZ-CHAT - + Poland - Polônia + Polônia - + Portugal Portugal - + PRC PRC - + PST8PDT PST8PDT - + ROC ROC - + ROK ROK - + Singapore Singapura - + Turkey Turquia - + UCT UCT - + Universal Universal - + UTC UTC - + W-SU W-SU - + WET WET - + Zulu Zulu - + Mono Mono - + Stereo Estéreo - + Surround Surround - + 4GB DRAM (Default) 4GB DRAM (Padrão) - + 6GB DRAM (Unsafe) 6GB DRAM (Não seguro) - + 8GB DRAM - + - + 10GB DRAM (Unsafe) - + - + 12GB DRAM (Unsafe) - + - - Low (128) - - - - - Medium (256) - - - - - High (512) - - - - 8GB DRAM (Unsafe) - 8GB DRAM (Não seguro) - - - + Docked - Modo TV + Ancorado - + Handheld Portátil - + + + Off + + + + Boost (1700MHz) - + - + Fast (2000MHz) - + - + Always ask (Default) Sempre perguntar (Padrão) - + Only if game specifies not to stop Somente se o jogo especificar para não parar - + Never ask Nunca perguntar + + + + Medium (256) + + + + + + High (512) + + + + + Very Small (16 MB) + + + + + Small (32 MB) + + + + + Normal (128 MB) + + + + + Large (256 MB) + + + + + Very Large (512 MB) + + + + + Very Low (4 MB) + + + + + Low (8 MB) + + + + + Normal (16 MB) + + + + + Medium (32 MB) + + + + + High (64 MB) + + + + + Very Low (32) + + + + + Low (64) + + + + + Normal (128) + + + + + Disabled + + + + + ExtendedDynamicState 1 + + + + + ExtendedDynamicState 2 + + + + + ExtendedDynamicState 3 + + + + + Tree View + + + + + Grid View + + ConfigureApplets Form - Formulário + Forma Applets - Miniaplicativos + Applets Applet mode preference - Modo de preferência dos miniaplicativos + Modo de preferência de Applets @@ -2003,7 +2282,7 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele Audio - Áudio + Audio @@ -2011,7 +2290,7 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele Configure Infrared Camera - Configurar Câmera Infravermelha + Configurar câmera infravermelha @@ -2021,7 +2300,7 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele Camera Image Source: - Origem da imagem da Câmera: + Origem da imagem da câmera: @@ -2049,7 +2328,7 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele Restaurar Padrões - + Auto Automático @@ -2059,7 +2338,7 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele Form - Formulário + Formato @@ -2084,12 +2363,12 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele Unsafe CPU Optimization Settings - Ajustes de otimização não seguros de CPU + Definições de Optimização do CPU Inseguras These settings reduce accuracy for speed. - Estes ajustes reduzem a precisão para aprimorar a velocidade. + Estas definições reduzem precisão em troca de velocidade. @@ -2097,7 +2376,7 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele Form - Formulário + Formato @@ -2107,7 +2386,7 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele Toggle CPU Optimizations - Ative ou desative otimizações de CPU + Alternar optimizações do CPU @@ -2122,15 +2401,15 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele <div style="white-space: nowrap">Disabling this forces all memory accesses to go through the Memory::Read/Memory::Write functions.</div> - <div style="white-space: nowrap">Esta otimização acelera acessos de memória pelo programa convidado.</div> - <div style="white-space: nowrap">Quando ativada, permite o acesso inline a PageTable::pointers no código emitido.</div> - <div style="white-space: nowrap">Quando desativada, força a passagem de todos os acessos de memória pelas funções Memory::Read/Memory::Write.</div> + <div style="white-space: nowrap">Esta otimização acelera os acessos à memória pelo programa convidado.</div> + <div style="white-space: nowrap">Ao ativá-la, os acessos a PageTable::pointers são inseridos diretamente no código emitido.</div> + <div style="white-space: nowrap">Desativar esta opção força todos os acessos à memória a passarem pelas funções Memory::Read/Memory::Write</div> Enable inline page tables - Ativar tabelas de página em linha + Ativar tabelas de página em linha. @@ -2138,13 +2417,12 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele <div>This optimization avoids dispatcher lookups by allowing emitted basic blocks to jump directly to other basic blocks if the destination PC is static.</div> - <div>Esta otimização evita buscas do dispatcher ao permitir que blocos básicos emitidos pulem diretamente para outros blocos básicos se o PC de destino for estático.</div> - +<div>Esta otimização evita buscas no expedidor ao permitir que blocos básicos emitidos saltem diretamente para outros blocos básicos se o PC de destino for estático.</div> Enable block linking - Ativar vinculação de blocos + Ativar ligações de bloco @@ -2152,8 +2430,7 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele <div>This optimization avoids dispatcher lookups by keeping track potential return addresses of BL instructions. This approximates what happens with a return stack buffer on a real CPU.</div> - <div>Esta otimização evita buscas do dispatcher ao monitorar possíveis endereços de retorno de instruções BL. Isto se aproxima do que ocorre em um buffer de pilha de retorno em um CPU real.</div> - +<div>Esta otimização evita buscas no expedidor ao rastrear possíveis endereços de retorno de instruções BL. Isso se aproxima do que ocorre com um buffer de pilha de retorno em uma CPU real.</div> @@ -2166,13 +2443,12 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele <div>Enable a two-tiered dispatch system. A faster dispatcher written in assembly has a small MRU cache of jump destinations is used first. If that fails, dispatch falls back to the slower C++ dispatcher.</div> - <div>Ativa um sistema de dispatch de dois níveis. Um dispatcher mais rápido, escrito em assembly e que possui um pequeno cache MRU de destinos de pulo, é usado primeiro. Caso falhe, o dispatcher mais lento escrito em C++ será usado em seu lugar.</div> - +<div>Ativa um sistema de despacho de dois níveis. Um expedidor mais rápido escrito em assembly tem uma pequena cache MRU de destinos de salto que é utilizado primeiro. Se esse falhar, a expedição volta ao expedidor C++ mais lento.</div> Enable fast dispatcher - Ativar dispatcher rápido + Ativar expedidor rápido @@ -2180,8 +2456,7 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele <div>Enables an IR optimization that reduces unnecessary accesses to the CPU context structure.</div> - <div>Ativa uma otimização da IR que reduz acessos desnecessários à estrutura de contexto da CPU.</div> - +<div>Ativa uma otimização IR que reduz acessos desnecessários ao contexto de estrutura do CPU</div> @@ -2194,13 +2469,12 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele <div>Enables IR optimizations that involve constant propagation.</div> - <div>Ativa otimizações da IR que envolvem propagação de constantes.</div> - +<div>Ativa otimizações IR que involvem propagação constante.</div> Enable constant propagation - Ativar propagação de constantes + Ativar propagação constante @@ -2208,13 +2482,12 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele <div>Enables miscellaneous IR optimizations.</div> - <div>Ativa otimizações diversas para a IR.</div> - +<div>Ativa várias otimizações IR</div> Enable miscellaneous optimizations - Ativar otimizações diversas + Ativar diversas otimizações @@ -2223,20 +2496,19 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele <div style="white-space: nowrap">When disabled, a misalignment is triggered on all misaligned accesses.</div> - <div style="white-space: nowrap">Quando ativada, um desalinhamento só será disparado quando um acesso cruza o limite de uma página.</div> - <div style="white-space: nowrap">Quando desativada, um desalinhamento será disparado em todos os acessos desalinhados.</div> - +<div style="white-space: nowrap">Quando ativado, um desalinhamento só é acionado quando um acesso atravessa um limite de página.</div> +<div style="white-space: nowrap">Quando desativado, um desalinhamento é acionado em todos os acessos desalinhados.</div> Enable misalignment check reduction - Ativar redução de checagem de desalinhamento + Ativar redução da verificação de desalinhamento <div style="white-space: nowrap">This optimization speeds up memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all memory accesses to use Software MMU Emulation.</div> @@ -2248,13 +2520,13 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele Enable Host MMU Emulation (general memory instructions) - Ativar emulação MMU do anfitrião (instruções de memória genéricas) + Ativar emulação de MMU do anfitrião (instruções de memória genéricas) <div style="white-space: nowrap">This optimization speeds up exclusive memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all exclusive memory accesses to use Software MMU Emulation.</div> @@ -2266,7 +2538,7 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele Enable Host MMU Emulation (exclusive memory instructions) - Ativar emulação da MMU no anfitrião (instruções da memória exclusiva) + Ativar Emulação de MMU do Anfitrião (instruções de memória exclusiva) @@ -2288,11 +2560,11 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele <div style="white-space: nowrap">This optimization speeds up memory accesses by allowing invalid memory accesses to succeed.</div> - <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> + <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> <div style="white-space: nowrap">Esta otimização acelera os acessos à memória ao permitir que acessos inválidos à memória sejam bem-sucedidos.</div> - <div style="white-space: nowrap">Ativá-la reduz a sobrecarga de todos os acessos à memória e não tem impacto em programas que não tem acessos inválidos à memória.</div> + <div style="white-space: nowrap">Ativá-la reduz a sobrecarga de todos os acessos à memória e não tem impacto em programas que não tem acessos inválidos à memória</div> @@ -2303,7 +2575,7 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele CPU settings are available only when game is not running. - Os ajustes de CPU estão disponíveis apenas quando não houver nenhum jogo em execução. + As configurações do sistema estão disponíveis apenas quando o jogo não está em execução. @@ -2316,7 +2588,7 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele Enable GDB Stub - Ativar GDB stub + Activar GDB Stub @@ -2326,32 +2598,32 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele Logging - Registros de depuração + Entrando - - Open Log Location - Abrir local dos registros - - - + Global Log Filter - Filtro global de registros + Filtro de registro global - + When checked, the max size of the log increases from 100 MB to 1 GB - Quando ativado, o tamanho máximo do arquivo de registro aumenta de 100 MB para 1 GB + Quando ativado, o tamanho máximo do registo aumenta de 100 MB para 1 GB - + Enable Extended Logging** Ativar registros avançados** - + Show Log in Console - Mostrar registro no console + Mostrar Relatório na Consola + + + + Open Log Location + Abrir a localização do registro @@ -2361,7 +2633,7 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele Arguments String - Linha de argumentos + Argumentos String @@ -2381,12 +2653,12 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele When checked, it will dump all the macro programs of the GPU - Quando marcada, essa opção irá extrair todos os macro programas da GPU + Quando marcada, essa opção irá despejar todos os macro programas da GPU Dump Maxwell Macros - Extrair macros Maxwell + Despejar macros Maxwell @@ -2401,7 +2673,7 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele When checked, it will dump all the original assembler shaders from the disk shader cache or game as found - Se selecionado, extrai todos os shaders originários do cache do disco ou do jogo conforme encontrá-los. + Se selecionado, descarrega todos os shaders originários do cache do disco ou do jogo conforme encontrá-los. @@ -2421,17 +2693,17 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele Disable Macro JIT - Desativar macro JIT + Desactivar Macro JIT When checked, it disables the macro HLE functions. Enabling this makes games run slower - Quando marcado, desativa as funções do macro HLE. Habilitar esta opção faz com que os jogos rodem mais lentamente + Quando marcado, desabilita as funções do macro HLE. Habilitar esta opção faz com que os jogos rodem mais lentamente Disable Macro HLE - Desativar o Macro HLE + Desabilitar o Macro HLE @@ -2441,7 +2713,7 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele Enable Graphics Debugging - Ativar depuração de gráficos + Activar Depuração Gráfica @@ -2456,12 +2728,12 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele <html><head/><body><p>When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.</p></body></html> - <html><head/><body><p>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.</p></body></html> + <html><head/><body><p>Quando selecionado, desabilita a reordenação de uploads de memória mapeada, o que permite associar uploads com chamados específicos. Pode reduzir o desempenho em alguns casos.</p></body></html> Disable Buffer Reorder - Desativar a Reordenação de Buffer + Desabilitar a Reordenação de Buffer @@ -2471,17 +2743,17 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele 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. - Permite que o yuzu procure por um ambiente Vulkan funcional quando o programa iniciar. Desative essa opção se estiver causando conflitos com programas externos visualizando o yuzu. + Permite que o yuzu procure por um ambiente Vulkan funcional quando o programa iniciar. Desabilite essa opção se estiver causando conflitos com programas externos visualizando o yuzu. Perform Startup Vulkan Check - Executar Checagem do Vulkan na Inicialização + Executar checagem do Vulkan na inicialização Disable Web Applet - Desativar o applet da web + Desativar Web Applet @@ -2489,28 +2761,19 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele Ativar todos os tipos de controles - - Censor username in logs - - - - - **This will be reset automatically when eden closes. - - - - Enable Auto-Stub** - Ativar auto-esboço** + + Enable Auto-Stub + Kiosk (Quest) Mode - Modo quiosque (Quest) + Modo Quiosque (Quest) - Enable CPU Debugging - Ativar depuração de CPU + Use dev.keys + @@ -2523,43 +2786,74 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele Depuração - - Flush log output on each line - + + Battery Serial: + - + + Bitmask for quick development toggles + + + + + Set debug knobs (bitmask) + + + + + 16-bit debug knob set for quick development toggles + + + + + (bitmask) + + + + + Debug Knobs: + + + + + Unit Serial: + + + + + Enable this to output the latest generated audio command list to the console. Only affects games using the audio renderer. + Habilite essa opção para gravar a última saída da lista de comandos de áudio para o console. Somente afetará jogos que utilizam o renderizador de áudio. + + + + Dump Audio Commands To Console** + Despejar comandos de áudio no console** + + + + Flush log output on each line + + + + Enable FS Access Log Ativar acesso de registro FS - - Enable this to output the latest generated audio command list to the console. Only affects games using the audio renderer. - Ative essa opção para gravar a última saída da lista de comandos de áudio para o console. Somente afetará jogos que utilizam o renderizador de áudio. - - - - Enable Auto-Stub - - - - - Dump Audio Commands To Console** - Despejar Comandos de Áudio no Console** - - - + Enable Verbose Reporting Services** Ativar serviços de relatório detalhado** - **This will be reset automatically when yuzu closes. - **Isto será restaurado automaticamente assim que o yuzu for fechado. + + Censor username in logs + - - Web applet not compiled - Miniaplicativo Web não compilado + + **This will be reset automatically when Eden closes. + **Reseterá automaticamente quando o Eden fechar. @@ -2567,7 +2861,7 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele Configure Debug Controller - Configurar controle de depuração + Configurar Controlador de Depuração @@ -2577,7 +2871,7 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele Defaults - Padrão + Padrões @@ -2585,13 +2879,13 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele Form - Formulário + Forma Debug - Depuração + Depurar @@ -2601,103 +2895,99 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele ConfigureDialog - - yuzu Configuration - Configurações do yuzu - - eden Configuration - + Eden Configuration + Configurar Eden Some settings are only available when a game is not running. - Algumas configurações estão disponíveis apenas quando não houver nenhum jogo em execução. + Algumas configurações só estão disponíveis apenas quando não houver nenhum jogo em execução. - + Applets - Miniaplicativos + Applets - - + + Audio - Áudio + Audio - - + + CPU CPU - + Debug - Depuração + Depurar - + Filesystem - Sistema de arquivos + Sistema de Ficheiros - - + + General Geral - - + + Graphics Gráficos - - - GraphicsAdvanced - GráficosAvançado - - - - GraphicsExtensions - - - - - Hotkeys - Teclas de atalho - - - Controls - Controles + GraphicsAdvanced + GráficosAvançados + GraphicsExtra + + + + + Hotkeys + Teclas de Atalhos + + + + + Controls + Controlos + + + Profiles Perfis - + Network Rede - - + + System Sistema - + Game List - Lista de jogos + Lista de Jogos - + Web Rede @@ -2707,17 +2997,17 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele Form - Formulário + Formato Filesystem - Sistema de arquivos + Sistema de Ficheiros Storage Directories - Pastas de armazenamento + Diretórios de armazenamento @@ -2727,9 +3017,10 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele - - - + + + + ... ... @@ -2739,107 +3030,183 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele Cartão SD - + + Save Data + + + + Gamecard Cartão de jogo - + Path Caminho - + Inserted Inserido - - - Current Game - Jogo atual - + Current Game + Jogo Atual + + + Patch Manager - Gerenciador de patches + Gestor de Patch - + Dump Decompressed NSOs - Extrair NSOs descompactados + Dump NSOs Descompactados - + Dump ExeFS - Extrair ExeFS + Dump ExeFS - + Mod Load Root - Raiz de carregamento de mods + Raiz dos Mods - + Dump Root - Extrair raiz + Raiz do Dump - + Caching - Ajustes de cache + Armazenamento em cache - + Cache Game List Metadata - Metadados da lista de jogos em cache + Metadata da Lista de Jogos em Cache - - - - + Reset Metadata Cache - Restaurar cache de metadados - - - - Select Emulated NAND Directory... - Selecione a pasta da NAND emulada... - - - - Select Emulated SD Directory... - Selecione a pasta do SD emulado... - - - - Select Gamecard Path... - Selecione o local do Gamecard... - - - - Select Dump Directory... - Selecione a pasta de extração... + Restaurar o Cache de Metadados + Select Emulated NAND Directory... + Selecione o Diretório NAND Emulado... + + + + Select Emulated SD Directory... + Selecione o Diretório SD Emulado... + + + + + Select Save Data Directory... + + + + + Select Gamecard Path... + Selecione o Diretório do Cartão de Jogo... + + + + Select Dump Directory... + Selecionar o diretório do Dump... + + + Select Mod Load Directory... - Selecione a pasta de carregamento de mods... + Selecionar o Diretório do Mod Load ... - - The metadata cache is already empty. - O cache de metadados já está vazio. + + Save Data Directory + - - The operation completed successfully. - A operação foi concluída com sucesso. + + Choose an action for the save data directory: + - - The metadata cache couldn't be deleted. It might be in use or non-existent. - O cache de metadados não pôde ser excluído. Ele pode estar em uso no momento ou não existe. + + Set Custom Path + + + + + Reset to NAND + + + + + Save data exists in both the old and new locations. + +Old: %1 +New: %2 + +Would you like to migrate saves from the old location? +WARNING: This will overwrite any conflicting saves in the new location! + + + + + Would you like to migrate your save data to the new location? + +From: %1 +To: %2 + + + + + Migrate Save Data + + + + + Migrating save data... + + + + + Cancel + + + + + + Migration Failed + + + + + Failed to create destination directory. + + + + + Failed to migrate save data: +%1 + + + + + Migration Complete + + + + + Save data has been migrated successfully. + +Would you like to delete the old save data? + @@ -2847,7 +3214,7 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele Form - Formulário + Formato @@ -2857,27 +3224,53 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele - Linux - Linux + External Content + Conteúdo Externo - + + Add directories to scan for DLCs and Updates without installing to NAND + Adicionar diretórios para buscar DLCs e atualizações sem instalar na NAND + + + + Add Directory + Adicionar Diretório + + + + Remove Selected + Remover Selecionados(as) + + + Reset All Settings - Redefinir todas as configurações + Restaurar todas as configurações - yuzu - yuzu + + Eden + Eden - - eden - - - - + This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed? - Isto restaura todas as configurações e exclui as configurações individuais de todos os jogos. As pastas de jogos, perfis de jogos e perfis de controles não serão excluídos. Deseja prosseguir? + Isto restaura todas as configurações e remove as configurações específicas de cada jogo. As pastas de jogos, perfis de jogos e perfis de controlo não serão removidos. Continuar? + + + + Select External Content Directory... + Selecionar Diretório Externo de Conteúdo... + + + + Directory Already Added + Diretório Já Vinculado + + + + This directory is already in the list. + Diretório já presente na lista. @@ -2885,7 +3278,7 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele Form - Formulário + Formato @@ -2895,12 +3288,12 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele API Settings - Configurações de API + Definições API Graphics Settings - Configurações gráficas + Definições Gráficas @@ -2908,35 +3301,35 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele Cor de fundo: - + % FSR sharpening percentage (e.g. 50%) % - + Off Desligado - + VSync Off - Desligar VSync + Sincronização vertical desligada - + Recommended Recomendado - + On Ligado - + VSync On - Ligar VSync + Sincronização vertical ligada @@ -2944,7 +3337,7 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele Form - Formulário + Formato @@ -2952,9 +3345,9 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele Avançado - + Advanced Graphics Settings - Configurações gráficas avançadas + Definições de Gráficos Avançadas @@ -2962,24 +3355,38 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo dos controles, ele Form - Formulário + - Extensions - + Extras + - - Vulkan Extension Settings - + + Hacks + - - While it's recommended to use state 3, some games may perform better on lower states. Setting to 0 (disabled) may also break games. -If your GPU is older (i.e. RX570/580 or older), it may not support these features. If this is the case, set the slider to 0 and uncheck all boxes. -These settings are experimental, and may cause black screens. If your games fail to boot or are stuck on a black screen, change these settings around. - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + + + + + % + Sample Shading percentage (e.g. 50%) + % + + + + Extended Dynamic State is disabled on macOS due to MoltenVK compatibility issues that cause black screens. + @@ -2987,100 +3394,100 @@ These settings are experimental, and may cause black screens. If your games fail Hotkey Settings - Configurações de teclas de atalho + Definições de Teclas de Atalho Hotkeys - Teclas de atalho + Teclas de Atalhos Double-click on a binding to change it. - Clique duas vezes em um atalho para alterá-lo. + Clique duas vezes numa ligação para alterá-la. Clear All - Limpar tudo + Limpar Tudo Restore Defaults - Restaurar padrões + Restaurar Padrões - + Action Ação - + Hotkey - Atalho + Tecla de Atalho - + Controller Hotkey Atalho do controle - - - + + + Conflicting Key Sequence - Combinação de teclas já utilizada + Sequência de teclas em conflito - - + + The entered key sequence is already assigned to: %1 - A sequência de teclas pressionada já esta atribuída para: %1 + A sequência de teclas inserida já está atribuída a: %1 - + [waiting] - [aguardando] + [em espera] - + Invalid Inválido - + Invalid hotkey settings Configurações de atalho inválidas - + An error occurred. Please report this issue on github. - Houve um erro. Por favor relate o problema no GitHub. + Houve um erro. Relate o problema no GitHub. - + Restore Default - Restaurar padrão + Restaurar Padrão - + Clear Limpar - + Conflicting Button Sequence Sequência de botões conflitante - + The default button sequence is already assigned to: %1 A sequência de botões padrão já está vinculada a %1 - + The default key sequence is already assigned to: %1 - A sequência de teclas padrão já esta atribuida para: %1 + A sequência de teclas padrão já está atribuída a: %1 @@ -3147,12 +3554,12 @@ These settings are experimental, and may cause black screens. If your games fail Console Mode - Modo do console + Modo de Console Docked - Na base + Ancorado @@ -3178,7 +3585,7 @@ These settings are experimental, and may cause black screens. If your games fail Controllers - Controles + Comandos @@ -3241,7 +3648,7 @@ These settings are experimental, and may cause black screens. If your games fail Configure Input - Configurar entrada + Configurar Entrada @@ -3263,7 +3670,7 @@ These settings are experimental, and may cause black screens. If your games fail L Body - Joycon esq. + Comando Esq @@ -3287,7 +3694,7 @@ These settings are experimental, and may cause black screens. If your games fail R Body - Joycon dir. + Comando Dir @@ -3349,12 +3756,12 @@ These settings are experimental, and may cause black screens. If your games fail Mouse - Mouse + Rato Touchscreen - Touchscreen + Ecrã Táctil @@ -3364,7 +3771,7 @@ These settings are experimental, and may cause black screens. If your games fail Debug Controller - Controle de depuração + Controlador de Depuração @@ -3377,12 +3784,12 @@ These settings are experimental, and may cause black screens. If your games fail Ring Controller - Ring-Con + Controle anel Infrared Camera - Câmera Infravermelha + Câmera infravermelha @@ -3392,23 +3799,19 @@ These settings are experimental, and may cause black screens. If your games fail Emulate Analog with Keyboard Input - Emular analógico através do teclado + Emular entradas analógicas através de entradas do teclado - Requires restarting eden - - - - Requires restarting yuzu - Requer reiniciar o yuzu + Requires restarting Eden + Requer reiniciar o Eden Enable XInput 8 player support (disables web applet) - Ativar suporte para 8 jogadores XInput (desabilita o applet da web) + Ativar suporte para 8 jogadores XInput (desabilita o applet de rede) @@ -3423,27 +3826,27 @@ These settings are experimental, and may cause black screens. If your games fail Enable direct JoyCon driver - Ativar driver direto do JoyCon + Habilitar driver direto do JoyCon Enable direct Pro Controller driver [EXPERIMENTAL] - Ativar driver direto do Pro Controller [EXPERIMENTAL] + Habilitar driver direto do Pro Controller [EXPERIMENTAL] Allows unlimited uses of the same Amiibo in games that would otherwise limit you to one use. - Permite usos ilimitados do mesmo Amiibo em jogos que, de outra forma, limitariam você a um uso. + Permite acesso ilimitado ao mesmo Amiibo que limitam o seu uso. Use random Amiibo ID - Utilizar ID de Amiibo aleatório + Utilizar ID Amiibo aleatório Motion / Touch - Movimento/toque + Movimento / Toque @@ -3451,7 +3854,7 @@ These settings are experimental, and may cause black screens. If your games fail Form - Formulário + Forma @@ -3461,7 +3864,7 @@ These settings are experimental, and may cause black screens. If your games fail Input Profiles - Perfis de Controle + Perfis de controle @@ -3519,17 +3922,17 @@ These settings are experimental, and may cause black screens. If your games fail Configure Input - Configurar controles + Configurar Entrada Connect Controller - Conectar controle + Conectar Comando Input Device - Dispositivo de entrada + Dispositivo de Entrada @@ -3549,34 +3952,23 @@ These settings are experimental, and may cause black screens. If your games fail Delete - Excluir + Apagar - + Left Stick - Analógico esquerdo + Analógico Esquerdo - - - - - - - Up - Cima - - - - - - - - - - Left - Esquerda + + + + + + + Down + Baixo @@ -3590,14 +3982,25 @@ These settings are experimental, and may cause black screens. If your games fail Direita - - - - - - - Down - Baixo + + + + + + + + Left + Esquerda + + + + + + + + + Up + Cima @@ -3605,7 +4008,7 @@ These settings are experimental, and may cause black screens. If your games fail Pressed - Pressionado + Premido @@ -3631,26 +4034,18 @@ These settings are experimental, and may cause black screens. If your games fail Deadzone: 0% - Zona morta: 0% + Ponto Morto: 0% Modifier Range: 0% - Alcance de modificador: 0% + Modificador de Alcance: 0% D-Pad - D-pad - - - - - - - SL - SL + D-Pad @@ -3661,73 +4056,81 @@ These settings are experimental, and may cause black screens. If your games fail SR - - - - L - L + + + + + SL + SL - + ZL ZL + + + + + L + L + Minus Menos + + + + + Plus + Mais + + + + + + ZR + ZR + + + + + + + R + R + + + + Motion 1 + Movimento 1 + + + + Motion 2 + Movimento 2 + Capture Capturar - - - - - Plus - Mais - Home - Botão Home - - - - - - - R - R - - - - - - ZR - ZR - - - - Motion 1 - Movimentação 1 - - - - Motion 2 - Movimentação 2 + Home Face Buttons - Botões de rosto + Botôes de Rosto @@ -3736,10 +4139,10 @@ These settings are experimental, and may cause black screens. If your games fail X - - - Y - Y + + + B + B @@ -3748,16 +4151,16 @@ These settings are experimental, and may cause black screens. If your games fail A - - - B - B + + + Y + Y - + Right Stick - Analógico direito + Analógico Direito @@ -3770,242 +4173,242 @@ These settings are experimental, and may cause black screens. If your games fail Configurar - - - - + + + + Clear Limpar - - - - - + + + + + [not set] [não definido] - - - + + + Invert button Inverter botão - - + + Toggle button Alternar pressionamento do botão - + Turbo button Botão Turbo - - + + Invert axis Inverter eixo - - - + + + Set threshold Definir limite - - + + Choose a value between 0% and 100% Escolha um valor entre 0% e 100% - + Toggle axis Alternar eixos - + Set gyro threshold Definir limite do giroscópio - + Calibrate sensor Calibrar sensor - + Map Analog Stick - Mapear analógico + Mapear analógicos - + After pressing OK, first move your joystick horizontally, and then vertically. To invert the axes, first move your joystick vertically, and then horizontally. - Após pressionar OK, mova o seu direcional analógico primeiro horizontalmente e depois verticalmente. -Para inverter os eixos, mova seu analógico primeiro verticalmente e depois horizontalmente. + Após pressionar OK, mova o seu analógico primeiro horizontalmente e depois verticalmente. +Para inverter os eixos, mova o seu analógico primeiro verticalmente e depois horizontalmente. - + Center axis Eixo central - - + + Deadzone: %1% - Zona morta: %1% + Ponto Morto: %1% - - + + Modifier Range: %1% - Alcance de modificador: %1% + Modificador de Alcance: %1% - - + + Pro Controller - Pro Controller + Comando Pro - + Dual Joycons - Par de Joycons + Joycons Duplos - + Left Joycon Joycon Esquerdo - + Right Joycon Joycon Direito - + Handheld Portátil - + GameCube Controller - Controle de GameCube + Controlador de depuração - + Poke Ball Plus Poke Ball Plus - + NES Controller Controle NES - + SNES Controller Controle SNES - + N64 Controller Controle N64 - + Sega Genesis Mega Drive - + Start / Pause Iniciar / Pausar - + Z Z - + Control Stick Direcional de controle - + C-Stick C-Stick - + Shake! - Balance! + Abane! - + [waiting] - [esperando] + [em espera] - + New Profile - Novo perfil + Novo Perfil - + Enter a profile name: - Insira um nome para o perfil: + Introduza um novo nome de perfil: + + + + + Create Input Profile + Criar perfil de controlo - - Create Input Profile - Criar perfil de controle - - - The given profile name is not valid! - O nome de perfil inserido não é válido! + O nome de perfil dado não é válido! - + Failed to create the input profile "%1" - Falha ao criar o perfil de controle "%1" + Falha ao criar o perfil de controlo "%1" + + + + Delete Input Profile + Apagar Perfil de Controlo - Delete Input Profile - Excluir perfil de controle + Failed to delete the input profile "%1" + Falha ao apagar o perfil de controlo "%1" - - Failed to delete the input profile "%1" - Falha ao excluir o perfil de controle "%1" + + Load Input Profile + Carregar perfil de controlo - Load Input Profile - Carregar perfil de controle - - - Failed to load the input profile "%1" - Falha ao carregar o perfil de controle "%1" + Falha ao carregar o perfil de controlo "%1" - + Save Input Profile Salvar perfil de controle - + Failed to save the input profile "%1" Falha ao salvar o perfil de controle "%1" @@ -4015,7 +4418,7 @@ Para inverter os eixos, mova seu analógico primeiro verticalmente e depois hori Create Input Profile - Criar perfil de controle + Criar perfil de controlo @@ -4028,21 +4431,12 @@ Para inverter os eixos, mova seu analógico primeiro verticalmente e depois hori Padrões - - ConfigureLinuxTab - - - - Linux - Linux - - ConfigureMotionTouch Configure Motion / Touch - Configurar movimento/toque + Configurar Movimento / Toque @@ -4052,7 +4446,7 @@ Para inverter os eixos, mova seu analógico primeiro verticalmente e depois hori UDP Calibration: - Calibração UDP + Calibração UDP: @@ -4062,7 +4456,7 @@ Para inverter os eixos, mova seu analógico primeiro verticalmente e depois hori - + Configure Configurar @@ -4074,12 +4468,12 @@ Para inverter os eixos, mova seu analógico primeiro verticalmente e depois hori CemuhookUDP Config - Configuração CemuhookUDP + Configurar CemuhookUDP You may use any Cemuhook compatible UDP input source to provide motion and touch input. - Você pode utilizar qualquer dispositivo de entrada compatível com o Cemuhook UDP para prover dados de movimento e toque. + Podes usar qualquer fonte de entrada UDP compatível com Cemuhook para fornecer entradas de toque e movimento. @@ -4092,113 +4486,95 @@ Para inverter os eixos, mova seu analógico primeiro verticalmente e depois hori Porta: - - Learn More - Saiba mais - - - - + + Test - Teste + Testar - + Add Server - Adicionar servidor + Adicionar Servidor - + Remove Server - Excluir servidor + Remover Servidor - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Saiba mais</span></a> - - - + %1:%2 %1:%2 - yuzu - yuzu + + + + + + + Eden + Eden - - <a href='https://eden-emulator.github.io/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - - - - + Port number has invalid characters O número da porta tem caracteres inválidos - - - - - - - eden - - - - + Port has to be in range 0 and 65353 A porta tem que estar entre 0 e 65353 - + IP address is not valid O endereço IP não é válido - + This UDP server already exists Este servidor UDP já existe - + Unable to add more than 8 servers Não é possível adicionar mais de 8 servidores - + Testing Testando - + Configuring Configurando - + Test Successful - Teste bem-sucedido + Teste Bem-Sucedido - + Successfully received data from the server. - Dados foram recebidos do servidor com sucesso. + Dados recebidos do servidor com êxito. - + Test Failed - O teste falhou + Teste Falhou - + Could not receive valid data from the server.<br>Please verify that the server is set up correctly and the address and port are correct. - Não foi possível receber dados válidos do servidor.<br>Verifique se o servidor foi configurado corretamente e o endereço e porta estão corretos. + Não foi possível receber dados válidos do servidor.<br>Por favor verifica que o servidor está configurado correctamente e o endereço e porta estão correctos. - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. - Um teste UDP ou configuração de calibração está em curso no momento.<br>Aguarde até a sua conclusão. + Teste UDP ou configuração de calibragem em progresso.<br> Por favor espera que termine. @@ -4206,17 +4582,17 @@ Para inverter os eixos, mova seu analógico primeiro verticalmente e depois hori Configure mouse panning - Configurar movimentação panorâmica do mouse + Configurar mouse panorâmico Enable mouse panning - Ativar mouse panorâmico + Ativar o giro do mouse Can be toggled via a hotkey. Default hotkey is Ctrl + F9 - Pode ser ativado e desativado com um atalho de teclado. O atalho padrão é Ctrl + F9. + Pode ser alternado através de um atalho de teclado. O atalho padrão é Ctrl + F9. @@ -4245,7 +4621,7 @@ Para inverter os eixos, mova seu analógico primeiro verticalmente e depois hori Deadzone counterweight - Neutralização de zona morta + Contrapeso da zona morta @@ -4292,12 +4668,12 @@ Os valores atuais são %1% e %2% respectivamente. Emulated mouse is enabled - O mouse emulado está ativado + Mouse emulado está habilitado Real mouse input and mouse panning are incompatible. Please disable the emulated mouse in input advanced settings to allow mouse panning. - O mouse real e o mouse panorâmico são incompatíveis. Por favor desative o mouse emulado em configurações avançadas de controles para permitir o mouse panorâmico. + Controle de mouse real e controle panorâmico do mouse são incompatíveis. Por favor desabilite a emulação do mouse em configurações avançadas de controles para permitir o controle panorâmico do mouse. @@ -4305,7 +4681,7 @@ Os valores atuais são %1% e %2% respectivamente. Form - Formulário + Forma @@ -4323,9 +4699,9 @@ Os valores atuais são %1% e %2% respectivamente. Interface de rede - - None - Nenhum + + Enable Airplane Mode + @@ -4338,7 +4714,7 @@ Os valores atuais são %1% e %2% respectivamente. Info - Informações + Informação @@ -4348,12 +4724,12 @@ Os valores atuais são %1% e %2% respectivamente. Title ID - ID do título + ID de Título Filename - Nome do arquivo + Nome de Ficheiro @@ -4378,52 +4754,57 @@ Os valores atuais são %1% e %2% respectivamente. Some settings are only available when a game is not running. - Algumas configurações estão disponíveis apenas quando não houver nenhum jogo em execução. + Algumas configurações só estão disponíveis apenas quando não houver nenhum jogo em execução. - + Add-Ons - Adicionais + Add-Ons - + System Sistema - + CPU CPU - + Graphics Gráficos - + Adv. Graphics - Gráf. avançados + Gráficos Avç. - - GPU Extensions - + + Ext. Graphics + - + Audio - Áudio + Audio - + Input Profiles - Perfis de Controle + Perfis de controle - Linux - Linux + Network + + + + + Applets + Applets @@ -4436,30 +4817,125 @@ Os valores atuais são %1% e %2% respectivamente. Form - Formulário + Forma Add-Ons - Adicionais + Add-Ons - + + Import Mod from ZIP + + + + + Import Mod from Folder + + + + Patch Name - Nome do patch + Nome da Patch - + Version Versão + + + Mod Install Succeeded + + + + + Successfully installed all mods. + + + + + Mod Install Failed + + + + + Failed to install the following mods: + %1 +Check the log for details. + + + + + Mod Folder + + + + + Zipped Mod Location + + + + + Zipped Archives (*.zip) + + + + + Invalid Selection + + + + + Only mods, cheats, and patches can be deleted. +To delete NAND-installed updates, right-click the game in the game list and click Remove -> Remove Installed Update. + + + + + You are about to delete the following installed mods: + + + + + + +Once deleted, these can NOT be recovered. Are you 100% sure you want to delete them? + + + + + Delete add-on(s)? + + + + + Successfully deleted + + + + + Successfully deleted all selected mods. + + + + + &Delete + + + + + &Open in File Manager + + ConfigureProfileManager Form - Formulário + Formato @@ -4469,45 +4945,30 @@ Os valores atuais são %1% e %2% respectivamente. Profile Manager - Gerenciador de perfis + Gestor de Perfis Current User - Usuário atual + Utilizador Atual Username - Nome de usuário + Nome de Utilizador - - Set Image - Definir imagem - - - + Add Adicionar - - Rename - Renomear - - - - Remove - Excluir - - - + Profile management is available only when game is not running. - Esta tela só fica disponível apenas quando não houver nenhum jogo em execução. + O gestor de perfis só está disponível apenas quando o jogo não está em execução. - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -4515,100 +4976,80 @@ Os valores atuais são %1% e %2% respectivamente. %2 - - Enter Username - Escreva o nome de usuário - - - + Users - Usuários + Utilizadores - - Enter a username for the new user: - Digite o nome do novo usuário: - - - - Enter a new username: - Digite um novo nome de usuário: - - - - Select User Image - Selecione a imagem do usuário - - - - JPEG Images (*.jpg *.jpeg) - Imagens JPEG (*.jpg *.jpeg) - - - + Error deleting image - Erro ao excluir a imagem + Error ao eliminar a imagem - + Error occurred attempting to overwrite previous image at: %1. - Ocorreu um erro ao tentar substituir a imagem anterior em: %1. + Ocorreu um erro ao tentar substituir imagem anterior em: %1. - + Error deleting file - Erro ao excluir arquivo + Erro ao eliminar o arquivo - + Unable to delete existing file: %1. - Não foi possível excluir o arquivo existente: %1. + Não é possível eliminar o arquivo existente: %1. - + Error creating user image directory - Erro ao criar a pasta de imagens do usuário + Erro ao criar o diretório de imagens do utilizador - + Unable to create directory %1 for storing user images. - Não foi possível criar a pasta %1 para armazenar as imagens do usuário. + Não é possível criar o diretório %1 para armazenar imagens do utilizador. - - Error copying user image - Erro ao copiar a imagem do usuário + + Error saving user image + - - Unable to copy image from %1 to %2 - Não foi possível copiar a imagem de %1 para %2 + + Unable to save image to file + - - Error resizing user image - Erro no redimensionamento da imagem do usuário + + &Edit + - - Unable to resize image - Não foi possível redimensionar a imagem + + &Delete + + + + + Edit User + ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. - Apagar esse usuário? Todos os dados salvos desse usuário serão removidos. + Excluir esse usuário? Todos os dados salvos desse usuário serão removidos. - + Confirm Delete - Confirmar exclusão + Confirmar para eliminar - + Name: %1 UUID: %2 Nome: %1 @@ -4620,7 +5061,7 @@ UUID: %2 Configure Ring Controller - Configurar Ring-Con + Configurar controle anel @@ -4630,7 +5071,7 @@ UUID: %2 Virtual Ring Sensor Parameters - Parâmetros do Ring Sensor Virtual + Parâmetros do Sensor de Anel @@ -4647,7 +5088,7 @@ UUID: %2 Deadzone: 0% - Zona morta: 0% + Ponto Morto: 0% @@ -4657,90 +5098,90 @@ UUID: %2 Enable Ring Input - Ativar Comandos do Ring-Con + Habilitar Controle de Anel - + Enable - Ativar + Habilitar Ring Sensor Value - Valor do Ring Sensor + Valor do Sensor de Anel - + Not connected Não conectado Restore Defaults - Restaurar padrões + Restaurar Padrões - + Clear Limpar - + [not set] [não definido] - + Invert axis Inverter eixo - - + + Deadzone: %1% - Zona morta: %1% + Ponto Morto: %1% - + Error enabling ring input - Erro ao ativar o comando do Ring-Con + Erro habilitando controle de anel - + Direct Joycon driver is not enabled - Driver direto do Joycon não está ativado + Driver direto do Joycon não está habilitado - + Configuring Configurando - + The current mapped device doesn't support the ring controller - O dispositivo atualmente mapeado não suporta o Ring-Con - - - - The current mapped device doesn't have a ring attached - O dispositivo mapeado não tem um Ring-Con conectado + O dispositivo atualmente mapeado não suporta o controle de anel + The current mapped device doesn't have a ring attached + O dispositivo mapeado não tem um anel conectado + + + The current mapped device is not connected O dispositivo atualmente mapeado não está conectado - + Unexpected driver result %1 Resultado inesperado do driver %1 - + [waiting] - [aguardando] + [em espera] @@ -4748,7 +5189,7 @@ UUID: %2 Form - Formulário + Formato @@ -4762,7 +5203,7 @@ UUID: %2 Core - + Warning: "%1" is not a valid language for region "%2" Aviso: "%1" não é um idioma válido para a região "%2" @@ -4774,14 +5215,10 @@ UUID: %2 TAS TAS - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the yuzu website.</p></body></html> - <html><head/><body><p>Lê entradas de controle a partir de scripts no mesmo formato que TAS-nx. <br/>Para uma explicação mais detalhada, por favor consulte a <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">página de ajuda</span></a> no website do yuzu.</p></body></html> - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the eden website.</p></body></html> - + <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the user handbook.</p></body></html> + @@ -4814,17 +5251,22 @@ UUID: %2 Pausar execução durante carregamentos - + + Show recording dialog + + + + Script Directory Diretório do script - + Path Caminho - + ... ... @@ -4832,12 +5274,12 @@ UUID: %2 ConfigureTasDialog - + TAS Configuration Configurar TAS - + Select TAS Load Directory... Selecionar diretório de carregamento TAS @@ -4847,7 +5289,7 @@ UUID: %2 Configure Touchscreen Mappings - Configurar mapeamento de toque + Configurar Mapeamentos de Ecrã Tátil @@ -4862,7 +5304,7 @@ UUID: %2 Delete - Excluir + Apagar @@ -4873,18 +5315,18 @@ UUID: %2 Click the bottom area to add a point, then press a button to bind. Drag points to change position, or double-click table cells to edit values. - Clique na área inferior para adicionar um ponto, e então pressione um botão para mapear. -Mova os pontos para mudar a posição, ou clique duas vezes nas células da tabela para editar os valores. + Clica na área inferior para adicionar um ponto, depois prime um butão para associar. +Arrasta os pontos para mudar a posição, ou dá duplo-clique nas células da tabela para editar valores. Delete Point - Excluir ponto + Apagar Ponto Button - Botão + Butão @@ -4901,27 +5343,27 @@ Mova os pontos para mudar a posição, ou clique duas vezes nas células da tabe New Profile - Novo perfil + Novo Perfil Enter the name for the new profile. - Insira o nome do novo perfil. + Escreve o nome para o novo perfil. Delete Profile - Excluir perfil + Apagar Perfil Delete profile %1? - Excluir perfil %1? + Apagar perfil %1? Rename Profile - Renomear perfil + Renomear Perfil @@ -4931,7 +5373,7 @@ Mova os pontos para mudar a posição, ou clique duas vezes nas células da tabe [press key] - [pressione a tecla] + [premir tecla] @@ -4939,31 +5381,27 @@ Mova os pontos para mudar a posição, ou clique duas vezes nas células da tabe Configure Touchscreen - Configurar tela de toque - - - Warning: The settings in this page affect the inner workings of yuzu's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - Aviso: Os ajustes nesta página afetam o funcionamento interno da tela de toque emulada do yuzu. Alterá-los pode resultar em comportamentos indesejáveis, tais como a tela de toque funcionar parcialmente ou não responder por completo. Apenas faça alterações caso você saiba o que está fazendo. + Configurar Ecrã Táctil - Warning: The settings in this page affect the inner workings of eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - + Warning: The settings in this page affect the inner workings of Eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. + Touch Parameters - Parâmetros de toque + Parâmetros de Toque Touch Diameter Y - Diâmetro de toque Y + Diâmetro de Toque Y Touch Diameter X - Diâmetro de toque X + Diâmetro de Toque X @@ -4973,70 +5411,49 @@ Mova os pontos para mudar a posição, ou clique duas vezes nas células da tabe Restore Defaults - Restaurar padrões + Restaurar Padrões ConfigureUI - - - + + None Nenhum - - - Small (32x32) - Pequeno (32x32) - - Standard (64x64) - Padrão (64x64) - - - - Large (128x128) - Grande (128x128) - - - - Full Size (256x256) - Tamanho completo (256x256) - - - Small (24x24) Pequeno (24x24) - + Standard (48x48) Padrão (48x48) - + Large (72x72) Grande (72x72) - + Filename - Nome do arquivo + Nome de Ficheiro - + Filetype Tipo de arquivo - + Title ID - ID do título + ID de Título - + Title Name Nome do título @@ -5046,12 +5463,12 @@ Mova os pontos para mudar a posição, ou clique duas vezes nas células da tabe Form - Formulário + Formato UI - Interface + IU @@ -5061,7 +5478,7 @@ Mova os pontos para mudar a posição, ou clique duas vezes nas células da tabe Note: Changing language will apply your configuration. - Nota: alterar o idioma aplicará as suas configurações. + Nota: Alterar o idioma aplicará sua configuração. @@ -5076,100 +5493,95 @@ Mova os pontos para mudar a posição, ou clique duas vezes nas células da tabe Game List - Lista de jogos + Lista de Jogos Show Compatibility List - Mostrar Lista de Compatibilidade + Exibir Lista de Compatibilidade Show Add-Ons Column - Mostrar coluna de adicionais + Mostrar coluna de Add-Ons Show Size Column - Exibir a Coluna Tamanho + Exibir Coluna Tamanho Show File Types Column - Exibir a Coluna Tipos de Arquivos + Exibir Coluna Tipos de Arquivos Show Play Time Column - Exibir coluna Tempo Jogado + Exibir coluna Tempo jogado - Game Icon Size: - Tamanho do ícone do jogo: - - - Folder Icon Size: Tamanho do ícone da pasta: - + Row 1 Text: - Texto da 1ª linha: + Linha 1 Texto: - + Row 2 Text: - Texto da 2ª linha: + Linha 2 Texto: - + Screenshots - Capturas de tela + Captura de Ecrã - + Ask Where To Save Screenshots (Windows Only) - Perguntar onde salvar capturas de tela (apenas Windows) + Perguntar Onde Guardar Capturas de Tela (Apenas Windows) - + Screenshots Path: - Pasta para capturas de tela: + Caminho das Capturas de Ecrã: - + ... ... - + TextLabel TextLabel - + Resolution: Resolução: - + Select Screenshots Path... - Selecione a pasta de capturas de tela... + Seleccionar Caminho de Capturas de Ecrã... - + <System> <System> - + English Inglês - + Auto (%1 x %2, %3 x %4) Screenshot width value Auto (%1 x %2, %3 x %4) @@ -5260,175 +5672,183 @@ Mova os pontos para mudar a posição, ou clique duas vezes nas células da tabe Form - Formulário + Formato Web - Web - - - yuzu Web Service - yuzu Web Service - - - By providing your username and token, you agree to allow yuzu to collect additional usage data, which may include user identifying information. - Ao informar seu usuário e token, você concorda em permitir ao yuzu recolher dados de uso adicionais, que podem incluir informações de identificação de usuário. + Rede - eden Web Service - + Eden Web Service + - - By providing your username and token, you agree to allow eden to collect additional usage data, which may include user identifying information. - - - - - Verify - Verificar - - - - Sign up - Cadastrar-se - - - + Token: - Token: + Token: - + Username: Nome de usuário: - - What is my token? - Qual é o meu token? + + Generate + - + Web Service configuration can only be changed when a public room isn't being hosted. - A configuração do Serviço Web só pode ser alterada quando uma sala pública não está sendo hospedada. + Configurações de Serviço de Rede só podem ser alteradas quando uma sala pública não está sendo hospedada. - Telemetry - Telemetria - - - Share anonymous usage data with the yuzu team - Compartilhar anonimamente dados de uso com a equipe do yuzu - - - Learn more - Saiba mais - - - Telemetry ID: - ID de telemetria: - - - Regenerate - Gerar um novo - - - + Discord Presence - Presença no Discord + Presença do Discord - + Show Current Game in your Discord Status - Mostrar o jogo atual no seu status do Discord - - - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Saiba mais</span></a> - - - - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Cadastrar-se</span></a> - - - - <a href='https://evilperson1337.notion.site/Hosting-a-Room-Inside-of-Eden-20457c2edaf680108abac6215a79acdb'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - - - - - Warning - + Mostrar o Jogo Atual no seu Estado de Discord + - Verification is currently nonfunctional, instead generate a random 48-character string with only lowercase a-z. - - - - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">Qual é o meu token?</span></a> - - - Telemetry ID: 0x%1 - ID de telemetria: 0x%1 - - - Unspecified - Não especificado - - - Token not verified - Token não verificado - - - Token was not verified. The change to your token has not been saved. - O token não foi verificado. A alteração no seu token não foi salva. - - - - Unverified, please click Verify before saving configuration + All Good Tooltip - Não verificado, por favor clique sobre Verificar antes de salvar as configurações + - Verifying... - Verificando... - - - Verified + + Must be between 4-20 characters Tooltip - Verificado + - Verification failed + + Must be 48 characters, and lowercase a-z Tooltip - Falha na verificação - - - Verification failed - Falha na verificação - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - Falha na verificação. Verifique se o seu token foi inserido corretamente e se a sua conexão à internet está funcionando. + ControllerDialog - + Controller P1 - Controle J1 + Comando J1 - + &Controller P1 - &Controle J1 + &Comando J1 + + + + DataDialog + + + Data Manager + + + + + Deleting ANY data is IRREVERSABLE! + + + + + Shaders + Shaders + + + + UserNAND + UserNAND + + + + SysNAND + SysNAND + + + + Mods + Mods + + + + Saves + + + + + DataWidget + + + Form + + + + + Tooltip + + + + + Open with your system file manager + + + + + Delete all data in this directory. THIS IS 100% IRREVERSABLE! + + + + + Export all data in this directory. This may take a while! + + + + + Import data for this directory. This may take a while, and will delete ALL EXISTING DATA! + + + + + Calculating... + + + + + DepsDialog + + + Eden Dependencies + Dependências do Eden + + + + <html><head/><body><p><span style=" font-size:28pt;">Eden Dependencies</span></p></body></html> + <html><head/><body><p><span style=" font-size:28pt;">Dependências do Eden</span></p></body></html> + + + + <html><head/><body><p>The projects that make Eden possible</p></body></html> + <html><head/><body><p>Os projetos que fazem o Eden possível</p></body></html> + + + + Dependency + + + + + Version + @@ -5446,7 +5866,7 @@ Mova os pontos para mudar a posição, ou clique duas vezes nas células da tabe <html><head/><body><p>Server address of the host</p></body></html> - <html><head/><body><p>Endereço do servidor que fará a hospedagem</p></body></html> + <html><head/><body><p>Endereço de servidor do anfitrião</p></body></html> @@ -5492,1519 +5912,152 @@ Mova os pontos para mudar a posição, ou clique duas vezes nas células da tabe Username is not valid. Must be 4 to 20 alphanumeric characters. - Nome de usuário inválido. Deve conter de 4 a 20 caracteres alfanuméricos. + Room name is not valid. Must be 4 to 20 alphanumeric characters. - Nome da sala inválido. Deve conter de 4 a 20 caracteres alfanuméricos. + Username is already in use or not valid. Please choose another. - Nome de usuário já está em uso ou não é válido. Por favor escolha outro nome de usuário. + IP is not a valid IPv4 address. - O endereço IP não é um endereço IPv4 válido. + Port must be a number between 0 to 65535. - Porta deve ser um número entre 0 e 65535. + You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - Você deve escolher um Jogo Preferido para hospedar uma sala. Se você não possui nenhum jogo na sua lista ainda, adicione um diretório de jogos clicando no ícone de mais na lista de jogos. + Você deve escolher um Jogo Preferencial para hospedar uma sala. Se você ainda não possui nenhum jogo na sua lista, adicione uma pasta de jogos clicando no 'ícone de mais' na lista de jogos. Unable to find an internet connection. Check your internet settings. - Não foi possível encontrar uma conexão com a internet. Verifique suas configurações de internet. + Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - Não foi possível conectar no host. Verifique se as configurações de conexão estão corretas. Se você ainda não conseguir conectar, entre em contato com o anfitrião da sala e verifique se o host está configurado corretamente com a porta externa redirecionada. + Não foi possível conectar ao anfitrião. Verifique se as configurações de conexão estão corretas. Se você ainda não conseguir se conectar, entre em contato com o anfitrião da sala e verifique se ele está configurado corretamente com o encaminhamento de porta externa. Unable to connect to the room because it is already full. - Não foi possível conectar na sala porque ela já está cheia. + - Creating a room failed. Please retry. Restarting eden might be necessary. - + Creating a room failed. Please retry. Restarting Eden might be necessary. + Falha ao criar sala. Tente novamente. Reiniciar o Eden pode ser necessário. The host of the room has banned you. Speak with the host to unban you or try a different room. - O anfitrião da sala baniu você. Fale com o anfitrião para que ele remova seu banimento ou tente uma sala diferente. + - Version mismatch! Please update to the latest version of eden. If the problem persists, contact the room host and ask them to update the server. - + Version mismatch! Please update to the latest version of Eden. If the problem persists, contact the room host and ask them to update the server. + Incompatibilidade de versão! Por favor, atualize para a versão mais recente do Eden. Se o problema persistir, entre em contato com o anfitrião da sala e peça para que atualize o servidor. Incorrect password. - Senha inválda. + An unknown error occurred. If this error continues to occur, please open an issue - Ocorreu um erro desconhecido. Se esse erro continuar ocorrendo, recomendamos abrir uma issue. + Connection to room lost. Try to reconnect. - Conexão com a sala encerrada. Tente reconectar. + You have been kicked by the room host. - Você foi expulso(a) pelo anfitrião da sala. + IP address is already in use. Please choose another. - Este endereço IP já está em uso. Por favor, escolha outro. + You do not have enough permission to perform this action. - Você não tem permissão suficiente para realizar esta ação. + The user you are trying to kick/ban could not be found. They may have left the room. - O usuário que você está tentando expulsar/banir não pôde ser encontrado. -Essa pessoa pode já ter saído da sala. + No valid network interface is selected. Please go to Configure -> System -> Network and make a selection. - Nenhuma interface de rede válida foi detectada. -Vá para Configurar -> Sistema -> Rede e selecione uma. + Error - Erro - - - - GMainWindow - - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Anonymous data is collected</a> to help improve yuzu. <br/><br/>Would you like to share your usage data with us? - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Dados anônimos são recolhidos</a> para ajudar a melhorar o yuzu. <br/><br/>Gostaria de compartilhar os seus dados de uso conosco? - - - Telemetry - Telemetria - - - - Broken Vulkan Installation Detected - Detectada Instalação Defeituosa do Vulkan - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - A inicialização do Vulkan falhou durante a execução. <br><br>Clique <a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>aqui para instruções de como resolver o problema</a>. - - - - Running a game - TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping - Rodando um jogo - - - - Loading Web Applet... - Carregando applet web... - - - - - Disable Web Applet - Desativar o applet da web - - - - 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.) - 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.) - - - - The amount of shaders currently being built - A quantidade de shaders sendo construídos - - - - The current selected resolution scaling multiplier. - O atualmente multiplicador de escala de resolução selecionado. - - - - Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. - 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. - - - - How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. - Quantos quadros por segundo o jogo está exibindo atualmente. Isto irá variar de jogo para jogo e cena para cena. - - - - 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. - 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. - - - - Unmute - Tirar do mudo - - - - Mute - Mudo - - - - Reset Volume - Redefinir volume - - - - &Clear Recent Files - &Limpar arquivos recentes - - - - &Continue - &Continuar - - - - &Pause - &Pausar - - - - Warning Outdated Game Format - Aviso - formato de jogo desatualizado - - - 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.<br><br>For an explanation of the various Switch formats yuzu supports, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - 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.<br><br>Para saber mais sobre os vários formatos de ROMs de Switch compatíveis com o yuzu, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>confira a nossa wiki</a>. Esta mensagem não será exibida novamente. - - - - - Error while loading ROM! - Erro ao carregar a ROM! - - - - The ROM format is not supported. - O formato da ROM não é suportado. - - - - An error occurred initializing the video core. - Ocorreu um erro ao inicializar o núcleo de vídeo. - - - 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: <a href='https://yuzu-emu.org/help/reference/log-files/'>How to Upload the Log File</a>. - 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: <a href='https://yuzu-emu.org/help/reference/log-files/'>Como fazer envio de arquivo de registro</a>. - - - - Error while loading ROM! %1 - %1 signifies a numeric error code. - Erro ao carregar a ROM! %1 - - - %1<br>Please follow <a href='https://yuzu-emu.org/help/quickstart/'>the yuzu quickstart guide</a> to redump your files.<br>You can refer to the yuzu wiki</a> or the yuzu Discord</a> for help. - %1 signifies an error string. - %1<br>Por favor, siga <a href='https://yuzu-emu.org/help/quickstart/'>o guia de início rápido</a> para reextrair os seus arquivos.<br>Você pode consultar a wiki do yuzu</a> ou o Discord do yuzu</a> para obter ajuda. - - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://eden-emulator.github.io/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - - - - - Game Updates Warning - - - - - The game you are trying to launch is known to have performance or booting issues when updates are applied. Please try increasing the memory layout to 6GB or 8GB if any issues occur.<br><br>Press "OK" to continue launching, or "Cancel" to cancel the launch. - - - - - Don't show again for this game - - - - - 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.<br><br>For an explanation of the various Switch formats eden supports, <a href='https://eden-emulator.github.io/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - - - - - eden 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: <a href='https://eden-emulator.github.io/help/reference/log-files/'>How to Upload the Log File</a>. - - - - - %1<br>Please redump your files or ask on Discord for help. - %1 signifies an error string. - - - - - An unknown error occurred. Please see the log for more details. - Ocorreu um erro desconhecido. Consulte o registro para mais detalhes. - - - - (64-bit) - (64-bit) - - - - (32-bit) - (32-bit) - - - - %1 %2 - %1 is the title name. %2 indicates if the title is 64-bit or 32-bit - %1 %2 - - - - Closing software... - Encerrando software... - - - - Save Data - Dados de jogos salvos - - - - Mod Data - Dados de mods - - - - Error Opening %1 Folder - Erro ao abrir a pasta %1 - - - - - Folder does not exist! - A pasta não existe! - - - - Error Opening Transferable Shader Cache - Erro ao abrir o cache de shaders transferível - - - - Failed to create the shader cache directory for this title. - Falha ao criar o diretório de cache de shaders para este título. - - - - Error Removing Contents - Erro ao Remover Conteúdos - - - - Error Removing Update - Erro ao Remover Atualização - - - - Error Removing DLC - Erro ao Remover DLC - - - - Remove Installed Game Contents? - Remover Conteúdo do Jogo Instalado? - - - - Remove Installed Game Update? - Remover Atualização do Jogo Instalada? - - - - Remove Installed Game DLC? - Remover DLC do Jogo Instalada? - - - - Remove Entry - Remover item - - - - - - - - - Successfully Removed - Removido com sucesso - - - - Successfully removed the installed base game. - O jogo base foi removido com sucesso. - - - - The base game is not installed in the NAND and cannot be removed. - O jogo base não está instalado na NAND e não pode ser removido. - - - - Successfully removed the installed update. - A atualização instalada foi removida com sucesso. - - - - There is no update installed for this title. - Não há nenhuma atualização instalada para este título. - - - - There are no DLC installed for this title. - Não há nenhum DLC instalado para este título. - - - - Successfully removed %1 installed DLC. - %1 DLC(s) instalados foram removidos com sucesso. - - - - Delete OpenGL Transferable Shader Cache? - Apagar o cache de shaders transferível do OpenGL? - - - - Delete Vulkan Transferable Shader Cache? - Apagar o cache de shaders transferível do Vulkan? - - - - Delete All Transferable Shader Caches? - Apagar todos os caches de shaders transferíveis? - - - - Remove Custom Game Configuration? - Remover configurações customizadas do jogo? - - - - Remove Cache Storage? - Remover Armazenamento do Cache? - - - - Remove File - Remover arquivo - - - - Remove Play Time Data - Remover Dados de Tempo Jogado - - - - Reset play time? - Deseja mesmo redefinir o tempo jogado? - - - - - Error Removing Transferable Shader Cache - Erro ao remover cache de shaders transferível - - - - - A shader cache for this title does not exist. - Não existe um cache de shaders para este título. - - - - Successfully removed the transferable shader cache. - O cache de shaders transferível foi removido com sucesso. - - - - Failed to remove the transferable shader cache. - Falha ao remover o cache de shaders transferível. - - - - Error Removing Vulkan Driver Pipeline Cache - Erro ao Remover Cache de Pipeline do Driver Vulkan - - - - Failed to remove the driver pipeline cache. - Falha ao remover o pipeline de cache do driver. - - - - - Error Removing Transferable Shader Caches - Erro ao remover os caches de shaders transferíveis - - - - Successfully removed the transferable shader caches. - Os caches de shaders transferíveis foram removidos com sucesso. - - - - Failed to remove the transferable shader cache directory. - Falha ao remover o diretório do cache de shaders transferível. - - - - - Error Removing Custom Configuration - Erro ao remover as configurações customizadas do jogo. - - - - A custom configuration for this title does not exist. - Não há uma configuração customizada para este título. - - - - Successfully removed the custom game configuration. - As configurações customizadas do jogo foram removidas com sucesso. - - - - Failed to remove the custom game configuration. - Falha ao remover as configurações customizadas do jogo. - - - - - RomFS Extraction Failed! - Falha ao extrair RomFS! - - - - There was an error copying the RomFS files or the user cancelled the operation. - Houve um erro ao copiar os arquivos RomFS ou o usuário cancelou a operação. - - - - Full - Extração completa - - - - Skeleton - Apenas estrutura - - - - Select RomFS Dump Mode - Selecione o modo de extração do RomFS - - - - Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. - Selecione a forma como você gostaria que o RomFS seja extraído.<br>"Extração completa" copiará todos os arquivos para a nova pasta, enquanto que <br>"Apenas estrutura" criará apenas a estrutura de pastas. - - - - There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root - 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 > Configurar > Sistema > Sistema de arquivos > Extrair raiz - - - - Extracting RomFS... - Extraindo RomFS... - - - - - - - - Cancel - Cancelar - - - - RomFS Extraction Succeeded! - Extração do RomFS concluida! - - - - - - The operation completed successfully. - A operação foi concluída com sucesso. - - - - Integrity verification couldn't be performed! - A verificação de integridade não pôde ser realizada! - - - - File contents were not checked for validity. - Os conteúdos do arquivo não foram analisados. - - - - - Verifying integrity... - Verificando integridade… - - - - - Integrity verification succeeded! - Verificação de integridade concluída! - - - - - Integrity verification failed! - Houve uma falha na verificação de integridade! - - - - File contents may be corrupt. - Os conteúdos do arquivo podem estar corrompidos. - - - - - - - Create Shortcut - Criar Atalho - - - - Do you want to launch the game in fullscreen? - Gostaria de iniciar o jogo em tela cheia? - - - - Successfully created a shortcut to %1 - Atalho criado em %1 com sucesso - - - - This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - Isso irá criar um atalho para o AppImage atual. Isso pode não funcionar corretamente se você fizer uma atualização. Continuar? - - - - Failed to create a shortcut to %1 - Falha ao criar atalho em %1 - - - - Create Icon - Criar Ícone - - - - Cannot create icon file. Path "%1" does not exist and cannot be created. - Não foi possível criar o arquivo de ícone. O caminho "%1" não existe e não pode ser criado. - - - - Error Opening %1 - Erro ao abrir %1 - - - - Select Directory - Selecionar pasta - - - - Properties - Propriedades - - - - The game properties could not be loaded. - As propriedades do jogo não puderam ser carregadas. - - - - Switch Executable (%1);;All Files (*.*) - %1 is an identifier for the Switch executable file extensions. - Executável do Switch (%1);;Todos os arquivos (*.*) - - - - Load File - Carregar arquivo - - - - Open Extracted ROM Directory - Abrir pasta da ROM extraída - - - - Invalid Directory Selected - Pasta inválida selecionada - - - - The directory you have selected does not contain a 'main' file. - A pasta que você selecionou não contém um arquivo 'main'. - - - - Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - Arquivo de Switch instalável (*.nca *.nsp *.xci);; Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - - - - Install Files - Instalar arquivos - - - - %n file(s) remaining - - %n arquivo restante - %n arquivo(s) restante(s) - - - - - Installing file "%1"... - Instalando arquivo "%1"... - - - - - Install Results - Resultados da instalação - - - - To avoid possible conflicts, we discourage users from installing base games to the NAND. -Please, only use this feature to install updates and DLC. - 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. - - - - %n file(s) were newly installed - - - %n arquivo(s) instalado(s) - - %n arquivos(s) foram recentemente instalados - - - - - - %n file(s) were overwritten - - - %n arquivo(s) sobrescrito(s) - - %n arquivo(s) sobrescrito(s) - - - - - - %n file(s) failed to install - - - %n arquivo(s) não instalado(s) - - %n arquivo(s) não instalado(s) - - - - - - System Application - Aplicativo do sistema - - - - System Archive - Arquivo do sistema - - - - System Application Update - Atualização de aplicativo do sistema - - - - Firmware Package (Type A) - Pacote de firmware (tipo A) - - - - Firmware Package (Type B) - Pacote de firmware (tipo B) - - - - Game - Jogo - - - - Game Update - Atualização de jogo - - - - Game DLC - DLC de jogo - - - - Delta Title - Título delta - - - - Select NCA Install Type... - Selecione o tipo de instalação do NCA... - - - - Please select the type of title you would like to install this NCA as: -(In most instances, the default 'Game' is fine.) - Selecione o tipo de título como o qual você gostaria de instalar este NCA: -(Na maioria dos casos, o padrão 'Jogo' serve bem.) - - - - Failed to Install - Falha ao instalar - - - - The title type you selected for the NCA is invalid. - O tipo de título que você selecionou para o NCA é inválido. - - - - File not found - Arquivo não encontrado - - - - File "%1" not found - Arquivo "%1" não encontrado - - - - OK - OK - - - - - Hardware requirements not met - Requisitos de hardware não atendidos - - - - - Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled. - Seu sistema não atende os requisitos de harwdare. O relatório de compatibilidade foi desabilitado. - - - - Missing yuzu Account - Conta do yuzu faltando - - - - In order to submit a game compatibility test case, you must link your eden account.<br><br/>To link your eden account, go to Emulation &gt; Configuration &gt; Web. - - - - - Install decryption keys and restart eden before attempting to install firmware. - - - - - Firmware installation cancelled, firmware may be in bad state, restart eden or re-install firmware. - - - - - Encryption keys are missing. - - - - - Are you sure you want to close eden? - - - - - - - eden - - - - - The currently running application has requested eden to not exit. - -Would you like to bypass this and exit anyway? - - - - In order to submit a game compatibility test case, you must link your yuzu account.<br><br/>To link your yuzu account, go to Emulation &gt; Configuration &gt; Web. - Para enviar um caso de teste de compatibilidade de jogo, você precisa entrar com a sua conta do yuzu.<br><br/>Para isso, vá para Emulação &gt; Configurar... &gt; Rede. - - - - Error opening URL - Erro ao abrir URL - - - - Unable to open the URL "%1". - Não foi possível abrir o URL "%1". - - - - TAS Recording - Gravando TAS - - - - Overwrite file of player 1? - Sobrescrever arquivo do jogador 1? - - - - Invalid config detected - Configuração inválida detectada - - - - Handheld controller can't be used on docked mode. Pro controller will be selected. - O controle portátil não pode ser usado no modo encaixado na base. O Pro Controller será selecionado. - - - - - Amiibo - Amiibo - - - - - The current amiibo has been removed - O amiibo atual foi removido - - - - Error - Erro - - - - - The current game is not looking for amiibos - O jogo atual não está procurando amiibos - - - - Amiibo File (%1);; All Files (*.*) - Arquivo Amiibo (%1);; Todos os arquivos (*.*) - - - - Load Amiibo - Carregar Amiibo - - - - Error loading Amiibo data - Erro ao carregar dados do Amiibo - - - - The selected file is not a valid amiibo - O arquivo selecionado não é um amiibo válido - - - - The selected file is already on use - O arquivo selecionado já está em uso - - - - An unknown error occurred - Ocorreu um erro desconhecido - - - - - Verification failed for the following files: - -%1 - Houve uma falha na verificação dos seguintes arquivos: - -%1 - - - - Keys not installed - Chaves não instaladas - - - Install decryption keys and restart yuzu before attempting to install firmware. - Instale as chaves de descriptografia e reinicie o yuzu antes de tentar instalar o firmware. - - - - Select Dumped Firmware Source Location - Selecione o Local de Armazenamento do Firmware Extraído - - - - Installing Firmware... - Instalando Firmware... - - - - - - - Firmware install failed - A instalação do Firmware falhou - - - - Unable to locate potential firmware NCA files - Possíveis arquivos NCA do firmware não foram localizados - - - - Failed to delete one or more firmware file. - Falha ao deletar um ou mais arquivo de firmware. - - - Firmware installation cancelled, firmware may be in bad state, restart yuzu or re-install firmware. - A instalação do firmware foi cancelada, o firmware pode estar danificado. Reinicie o yuzu ou reinstale o firmware. - - - - One or more firmware files failed to copy into NAND. - Falha ao copiar um ou mais arquivos de firmware para a NAND. - - - - Firmware integrity verification failed! - A verificação de integridade do Firmware falhou! - - - - Select Dumped Keys Location - Selecione o Local das Chaves Extraídas - - - - - - Decryption Keys install failed - Falha na instalação das Chaves de Descriptografia - - - - prod.keys is a required decryption key file. - prod.keys é um arquivo de descriptografia obrigatório. - - - - One or more keys failed to copy. - Falha ao copiar uma ou mais chaves. - - - - Decryption Keys install succeeded - Chaves de Descriptografia instaladas com sucesso - - - - Decryption Keys were successfully installed - As Chaves de Descriptografia foram instaladas com sucesso - - - - Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. - Falha ao inicializar as Chaves de Descriptografia. Verifique se as suas ferramentas de extração estão atualizadas e extraia as chaves novamente. - - - - - - - - - - No firmware available - Nenhum firmware disponível - - - - Please install the firmware to use the Album applet. - Por favor Instale o firmware para usar o miniaplicativo Álbum. - - - - Album Applet - Miniaplicativo Álbum - - - - Album applet is not available. Please reinstall firmware. - O miniaplicativo Álbum não está disponível. Por favor reinstale o firmware. - - - - Please install the firmware to use the Cabinet applet. - Por favor Instale o firmware para usar o miniaplicativo Arquivo. - - - - Cabinet Applet - Miniaplicativo Arquivo - - - - Cabinet applet is not available. Please reinstall firmware. - O miniaplicativo Arquivo não está disponível. Por favor reinstale o firmware. - - - - Please install the firmware to use the Mii editor. - Por favor instale o firmware para usar o miniaplicativo Editor de Mii. - - - - Mii Edit Applet - Miniaplicativo Editor de Mii - - - - Mii editor is not available. Please reinstall firmware. - O miniaplicativo Editor de Mii não está disponível. Por favor reinstale o firmware. - - - - Please install the firmware to use the Controller Menu. - Por favor instale o firmware para usar o Menu de Controles. - - - - Controller Applet - Miniaplicativo de Controle - - - - Controller Menu is not available. Please reinstall firmware. - Menu de Controles não está disponível. Por favor reinstale o firmware. - - - - Please install the firmware to use the Home Menu. - - - - - - Home Menu Applet - - - - - - Home Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use Starter. - - - - - Starter Applet - - - - - Starter is not available. Please reinstall firmware. - - - - - Please install firmware to use the home menu. - - - - - Capture Screenshot - Capturar tela - - - - PNG Image (*.png) - Imagem PNG (*.png) - - - - Update Available - - - - - Update %1 for Eden is available. -Would you like to download it? - - - - - TAS state: Running %1/%2 - Situação TAS: Rodando %1%2 - - - - TAS state: Recording %1 - Situação TAS: Gravando %1 - - - - TAS state: Idle %1/%2 - Situação TAS: Repouso %1%2 - - - - TAS State: Invalid - Situação TAS: Inválido - - - - &Stop Running - &Parar de rodar - - - - &Start - &Iniciar - - - - Stop R&ecording - Parar G&ravação - - - - R&ecord - G&ravação - - - - Building: %n shader(s) - - Compilando: %n shader(s) - Compilando: %n shader(s) - - - - - Scale: %1x - %1 is the resolution scaling factor - Escala: %1x - - - - Speed: %1% / %2% - Velocidade: %1% / %2% - - - - Speed: %1% - Velocidade: %1% - - - Game: %1 FPS (Unlocked) - Jogo: %1 FPS (Desbloqueado) - - - - Game: %1 FPS - Jogo: %1 FPS - - - - Frame: %1 ms - Quadro: %1 ms - - - - %1 %2 - %1 %2 - - - - - FSR - FSR - - - - NO AA - Sem AA - - - - VOLUME: MUTE - VOLUME: MUDO - - - - VOLUME: %1% - Volume percentage (e.g. 50%) - VOLUME: %1% - - - - Derivation Components Missing - Faltando componentes de derivação - - - Encryption keys are missing. <br>Please follow <a href='https://yuzu-emu.org/help/quickstart/'>the yuzu quickstart guide</a> to get all your keys, firmware and games. - Faltando chaves de encriptação. <br>Por favor siga <a href='https://yuzu-emu.org/help/quickstart/'>o guia de início rápido do yuzu</a> para obter todas as suas chaves, firmware e jogos. - - - - Select RomFS Dump Target - Selecionar alvo de extração do RomFS - - - - Please select which RomFS you would like to dump. - Selecione qual RomFS você quer extrair. - - - Are you sure you want to close yuzu? - Você deseja mesmo fechar o yuzu? - - - yuzu - yuzu - - - - Are you sure you want to stop the emulation? Any unsaved progress will be lost. - Deseja mesmo parar a emulação? Qualquer progresso não salvo será perdido. - - - The currently running application has requested yuzu to not exit. - -Would you like to bypass this and exit anyway? - O aplicativo rodando no momento solicitou ao yuzu para não sair. - -Deseja ignorar isso e sair mesmo assim? - - - - None - Nenhum - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Nearest - Mais próximo - - - - Bilinear - Bilinear - - - - Bicubic - Bicúbico - - - - Gaussian - Gaussiano - - - - ScaleForce - ScaleForce - - - - Area - - - - - Docked - Modo TV - - - - Handheld - Portátil - - - - Normal - Normal - - - - High - Alto - - - - Extreme - Extremo - - - - Vulkan - Vulkan - - - - OpenGL - OpenGL - - - - Null - Nenhum (desativado) - - - - GLSL - GLSL - - - - GLASM - GLASM - - - - SPIRV - SPIRV + GRenderWindow - - + + OpenGL not available! - OpenGL não disponível! + OpenGL não está disponível! - + OpenGL shared contexts are not supported. Shared contexts do OpenGL não são suportados. - yuzu has not been compiled with OpenGL support. - O yuzu não foi compilado com suporte para OpenGL. + + Eden has not been compiled with OpenGL support. + - - eden has not been compiled with OpenGL support. - - - - - + + Error while initializing OpenGL! - Erro ao inicializar o OpenGL! + Erro ao inicializar OpenGL! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. - Sua GPU pode não suportar OpenGL, ou você não possui o driver gráfico mais recente. + O seu GPU pode não suportar OpenGL, ou não tem os drivers gráficos mais recentes. - + Error while initializing OpenGL 4.6! Erro ao inicializar o OpenGL 4.6! - + Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 - Sua GPU pode não suportar o OpenGL 4.6, ou você não possui os drivers gráficos mais recentes.<br><br>Renderizador GL:<br>%1 + O teu GPU pode não suportar OpenGL 4.6, ou não tem os drivers gráficos mais recentes. - + Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2 Sua GPU pode não suportar uma ou mais extensões necessárias do OpenGL. Verifique se você possui a última versão dos drivers gráficos.<br><br>Renderizador GL:<br>%1<br><br>Extensões não suportadas:<br>%2 @@ -7012,192 +6065,208 @@ Deseja ignorar isso e sair mesmo assim? GameList - + + &Add New Game Directory + &Adicionar novo diretório de jogos + + + Favorite Favorito - + Start Game Iniciar jogo - + Start Game without Custom Configuration Iniciar jogo sem configuração personalizada - + Open Save Data Location - Abrir local dos jogos salvos + Abrir Localização de Dados Salvos - + Open Mod Data Location - Abrir local dos dados de mods + Abrir a Localização de Dados do Mod - + Open Transferable Pipeline Cache Abrir cache de pipeline transferível - + + Link to Ryujinx + Vincular ao Ryujinx + + + Remove Remover - + Remove Installed Update - Remover atualização instalada + Remover Actualizações Instaladas - + Remove All Installed DLC - Remover todos os DLCs instalados + Remover Todos os DLC Instalados - + Remove Custom Configuration - Remover configuração customizada + Remover Configuração Personalizada - - Remove Play Time Data - Remover Dados de Tempo Jogado - - - + Remove Cache Storage - Remover Cache do Armazenamento + Remove a Cache do Armazenamento - + Remove OpenGL Pipeline Cache Remover cache de pipeline do OpenGL - + Remove Vulkan Pipeline Cache Remover cache de pipeline do Vulkan - + Remove All Pipeline Caches Remover todos os caches de pipeline - + Remove All Installed Contents - Remover todo o conteúdo instalado + Remover Todos os Conteúdos Instalados - - + + Manage Play Time + + + + + Edit Play Time Data + + + + + Remove Play Time Data + Remover dados de tempo jogado + + + + Dump RomFS - Extrair RomFS + Despejar RomFS - + Dump RomFS to SDMC Extrair RomFS para SDMC - + Verify Integrity Verificar integridade - + Copy Title ID to Clipboard - Copiar ID do título para a área de transferência + Copiar título de ID para a área de transferência - + Navigate to GameDB entry - Abrir artigo do jogo no GameDB + Navegue para a Entrada da Base de Dados de Jogos - + Create Shortcut - Criar atalho + Criar Atalho - + Add to Desktop Adicionar à Área de Trabalho - + Add to Applications Menu Adicionar ao Menu de Aplicativos - + Configure Game - + - Properties - Propriedades - - - + Scan Subfolders - Examinar subpastas + Examinar Sub-pastas - + Remove Game Directory - Remover pasta de jogo + Remover diretório do Jogo - + ▲ Move Up - ▲ Mover para cima + ▲ Mover para Cima - + ▼ Move Down - ▼ Mover para baixo + ▼ Mover para Baixo - + Open Directory Location - Abrir local da pasta + Abrir Localização do diretório - + Clear Limpar - + Name Nome - + Compatibility Compatibilidade - + Add-ons - Adicionais + Add-ons - + File type - Tipo de arquivo + Tipo de Arquivo - + Size Tamanho - + Play time Tempo jogado @@ -7205,91 +6274,88 @@ Deseja ignorar isso e sair mesmo assim? GameListItemCompat - + Ingame - Inicializável + Não Jogável - + Game starts, but crashes or major glitches prevent it from being completed. O jogo inicia, porém problemas ou grandes falhas impedem que ele seja concluído. - + Perfect Perfeito - + Game can be played without issues. O jogo pode ser jogado sem problemas. - + Playable Jogável - + Game functions with minor graphical or audio glitches and is playable from start to finish. - O jogo funciona com pequenas falhas gráficas ou de áudio e é jogável do início ao fim. + O jogo funciona com pequenas falhas gráficas ou de áudio e pode ser reproduzido do início ao fim. - + Intro/Menu - Intro/menu + Introdução / Menu - + Game loads, but is unable to progress past the Start Screen. - O jogo carrega, porém não consegue passar da Tela Inicial. + O jogo carrega, porém não consegue passar da tela inicial. - + Won't Boot - Não inicia + Não Inicia - + The game crashes when attempting to startup. - O jogo trava ou se encerra abruptamente ao se tentar iniciá-lo. + O jogo trava ao tentar iniciar. - + Not Tested - Não testado + Não Testado - + The game has not yet been tested. - Esse jogo ainda não foi testado. + O jogo ainda não foi testado. GameListPlaceholder - + Double-click to add a new folder to the game list - Clique duas vezes para adicionar uma pasta à lista de jogos + Clique duas vezes para adicionar uma nova pasta à lista de jogos GameListSearchField - + %1 of %n result(s) - - %1 de %n resultado(s) - %1 de %n resultado(s) - + - + Filter: Filtro: - + Enter pattern to filter Digite o padrão para filtrar @@ -7309,17 +6375,17 @@ Deseja ignorar isso e sair mesmo assim? Preferred Game - Jogo Preferido + Jogo Preferencial Max Players - Máximo de jogadores + Máximo de Jogadores Username - Nome de usuário + Nome de Utilizador @@ -7339,7 +6405,7 @@ Deseja ignorar isso e sair mesmo assim? Room Description - Descrição da Sala + Descrição da sala @@ -7359,248 +6425,257 @@ Deseja ignorar isso e sair mesmo assim? Host Room - Hospedar sala + Hospedar Sala HostRoomWindow - + Error Erro - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. + + Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid Eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. Debug Message: - - - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid yuzu account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. -Debug Message: - Falha ao anunciar a sala ao lobby público. Para hospedar uma sala pública você deve ter configurado uma conta válida do yuzu em Emulação -> Configurações -> Web. Se você não quer publicar uma sala no lobby público seleciona a opção Não listado. -Mensagem de depuração: + Falha ao anunciar a sala no lobby público. Para hospedar uma sala publicamente, você deve ter uma conta do Eden válida configurada em Emulação -> Configurar -> Web. Se não deseja criar uma sala no lobby público, selecione Não-listada. +Mensagem de Depuração: Hotkeys - + Audio Mute/Unmute Mutar/Desmutar Áudio - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Main Window Janela Principal - + Audio Volume Down - Abaixar volume + Volume Menos - + Audio Volume Up - Aumentar volume + Volume Mais - + Capture Screenshot - Capturar Tela + Captura de Tela - + Change Adapting Filter Alterar Filtro de Adaptação - + Change Docked Mode - Alterar Modo TV + Alterar Modo de Ancoragem - - Change GPU Accuracy - Alterar Precisão da GPU + + Change GPU Mode + Alterar modo de GPU - + Configure - Configurar + Configurar - + Configure Current Game - + Configurar Jogo Atual - + Continue/Pause Emulation - Continuar/Pausar emulação + Continuar/Pausar Emulação - + Exit Fullscreen Sair da Tela Cheia - Exit yuzu - Sair do yuzu + + Exit Eden + Sair do Eden - - Exit eden - - - - + Fullscreen Tela Cheia - + Load File - Carregar Arquivo + Carregar Ficheiro - + Load/Remove Amiibo Carregar/Remover Amiibo - - Multiplayer Browse Public Game Lobby - Multiplayer Navegar no Lobby de Salas Públicas + + Browse Public Game Lobby + Navegar no Lobby de Salas Públicas - - Multiplayer Create Room - Multiplayer Criar Sala + + Create Room + Criar Sala - - Multiplayer Direct Connect to Room - Multiplayer Conectar Diretamente à Sala + + Direct Connect to Room + Conectar-se Diretamente à Sala - - Multiplayer Leave Room - Multiplayer Sair da Sala + + Leave Room + Sair da Sala - - Multiplayer Show Current Room - Multiplayer Mostrar a Sala Atual + + Show Current Room + Exibir Sala Atual - + Restart Emulation - Reiniciar emulação + Reiniciar Emulação - + Stop Emulation - Parar emulação + Parar Emulação - + TAS Record Gravar TAS - + TAS Reset Reiniciar TAS - + TAS Start/Stop Iniciar/Parar TAS - + Toggle Filter Bar Alternar Barra de Filtro - + Toggle Framerate Limit Alternar Limite de Quadros por Segundo - - Toggle Mouse Panning - Alternar o Mouse Panorâmico + + Toggle Turbo Speed + - + + Toggle Slow Speed + + + + + Toggle Mouse Panning + Alternar o Giro do Mouse + + + Toggle Renderdoc Capture Alternar a Captura do Renderdoc - + Toggle Status Bar Alternar Barra de Status + + + Toggle Performance Overlay + Alternar Sobreposição de Desempenho + InstallDialog - - - Please confirm these are the files you wish to install. - Por favor, confirme que esses são os arquivos que deseja instalar. - - Installing an Update or DLC will overwrite the previously installed one. - Instalar uma atualização ou DLC irá sobrescrever a instalada anteriormente. + Please confirm these are the files you wish to install. + Por favor confirma que estes são os ficheiros que desejas instalar. - + + Installing an Update or DLC will overwrite the previously installed one. + Instalar uma Actualização ou DLC irá substituir a instalação anterior. + + + Install Instalar - + Install Files to NAND - Instalar arquivos para a NAND + Instalar Ficheiros na NAND LimitableInputDialog - - The text can't contain any of the following characters: + + The text can't contain any of the following characters: %1 O texto não pode conter nenhum dos seguintes caracteres: %1 @@ -7611,37 +6686,37 @@ Mensagem de depuração: Loading Shaders 387 / 1628 - Carregando shaders 387/1628 + A Carregar Shaders 387 / 1628 Loading Shaders %v out of %m - Carregando shaders (%v de %m) + A Carregar Shaders %v por %m Estimated Time 5m 4s - Tempo estimado 5m 4s + Tempo Estimado 5m 4s - + Loading... - Carregando... + A Carregar... - + Loading Shaders %1 / %2 - Carregando shaders %1/%2 + A Carregar Shaders %1 / %2 - + Launching... - Iniciando... + A iniciar... - + Estimated Time %1 - Tempo estimado %1 + Tempo Estimado %1 @@ -7649,7 +6724,7 @@ Mensagem de depuração: Public Room Browser - Navegador de salas públicas + Navegador de Salas Públicas @@ -7670,60 +6745,60 @@ Mensagem de depuração: Games I Own - Meus jogos + Meus Jogos Hide Empty Rooms - Ocultar Salas Vazias + Esconder Salas Vazias Hide Full Rooms - Ocultar Salas Cheias + Esconder Salas Cheias Refresh Lobby - Atualizar Sala + Atualizar Lobby - + Password Required to Join - É necessária uma Senha para Entrar + Senha Necessária para Entrar - + Password: Senha: - + Players Jogadores - + Room Name Nome da Sala - + Preferred Game - Jogo Preferido + Jogo Preferencial - + Host Anfitrião - + Refreshing Atualizando - + Refresh List Atualizar Lista @@ -7738,7 +6813,7 @@ Mensagem de depuração: &File - &Arquivo + &Arquivos @@ -7746,362 +6821,1424 @@ Mensagem de depuração: &Arquivos recentes - + + Open &Eden Folders + Abrir Pastas do &Eden + + + &Emulation &Emulação - + &View &Exibir - + &Reset Window Size &Restaurar tamanho da janela - + &Debugging &Depurar - + + &Game List Mode + Modo Lista de &Jogos + + + + Game &Icon Size + Tamanho do &Ícone do Jogo + + + Reset Window Size to &720p Restaurar tamanho da janela para &720p - + Reset Window Size to 720p Restaurar tamanho da janela para 720p - + Reset Window Size to &900p Restaurar tamanho da janela para &900p - + Reset Window Size to 900p Restaurar tamanho da janela para 900p - + Reset Window Size to &1080p Restaurar tamanho da janela para &1080p - + Reset Window Size to 1080p Restaurar tamanho da janela para 1080p - + &Multiplayer - &Multiplayer + &Multijogador - + &Tools &Ferramentas - - &Amiibo - &Amiibo + + Am&iibo + Am&iibo - + + Launch &Applet + Iniciar &Applet + + + &TAS &TAS - + &Create Home Menu Shortcut - + - + + Install &Firmware + Instalar &Firmware + + + &Help &Ajuda - + &Install Files to NAND... - &Instalar arquivos para NAND... + &Instalar arquivos na NAND... - + L&oad File... - &Carregar arquivo... + C&arregar arquivo... - + Load &Folder... Carregar &pasta... - + E&xit - S&air + &Sair - + + &Pause - &Pausar + &Pausa - + &Stop &Parar - + &Verify Installed Contents - &Verificar Conteúdo Instalado + &Verificar conteúdo instalado - - &About eden - + + &About Eden + &Sobre o Eden - - Open &eden Folder - - - - - Open Home Menu - - - - - &Discord - - - - - Open &Setup - - - - - &Desktop - - - - - &Application Menu - - - - &About yuzu - &Sobre o yuzu - - - + Single &Window Mode Modo de &janela única - + Con&figure... Con&figurar... - + Ctrl+, - + Ctrl+, - - Display D&ock Widget Headers - Exibir barra de títul&os de widgets afixados + + Enable Overlay Display Applet + - + Show &Filter Bar - Exibir barra de &filtro + Mostrar Barra de &Filtros - + Show &Status Bar - Exibir barra de &status + Mostrar Barra de &Estado - + Show Status Bar - Exibir barra de status + Mostrar Barra de Estado - + &Browse Public Game Lobby &Navegar no Lobby de Salas Públicas - + &Create Room &Criar Sala - + &Leave Room &Sair da Sala - + &Direct Connect to Room - &Entrar Diretamente numa Sala + Conectar &Diretamente Numa Sala - + &Show Current Room - &Mostrar Sala Atual + Exibir &Sala Atual - + F&ullscreen - &Tela cheia + T&ela cheia - + &Restart &Reiniciar - + Load/Remove &Amiibo... Carregar/Remover &Amiibo... - + &Report Compatibility &Reportar compatibilidade - + Open &Mods Page - Abrir página de &mods + Abrir Página de &Mods - + Open &Quickstart Guide Abrir &guia de início rápido - + &FAQ &Perguntas frequentes - Open &yuzu Folder - Abrir pasta do &yuzu - - - + &Capture Screenshot - &Captura de tela + &Captura de Tela - - Open &Album - Abrir &Álbum + + &Album + &Álbum - + &Set Nickname and Owner - &Definir Apelido e Proprietário + &Definir apelido e proprietário - + &Delete Game Data - &Remover Dados do Jogo + &Remover dados do jogo - + &Restore Amiibo &Recuperar Amiibo - + &Format Amiibo &Formatar Amiibo - - Open &Mii Editor - Abrir &Editor de Mii + + &Mii Editor + - + &Configure TAS... &Configurar TAS - + Configure C&urrent Game... - Configurar jogo &atual.. + Configurar jogo atual... - + + &Start - &Iniciar + &Começar - + &Reset &Restaurar - + + R&ecord G&ravar - + Open &Controller Menu Menu Abrir &Controles - - Install Firmware - Instalar Firmware + + Install Decryption &Keys + - - Install Decryption Keys - Instalar Chaves de Descriptografia + + &Home Menu + - - - MicroProfileDialog - - &MicroProfile - &MicroPerfil + + &Desktop + &Área de Trabalho + + + + &Application Menu + + + + + &Root Data Folder + + + + + &NAND Folder + &Pasta NAND + + + + &SDMC Folder + + + + + &Mod Folder + + + + + &Log Folder + + + + + From Folder + + + + + From ZIP + + + + + &Eden Dependencies + + + + + &Data Manager + + + + + &Tree View + + + + + &Grid View + + + + + Game Icon Size + + + + + + + None + Nenhum(a) + + + + Show Game &Name + + + + + Show &Performance Overlay + Mostrar Sobreposição de &Desempenho + + + + Small (32x32) + Pequeno (32x32) + + + + Standard (64x64) + Padrão (64x64) + + + + Large (128x128) + Grande (128x128) + + + + Full Size (256x256) + Tamanho completo (256x256) + + + + Broken Vulkan Installation Detected + Detectada Instalação Defeituosa do Vulkan + + + + Vulkan initialization failed during boot. + + + + + Running a game + TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping + + + + + Loading Web Applet... + + + + + + Disable Web Applet + + + + + 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.) + + + + + The amount of shaders currently being built + + + + + The current selected resolution scaling multiplier. + + + + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. + + + + + How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. + + + + + 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. + + + + + Unmute + + + + + Mute + + + + + Reset Volume + + + + + &Clear Recent Files + + + + + &Continue + + + + + Warning: Outdated Game Format + + + + + 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.<br>For an explanation of the various Switch formats Eden supports, out our user handbook. This message will not be shown again. + + + + + + Error while loading ROM! + + + + + The ROM format is not supported. + + + + + An error occurred initializing the video core. + + + + + Eden 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: <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>How to Upload the Log File</a>. + + + + + Error while loading ROM! %1 + %1 signifies a numeric error code. + + + + + %1<br>Please redump your files or ask on Discord/Stoat for help. + %1 signifies an error string. + + + + + An unknown error occurred. Please see the log for more details. + + + + + (64-bit) + + + + + (32-bit) + + + + + %1 %2 + %1 is the title name. %2 indicates if the title is 64-bit or 32-bit + + + + + Closing software... + + + + + Save Data + + + + + Mod Data + + + + + Error Opening %1 Folder + + + + + + Folder does not exist! + + + + + Remove Installed Game Contents? + + + + + Remove Installed Game Update? + + + + + Remove Installed Game DLC? + + + + + Remove Entry + + + + + Delete OpenGL Transferable Shader Cache? + + + + + Delete Vulkan Transferable Shader Cache? + + + + + Delete All Transferable Shader Caches? + + + + + Remove Custom Game Configuration? + + + + + Remove Cache Storage? + + + + + Remove File + + + + + Remove Play Time Data + + + + + Reset play time? + + + + + + RomFS Extraction Failed! + + + + + There was an error copying the RomFS files or the user cancelled the operation. + + + + + Full + + + + + Skeleton + + + + + Select RomFS Dump Mode + + + + + Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. + + + + + There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root + + + + + Extracting RomFS... + + + + + + Cancel + + + + + RomFS Extraction Succeeded! + + + + + The operation completed successfully. + + + + + Error Opening %1 + + + + + Select Directory + Selecionar Diretório + + + + Properties + + + + + The game properties could not be loaded. + + + + + Switch Executable (%1);;All Files (*.*) + %1 is an identifier for the Switch executable file extensions. + + + + + Load File + + + + + Open Extracted ROM Directory + Abrir o Diretório da ROM extraída + + + + Invalid Directory Selected + Diretório selecionado inválido + + + + The directory you have selected does not contain a 'main' file. + + + + + Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) + + + + + Install Files + + + + + %n file(s) remaining + + + + + Installing file "%1"... + + + + + + Install Results + + + + + To avoid possible conflicts, we discourage users from installing base games to the NAND. +Please, only use this feature to install updates and DLC. + + + + + %n file(s) were newly installed + + + + + + %n file(s) were overwritten + + + + + + %n file(s) failed to install + + + + + + System Application + + + + + System Archive + + + + + System Application Update + + + + + Firmware Package (Type A) + + + + + Firmware Package (Type B) + + + + + Game + + + + + Game Update + + + + + Game DLC + + + + + Delta Title + + + + + Select NCA Install Type... + + + + + Please select the type of title you would like to install this NCA as: +(In most instances, the default 'Game' is fine.) + + + + + Failed to Install + + + + + The title type you selected for the NCA is invalid. + + + + + File not found + + + + + File "%1" not found + + + + + OK + + + + + Function Disabled + + + + + Compatibility list reporting is currently disabled. Check back later! + + + + + Error opening URL + + + + + Unable to open the URL "%1". + + + + + TAS Recording + + + + + Overwrite file of player 1? + + + + + Invalid config detected + + + + + Handheld controller can't be used on docked mode. Pro controller will be selected. + + + + + + Amiibo + + + + + + The current amiibo has been removed + + + + + Error + + + + + + The current game is not looking for amiibos + + + + + Amiibo File (%1);; All Files (*.*) + + + + + Load Amiibo + + + + + Error loading Amiibo data + + + + + The selected file is not a valid amiibo + + + + + The selected file is already on use + + + + + An unknown error occurred + + + + + + Keys not installed + + + + + + Install decryption keys and restart Eden before attempting to install firmware. + + + + + Select Dumped Firmware Source Location + + + + + Select Dumped Firmware ZIP + + + + + Zipped Archives (*.zip) + + + + + Firmware cleanup failed + + + + + Failed to clean up extracted firmware cache. +Check write permissions in the system temp directory and try again. +OS reported error: %1 + + + + + No firmware available + + + + + Firmware Corrupted + + + + + Unknown applet + + + + + Applet doesn't map to a known value. + + + + + Record not found + + + + + Applet not found. Please reinstall firmware. + + + + + Capture Screenshot + + + + + PNG Image (*.png) + + + + + Update Available + + + + + Download %1? + + + + + TAS state: Running %1/%2 + + + + + TAS state: Recording %1 + + + + + TAS state: Idle %1/%2 + + + + + TAS State: Invalid + + + + + &Stop Running + + + + + Stop R&ecording + + + + + Building: %n shader(s) + + + + + Scale: %1x + %1 is the resolution scaling factor + + + + + Speed: %1% / %2% + + + + + Speed: %1% + + + + + Game: %1 FPS + + + + + Frame: %1 ms + + + + + + FSR + + + + + NO AA + + + + + VOLUME: MUTE + + + + + VOLUME: %1% + Volume percentage (e.g. 50%) + + + + + Derivation Components Missing + + + + + Decryption keys are missing. Install them now? + + + + + Wayland Detected! + + + + + Wayland is known to have significant performance issues and mysterious bugs. +It's recommended to use X11 instead. + +Would you like to force it for future launches? + + + + + Use X11 + + + + + Continue with Wayland + + + + + Don't show again + + + + + Restart Required + + + + + Restart Eden to apply the X11 backend. + + + + + Slow + + + + + Turbo + + + + + Unlocked + + + + + Select RomFS Dump Target + + + + + Please select which RomFS you would like to dump. + + + + + Are you sure you want to close Eden? + + + + + + + Eden + + + + + Are you sure you want to stop the emulation? Any unsaved progress will be lost. + + + + + The currently running application has requested Eden to not exit. + +Would you like to bypass this and exit anyway? + + + + + FXAA + + + + + SMAA + + + + + Nearest + + + + + Bilinear + + + + + Bicubic + + + + + Zero-Tangent + + + + + B-Spline + + + + + Mitchell + + + + + Spline-1 + + + + + Gaussian + + + + + Lanczos + + + + + ScaleForce + + + + + Area + + + + + MMPX + + + + + Docked + + + + + Handheld + + + + + Fast + + + + + Balanced + + + + + Accurate + + + + + Vulkan + + + + + OpenGL GLSL + + + + + OpenGL SPIRV + + + + + OpenGL GLASM + + + + + Null + MigrationWorker - - Data was migrated successfully. - - - - + Linking the old directory failed. You may need to re-run with administrative privileges on Windows. OS gave error: %1 - + - + + + +Note that your configuration and data will be shared with %1. +If this is not desirable, delete the following files: +%2 +%3 +%4 + + + + If you wish to clean up the files which were left in the old data location, you can do so by deleting the following directory: %1 - + + + + + Data was migrated successfully. + + + + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + @@ -8118,37 +8255,37 @@ If you wish to clean up the files which were left in the old data location, you - + Refreshing Atualizando Unban - Readmitir + Desbanir - + Subject Assunto - + Type Tipo - + Forum Username - Nome de Usuário no Fórum + Nome de Usuário do Fórum - + IP Address Endereço IP - + Refresh Atualizar @@ -8156,37 +8293,37 @@ If you wish to clean up the files which were left in the old data location, you MultiplayerState - + Current connection status - Estado atual da conexão + Status da conexão atual - + Not Connected. Click here to find a room! Não conectado. Clique aqui para procurar uma sala! - + Not Connected - Não conectado + Não Conectado - + Connected Conectado - + New Messages Received - Novas mensagens recebidas + Novas Mensagens Recebidas - + Error Erro - + Failed to update the room information. Please check your Internet connection and try hosting the room again. Debug Message: Falha ao atualizar as informações da sala. Por favor verifique sua conexão com a internet e tente hospedar a sala novamente. @@ -8195,90 +8332,6 @@ Mensagem de Depuração: NetworkMessage - - Username is not valid. Must be 4 to 20 alphanumeric characters. - Nome de usuário inválido. Deve conter de 4 a 20 caracteres alfanuméricos. - - - Room name is not valid. Must be 4 to 20 alphanumeric characters. - Nome da sala inválido. Deve conter de 4 a 20 caracteres alfanuméricos. - - - Username is already in use or not valid. Please choose another. - Nome de usuário já está em uso ou não é válido. Por favor escolha outro nome de usuário. - - - IP is not a valid IPv4 address. - O endereço IP não é um endereço IPv4 válido. - - - Port must be a number between 0 to 65535. - Porta deve ser um número entre 0 e 65535. - - - You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - Você deve escolher um Jogo Preferido para hospedar uma sala. Se você não possui nenhum jogo na sua lista ainda, adicione um diretório de jogos clicando no ícone de mais na lista de jogos. - - - Unable to find an internet connection. Check your internet settings. - Não foi possível encontrar uma conexão com a internet. Verifique suas configurações de internet. - - - Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - Não foi possível conectar no host. Verifique se as configurações de conexão estão corretas. Se você ainda não conseguir conectar, entre em contato com o anfitrião da sala e verifique se o host está configurado corretamente com a porta externa redirecionada. - - - Unable to connect to the room because it is already full. - Não foi possível conectar na sala porque ela já está cheia. - - - Creating a room failed. Please retry. Restarting yuzu might be necessary. - Erro ao criar a sala. Tente novamente. Reiniciar o yuzu pode ser necessário. - - - The host of the room has banned you. Speak with the host to unban you or try a different room. - O anfitrião da sala baniu você. Fale com o anfitrião para que ele remova seu banimento ou tente uma sala diferente. - - - Version mismatch! Please update to the latest version of yuzu. If the problem persists, contact the room host and ask them to update the server. - Versão não compatível! Atualize o yuzu para a última versão. Se o problema persistir, entre em contato com o anfitrião da sala e peça que atualize o servidor. - - - Incorrect password. - Senha inválda. - - - An unknown error occurred. If this error continues to occur, please open an issue - Ocorreu um erro desconhecido. Se esse erro continuar ocorrendo, recomendamos abrir uma issue. - - - Connection to room lost. Try to reconnect. - Conexão com a sala encerrada. Tente reconectar. - - - You have been kicked by the room host. - Você foi expulso(a) pelo anfitrião da sala. - - - IP address is already in use. Please choose another. - Este endereço IP já está em uso. Por favor, escolha outro. - - - You do not have enough permission to perform this action. - Você não tem permissão suficiente para realizar esta ação. - - - The user you are trying to kick/ban could not be found. -They may have left the room. - O usuário que você está tentando expulsar/banir não pôde ser encontrado. -Essa pessoa pode já ter saído da sala. - - - No valid network interface is selected. -Please go to Configure -> System -> Network and make a selection. - Nenhuma interface de rede válida foi detectada. -Vá para Configurar -> Sistema -> Rede e selecione uma. - Game already running @@ -8313,10 +8366,132 @@ Você deseja prosseguir mesmo assim? - NetworkMessage::ErrorManager + NewUserDialog - Error - Erro + + + New User + + + + + Change Avatar + Alterar Avatar + + + + Set Image + + + + + UUID + + + + + Eden + + + + + Username + + + + + UUID must be 32 hex characters (0-9, A-F) + + + + + Generate + + + + + Select User Image + + + + + Image Formats (*.jpg *.jpeg *.png *.bmp) + + + + + No firmware available + + + + + Please install the firmware to use firmware avatars. + + + + + + Error loading archive + + + + + Archive is not available. Please install/reinstall firmware. + + + + + Could not locate RomFS. Your file or decryption keys may be corrupted. + + + + + Error extracting archive + + + + + Could not extract RomFS. Your file or decryption keys may be corrupted. + + + + + Error finding image directory + + + + + Failed to find image directory in the archive. + + + + + No images found + + + + + No avatar images were found in the archive. + + + + + + All Good + Tooltip + + + + + Must be 32 hex characters (0-9, a-f) + Tooltip + + + + + Must be between 1 and 32 characters + Tooltip + @@ -8343,7 +8518,7 @@ Você deseja prosseguir mesmo assim? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -8352,101 +8527,216 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> + + PerformanceOverlay + + + Form + + + + + Frametime + + + + + 0 ms + + + + + + Min: 0 + + + + + + Max: 0 + + + + + + Avg: 0 + + + + + FPS + + + + + 0 fps + + + + + %1 fps + + + + + + Avg: %1 + + + + + + Min: %1 + + + + + + Max: %1 + + + + + %1 ms + + + PlayerControlPreview - + START/PAUSE INICIAR/PAUSAR + + ProfileAvatarDialog + + + Select + + + + + Cancel + + + + + Background Color + + + + + Select Firmware Avatar + + + QObject - - %1 is not playing a game - %1 não está jogando um jogo + + + + Migration + - - %1 is playing %2 - %1 está jogando %2 + + Clear Shader Cache + - - Not playing a game - Não está jogando um jogo + + Keep Old Data + - - Installed SD Titles - Títulos instalados no SD + + Clear Old Data + - - Installed NAND Titles - Títulos instalados na NAND + + Link Old Directory + - - System Titles - Títulos do sistema + + + + + + + - - Add New Game Directory - Adicionar pasta de jogos + + + No + - - Favorites - Favoritos + + You can manually re-trigger this prompt by deleting the new config directory: +%1 + + + + + Migrating + + + + + Migrating, this may take a while... + - - + + Shift Shift - - + + Ctrl Ctrl - - + + Alt Alt - - - - + + + + [not set] - [não definido] + [não configurado] Hat %1 %2 - Direcional %1 %2 + Hat %1 %2 - - - - - - - - + + + + + + + + Axis %1%2 Eixo %1%2 @@ -8456,359 +8746,383 @@ p, li { white-space: pre-wrap; } Botão %1 - - - - - - + + + + + + [unknown] - [desconhecido] + [Desconhecido] - - - + + + Left Esquerda - - - + + + Right Direita - - - + + + Down Baixo - - - + + + Up Cima - - + + Z Z - - + + R R - - + + L L - - + + A A - - + + B B - - + + X X - - + + Y Y - - + + Start - Start + Começar - - + + L1 L1 - - + + L2 L2 - - + + L3 L3 - - + + R1 R1 - - + + R2 R2 - - + + R3 R3 - - + + Circle Círculo - - + + Cross Cruz - - + + Square Quadrado - - + + Triangle Triângulo - - + + Share Compartilhar - - + + Options Opções - - + + [undefined] [indefinido] - + %1%2 %1%2 - - + + [invalid] [inválido] - - + + %1%2Hat %3 %1%2Direcional %3 - - - + + + %1%2Axis %3 %1%2Eixo %3 - - + + %1%2Axis %3,%4,%5 %1%2Eixo %3,%4,%5 - - + + %1%2Motion %3 %1%2Movimentação %3 - - + + %1%2Button %3 %1%2Botão %3 - - + + [unused] - [não utilizado] + [sem uso] - + ZR ZR - + ZL ZL - + SR SR - + SL SL - + Stick L Analógico esquerdo - + Stick R Analógico direito - + Plus Mais - + Minus Menos - - + + Home - Botão Home + Home - + Capture Capturar - + Touch Toque - + Wheel Indicates the mouse wheel Volante - + Backward Para trás - + Forward Para a frente - + Task Tarefa - + Extra Extra - + %1%2%3%4 %1%2%3%4 - - + + %1%2%3Hat %4 %1%2%3Alavanca %4 - - + + %1%2%3Axis %4 %1%2%3Eixo %4 - - + + %1%2%3Button %4 %1%2%3Botão %4 - - - - Migration - + + Not playing a game + Não está jogando um jogo - - - - - + + %1 is not playing a game + %1 não está jogando um jogo - - - No - + + %1 is playing %2 + %1 está jogando %2 - - You can manually re-trigger this prompt by deleting the new config directory: -%1 - + + Play Time: %1 + - - Migrating - + + Never Played + - - Migrating, this may take a while... - + + Version: %1 + + + + + Version: 1.0.0 + + + + + Installed SD Titles + Títulos SD instalados + + + + Installed NAND Titles + Títulos NAND instalados + + + + System Titles + Títulos do sistema + + + + Add New Game Directory + Adicionar novo diretório de jogos + + + + Favorites + Favoritos @@ -8816,12 +9130,12 @@ p, li { white-space: pre-wrap; } Amiibo Settings - Configurações do Amiibo + Configurações do amiibo Amiibo Info - Informação do Amiibo + Informação do amiibo @@ -8841,12 +9155,12 @@ p, li { white-space: pre-wrap; } Amiibo Data - Dados do Amiibo + Dados de amiibo Custom Name - Nome Personalizado + Nome personalizado @@ -8856,12 +9170,12 @@ p, li { white-space: pre-wrap; } Creation Date - Data de Criação + Data de criação dd/MM/yyyy - dd/MM/aaaa + dd/mm/aaaa @@ -8871,12 +9185,12 @@ p, li { white-space: pre-wrap; } dd/MM/yyyy - dd/MM/aaaa + dd/mm/aaaa Game Data - Dados do Jogo + Dados do jogo @@ -8886,7 +9200,7 @@ p, li { white-space: pre-wrap; } Mount Amiibo - Montar Amiibo + Montar amiibo @@ -8896,34 +9210,822 @@ p, li { white-space: pre-wrap; } File Path - Caminho do Arquivo + Caminho de arquivo - + No game data present Nenhum dado do jogo presente - + The following amiibo data will be formatted: Os seguintes dados de amiibo serão formatados: - + The following game data will removed: Os seguintes dados do jogo serão removidos: - + Set nickname and owner: Definir apelido e proprietário: - + Do you wish to restore this amiibo? Deseja restaurar este amiibo? + + QtCommon::Content + + + Game Requires Firmware + + + + + The game you are trying to launch requires firmware to boot or to get past the opening menu. Please <a href='https://yuzu-mirror.github.io/help/quickstart'>dump and install firmware</a>, or press "OK" to launch anyways. + + + + + Installing Firmware... + + + + + + + + + Cancel + + + + + Firmware Install Failed + + + + + Firmware Install Succeeded + + + + + Firmware integrity verification failed! + + + + + + Verification failed for the following files: + +%1 + + + + + + Verifying integrity... + + + + + + Integrity verification succeeded! + + + + + + The operation completed successfully. + + + + + + Integrity verification failed! + + + + + File contents may be corrupt or missing. + + + + + Integrity verification couldn't be performed + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity. + + + + + Select Dumped Keys Location + + + + + Decryption Keys install succeeded + + + + + Decryption Keys install failed + + + + + Orphaned Profiles Detected! + + + + + UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br> + + + + + Really clear data? + + + + + Important data may be lost! + + + + + Are you REALLY sure? + + + + + Once deleted, your data will NOT come back! +Only do this if you're 100% sure you want to delete this data. + + + + + Clearing... + + + + + Select Export Location + + + + + %1.zip + + + + + + Zipped Archives (*.zip) + + + + + Exporting data. This may take a while... + + + + + Exporting + + + + + Exported Successfully + + + + + Data was exported successfully. + + + + + Export Cancelled + + + + + Export was cancelled by the user. + + + + + Export Failed + + + + + Ensure you have write permissions on the targeted directory and try again. + + + + + Select Import Location + + + + + Import Warning + + + + + All previous data in this directory will be deleted. Are you sure you wish to proceed? + + + + + Importing data. This may take a while... + + + + + Importing + + + + + Imported Successfully + + + + + Data was imported successfully. + + + + + Import Cancelled + + + + + Import was cancelled by the user. + + + + + Import Failed + + + + + Ensure you have read permissions on the targeted directory and try again. + + + + + QtCommon::FS + + + Linked Save Data + + + + + Save data has been linked. + + + + + Failed to link save data + + + + + Could not link directory: + %1 +To: + %2 + + + + + Already Linked + + + + + This title is already linked to Ryujinx. Would you like to unlink it? + Título já vinculado ao Ryujinx. Gostaria de desvincular? + + + + Failed to unlink old directory + Falha ao desvincular diretório antigo + + + + + OS returned error: %1 + + + + + Failed to copy save data + + + + + Unlink Successful + + + + + Successfully unlinked Ryujinx save data. Save data has been kept intact. + Dados salvos do Ryujinx desvinculados com sucesso. Dados salvos estão intactos. + + + + Could not find Ryujinx installation + Não foi possível encontrar a instalação do Ryujinx. + + + + Could not find a valid Ryujinx installation. This may typically occur if you are using Ryujinx in portable mode. + +Would you like to manually select a portable folder to use? + Não foi possível encontrar uma instalação válida do Ryujinx. Isso geralmente ocorre ao usar o Ryujinx no modo portátil. + +Gostaria de selecionar manualmente uma pasta portátil para usar? + + + + Ryujinx Portable Location + Localização Portátil do Ryujinx + + + + Not a valid Ryujinx directory + Não é um diretório válido do Ryujinx + + + + The specified directory does not contain valid Ryujinx data. + O diretório especificado não contém dados válidos do Ryujinx. + + + + + Could not find Ryujinx save data + Não foi possível encontrar os dados salvos do Ryujinx + + + + QtCommon::Game + + + Error Removing Contents + + + + + Error Removing Update + + + + + Error Removing DLC + + + + + + + + + + Successfully Removed + + + + + Successfully removed the installed base game. + + + + + The base game is not installed in the NAND and cannot be removed. + O jogo base não está instalado na NAND e não pode ser removido. + + + + Successfully removed the installed update. + + + + + There is no update installed for this title. + + + + + There are no DLCs installed for this title. + + + + + Successfully removed %1 installed DLC. + + + + + + Error Removing Transferable Shader Cache + + + + + + A shader cache for this title does not exist. + + + + + Successfully removed the transferable shader cache. + + + + + Failed to remove the transferable shader cache. + + + + + Error Removing Vulkan Driver Pipeline Cache + + + + + Failed to remove the driver pipeline cache. + + + + + + Error Removing Transferable Shader Caches + + + + + Successfully removed the transferable shader caches. + + + + + Failed to remove the transferable shader cache directory. + + + + + + Error Removing Custom Configuration + + + + + A custom configuration for this title does not exist. + + + + + Successfully removed the custom game configuration. + + + + + Failed to remove the custom game configuration. + + + + + Reset Metadata Cache + Restaurar o Cache de Metadados + + + + The metadata cache is already empty. + + + + + The operation completed successfully. + + + + + The metadata cache couldn't be deleted. It might be in use or non-existent. + + + + + Create Shortcut + + + + + Do you want to launch the game in fullscreen? + + + + + Shortcut Created + + + + + Successfully created a shortcut to %1 + + + + + Shortcut may be Volatile! + + + + + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? + + + + + Failed to Create Shortcut + + + + + Failed to create a shortcut to %1 + + + + + Create Icon + + + + + Cannot create icon file. Path "%1" does not exist and cannot be created. + + + + + No firmware available + + + + + Please install firmware to use the home menu. + + + + + Home Menu Applet + + + + + Home Menu is not available. Please reinstall firmware. + + + + + QtCommon::Mod + + + Mod Name + + + + + What should this mod be called? + + + + + RomFS + + + + + ExeFS/Patch + + + + + Cheat + + + + + Mod Type + + + + + Could not detect mod type automatically. Please manually specify the type of mod you downloaded. + +Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods. + + + + + + Mod Extract Failed + + + + + Failed to create temporary directory %1 + Falha ao criar um diretório temporário %1 + + + + Zip file %1 is empty + + + + + QtCommon::Path + + + Error Opening Shader Cache + + + + + Failed to create or open shader cache for this title, ensure your app data directory has write permissions. + + + + + QtCommon::StringLookup + + + Contains game save data. DO NOT REMOVE UNLESS YOU KNOW WHAT YOU'RE DOING! + + + + + Contains Vulkan and OpenGL pipeline caches. Generally safe to remove. + + + + + Contains updates and DLC for games. + + + + + Contains firmware and applet data. + + + + + Contains game mods, patches, and cheats. + + + + + Decryption Keys were successfully installed + + + + + Unable to read key directory, aborting + + + + + One or more keys failed to copy. + + + + + Verify your keys file has a .keys extension and try again. + + + + + Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. + + + + + Successfully installed firmware version %1 + + + + + Unable to locate potential firmware NCA files + + + + + Failed to delete one or more firmware files. + + + + + One or more firmware files failed to copy into NAND. + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. Restart Eden or re-install firmware. + + + + + Firmware missing. Firmware is required to run certain games and use the Home Menu. + + + + + Firmware reported as present, but was unable to be read. Check for decryption keys and redump firmware if necessary. + + + + + Eden has detected user data for the following emulators: + + + + + Would you like to migrate your data for use in Eden? +Select the corresponding button to migrate data from that emulator. +This may take a while. + + + + + Clearing shader cache is recommended for all users. +Do not uncheck unless you know what you're doing. + + + + + Keeps the old data directory. This is recommended if you aren't +space-constrained and want to keep separate data for the old emulator. + + + + + Deletes the old data directory. +This is recommended on devices with space constraints. + + + + + Creates a filesystem link between the old directory and Eden directory. +This is recommended if you want to share data between emulators. + + + + + Ryujinx title database does not exist. + Base de dados de títulos do Ryujinx não existe. + + + + Invalid header on Ryujinx title database. + Cabeçalho inválido na base de dados de títulos do Ryujinx + + + + Invalid magic header on Ryujinx title database. + Cabeçalho magic inválido na base de dados de títulos do Ryujinx. + + + + Invalid byte alignment on Ryujinx title database. + Alinhamento de bytes inválido na base de dados de títulos do Ryujinx. + + + + No items found in Ryujinx title database. + Nenhum item encontrado na base de dados de títulos do Ryujinx. + + + + Title %1 not found in Ryujinx title database. + Título %1 não encontrado na base de dados de títulos do Ryujinx. + + QtControllerSelectorDialog @@ -8960,9 +10062,9 @@ p, li { white-space: pre-wrap; } - + Pro Controller - Pro Controller + Comando Pro @@ -8973,7 +10075,7 @@ p, li { white-space: pre-wrap; } - + Dual Joycons Par de Joycons @@ -8986,9 +10088,9 @@ p, li { white-space: pre-wrap; } - + Left Joycon - Joycon esquerdo + Joycon Esquerdo @@ -8999,9 +10101,9 @@ p, li { white-space: pre-wrap; } - + Right Joycon - Joycon direito + Joycon Direito @@ -9028,7 +10130,7 @@ p, li { white-space: pre-wrap; } - + Handheld Portátil @@ -9060,12 +10162,12 @@ p, li { white-space: pre-wrap; } Console Mode - Modo do console + Modo de Consola Docked - Na base + Ancorado @@ -9096,7 +10198,7 @@ p, li { white-space: pre-wrap; } Controllers - Controles + Comandos @@ -9149,32 +10251,32 @@ p, li { white-space: pre-wrap; } Não há a quantidade mínima de controles - + GameCube Controller - Controle de GameCube + Controlador de depuração - + Poke Ball Plus Poké Ball Plus - + NES Controller Controle do NES - + SNES Controller Controle do SNES - + N64 Controller Controle do Nintendo 64 - + Sega Genesis Mega Drive @@ -9182,28 +10284,28 @@ p, li { white-space: pre-wrap; } QtErrorDisplay - - - + + + Error Code: %1-%2 (0x%3) Código de erro: %1-%2 (0x%3) - + An error has occurred. Please try again or contact the developer of the software. Ocorreu um erro. Tente novamente ou entre em contato com o desenvolvedor do software. - + An error occurred on %1 at %2. Please try again or contact the developer of the software. Ocorreu um erro em %1 até %2. Tente novamente ou entre em contato com o desenvolvedor do software. - + An error has occurred. %1 @@ -9219,7 +10321,7 @@ Tente novamente ou entre em contato com o desenvolvedor do software. QtProfileSelectionDialog - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -9227,30 +10329,30 @@ Tente novamente ou entre em contato com o desenvolvedor do software. - + Users - Usuários + Utilizadores Profile Creator - Criador de Perfil + Criador de perfil Profile Selector - Seletor de perfil + Seleccionador de Perfil Profile Icon Editor - Editor de Ícone de Perfil + Editor de ícone de perfil Profile Nickname Editor - Editor do Apelido de Perfil + Editor do apelido de perfil @@ -9260,7 +10362,7 @@ Tente novamente ou entre em contato com o desenvolvedor do software. Who is using Nintendo eShop? - Quem está usando a Nintendo eShop? + Quem está usando o Nintendo eShop? @@ -9275,7 +10377,7 @@ Tente novamente ou entre em contato com o desenvolvedor do software. Select a user to link to a Nintendo Account. - Selecione um usuário para vincular a uma Conta Nintendo. + Selecione um usuário para vincular a uma conta Nintendo. @@ -9308,7 +10410,7 @@ Tente novamente ou entre em contato com o desenvolvedor do software. Software Keyboard - Teclado de software + Teclado de Software @@ -9320,7 +10422,7 @@ Tente novamente ou entre em contato com o desenvolvedor do software.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -9329,163 +10431,93 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - - + + OK OK - + Cancel Cancelar + + RyujinxDialog + + + Ryujinx Link + Vínculo do Ryujinx + + + + Linking save data to Ryujinx lets both Ryujinx and Eden reference the same save files for your games. + +By selecting "From Eden", previous save data stored in Ryujinx will be deleted, and vice versa for "From Ryujinx". + Vincular os dados salvos ao Ryujinx permite que tanto o Ryujinx quanto o Eden utilizem os mesmos arquivos de salvamento para seus jogos. + +Ao selecionar "Do Eden", os dados salvos anteriores armazenados no Ryujinx serão excluídos, e vice-versa para "Do Ryujinx". + + + + From Eden + + + + + From Ryujinx + Do Ryujinx + + + + Cancel + + + + + Failed to link save data + + + + + OS returned error: %1 + + + SequenceDialog Enter a hotkey - Digite uma combinação de teclas + Introduza a tecla de atalho - WaitTreeCallstack + SetPlayTimeDialog - - Call stack - Pilha de chamadas - - - - WaitTreeSynchronizationObject - - - [%1] %2 - [%1] %2 + + Set Play Time Data + - - waited by no thread - não aguardando pelo thread - - - - WaitTreeThread - - - runnable - rodável + + Hours: + - - paused - pausado + + Minutes: + - - sleeping - dormindo + + Seconds: + - - waiting for IPC reply - esperando para resposta do IPC - - - - waiting for objects - esperando por objetos - - - - waiting for condition variable - aguardando por variável da condição - - - - waiting for address arbiter - esperando para endereção o árbitro - - - - waiting for suspend resume - esperando pra suspender o resumo - - - - waiting - aguardando - - - - initialized - inicializado - - - - terminated - terminado - - - - unknown - desconhecido - - - - PC = 0x%1 LR = 0x%2 - PC = 0x%1 LR = 0x%2 - - - - ideal - ideal - - - - core %1 - núcleo %1 - - - - processor = %1 - processador = %1 - - - - affinity mask = %1 - máscara de afinidade = %1 - - - - thread id = %1 - thread id = %1 - - - - priority = %1(current) / %2(normal) - prioridade = %1(atual) / %2(normal) - - - - last running ticks = %1 - últimos ticks executados = %1 - - - - WaitTreeThreadList - - - waited by thread - aguardado pelo thread - - - - WaitTreeWidget - - - &Wait Tree - &Árvore de espera + + Total play time reached maximum. + diff --git a/dist/languages/pt_PT.ts b/dist/languages/pt_PT.ts index 2077c4be80..fb0f3e11c9 100644 --- a/dist/languages/pt_PT.ts +++ b/dist/languages/pt_PT.ts @@ -1,25 +1,15 @@ - - - + AboutDialog - - About yuzu - Sobre o yuzu - - - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - - About eden - + About Eden + - <html><head/><body><p><span style=" font-size:28pt;">eden</span></p></body></html> - + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> + @@ -34,70 +24,50 @@ p, li { white-space: pre-wrap; } hr { height: 1px; border-width: 0; } li.unchecked::marker { content: "\2610"; } li.checked::marker { content: "\2612"; } -</style></head><body style=" font-family:'Adwaita Sans'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> - +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> + - <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">This software should not be used to play games you have not legally obtained.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu é um emulador experimental de código aberto para o Nintendo Switch licenciado sob a GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Esse programa não deve ser utilizado para jogar jogos que você não obteve legalmente.</span></p></body></html> - - - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - Site | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Código fonte | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contribuidores</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licença</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. eden is not affiliated with Nintendo in any way.</span></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; é uma marca comercial da Nintendo. Yuzu não é afiliado com a Nintendo de qualquer forma.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. Eden is not affiliated with Nintendo in any way.</span></p></body></html> + CalibrationConfigurationDialog - + Communicating with the server... A comunicar com o servidor... - + Cancel Cancelar - + Touch the top left corner <br>of your touchpad. Toca no canto superior esquerdo <br>do teu touchpad. - + Now touch the bottom right corner <br>of your touchpad. Agora toca no canto inferior direito <br> do teu touchpad. - + Configuration completed! Configuração completa! - + OK OK @@ -120,78 +90,78 @@ p, li { white-space: pre-wrap; } Enviar mensagem - + Members Membros - + %1 has joined %1 entrou - + %1 has left %1 saiu - + %1 has been kicked %1 foi expulso(a) - + %1 has been banned %1 foi banido(a) - + %1 has been unbanned %1 foi desbanido(a) - + View Profile Ver perfil - - + + Block Player Bloquear jogador - + When you block a player, you will no longer receive chat messages from them.<br><br>Are you sure you would like to block %1? Quando bloqueia um jogador, você não receberá mais mensagens dele.<br><br>Você deseja mesmo bloquear %1? - + Kick Expulsar - + Ban Banir - + Kick Player Expulsar jogador - + Are you sure you would like to <b>kick</b> %1? Você deseja mesmo <b>expulsar</b> %1? - + Ban Player Banir jogador - + Are you sure you would like to <b>kick and ban</b> %1? This would ban both their forum username and their IP address. @@ -226,17 +196,17 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP. ClientRoomWindow - + Connected Conectado - + Disconnected Desconectado - + %1 - %2 (%3/%4 members) - connected %1 - %2 (%3/%4 membros) - conectado @@ -259,14 +229,10 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP.Report Game Compatibility Reportar compatibilidade de jogos - - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of yuzu you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected yuzu account</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Se você optar por enviar um caso de teste para a</span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">lista de compatibilidade do yuzu</span></a><span style=" font-size:10pt;">As seguintes informações serão coletadas e exibidas no site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Informações de Hardware (CPU / GPU / Sistema operativo)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Que versão do yuzu você está executando</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">A conta yuzu conectada</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">eden Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of eden you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected eden account</li></ul></body></html> - + @@ -374,22 +340,22 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP.Obrigado pelo seu envio! - + Submitting Entregando - + Communication error Erro de comunicação - + An error occurred while sending the Testcase Um erro ocorreu ao enviar o caso de teste - + Next Próximo @@ -397,350 +363,371 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP. ConfigurationShared - + % % - + Amiibo editor Editor de Amiibo - + Controller configuration Configuração de controles - + Data erase Apagamento de dados - + Error Erro - + Net connect Conectar à rede - + Player select Seleção de jogador - + Software keyboard Teclado de software - + Mii Edit Editar Mii - + Online web Serviço online - + Shop Loja - + Photo viewer Visualizador de imagens - + Offline web Rede offline - + Login share Compartilhamento de Login - + Wifi web auth Autenticação web por Wifi - + My page Minha página - + + Enable Overlay Applet + + + + + Enables Horizon's built-in overlay applet. Press and hold the home button for 1 second to show it. + + + + Output Engine: Motor de Saída: - + Output Device: Dispositivo de Saída - + Input Device: Dispositivo de Entrada - + Mute audio Mutar Áudio - + Volume: Volume: - + Mute audio when in background Silenciar audio quando a janela ficar em segundo plano - + Multicore CPU Emulation Emulação de CPU Multicore - - This option increases CPU emulation thread use from 1 to the Switch’s maximum of 4. -This is mainly a debug option and shouldn’t be disabled. - Esta opção aumenta o uso de threads de emulação da CPU de 1 para o máximo de 4 do switch. -Isso é prioritariamente uma opção de depuração e não deve ser desabilitada. + + This option increases CPU emulation thread use from 1 to the maximum of 4. +This is mainly a debug option and shouldn't be disabled. + - + Memory Layout Layout de memória - - Increases the amount of emulated RAM from the stock 4GB of the retail Switch to the developer kit's 8/6GB. -It’s doesn’t improve stability or performance and is intended to let big texture mods fit in emulated RAM. -Enabling it will increase memory use. It is not recommended to enable unless a specific game with a texture mod needs it. - Aumenta a quantidade padrão de 4GB de memória RAM emulada do Switch do varejo, para os 8/6GB dos kits de desenvolvedor do console. -Isso não melhora a estabilidade ou performance e só serve para comportar grandes mods de textura na RAM emulada. -Habilitar essa opção aumentará o uso de memória. Não é recomendado habilitar isso a não ser que um jogo específico com um mod de textura precise. + + Increases the amount of emulated RAM. +Doesn't affect performance/stability but may allow HD texture mods to load. + - + Limit Speed Percent Percentagem do limitador de velocidade - - Controls the game's maximum rendering speed, but it’s up to each game if it runs faster or not. + + Controls the game's maximum rendering speed, but it's up to each game if it runs faster or not. 200% for a 30 FPS game is 60 FPS, and for a 60 FPS game it will be 120 FPS. Disabling it means unlocking the framerate to the maximum your PC can reach. - Controla a velocidade máxima de renderização de um jogo, mas depende de cada jogo se ele roda mais rápido ou não. -200% para um jogo de 30 FPS são 60 FPS, e para um de 60 FPS serão 120 FPS. -Desabilitar essa opção faz com que você destrave a taxa de quadros para o máximo que seu PC consegue alcançar. + - + + Turbo Speed + + + + + When the Turbo Speed hotkey is pressed, the speed will be limited to this percentage. + + + + + Slow Speed + + + + + When the Slow Speed hotkey is pressed, the speed will be limited to this percentage. + + + + Synchronize Core Speed - + - - Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). -Compatibility varies by game; many (especially older ones) may not respond well. + + Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). Can help reduce stuttering at lower framerates. - + - + Accuracy: Precisão: - - This setting controls the accuracy of the emulated CPU. -Don't change this unless you know what you are doing. - Esta configuração controla a precisão da CPU emulada. -Não altere isso a menos que saiba o que está fazendo. + + Change the accuracy of the emulated CPU (for debugging only). + - - + + Backend: Backend: - - Fast CPU Time - + + CPU Overclock + - + Overclocks the emulated CPU to remove some FPS limiters. Weaker CPUs may see reduced performance, and certain games may behave improperly. Use Boost (1700MHz) to run at the Switch's highest native clock, or Fast (2000MHz) to run at 2x clock. - + - + + Custom CPU Ticks + + + + + Set a custom value of CPU ticks. Higher values can increase performance, but may cause deadlocks. A range of 77-21000 is recommended. + + + + + Enable Host MMU Emulation (fastmem) + + + + + This optimization speeds up memory accesses by the guest program. +Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU. +Disabling this forces all memory accesses to use Software MMU Emulation. + + + + Unfuse FMA (improve performance on CPUs without FMA) FMA inseguro (Melhorar performance no CPU sem FMA) - + This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support. 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. - + Faster FRSQRTE and FRECPE FRSQRTE e FRECPE mais rápido - + This option improves the speed of some approximate floating-point functions by using less accurate native approximations. Essa opção melhora a velocidade de algumas funções aproximadas de pontos flutuantes ao usar aproximações nativas precisas. - + Faster ASIMD instructions (32 bits only) Instruções ASIMD mais rápidas (apenas 32 bits) - + This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes. Essa opção melhora a velocidade de funções de pontos flutuantes de 32 bits ASIMD ao executá-las com modos de arredondamento incorretos. - + Inaccurate NaN handling Tratamento impreciso de NaN - + This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions. Esta opção melhora a velocidade ao remover a checagem NaN. Por favor, note que isso também reduzirá a precisão de certas instruções de ponto flutuante. - + Disable address space checks Desativar a verificação do espaço de endereços - - This option improves speed by eliminating a safety check before every memory read/write in guest. -Disabling it may allow a game to read/write the emulator's memory. - Esta opção melhora a velocidade ao eliminar a checagem de segurança antes de cada leitura/escrita de memória no dispositivo convidado. -Desabilitar essa opção pode permitir que um jogo leia/escreva na memória do emulador. + + This option improves speed by eliminating a safety check before every memory operation. +Disabling it may allow arbitrary code execution. + - + Ignore global monitor Ignorar monitor global - + 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. Esta opção melhora a velocidade ao depender apenas das semânticas do cmpxchg pra garantir a segurança das instruções de acesso exclusivo. Por favor, note que isso pode resultar em travamentos e outras condições de execução. - + API: API: - - Switches between the available graphics APIs. -Vulkan is recommended in most cases. - Alterna entre as APIs gráficas disponíveis. -Vulkan é a recomendada na maioria dos casos. + + Changes the output graphics API. +Vulkan is recommended. + - + Device: Dispositivo: - - This setting selects the GPU to use with the Vulkan backend. - Esta opção seleciona a GPU a ser usada com a Vulkan. + + This setting selects the GPU to use (Vulkan only). + - - Shader Backend: - Suporte de shaders: - - - - The shader backend to use for the OpenGL renderer. -GLSL is the fastest in performance and the best in rendering accuracy. -GLASM is a deprecated NVIDIA-only backend that offers much better shader building performance at the cost of FPS and rendering accuracy. -SPIR-V compiles the fastest, but yields poor results on most GPU drivers. - O backend de shader a ser usado com a OpenGL. -GLSL é o mais rápido em performance e o melhor na precisão da renderização. -GLASM é um backend exclusivo descontinuado da NVIDIA que oferece uma performance de compilação de shaders muito melhor ao custo de FPS e precisão de renderização. -SPIR-V é o mais rápido ao compilar shaders, mas produz resultados ruins na maioria dos drivers de GPU. - - - + Resolution: Resolução: - - Forces the game to render at a different resolution. -Higher resolutions require much more VRAM and bandwidth. -Options lower than 1X can cause rendering issues. - Força o jogo a renderizar em uma resolução diferente. -Resoluções maiores requerem mais VRAM e largura de banda. -Opções menores do que 1X podem causar problemas na renderização. + + Forces to render at a different resolution. +Higher resolutions require more VRAM and bandwidth. +Options lower than 1X can cause artifacts. + - + Window Adapting Filter: Filtro de adaptação de janela: - + FSR Sharpness: FSR Sharpness: - - Determines how sharpened the image will look while using FSR’s dynamic contrast. - Determina a nitidez da imagem ao utilizar contraste dinâmico do FSR. + + Determines how sharpened the image will look using FSR's dynamic contrast. + - + Anti-Aliasing Method: Método de Anti-Aliasing - + The anti-aliasing method to use. SMAA offers the best quality. -FXAA has a lower performance impact and can produce a better and more stable picture under very low resolutions. - O método anti-aliasing a ser utilizado. -SMAA oferece a melhor qualidade. -FXAA tem um impacto menor na performance e pode produzir uma imagem melhor e mais estável em resoluções muito baixas. +FXAA can produce a more stable picture in lower resolutions. + - + Fullscreen Mode: Tela Cheia - + The method used to render the window in fullscreen. Borderless offers the best compatibility with the on-screen keyboard that some games request for input. Exclusive fullscreen may offer better performance and better Freesync/Gsync support. @@ -749,63 +736,49 @@ Sem borda oferece a melhor compatibilidade com o teclado na tela que alguns jogo Tela cheia exclusiva pode oferecer melhor performance e melhor suporte a Freesync/Gsync. - + Aspect Ratio: Proporção do Ecrã: - - Stretches the game to fit the specified aspect ratio. -Switch games only support 16:9, so custom game mods are required to get other ratios. + + Stretches the renderer to fit the specified aspect ratio. +Most games only support 16:9, so modifications are required to get other ratios. Also controls the aspect ratio of captured screenshots. - Estica a imagem do jogo para a proporção de aspecto especificada. -Jogos do Switch somente suportam 16:9, por isso mods customizados por jogo são necessários para outras proporções. -Isso também controla a proporção de aspecto de capturas de telas. + - - Use disk pipeline cache - Usar cache de pipeline em disco + + Use persistent pipeline cache + - + Allows saving shaders to storage for faster loading on following game boots. Disabling it is only intended for debugging. Permite guardar os shaders para carregar os jogos nas execuções seguintes. Desabiltar essa opção só serve para propósitos de depuração. - - Optimize SPIRV output shader - + + Optimize SPIRV output + - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. This feature is experimental. - + - - Use asynchronous GPU emulation - Usar emulação assíncrona de GPU - - - - Uses an extra CPU thread for rendering. -This option should always remain enabled. - Usa uma thread de CPU extra para renderização. -Esta opção deve estar sempre habilitada. - - - + NVDEC emulation: Emulação NVDEC: - + Specifies how videos should be decoded. It can either use the CPU or the GPU for decoding, or perform no decoding at all (black screen on videos). In most cases, GPU decoding provides the best performance. @@ -814,1170 +787,1450 @@ Tanto a CPU quanto a GPU podem ser utilizadas para decodificação, ou não deco Na maioria dos casos, a decodificação pela GPU fornece uma melhor performance. - + ASTC Decoding Method: Método de Decodificação ASTC: - + This option controls how ASTC textures should be decoded. -CPU: Use the CPU for decoding, slowest but safest method. -GPU: Use the GPU's compute shaders to decode ASTC textures, recommended for most games and users. -CPU Asynchronously: Use the CPU to decode ASTC textures as they arrive. Completely eliminates ASTC decoding -stuttering at the cost of rendering issues while the texture is being decoded. - Esta opção controla como as texturas ASTC devem ser decodificadas. -CPU: Usa a CPU for decodificação. Método mais lento, porém o mais seguro. -GPU: Usa os shaders de computação da GPU para decodificar texturas ASTC. Recomendado para a maioria dos jogos e usuários. -CPU de Forma Assíncrona: Usa a CPU para decodificar texturas ASTC à medida que aparecem. Elimina completamente os travamentos de -decodificação ASTC ao custo de problemas na renderização enquanto as texturas estão sendo decodificadas. +CPU: Use the CPU for decoding. +GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). +CPU Asynchronously: Use the CPU to decode ASTC textures on demand. EliminatesASTC decoding +stuttering but may present artifacts. + - + ASTC Recompression Method: Método de Recompressão ASTC: - - Almost all desktop and laptop dedicated GPUs lack support for ASTC textures, forcing the emulator to decompress to an intermediate format any card supports, RGBA8. -This option recompresses RGBA8 to either the BC1 or BC3 format, saving VRAM but negatively affecting image quality. - Quase todas as GPUs de desktop e laptop não possuem suporte para texturas ASTC, o que força o emulador a descompactá-las para um formato intermediário que qualquer placa suporta, o RGBA8. -Esta opção recompacta o RGBA8 ou pro formato BC1 ou pro BC3, economizando VRAM mas afetando negativamente a qualidade da imagem. + + Most GPUs lack support for ASTC textures and must decompress to anintermediate format: RGBA8. +BC1/BC3: The intermediate format will be recompressed to BC1 or BC3 format, + saving VRAM but degrading image quality. + - + + Frame Pacing Mode (Vulkan only) + + + + + Controls how the emulator manages frame pacing to reduce stuttering and make the frame rate smoother and more consistent. + + + + VRAM Usage Mode: Modo de Uso da VRAM: - - Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. Has no effect on integrated graphics. Aggressive mode may severely impact the performance of other applications such as recording software. - Define se o emulador deve preferir conservar ou fazer o uso máximo da memória de vídeo disponível para melhorar a performance. Não tem efeito em gráficos integrados. O modo Agressivo pode impactar fortemente na performance de outras aplicações, tipo programas de gravação de tela. + + Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. +Aggressive mode may impact performance of other applications such as recording software. + - + + Skip CPU Inner Invalidation + + + + + Skips certain cache invalidations during memory updates, reducing CPU usage and improving latency. This may cause soft-crashes. + + + + VSync Mode: Modo de Sincronização vertical: - + FIFO (VSync) does not drop frames or exhibit tearing but is limited by the screen refresh rate. -FIFO Relaxed is similar to FIFO but allows tearing as it recovers from a slow down. +FIFO Relaxed 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. - 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. +Immediate (no synchronization) presents whatever is available and can exhibit tearing. + - + + Sync Memory Operations + + + + + Ensures data consistency between compute and memory operations. +This option fixes issues in games, but may degrade performance. +Unreal Engine 4 games often see the most significant changes thereof. + + + + Enable asynchronous presentation (Vulkan only) Ativar apresentação assíncrona (Somente Vulkan) - + Slightly improves performance by moving presentation to a separate CPU thread. Melhora ligeiramente o desempenho ao mover a apresentação para uma thread de CPU separada. - + Force maximum clocks (Vulkan only) Forçar clock máximo (somente Vulkan) - + Runs work in the background while waiting for graphics commands to keep the GPU from lowering its clock speed. Executa trabalho em segundo plano aguardando pelos comandos gráficos para evitar a GPU de reduzir seu clock. - + Anisotropic Filtering: Filtro Anisotrópico: - + Controls the quality of texture rendering at oblique angles. -It’s a light setting and safe to set at 16x on most GPUs. - Controla a qualidade da renderização de texturas em ângulos oblíquos. -É uma configuração leve, e é seguro deixar em 16x na maioria das GPUs. +Safe to set at 16x on most GPUs. + - - Accuracy Level: - Nível de Precisão: + + GPU Mode: + - - GPU emulation accuracy. -Most games render fine with Normal, but High is still required for some. -Particles tend to only render correctly with High accuracy. -Extreme should only be used for debugging. -This option can be changed while playing. -Some games may require booting on high to render properly. - Precisão da emulação da GPU. -A maioria dos jogos renderiza bem na precisão Normal, mas a Alta ainda é obrigatória para alguns. -Partículas tendem a render corretamente somente com a precisão Alta. -Extrema só deve ser utilizada para depuração. -Esta opção pode ser alterada durante o jogo. -Alguns jogos podem exigir serem iniciados na precisão alta pra renderizarem corretamente. + + Controls the GPU emulation mode. +Most games render fine with Fast or Balanced modes, but Accurate is still required for some. +Particles tend to only render correctly with Accurate mode. + - - Use asynchronous shader building (Hack) - Usar compilação assíncrona de shaders (Hack) + + DMA Accuracy: + - - Enables asynchronous shader compilation, which may reduce shader stutter. -This feature is experimental. - Habilita a compilação de shaders assíncrona, o que pode reduzir engasgos. -Esta opção é experimental. + + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. + - Use Fast GPU Time (Hack) - Usar tempo de resposta rápido da GPU (Hack) + + Enable asynchronous shader compilation + - Enables Fast GPU Time. This option will force most games to run at their highest native resolution. - Ativa um tempo de resposta rápido da GPU. Esta opção forçará a maioria dos jogos a rodar em sua resolução nativa mais alta. + + May reduce shader stutter. + - + + Fast GPU Time + + + + + Overclocks the emulated GPU to increase dynamic resolution and render distance. +Use 256 for maximal performance and 512 for maximal graphics fidelity. + + + + + GPU Unswizzle + + + + + Accelerates BCn 3D texture decoding using GPU compute. +Disable if experiencing crashes or graphical glitches. + + + + + GPU Unswizzle Max Texture Size + + + + + Sets the maximum size (MiB) for GPU-based texture unswizzling. +While the GPU is faster for medium and large textures, the CPU may be more efficient for very small ones. +Adjust this to find the balance between GPU acceleration and CPU overhead. + + + + + GPU Unswizzle Stream Size + + + + + Sets the maximum amount of texture data (in MiB) processed per frame. +Higher values can reduce stutter during texture loading but may impact frame consistency. + + + + + GPU Unswizzle Chunk Size + + + + + Determines the number of depth slices processed in a single dispatch. +Increasing this can improve throughput on high-end GPUs but may cause TDR or driver timeouts on weaker hardware. + + + + Use Vulkan pipeline cache Utilizar cache de pipeline do Vulkan - + Enables GPU vendor-specific pipeline cache. This option can improve shader loading time significantly in cases where the Vulkan driver does not store pipeline cache files internally. Habilita o cache de pipeline da fabricante da GPU. Esta opção pode melhorar o tempo de carregamento de shaders significantemente em casos onde o driver Vulkan não armazena o cache de pipeline internamente. - + Enable Compute Pipelines (Intel Vulkan Only) Habilitar Pipeline de Computação (Somente Intel Vulkan) - - Enable compute pipelines, required by some games. -This setting only exists for Intel proprietary drivers, and may crash if enabled. + + 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. - 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. + - + Enable Reactive Flushing Habilitar Flushing Reativo - + Uses reactive flushing instead of predictive flushing, allowing more accurate memory syncing. Usa flushing reativo ao invés de flushing preditivo, permitindo mais precisão na sincronização da memória. - + Sync to framerate of video playback Sincronizar com o framerate da reprodução de vídeo - + Run the game at normal speed during video playback, even when the framerate is unlocked. Executa o jogo na velocidade normal durante a reprodução de vídeo, mesmo se o framerate estiver desbloqueado. - + Barrier feedback loops Ciclos de feedback de barreira - + Improves rendering of transparency effects in specific games. Melhora a renderização de efeitos de transparência em jogos específicos. - + + Enable buffer history + + + + + Enables access to previous buffer states. +This option may improve rendering quality and performance consistency in some games. + + + + + Fix bloom effects + + + + + Removes bloom in Burnout. + + + + + Enable Legacy Rescale Pass + + + + + May fix rescale issues in some games by relying on behavior from the previous implementation. +Legacy behavior workaround that fixes line artifacts on AMD and Intel GPUs, and grey texture flicker on Nvidia GPUs in Luigis Mansion 3. + + + + + Extended Dynamic State + + + + + Controls the number of features that can be used in Extended Dynamic State. +Higher states allow for more features and can increase performance, but may cause additional graphical issues. + + + + + Vertex Input Dynamic State + + + + + Enables vertex input dynamic state feature for better quality and performance. + + + + + Sample Shading + + + + + Allows the fragment shader to execute per sample in a multi-sampled fragment instead of once per fragment. Improves graphics quality at the cost of performance. +Higher values improve quality but degrade performance. + + + + RNG Seed Semente de RNG - + Controls the seed of the random number generator. -Mainly used for speedrunning purposes. - Controla a semente do gerador de números aleatórios. -Usado principalmente para propósitos de speedrunning. +Mainly used for speedrunning. + - + Device Name Nome do Dispositivo - - The name of the emulated Switch. - O nome do Switch emulado. + + The name of the console. + - + Custom RTC Date: Data personalizada do RTC: - - This option allows to change the emulated clock of the Switch. + + This option allows to change the clock of the console. Can be used to manipulate time in games. - Esta opção permite alterar o relógio do Switch emulado. -Pode ser utilizada para manipular o tempo nos jogos. + - + + The number of seconds from the current unix time + + + + Language: Idioma: - - Note: this can be overridden when region setting is auto-select - Nota: isto pode ser substituído quando a configuração da região é de seleção automática + + This option can be overridden when region setting is auto-select + - + Region: Região: - - The region of the emulated Switch. - A região do Switch emulado. + + The region of the console. + - + Time Zone: Fuso Horário: - - The time zone of the emulated Switch. - O fuso horário do Switch emulado. + + The time zone of the console. + - + Sound Output Mode: Modo de saída de som - + Console Mode: Modo Console: - - Selects if the console is emulated in Docked or Handheld mode. + + Selects if the console is in Docked or Handheld mode. Games will change their resolution, details and supported controllers and depending on this setting. Setting to Handheld can help improve performance for low end systems. - Seleciona se o console é emulado no Modo TV ou portátil. -Os jogos mudarão suas resoluções, detalhes e controles suportados de acordo com essa opção. -Configurar essa opção para o Modo Portátil pode ajudar a melhorar a performance em sistemas mais fracos. + - - Prompt for user on game boot - Solicitar para o utilizador na inicialização do jogo + + Unit Serial + - Ask to select a user profile on each boot, useful if multiple people use yuzu on the same PC. - Pede para selecionar um perfil de usuário a cada boot, útil se várias pessoas utilizam o yuzu no mesmo PC. + + Battery Serial + - - Pause emulation when in background - Pausar o emulador quando estiver em segundo plano + + Debug knobs + - This setting pauses yuzu when focusing other windows. - Esta opção pausa o yuzu quando outras janelas estão ativas. + + Prompt for user profile on boot + - - Fast GPU Time (Hack) - + + Useful if multiple people use the same PC. + - - Overclocks the emulated GPU to increase dynamic resolution and render distance. -Use 128 for maximal performance and 512 for maximal graphics fidelity. - + + Pause when not in focus + - - Extended Dynamic State - + + Pauses emulation when focusing on other windows. + - - Enables the VkExtendedDynamicState* extensions. -Higher dynamic states will generally improve performance, but may cause issues on certain games or devices. - - - - - Provoking Vertex - - - - - Improves lighting and vertex handling in certain games. -Only Vulkan 1.0+ devices support this extension. - - - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - - Ask to select a user profile on each boot, useful if multiple people use eden on the same PC. - - - - - This setting pauses eden when focusing other windows. - - - - + Confirm before stopping emulation Confirmar antes de parar a emulação - - This setting overrides game prompts asking to confirm stopping the game. + + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - Esta configuração desconsidera as solicitações dos jogos que pedem pra confirmarem a interrupção deles. -Habilitar essa configuração ignora essas solicitações e sai da emulação direto. + - + Hide mouse on inactivity Esconder rato quando inactivo. - - This setting hides the mouse after 2.5s of inactivity. - Esta configuração esconde o mouse após 2,5s de inativadade. + + Hides the mouse after 2.5s of inactivity. + - + Disable controller applet Desabilitar miniaplicativo de controle - - Forcibly disables the use of the controller applet by guests. -When a guest attempts to open the controller applet, it is immediately closed. - Força a desativação do uso do miniaplicativo de controle pelos dispositivos convidados. -Quando um dispositivo convidado tenta abrir o miniaplicativo do controle, ele é imediatamente fechado. + + Forcibly disables the use of the controller applet in emulated programs. +When a program attempts to open the controller applet, it is immediately closed. + - + Check for updates - + - + Whether or not to check for updates upon startup. - + - + Enable Gamemode Habilitar Gamemode - + + Force X11 as Graphics Backend + + + + Custom frontend Frontend customizado - + Real applet Miniaplicativo real - + Never - + - + On Load - + - + Always - + - + CPU CPU - + GPU GPU - + CPU Asynchronous CPU Assíncrona - + Uncompressed (Best quality) Descompactado (Melhor Q - + BC1 (Low quality) BC1 (Baixa qualidade) - + BC3 (Medium quality) BC3 (Média qualidade) - - Conservative - Conservador - - - - Aggressive - Agressivo - - - - OpenGL - OpenGL - - - - Vulkan - Vulcano - - - - Null - Nenhum (desativado) - - - - GLSL - GLSL - - - - GLASM (Assembly Shaders, NVIDIA Only) - GLASM (Shaders Assembly, apenas NVIDIA) - - - - SPIR-V (Experimental, AMD/Mesa Only) - SPIR-V (Experimental, Somente AMD/Mesa) - - - - Normal - Normal - - - - High - Alto - - - - Extreme - Extremo - - - + + Auto Automático - + + 30 FPS + + + + + 60 FPS + + + + + 90 FPS + + + + + 120 FPS + + + + + Conservative + Conservador + + + + Aggressive + Agressivo + + + + Vulkan + Vulcano + + + + OpenGL GLSL + + + + + OpenGL GLASM (Assembly Shaders, NVIDIA Only) + + + + + OpenGL SPIR-V (Experimental, AMD/Mesa Only) + + + + + Null + Nenhum (desativado) + + + + Fast + + + + + Balanced + + + + + Accurate Preciso - - Unsafe - Inseguro - - - - Paranoid (disables most optimizations) - Paranoia (desativa a maioria das otimizações) - - - - Dynarmic - Dynarmic - - - - NCE - NCE - - - - Borderless Windowed - Janela sem bordas - - - - Exclusive Fullscreen - Tela cheia exclusiva - - - - No Video Output - Sem saída de vídeo - - - - CPU Video Decoding - Decodificação de vídeo pela CPU - - - - GPU Video Decoding (Default) - Decodificação de vídeo pela GPU (Padrão) - - - - 0.25X (180p/270p) [EXPERIMENTAL] - - - - - 0.5X (360p/540p) [EXPERIMENTAL] - 0.5X (360p/540p) [EXPERIMENTAL] - - - - 0.75X (540p/810p) [EXPERIMENTAL] - 0.75X (540p/810p) [EXPERIMENTAL] - - - - 1X (720p/1080p) - 1X (720p/1080p) - - - - 1.5X (1080p/1620p) [EXPERIMENTAL] - 1.5X (1080p/1620p) [EXPERIMENTAL] - - - - 2X (1440p/2160p) - 2X (1440p/2160p) - - - - 3X (2160p/3240p) - 3X (2160p/3240p) - - - - 4X (2880p/4320p) - 4X (2880p/4320p) - - - - 5X (3600p/5400p) - 5X (3600p/5400p) - - - - 6X (4320p/6480p) - 6X (4320p/6480p) - - - - 7X (5040p/7560p) - 7X (5040p/7560p) - - - - 8X (5760p/8640p) - 8X (5760p/8640p) - - - - Nearest Neighbor - Vizinho mais próximo - - - - Bilinear - Bilinear - - - - Bicubic - Bicúbico - - - - Gaussian - Gaussiano - - - - ScaleForce - ScaleForce - - - - AMD FidelityFX™️ Super Resolution - AMD FidelityFX™️ Super Resolution - - - - Area - - - - - None - Nenhum - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Default (16:9) - Padrão (16:9) - - - - Force 4:3 - Forçar 4:3 - - - - Force 21:9 - Forçar 21:9 - - - - Force 16:10 - Forçar 16:10 - - - - Stretch to Window - Esticar à Janela - - - - Automatic - Automático - - - + + Default Padrão - + + Unsafe (fast) + + + + + Safe (stable) + + + + + Unsafe + Inseguro + + + + Paranoid (disables most optimizations) + Paranoia (desativa a maioria das otimizações) + + + + Debugging + + + + + Dynarmic + Dynarmic + + + + NCE + NCE + + + + Borderless Windowed + Janela sem bordas + + + + Exclusive Fullscreen + Tela cheia exclusiva + + + + No Video Output + Sem saída de vídeo + + + + CPU Video Decoding + Decodificação de vídeo pela CPU + + + + GPU Video Decoding (Default) + Decodificação de vídeo pela GPU (Padrão) + + + + 0.25X (180p/270p) [EXPERIMENTAL] + + + + + 0.5X (360p/540p) [EXPERIMENTAL] + 0.5X (360p/540p) [EXPERIMENTAL] + + + + 0.75X (540p/810p) [EXPERIMENTAL] + 0.75X (540p/810p) [EXPERIMENTAL] + + + + 1X (720p/1080p) + 1X (720p/1080p) + + + + 1.25X (900p/1350p) [EXPERIMENTAL] + + + + + 1.5X (1080p/1620p) [EXPERIMENTAL] + 1.5X (1080p/1620p) [EXPERIMENTAL] + + + + 2X (1440p/2160p) + 2X (1440p/2160p) + + + + 3X (2160p/3240p) + 3X (2160p/3240p) + + + + 4X (2880p/4320p) + 4X (2880p/4320p) + + + + 5X (3600p/5400p) + 5X (3600p/5400p) + + + + 6X (4320p/6480p) + 6X (4320p/6480p) + + + + 7X (5040p/7560p) + 7X (5040p/7560p) + + + + 8X (5760p/8640p) + 8X (5760p/8640p) + + + + Nearest Neighbor + Vizinho mais próximo + + + + Bilinear + Bilinear + + + + Bicubic + Bicúbico + + + + Gaussian + Gaussiano + + + + Lanczos + + + + + ScaleForce + ScaleForce + + + + AMD FidelityFX Super Resolution + + + + + Area + + + + + MMPX + + + + + Zero-Tangent + + + + + B-Spline + + + + + Mitchell + + + + + Spline-1 + + + + + + None + Nenhum + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Default (16:9) + Padrão (16:9) + + + + Force 4:3 + Forçar 4:3 + + + + Force 21:9 + Forçar 21:9 + + + + Force 16:10 + Forçar 16:10 + + + + Stretch to Window + Esticar à Janela + + + + Automatic + Automático + + + 2x 2x - + 4x 4x - + 8x 8x - + 16x 16x - + + 32x + + + + + 64x + + + + Japanese (日本語) Japonês (日本語) - + American English Inglês Americano - + French (français) Francês (français) - + German (Deutsch) Alemão (Deutsch) - + Italian (italiano) Italiano (italiano) - + Spanish (español) Espanhol (español) - + Chinese Chinês - + Korean (한국어) Coreano (한국어) - + Dutch (Nederlands) Holandês (Nederlands) - + Portuguese (português) Português (português) - + Russian (Русский) Russo (Русский) - + Taiwanese Taiwanês - + British English Inglês Britânico - + Canadian French Francês Canadense - + Latin American Spanish Espanhol Latino-Americano - + Simplified Chinese Chinês Simplificado - + Traditional Chinese (正體中文) Chinês Tradicional (正 體 中文) - + Brazilian Portuguese (português do Brasil) Português do Brasil (Brazilian Portuguese) - - + + Polish (polska) + + + + + Thai (แบบไทย) + + + + + Japan Japão - + USA EUA - + Europe Europa - + Australia Austrália - + China China - + Korea Coreia - + Taiwan Taiwan - + Auto (%1) Auto select time zone Auto (%1) - + Default (%1) Default time zone Padrão (%1) - + CET CET - + CST6CDT CST6CDT - + Cuba Cuba - + EET EET - + Egypt Egipto - + Eire Irlanda - + EST EST - + EST5EDT EST5EDT - + GB GB - + GB-Eire GB-Irlanda - + GMT GMT - + GMT+0 GMT+0 - + GMT-0 GMT-0 - + GMT0 GMT0 - + Greenwich Greenwich - + Hongkong Hongkong - + HST HST - + Iceland Islândia - + Iran Irão - + Israel Israel - + Jamaica Jamaica - + Kwajalein Kwajalein - + Libya Líbia - + MET MET - + MST MST - + MST7MDT MST7MDT - + Navajo Navajo - + NZ NZ - + NZ-CHAT NZ-CHAT - + Poland Polónia - + Portugal Portugal - + PRC PRC - + PST8PDT PST8PDT - + ROC ROC - + ROK ROK - + Singapore Singapura - + Turkey Turquia - + UCT UCT - + Universal Universal - + UTC UTC - + W-SU W-SU - + WET WET - + Zulu Zulu - + Mono Mono - + Stereo Estéreo - + Surround Surround - + 4GB DRAM (Default) 4GB DRAM (Padrão) - + 6GB DRAM (Unsafe) 6GB DRAM (Não seguro) - + 8GB DRAM - + - + 10GB DRAM (Unsafe) - + - + 12GB DRAM (Unsafe) - + - - Low (128) - - - - - Medium (256) - - - - - High (512) - - - - 8GB DRAM (Unsafe) - 8GB DRAM (Não seguro) - - - + Docked Ancorado - + Handheld Portátil - + + + Off + + + + Boost (1700MHz) - + - + Fast (2000MHz) - + - + Always ask (Default) Sempre perguntar (Padrão) - + Only if game specifies not to stop Somente se o jogo especificar para não parar - + Never ask Nunca perguntar + + + + Medium (256) + + + + + + High (512) + + + + + Very Small (16 MB) + + + + + Small (32 MB) + + + + + Normal (128 MB) + + + + + Large (256 MB) + + + + + Very Large (512 MB) + + + + + Very Low (4 MB) + + + + + Low (8 MB) + + + + + Normal (16 MB) + + + + + Medium (32 MB) + + + + + High (64 MB) + + + + + Very Low (32) + + + + + Low (64) + + + + + Normal (128) + + + + + Disabled + + + + + ExtendedDynamicState 1 + + + + + ExtendedDynamicState 2 + + + + + ExtendedDynamicState 3 + + + + + Tree View + + + + + Grid View + + ConfigureApplets @@ -2049,7 +2302,7 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo do controle, ele é Restaurar Padrões - + Auto Automático @@ -2228,7 +2481,7 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo do controle, ele é <div style="white-space: nowrap">This optimization speeds up memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all memory accesses to use Software MMU Emulation.</div> @@ -2246,7 +2499,7 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo do controle, ele é <div style="white-space: nowrap">This optimization speeds up exclusive memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all exclusive memory accesses to use Software MMU Emulation.</div> @@ -2280,7 +2533,7 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo do controle, ele é <div style="white-space: nowrap">This optimization speeds up memory accesses by allowing invalid memory accesses to succeed.</div> - <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> + <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> <div style="white-space: nowrap">Esta otimização acelera os acessos à memória ao permitir que acessos inválidos à memória sejam bem-sucedidos.</div> @@ -2321,30 +2574,30 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo do controle, ele é Entrando - - Open Log Location - Abrir a localização do registro - - - + Global Log Filter Filtro de registro global - + When checked, the max size of the log increases from 100 MB to 1 GB Quando ativado, o tamanho máximo do registo aumenta de 100 MB para 1 GB - + Enable Extended Logging** Ativar registros avançados** - + Show Log in Console Mostrar Relatório na Consola + + + Open Log Location + Abrir a localização do registro + Homebrew @@ -2481,18 +2734,9 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo do controle, ele é Ativar todos os tipos de controles - - Censor username in logs - - - - - **This will be reset automatically when eden closes. - - - - Enable Auto-Stub** - Ativar auto-esboço** + + Enable Auto-Stub + @@ -2501,8 +2745,8 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo do controle, ele é - Enable CPU Debugging - Ativar depuração de CPU + Use dev.keys + @@ -2515,43 +2759,74 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo do controle, ele é Depuração - - Flush log output on each line - + + Battery Serial: + - - Enable FS Access Log - Ativar acesso de registro FS + + Bitmask for quick development toggles + - + + Set debug knobs (bitmask) + + + + + 16-bit debug knob set for quick development toggles + + + + + (bitmask) + + + + + Debug Knobs: + + + + + Unit Serial: + + + + Enable this to output the latest generated audio command list to the console. Only affects games using the audio renderer. Habilite essa opção para gravar a última saída da lista de comandos de áudio para o console. Somente afetará jogos que utilizam o renderizador de áudio. - - Enable Auto-Stub - - - - + Dump Audio Commands To Console** Despejar comandos de áudio no console** - + + Flush log output on each line + + + + + Enable FS Access Log + Ativar acesso de registro FS + + + Enable Verbose Reporting Services** Ativar serviços de relatório detalhado** - **This will be reset automatically when yuzu closes. - **Isto será restaurado automaticamente assim que o yuzu for fechado. + + Censor username in logs + - - Web applet not compiled - Applet Web não compilado + + **This will be reset automatically when Eden closes. + @@ -2593,14 +2868,10 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo do controle, ele é ConfigureDialog - - yuzu Configuration - Configuração yuzu - - eden Configuration - + Eden Configuration + @@ -2608,88 +2879,88 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo do controle, ele é Algumas configurações só estão disponíveis apenas quando não houver nenhum jogo em execução. - + Applets Miniaplicativos - - + + Audio Audio - - + + CPU CPU - + Debug Depurar - + Filesystem Sistema de Ficheiros - - + + General Geral - - + + Graphics Gráficos - + GraphicsAdvanced GráficosAvançados - - GraphicsExtensions - + + GraphicsExtra + - + Hotkeys Teclas de Atalhos - - + + Controls Controlos - + Profiles Perfis - + Network Rede - - + + System Sistema - + Game List Lista de Jogos - + Web Rede @@ -2719,9 +2990,10 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo do controle, ele é - - - + + + + ... ... @@ -2731,107 +3003,183 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo do controle, ele é Cartão SD - + + Save Data + + + + Gamecard Cartão de jogo - + Path Caminho - + Inserted Inserido - + Current Game Jogo Atual - + Patch Manager Gestor de Patch - + Dump Decompressed NSOs Dump NSOs Descompactados - + Dump ExeFS Dump ExeFS - + Mod Load Root Raiz dos Mods - + Dump Root Raiz do Dump - + Caching Armazenamento em cache - + Cache Game List Metadata Metadata da Lista de Jogos em Cache - - - - + Reset Metadata Cache Resetar a Cache da Metadata - + Select Emulated NAND Directory... Selecione o Diretório NAND Emulado... - + Select Emulated SD Directory... Selecione o Diretório SD Emulado... - + + + Select Save Data Directory... + + + + Select Gamecard Path... Selecione o Diretório do Cartão de Jogo... - + Select Dump Directory... Selecionar o diretório do Dump... - + Select Mod Load Directory... Selecionar o Diretório do Mod Load ... - - The metadata cache is already empty. - O cache de metadata já está vazio. + + Save Data Directory + - - The operation completed successfully. - A operação foi completa com sucesso. + + Choose an action for the save data directory: + - - The metadata cache couldn't be deleted. It might be in use or non-existent. - Não foi possível excluir o cache de metadata. Pode estar em uso ou inexistente. + + Set Custom Path + + + + + Reset to NAND + + + + + Save data exists in both the old and new locations. + +Old: %1 +New: %2 + +Would you like to migrate saves from the old location? +WARNING: This will overwrite any conflicting saves in the new location! + + + + + Would you like to migrate your save data to the new location? + +From: %1 +To: %2 + + + + + Migrate Save Data + + + + + Migrating save data... + + + + + Cancel + + + + + + Migration Failed + + + + + Failed to create destination directory. + + + + + Failed to migrate save data: +%1 + + + + + Migration Complete + + + + + Save data has been migrated successfully. + +Would you like to delete the old save data? + @@ -2849,28 +3197,54 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo do controle, ele é - Linux - Linux + External Content + - + + Add directories to scan for DLCs and Updates without installing to NAND + + + + + Add Directory + + + + + Remove Selected + + + + Reset All Settings Restaurar todas as configurações - yuzu - yuzu + + Eden + - - eden - - - - + This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed? Isto restaura todas as configurações e remove as configurações específicas de cada jogo. As pastas de jogos, perfis de jogos e perfis de controlo não serão removidos. Continuar? + + + Select External Content Directory... + + + + + Directory Already Added + + + + + This directory is already in the list. + + ConfigureGraphics @@ -2900,33 +3274,33 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo do controle, ele é Cor de fundo: - + % FSR sharpening percentage (e.g. 50%) % - + Off Desligado - + VSync Off Sincronização vertical desligada - + Recommended Recomendado - + On Ligado - + VSync On Sincronização vertical ligada @@ -2944,7 +3318,7 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo do controle, ele é Avançado - + Advanced Graphics Settings Definições de Gráficos Avançadas @@ -2954,24 +3328,38 @@ Quando um dispositivo convidado tenta abrir o miniaplicativo do controle, ele é Form - + - Extensions - + Extras + - - Vulkan Extension Settings - + + Hacks + - - While it's recommended to use state 3, some games may perform better on lower states. Setting to 0 (disabled) may also break games. -If your GPU is older (i.e. RX570/580 or older), it may not support these features. If this is the case, set the slider to 0 and uncheck all boxes. -These settings are experimental, and may cause black screens. If your games fail to boot or are stuck on a black screen, change these settings around. - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + + + + + % + Sample Shading percentage (e.g. 50%) + + + + + Extended Dynamic State is disabled on macOS due to MoltenVK compatibility issues that cause black screens. + @@ -3002,75 +3390,75 @@ These settings are experimental, and may cause black screens. If your games fail Restaurar Padrões - + Action Ação - + Hotkey Tecla de Atalho - + Controller Hotkey Atalho do controle - - - + + + Conflicting Key Sequence Sequência de teclas em conflito - - + + The entered key sequence is already assigned to: %1 A sequência de teclas inserida já está atribuída a: %1 - + [waiting] [em espera] - + Invalid Inválido - + Invalid hotkey settings Configurações de atalho inválidas - + An error occurred. Please report this issue on github. Houve um erro. Relate o problema no GitHub. - + Restore Default Restaurar Padrão - + Clear Limpar - + Conflicting Button Sequence Sequência de botões conflitante - + The default button sequence is already assigned to: %1 A sequência de botões padrão já está vinculada a %1 - + The default key sequence is already assigned to: %1 A sequência de teclas padrão já está atribuída a: %1 @@ -3390,12 +3778,8 @@ These settings are experimental, and may cause black screens. If your games fail - Requires restarting eden - - - - Requires restarting yuzu - Requer reiniciar o yuzu + Requires restarting Eden + @@ -3545,30 +3929,19 @@ These settings are experimental, and may cause black screens. If your games fail - + Left Stick Analógico Esquerdo - - - - - - - Up - Cima - - - - - - - - - - Left - Esquerda + + + + + + + Down + Baixo @@ -3582,14 +3955,25 @@ These settings are experimental, and may cause black screens. If your games fail Direita - - - - - - - Down - Baixo + + + + + + + + Left + Esquerda + + + + + + + + + Up + Cima @@ -3636,14 +4020,6 @@ These settings are experimental, and may cause black screens. If your games fail D-Pad D-Pad - - - - - - SL - SL - @@ -3653,59 +4029,55 @@ These settings are experimental, and may cause black screens. If your games fail SR - - - - L - L + + + + + SL + SL - + ZL ZL + + + + + L + L + Minus Menos - - - - Capture - Capturar - - + Plus Mais - - - Home - Home + + + + ZR + ZR - - + + R R - - - - - ZR - ZR - Motion 1 @@ -3716,6 +4088,18 @@ These settings are experimental, and may cause black screens. If your games fail Motion 2 Movimento 2 + + + + Capture + Capturar + + + + + Home + Home + Face Buttons @@ -3728,10 +4112,10 @@ These settings are experimental, and may cause black screens. If your games fail X - - - Y - Y + + + B + B @@ -3740,14 +4124,14 @@ These settings are experimental, and may cause black screens. If your games fail A - - - B - B + + + Y + Y - + Right Stick Analógico Direito @@ -3762,242 +4146,242 @@ These settings are experimental, and may cause black screens. If your games fail Configurar - - - - + + + + Clear Limpar - - - - - + + + + + [not set] [não definido] - - - + + + Invert button Inverter botão - - + + Toggle button Alternar pressionamento do botão - + Turbo button Botão Turbo - - + + Invert axis Inverter eixo - - - + + + Set threshold Definir limite - - + + Choose a value between 0% and 100% Escolha um valor entre 0% e 100% - + Toggle axis Alternar eixos - + Set gyro threshold Definir limite do giroscópio - + Calibrate sensor Calibrar sensor - + Map Analog Stick Mapear analógicos - + After pressing OK, first move your joystick horizontally, and then vertically. To invert the axes, first move your joystick vertically, and then horizontally. Após pressionar OK, mova o seu analógico primeiro horizontalmente e depois verticalmente. Para inverter os eixos, mova o seu analógico primeiro verticalmente e depois horizontalmente. - + Center axis Eixo central - - + + Deadzone: %1% Ponto Morto: %1% - - + + Modifier Range: %1% Modificador de Alcance: %1% - - + + Pro Controller Comando Pro - + Dual Joycons Joycons Duplos - + Left Joycon Joycon Esquerdo - + Right Joycon Joycon Direito - + Handheld Portátil - + GameCube Controller Controlador de depuração - + Poke Ball Plus Poke Ball Plus - + NES Controller Controle NES - + SNES Controller Controle SNES - + N64 Controller Controle N64 - + Sega Genesis Mega Drive - + Start / Pause Iniciar / Pausar - + Z Z - + Control Stick Direcional de controle - + C-Stick C-Stick - + Shake! Abane! - + [waiting] [em espera] - + New Profile Novo Perfil - + Enter a profile name: Introduza um novo nome de perfil: - - + + Create Input Profile Criar perfil de controlo - + The given profile name is not valid! O nome de perfil dado não é válido! - + Failed to create the input profile "%1" Falha ao criar o perfil de controlo "%1" - + Delete Input Profile Apagar Perfil de Controlo - + Failed to delete the input profile "%1" Falha ao apagar o perfil de controlo "%1" - + Load Input Profile Carregar perfil de controlo - + Failed to load the input profile "%1" Falha ao carregar o perfil de controlo "%1" - + Save Input Profile Guardar perfil de controlo - + Failed to save the input profile "%1" Falha ao guardar o perfil de controlo "%1" @@ -4020,15 +4404,6 @@ Para inverter os eixos, mova o seu analógico primeiro verticalmente e depois ho Padrões - - ConfigureLinuxTab - - - - Linux - Linux - - ConfigureMotionTouch @@ -4054,7 +4429,7 @@ Para inverter os eixos, mova o seu analógico primeiro verticalmente e depois ho - + Configure Configurar @@ -4084,111 +4459,93 @@ Para inverter os eixos, mova o seu analógico primeiro verticalmente e depois ho Porta: - - Learn More - Saber Mais - - - - + + Test Testar - + Add Server Adicionar Servidor - + Remove Server Remover Servidor - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Saber Mais</span></a> - - - + %1:%2 %1:%2 - yuzu - yuzu + + + + + + + Eden + - - <a href='https://eden-emulator.github.io/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - - - - + Port number has invalid characters O número da porta tem caracteres inválidos - - - - - - - eden - - - - + Port has to be in range 0 and 65353 A porta tem que estar entre 0 e 65353 - + IP address is not valid O endereço IP não é válido - + This UDP server already exists Este servidor UDP já existe - + Unable to add more than 8 servers Não é possível adicionar mais de 8 servidores - + Testing Testando - + Configuring Configurando - + Test Successful Teste Bem-Sucedido - + Successfully received data from the server. Dados recebidos do servidor com êxito. - + Test Failed Teste Falhou - + Could not receive valid data from the server.<br>Please verify that the server is set up correctly and the address and port are correct. Não foi possível receber dados válidos do servidor.<br>Por favor verifica que o servidor está configurado correctamente e o endereço e porta estão correctos. - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. Teste UDP ou configuração de calibragem em progresso.<br> Por favor espera que termine. @@ -4315,9 +4672,9 @@ Os valores atuais são %1% e %2% respectivamente. Interface de rede - - None - Nenhum + + Enable Airplane Mode + @@ -4373,49 +4730,54 @@ Os valores atuais são %1% e %2% respectivamente. Algumas configurações só estão disponíveis apenas quando não houver nenhum jogo em execução. - + Add-Ons Add-Ons - + System Sistema - + CPU CPU - + Graphics Gráficos - + Adv. Graphics Gráficos Avç. - - GPU Extensions - + + Ext. Graphics + - + Audio Audio - + Input Profiles Perfis de controle - Linux - Linux + Network + + + + + Applets + @@ -4436,15 +4798,110 @@ Os valores atuais são %1% e %2% respectivamente. Add-Ons - + + Import Mod from ZIP + + + + + Import Mod from Folder + + + + Patch Name Nome da Patch - + Version Versão + + + Mod Install Succeeded + + + + + Successfully installed all mods. + + + + + Mod Install Failed + + + + + Failed to install the following mods: + %1 +Check the log for details. + + + + + Mod Folder + + + + + Zipped Mod Location + + + + + Zipped Archives (*.zip) + + + + + Invalid Selection + + + + + Only mods, cheats, and patches can be deleted. +To delete NAND-installed updates, right-click the game in the game list and click Remove -> Remove Installed Update. + + + + + You are about to delete the following installed mods: + + + + + + +Once deleted, these can NOT be recovered. Are you 100% sure you want to delete them? + + + + + Delete add-on(s)? + + + + + Successfully deleted + + + + + Successfully deleted all selected mods. + + + + + &Delete + + + + + &Open in File Manager + + ConfigureProfileManager @@ -4474,32 +4931,17 @@ Os valores atuais são %1% e %2% respectivamente. Nome de Utilizador - - Set Image - Definir Imagem - - - + Add Adicionar - - Rename - Renomear - - - - Remove - Remover - - - + Profile management is available only when game is not running. O gestor de perfis só está disponível apenas quando o jogo não está em execução. - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -4507,100 +4949,80 @@ Os valores atuais são %1% e %2% respectivamente. %2 - - Enter Username - Introduza o Nome de Utilizador - - - + Users Utilizadores - - Enter a username for the new user: - Introduza um nome de utilizador para o novo utilizador: - - - - Enter a new username: - Introduza um novo nome de utilizador: - - - - Select User Image - Definir Imagem de utilizador - - - - JPEG Images (*.jpg *.jpeg) - Imagens JPEG (*.jpg *.jpeg) - - - + Error deleting image Error ao eliminar a imagem - + Error occurred attempting to overwrite previous image at: %1. Ocorreu um erro ao tentar substituir imagem anterior em: %1. - + Error deleting file Erro ao eliminar o arquivo - + Unable to delete existing file: %1. Não é possível eliminar o arquivo existente: %1. - + Error creating user image directory Erro ao criar o diretório de imagens do utilizador - + Unable to create directory %1 for storing user images. Não é possível criar o diretório %1 para armazenar imagens do utilizador. - - Error copying user image - Erro ao copiar a imagem do utilizador + + Error saving user image + - - Unable to copy image from %1 to %2 - Não é possível copiar a imagem de %1 para %2 + + Unable to save image to file + - - Error resizing user image - Erro no redimensionamento da imagem do usuário + + &Edit + - - Unable to resize image - Não foi possível redimensionar a imagem + + &Delete + + + + + Edit User + ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. Excluir esse usuário? Todos os dados salvos desse usuário serão removidos. - + Confirm Delete Confirmar para eliminar - + Name: %1 UUID: %2 Nome: %1 @@ -4653,7 +5075,7 @@ UUID: %2 - + Enable Habilitar @@ -4664,7 +5086,7 @@ UUID: %2 - + Not connected Não conectado @@ -4674,63 +5096,63 @@ UUID: %2 Restaurar Padrões - + Clear Limpar - + [not set] [não definido] - + Invert axis Inverter eixo - - + + Deadzone: %1% Ponto Morto: %1% - + Error enabling ring input Erro habilitando controle de anel - + Direct Joycon driver is not enabled Driver direto do Joycon não está habilitado - + Configuring Configurando - + The current mapped device doesn't support the ring controller O dispositivo atualmente mapeado não suporta o controle de anel - + The current mapped device doesn't have a ring attached O dispositivo mapeado não tem um anel conectado - + The current mapped device is not connected O dispositivo atualmente mapeado não está conectado - + Unexpected driver result %1 Resultado inesperado do driver %1 - + [waiting] [em espera] @@ -4754,7 +5176,7 @@ UUID: %2 Core - + Warning: "%1" is not a valid language for region "%2" Aviso: "%1" não é um idioma válido para a região "%2" @@ -4766,14 +5188,10 @@ UUID: %2 TAS TAS - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the yuzu website.</p></body></html> - <html><head/><body><p>Lê entradas de controle a partir de scripts no mesmo formato que TAS-nx. <br/>Para uma explicação mais detalhada, por favor consulte a <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">página de ajuda</span></a> no website do yuzu.</p></body></html> - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the eden website.</p></body></html> - + <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the user handbook.</p></body></html> + @@ -4806,17 +5224,22 @@ UUID: %2 Pausar execução durante carregamentos - + + Show recording dialog + + + + Script Directory Diretório do script - + Path Caminho - + ... ... @@ -4824,12 +5247,12 @@ UUID: %2 ConfigureTasDialog - + TAS Configuration Configurar TAS - + Select TAS Load Directory... Selecionar diretório de carregamento TAS @@ -4933,14 +5356,10 @@ Arrasta os pontos para mudar a posição, ou dá duplo-clique nas células da ta Configure Touchscreen Configurar Ecrã Táctil - - Warning: The settings in this page affect the inner workings of yuzu's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - Aviso: As configurações nesta página afectam o funcionamento interno da tela de toque emulada do yuzu. Alterá-los pode resultar em um comportamento indesejável, como a tela de toque não funcionando parcialmente ou até mesmo na sua totatildade. Você só deve usar esta página se souber o que está fazendo. - - Warning: The settings in this page affect the inner workings of eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - + Warning: The settings in this page affect the inner workings of Eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. + @@ -4971,64 +5390,43 @@ Arrasta os pontos para mudar a posição, ou dá duplo-clique nas células da ta ConfigureUI - - - + + None Nenhum - - - Small (32x32) - Pequeno (32x32) - - Standard (64x64) - Padrão (64x64) - - - - Large (128x128) - Grande (128x128) - - - - Full Size (256x256) - Tamanho completo (256x256) - - - Small (24x24) Pequeno (24x24) - + Standard (48x48) Padrão (48x48) - + Large (72x72) Grande (72x72) - + Filename Nome de Ficheiro - + Filetype Tipo de arquivo - + Title ID ID de Título - + Title Name Nome do título @@ -5097,71 +5495,66 @@ Arrasta os pontos para mudar a posição, ou dá duplo-clique nas células da ta - Game Icon Size: - Tamanho do ícone do jogo: - - - Folder Icon Size: Tamanho do ícone da pasta: - + Row 1 Text: Linha 1 Texto: - + Row 2 Text: Linha 2 Texto: - + Screenshots Captura de Ecrã - + Ask Where To Save Screenshots (Windows Only) Perguntar Onde Guardar Capturas de Ecrã (Apenas Windows) - + Screenshots Path: Caminho das Capturas de Ecrã: - + ... ... - + TextLabel TextLabel - + Resolution: Resolução: - + Select Screenshots Path... Seleccionar Caminho de Capturas de Ecrã... - + <System> <System> - + English Inglês - + Auto (%1 x %2, %3 x %4) Screenshot width value Auto (%1 x %2, %3 x %4) @@ -5259,170 +5652,178 @@ Arrasta os pontos para mudar a posição, ou dá duplo-clique nas células da ta Web Rede - - yuzu Web Service - Serviço Web do Yuzu - - - By providing your username and token, you agree to allow yuzu to collect additional usage data, which may include user identifying information. - Ao fornecer seu nome de usuário e token, você concorda em permitir que o yuzu colete dados de uso adicionais, que podem incluir informações de identificação do usuário. - - eden Web Service - + Eden Web Service + - - By providing your username and token, you agree to allow eden to collect additional usage data, which may include user identifying information. - - - - - Verify - Verificar - - - - Sign up - Inscrever-se - - - + Token: Token: - + Username: Nome de usuário: - - What is my token? - O que é o meu token? + + Generate + - + Web Service configuration can only be changed when a public room isn't being hosted. Configuração de Serviço Web só podem ser alteradas quando uma sala pública não está sendo hospedada. - Telemetry - Telemetria - - - Share anonymous usage data with the yuzu team - Compartilhar dados de uso anônimos com a equipa Yuzu - - - Learn more - Saber mais - - - Telemetry ID: - ID de Telemetria: - - - Regenerate - Regenerar - - - + Discord Presence Presença do Discord - + Show Current Game in your Discord Status Mostrar o Jogo Atual no seu Estado de Discord - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Saber mais</span></a> - - - - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Inscrever-se</span></a> - - - - <a href='https://evilperson1337.notion.site/Hosting-a-Room-Inside-of-Eden-20457c2edaf680108abac6215a79acdb'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - - - - - Warning - - - + - Verification is currently nonfunctional, instead generate a random 48-character string with only lowercase a-z. - - - - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">O que é o meu Token?</span></a> - - - Telemetry ID: 0x%1 - ID de Telemetria: 0x%1 - - - Unspecified - Não especificado - - - Token not verified - Token não verificado - - - Token was not verified. The change to your token has not been saved. - O token não foi verificado. A alteração do token não foi gravada. - - - - Unverified, please click Verify before saving configuration + All Good Tooltip - Não verificado, por favor clique sobre Verificar antes de salvar as configurações + - Verifying... - A verificar... - - - Verified + + Must be between 4-20 characters Tooltip - Verificado + - Verification failed + + Must be 48 characters, and lowercase a-z Tooltip - Verificação Falhada - - - Verification failed - Verificação Falhada - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - Verificação Falhada. Verifique se introduziu seu nome de utilizador e o token correctamente e se a conexão com a Internet está operacional. + ControllerDialog - + Controller P1 Comando J1 - + &Controller P1 &Comando J1 + + DataDialog + + + Data Manager + + + + + Deleting ANY data is IRREVERSABLE! + + + + + Shaders + + + + + UserNAND + + + + + SysNAND + + + + + Mods + + + + + Saves + + + + + DataWidget + + + Form + + + + + Tooltip + + + + + Open with your system file manager + + + + + Delete all data in this directory. THIS IS 100% IRREVERSABLE! + + + + + Export all data in this directory. This may take a while! + + + + + Import data for this directory. This may take a while, and will delete ALL EXISTING DATA! + + + + + Calculating... + + + + + DepsDialog + + + Eden Dependencies + + + + + <html><head/><body><p><span style=" font-size:28pt;">Eden Dependencies</span></p></body></html> + + + + + <html><head/><body><p>The projects that make Eden possible</p></body></html> + + + + + Dependency + + + + + Version + + + DirectConnect @@ -5484,1512 +5885,152 @@ Arrasta os pontos para mudar a posição, ou dá duplo-clique nas células da ta Username is not valid. Must be 4 to 20 alphanumeric characters. - Nome de usuário inválido. Deve conter de 4 a 20 caracteres alfanuméricos. + Room name is not valid. Must be 4 to 20 alphanumeric characters. - Nome da sala inválido. Deve conter de 4 a 20 caracteres alfanuméricos. + Username is already in use or not valid. Please choose another. - Nome de usuário já está em uso ou não é válido. Por favor escolha outro nome de usuário. + IP is not a valid IPv4 address. - O endereço IP não é um endereço IPv4 válido. + Port must be a number between 0 to 65535. - Porta deve ser um número entre 0 e 65535. + You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - Você deve escolher um Jogo Preferível para hospedar uma sala. Se você não possui nenhum jogo na sua lista ainda, adicione um diretório de jogos clicando no ícone de mais na lista de jogos. + Unable to find an internet connection. Check your internet settings. - Não foi possível encontrar uma conexão com a internet. Verifique suas configurações de internet. + Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - Não foi possível conectar no host. Verifique que as configurações de conexão estão corretas. Se você ainda não conseguir conectar, entre em contato com o anfitrião da sala e verifique que o host está configurado corretamente com a porta externa redirecionada. + Unable to connect to the room because it is already full. - Não foi possível conectar na sala porque a mesma está cheia. + - Creating a room failed. Please retry. Restarting eden might be necessary. - + Creating a room failed. Please retry. Restarting Eden might be necessary. + The host of the room has banned you. Speak with the host to unban you or try a different room. - O anfitrião da sala baniu você. Fale com o anfitrião para que ele remova seu banimento ou tente uma sala diferente. + - Version mismatch! Please update to the latest version of eden. If the problem persists, contact the room host and ask them to update the server. - + Version mismatch! Please update to the latest version of Eden. If the problem persists, contact the room host and ask them to update the server. + Incorrect password. - Senha inválda. + An unknown error occurred. If this error continues to occur, please open an issue - Ocorreu um erro desconhecido. Se esse erro continuar ocorrendo, recomendamos abrir uma issue. + Connection to room lost. Try to reconnect. - Conexão com a sala encerrada. Tente reconectar. + You have been kicked by the room host. - Você foi expulso(a) pelo anfitrião da sala. + IP address is already in use. Please choose another. - Este endereço IP já está em uso. Por favor, escolha outro. + You do not have enough permission to perform this action. - Você não tem permissão suficiente para realizar esta ação. + The user you are trying to kick/ban could not be found. They may have left the room. - O usuário que você está tentando expulsar/banir não pôde ser encontrado. -Essa pessoa pode já ter saído da sala. + No valid network interface is selected. Please go to Configure -> System -> Network and make a selection. - Nenhuma interface de rede válida foi detectada. + Error - Erro - - - - GMainWindow - - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Anonymous data is collected</a> to help improve yuzu. <br/><br/>Would you like to share your usage data with us? - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Dados anônimos são coletados</a>para ajudar a melhorar o yuzu.<br/><br/>Gostaria de compartilhar seus dados de uso conosco? - - - Telemetry - Telemetria - - - - Broken Vulkan Installation Detected - Detectada Instalação Defeituosa do Vulkan - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - A inicialização do Vulkan falhou durante a carga do programa. <br><br>Clique <a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>aqui para instruções de como resolver o problema</a>. - - - - Running a game - TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping - Rodando um jogo - - - - Loading Web Applet... - A Carregar o Web Applet ... - - - - - Disable Web Applet - Desativar Web Applet - - - - 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.) - 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.) - - - - The amount of shaders currently being built - Quantidade de shaders a serem construídos - - - - The current selected resolution scaling multiplier. - O atualmente multiplicador de escala de resolução selecionado. - - - - Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. - 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 - - - - How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. - Quantos quadros por segundo o jogo está exibindo de momento. Isto irá variar de jogo para jogo e de cena para cena. - - - - 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. - 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. - - - - Unmute - Unmute - - - - Mute - Mute - - - - Reset Volume - Redefinir volume - - - - &Clear Recent Files - &Limpar arquivos recentes - - - - &Continue - &Continuar - - - - &Pause - &Pausa - - - - Warning Outdated Game Format - Aviso de Formato de Jogo Desactualizado - - - 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.<br><br>For an explanation of the various Switch formats yuzu supports, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - 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.<br><br>Para uma explicação dos vários formatos de Switch que o yuzu suporta,<a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>Verifique a nossa Wiki</a>. Esta mensagem não será mostrada novamente. - - - - - Error while loading ROM! - Erro ao carregar o ROM! - - - - The ROM format is not supported. - O formato do ROM não é suportado. - - - - An error occurred initializing the video core. - Ocorreu um erro ao inicializar o núcleo do vídeo. - - - 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: <a href='https://yuzu-emu.org/help/reference/log-files/'>How to Upload the Log File</a>. - 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: <a href='https://yuzu-emu.org/help/reference/log-files/'>Como fazer envio de arquivo de registro</a>. - - - - Error while loading ROM! %1 - %1 signifies a numeric error code. - Erro ao carregar a ROM! %1 - - - %1<br>Please follow <a href='https://yuzu-emu.org/help/quickstart/'>the yuzu quickstart guide</a> to redump your files.<br>You can refer to the yuzu wiki</a> or the yuzu Discord</a> for help. - %1 signifies an error string. - %1<br>Por favor, siga <a href='https://yuzu-emu.org/help/quickstart/'>a guia de início rápido do yuzu</a> para fazer o redespejo dos seus arquivos.<br>Você pode consultar a wiki do yuzu</a> ou o Discord do yuzu</a> para obter ajuda. - - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://eden-emulator.github.io/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - - - - - Game Updates Warning - - - - - The game you are trying to launch is known to have performance or booting issues when updates are applied. Please try increasing the memory layout to 6GB or 8GB if any issues occur.<br><br>Press "OK" to continue launching, or "Cancel" to cancel the launch. - - - - - Don't show again for this game - - - - - 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.<br><br>For an explanation of the various Switch formats eden supports, <a href='https://eden-emulator.github.io/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - - - - - eden 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: <a href='https://eden-emulator.github.io/help/reference/log-files/'>How to Upload the Log File</a>. - - - - - %1<br>Please redump your files or ask on Discord for help. - %1 signifies an error string. - - - - - An unknown error occurred. Please see the log for more details. - Ocorreu um erro desconhecido. Por favor, veja o log para mais detalhes. - - - - (64-bit) - (64-bit) - - - - (32-bit) - (32-bit) - - - - %1 %2 - %1 is the title name. %2 indicates if the title is 64-bit or 32-bit - %1 %2 - - - - Closing software... - Encerrando software... - - - - Save Data - Save Data - - - - Mod Data - Mod Data - - - - Error Opening %1 Folder - Erro ao abrir a pasta %1 - - - - - Folder does not exist! - A Pasta não existe! - - - - Error Opening Transferable Shader Cache - Erro ao abrir os Shader Cache transferíveis - - - - Failed to create the shader cache directory for this title. - Falha ao criar o diretório de cache de shaders para este título. - - - - Error Removing Contents - Erro Removendo Conteúdos - - - - Error Removing Update - Erro ao Remover Atualização - - - - Error Removing DLC - Erro Removendo DLC - - - - Remove Installed Game Contents? - Remover Conteúdo Instalado do Jogo? - - - - Remove Installed Game Update? - Remover Atualização Instalada do Jogo? - - - - Remove Installed Game DLC? - Remover DLC Instalada do Jogo? - - - - Remove Entry - Remover Entrada - - - - - - - - - Successfully Removed - Removido com Sucesso - - - - Successfully removed the installed base game. - Removida a instalação do jogo base com sucesso. - - - - The base game is not installed in the NAND and cannot be removed. - O jogo base não está instalado no NAND e não pode ser removido. - - - - Successfully removed the installed update. - Removida a actualização instalada com sucesso. - - - - There is no update installed for this title. - Não há actualização instalada neste título. - - - - There are no DLC installed for this title. - Não há DLC instalado neste título. - - - - Successfully removed %1 installed DLC. - Removido DLC instalado %1 com sucesso. - - - - Delete OpenGL Transferable Shader Cache? - Apagar o cache de shaders transferível do OpenGL? - - - - Delete Vulkan Transferable Shader Cache? - Apagar o cache de shaders transferível do Vulkan? - - - - Delete All Transferable Shader Caches? - Apagar todos os caches de shaders transferíveis? - - - - Remove Custom Game Configuration? - Remover Configuração Personalizada do Jogo? - - - - Remove Cache Storage? - Remover Armazenamento da Cache? - - - - Remove File - Remover Ficheiro - - - - Remove Play Time Data - Remover dados de tempo jogado - - - - Reset play time? - Deseja mesmo resetar o tempo jogado? - - - - - Error Removing Transferable Shader Cache - Error ao Remover Cache de Shader Transferível - - - - - A shader cache for this title does not exist. - O Shader Cache para este titulo não existe. - - - - Successfully removed the transferable shader cache. - Removido a Cache de Shader Transferível com Sucesso. - - - - Failed to remove the transferable shader cache. - Falha ao remover a cache de shader transferível. - - - - Error Removing Vulkan Driver Pipeline Cache - Erro ao Remover Cache de Pipeline do Driver Vulkan - - - - Failed to remove the driver pipeline cache. - Falha ao remover o pipeline de cache do driver. - - - - - Error Removing Transferable Shader Caches - Erro ao remover os caches de shaders transferíveis - - - - Successfully removed the transferable shader caches. - Os caches de shaders transferíveis foram removidos com sucesso. - - - - Failed to remove the transferable shader cache directory. - Falha ao remover o diretório do cache de shaders transferível. - - - - - Error Removing Custom Configuration - Erro ao Remover Configuração Personalizada - - - - A custom configuration for this title does not exist. - Não existe uma configuração personalizada para este titúlo. - - - - Successfully removed the custom game configuration. - Removida a configuração personalizada do jogo com sucesso. - - - - Failed to remove the custom game configuration. - Falha ao remover a configuração personalizada do jogo. - - - - - RomFS Extraction Failed! - A Extração de RomFS falhou! - - - - There was an error copying the RomFS files or the user cancelled the operation. - Houve um erro ao copiar os arquivos RomFS ou o usuário cancelou a operação. - - - - Full - Cheio - - - - Skeleton - Esqueleto - - - - Select RomFS Dump Mode - Selecione o modo de despejo do RomFS - - - - Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. - Por favor, selecione a forma como você gostaria que o RomFS fosse despejado<br>Full irá copiar todos os arquivos para o novo diretório enquanto<br>skeleton criará apenas a estrutura de diretórios. - - - - There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root - 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 > Configurar > Sistema > Sistema de arquivos > Extrair raiz - - - - Extracting RomFS... - Extraindo o RomFS ... - - - - - - - - Cancel - Cancelar - - - - RomFS Extraction Succeeded! - Extração de RomFS Bem-Sucedida! - - - - - - The operation completed successfully. - A operação foi completa com sucesso. - - - - Integrity verification couldn't be performed! - A verificação de integridade não foi realizada. - - - - File contents were not checked for validity. - O conteúdo do arquivo não foi analisado. - - - - - Verifying integrity... - Verificando integridade… - - - - - Integrity verification succeeded! - Verificação de integridade concluída! - - - - - Integrity verification failed! - Houve uma falha na verificação de integridade! - - - - File contents may be corrupt. - O conteúdo do arquivo pode estar corrompido. - - - - - - - Create Shortcut - Criar Atalho - - - - Do you want to launch the game in fullscreen? - Gostaria de iniciar o jogo em tela cheia? - - - - Successfully created a shortcut to %1 - Atalho criado com sucesso em %1 - - - - This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - Isso irá criar um atalho para o AppImage atual. Isso pode não funcionar corretamente se você fizer uma atualização. Continuar? - - - - Failed to create a shortcut to %1 - Falha ao criar atalho para %1 - - - - Create Icon - Criar Ícone - - - - Cannot create icon file. Path "%1" does not exist and cannot be created. - Não foi possível criar o arquivo de ícone. O caminho "%1" não existe e não pode ser criado. - - - - Error Opening %1 - Erro ao abrir %1 - - - - Select Directory - Selecione o Diretório - - - - Properties - Propriedades - - - - The game properties could not be loaded. - As propriedades do jogo não puderam ser carregadas. - - - - Switch Executable (%1);;All Files (*.*) - %1 is an identifier for the Switch executable file extensions. - Executáveis Switch (%1);;Todos os Ficheiros (*.*) - - - - Load File - Carregar Ficheiro - - - - Open Extracted ROM Directory - Abrir o directório ROM extraído - - - - Invalid Directory Selected - Diretório inválido selecionado - - - - The directory you have selected does not contain a 'main' file. - O diretório que você selecionou não contém um arquivo 'Main'. - - - - Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - Ficheiro Switch Instalável (*.nca *.nsp *.xci);;Arquivo de Conteúdo Nintendo (*.nca);;Pacote de Envio Nintendo (*.nsp);;Imagem de Cartucho NX (*.xci) - - - - Install Files - Instalar Ficheiros - - - - %n file(s) remaining - - %n arquivo restante - %n ficheiro(s) remanescente(s) - - - - - Installing file "%1"... - Instalando arquivo "%1"... - - - - - Install Results - Instalar Resultados - - - - To avoid possible conflicts, we discourage users from installing base games to the NAND. -Please, only use this feature to install updates and DLC. - 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. - - - - %n file(s) were newly installed - - - - - - - - - %n file(s) were overwritten - - - - - - - - - %n file(s) failed to install - - - - - - - - - System Application - Aplicação do sistema - - - - System Archive - Arquivo do sistema - - - - System Application Update - Atualização do aplicativo do sistema - - - - Firmware Package (Type A) - Pacote de Firmware (Tipo A) - - - - Firmware Package (Type B) - Pacote de Firmware (Tipo B) - - - - Game - Jogo - - - - Game Update - Actualização do Jogo - - - - Game DLC - DLC do Jogo - - - - Delta Title - Título Delta - - - - Select NCA Install Type... - Selecione o tipo de instalação do NCA ... - - - - Please select the type of title you would like to install this NCA as: -(In most instances, the default 'Game' is fine.) - Por favor, selecione o tipo de título que você gostaria de instalar este NCA como: -(Na maioria dos casos, o padrão 'Jogo' é suficiente). - - - - Failed to Install - Falha na instalação - - - - The title type you selected for the NCA is invalid. - O tipo de título que você selecionou para o NCA é inválido. - - - - File not found - Arquivo não encontrado - - - - File "%1" not found - Arquivo "%1" não encontrado - - - - OK - OK - - - - - Hardware requirements not met - Requisitos de hardware não atendidos - - - - - Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled. - Seu sistema não atende os requisitos de harwdare. O relatório de compatibilidade foi desabilitado. - - - - Missing yuzu Account - Conta Yuzu Ausente - - - - In order to submit a game compatibility test case, you must link your eden account.<br><br/>To link your eden account, go to Emulation &gt; Configuration &gt; Web. - - - - - Install decryption keys and restart eden before attempting to install firmware. - - - - - Firmware installation cancelled, firmware may be in bad state, restart eden or re-install firmware. - - - - - Encryption keys are missing. - - - - - Are you sure you want to close eden? - - - - - - - eden - - - - - The currently running application has requested eden to not exit. - -Would you like to bypass this and exit anyway? - - - - In order to submit a game compatibility test case, you must link your yuzu account.<br><br/>To link your yuzu account, go to Emulation &gt; Configuration &gt; Web. - Para enviar um caso de teste de compatibilidade de jogos, você deve vincular sua conta yuzu.<br><br/>Para vincular sua conta yuzu, vá para Emulação &gt; Configuração &gt; Rede. - - - - Error opening URL - Erro ao abrir URL - - - - Unable to open the URL "%1". - Não foi possível abrir o URL "%1". - - - - TAS Recording - Gravando TAS - - - - Overwrite file of player 1? - Sobrescrever arquivo do jogador 1? - - - - Invalid config detected - Configação inválida detectada - - - - Handheld controller can't be used on docked mode. Pro controller will be selected. - O comando portátil não pode ser usado no modo encaixado na base. O Pro controller será selecionado. - - - - - Amiibo - Amiibo - - - - - The current amiibo has been removed - O amiibo atual foi removido - - - - Error - Erro - - - - - The current game is not looking for amiibos - O jogo atual não está procurando amiibos - - - - Amiibo File (%1);; All Files (*.*) - Arquivo Amiibo (%1);; Todos os Arquivos (*.*) - - - - Load Amiibo - Carregar Amiibo - - - - Error loading Amiibo data - Erro ao carregar dados do Amiibo - - - - The selected file is not a valid amiibo - O arquivo selecionado não é um amiibo válido - - - - The selected file is already on use - O arquivo selecionado já está em uso - - - - An unknown error occurred - Ocorreu um erro desconhecido - - - - - Verification failed for the following files: - -%1 - Houve uma falha na verificação dos seguintes arquivos: - -%1 - - - - Keys not installed - Chaves não instaladas - - - Install decryption keys and restart yuzu before attempting to install firmware. - Instale as chaves de descriptografia e reinicie o yuzu antes de tentar instalar o firmware. - - - - Select Dumped Firmware Source Location - Selecione o Local de Armazenamento do Firmware Extraído - - - - Installing Firmware... - Instalando Firmware... - - - - - - - Firmware install failed - A instalação do Firmware falhou - - - - Unable to locate potential firmware NCA files - Não foi possível localizar os possíveis arquivos NCA do firmware - - - - Failed to delete one or more firmware file. - Falha ao deletar um ou mais arquivo de firmware. - - - Firmware installation cancelled, firmware may be in bad state, restart yuzu or re-install firmware. - A instalação do firmware foi cancelada, o firmware pode estar danificado. Reinicie o yuzu ou reinstale o firmware. - - - - One or more firmware files failed to copy into NAND. - Falha ao copiar um ou mais arquivos de firmware para a NAND. - - - - Firmware integrity verification failed! - A verificação de integridade do Firmware falhou! - - - - Select Dumped Keys Location - Selecione o Local das Chaves Extraídas - - - - - - Decryption Keys install failed - Falha na instalação das Chaves de Decriptação - - - - prod.keys is a required decryption key file. - prod.keys é um arquivo de descriptografia obrigatório. - - - - One or more keys failed to copy. - Falha ao copiar uma ou mais chaves. - - - - Decryption Keys install succeeded - Chaves de Descriptografia instaladas com sucesso - - - - Decryption Keys were successfully installed - As Chaves de Descriptografia foram instaladas com sucesso - - - - Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. - Falha ao inicializar as Chaves de Descriptografia. Verifique se as suas ferramentas de extração estão atualizadas e extraia as chaves novamente. - - - - - - - - - - No firmware available - Nenhum firmware disponível - - - - Please install the firmware to use the Album applet. - Instale o firmware para usar o applet Album. - - - - Album Applet - Applet Álbum - - - - Album applet is not available. Please reinstall firmware. - O applet Álbum não está disponível. Reinstale o firmware. - - - - Please install the firmware to use the Cabinet applet. - Instale o firmware para usar o applet Armário. - - - - Cabinet Applet - Applet Armário - - - - Cabinet applet is not available. Please reinstall firmware. - O applet Armário não está disponível. Reinstale o firmware. - - - - Please install the firmware to use the Mii editor. - Instale o firmware para usar o applet Editor de Miis. - - - - Mii Edit Applet - Applet Editor de Miis - - - - Mii editor is not available. Please reinstall firmware. - O applet Editor de Miis não está disponível. Reinstale o firmware. - - - - Please install the firmware to use the Controller Menu. - Por favor instale o firmware para usar o Menu de Controles. - - - - Controller Applet - Applet de controle - - - - Controller Menu is not available. Please reinstall firmware. - Menu de Controles não está disponível. Por favor reinstale o firmware. - - - - Please install the firmware to use the Home Menu. - - - - - - Home Menu Applet - - - - - - Home Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use Starter. - - - - - Starter Applet - - - - - Starter is not available. Please reinstall firmware. - - - - - Please install firmware to use the home menu. - - - - - Capture Screenshot - Captura de Tela - - - - PNG Image (*.png) - Imagem PNG (*.png) - - - - Update Available - - - - - Update %1 for Eden is available. -Would you like to download it? - - - - - TAS state: Running %1/%2 - Situação TAS: Rodando %1%2 - - - - TAS state: Recording %1 - Situação TAS: Gravando %1 - - - - TAS state: Idle %1/%2 - Situação TAS: Repouso %1%2 - - - - TAS State: Invalid - Situação TAS: Inválido - - - - &Stop Running - &Parar de rodar - - - - &Start - &Começar - - - - Stop R&ecording - Parar G&ravação - - - - R&ecord - G&ravação - - - - Building: %n shader(s) - - - - - - - - Scale: %1x - %1 is the resolution scaling factor - Escala: %1x - - - - Speed: %1% / %2% - Velocidade: %1% / %2% - - - - Speed: %1% - Velocidade: %1% - - - Game: %1 FPS (Unlocked) - Jogo: %1 FPS (Desbloqueado) - - - - Game: %1 FPS - Jogo: %1 FPS - - - - Frame: %1 ms - Quadro: %1 ms - - - - %1 %2 - %1 %2 - - - - - FSR - FSR - - - - NO AA - Sem AA - - - - VOLUME: MUTE - VOLUME: MUDO - - - - VOLUME: %1% - Volume percentage (e.g. 50%) - VOLUME: %1% - - - - Derivation Components Missing - Componentes de Derivação em Falta - - - Encryption keys are missing. <br>Please follow <a href='https://yuzu-emu.org/help/quickstart/'>the yuzu quickstart guide</a> to get all your keys, firmware and games. - Faltando chaves de encriptação. <br>Por favor siga <a href='https://yuzu-emu.org/help/quickstart/'>o guia de início rápido do yuzu</a> para obter todas as suas chaves, firmware e jogos. - - - - Select RomFS Dump Target - Selecione o destino de despejo do RomFS - - - - Please select which RomFS you would like to dump. - Por favor, selecione qual o RomFS que você gostaria de despejar. - - - Are you sure you want to close yuzu? - Tem a certeza que quer fechar o yuzu? - - - yuzu - yuzu - - - - Are you sure you want to stop the emulation? Any unsaved progress will be lost. - Tem a certeza de que quer parar a emulação? Qualquer progresso não salvo será perdido. - - - The currently running application has requested yuzu to not exit. - -Would you like to bypass this and exit anyway? - O aplicativo atualmente em execução solicitou que o yuzu não fechasse. - -Deseja ignorar isso e sair mesmo assim? - - - - None - Nenhum - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Nearest - Mais próximo - - - - Bilinear - Bilinear - - - - Bicubic - Bicúbico - - - - Gaussian - Gaussiano - - - - ScaleForce - ScaleForce - - - - Area - - - - - Docked - Ancorado - - - - Handheld - Portátil - - - - Normal - Normal - - - - High - Alto - - - - Extreme - Extremo - - - - Vulkan - Vulcano - - - - OpenGL - OpenGL - - - - Null - Nenhum (desativado) - - - - GLSL - GLSL - - - - GLASM - GLASM - - - - SPIRV - SPIRV + GRenderWindow - - + + OpenGL not available! OpenGL não está disponível! - + OpenGL shared contexts are not supported. Shared contexts do OpenGL não são suportados. - yuzu has not been compiled with OpenGL support. - yuzu não foi compilado com suporte OpenGL. + + Eden has not been compiled with OpenGL support. + - - eden has not been compiled with OpenGL support. - - - - - + + Error while initializing OpenGL! Erro ao inicializar OpenGL! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. O seu GPU pode não suportar OpenGL, ou não tem os drivers gráficos mais recentes. - + Error while initializing OpenGL 4.6! Erro ao inicializar o OpenGL 4.6! - + Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 O teu GPU pode não suportar OpenGL 4.6, ou não tem os drivers gráficos mais recentes. - + Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2 Sua GPU pode não suportar uma ou mais extensões necessárias do OpenGL. Verifique se você possui a última versão dos drivers gráficos.<br><br>Renderizador GL:<br>%1<br><br>Extensões não suportadas:<br>%2 @@ -6997,192 +6038,208 @@ Deseja ignorar isso e sair mesmo assim? GameList - + + &Add New Game Directory + + + + Favorite Favorito - + Start Game Iniciar jogo - + Start Game without Custom Configuration Iniciar jogo sem configuração personalizada - + Open Save Data Location Abrir Localização de Dados Salvos - + Open Mod Data Location Abrir a Localização de Dados do Mod - + Open Transferable Pipeline Cache Abrir cache de pipeline transferível - + + Link to Ryujinx + + + + Remove Remover - + Remove Installed Update Remover Actualizações Instaladas - + Remove All Installed DLC Remover Todos os DLC Instalados - + Remove Custom Configuration Remover Configuração Personalizada - - Remove Play Time Data - Remover dados de tempo jogado - - - + Remove Cache Storage Remove a Cache do Armazenamento - + Remove OpenGL Pipeline Cache Remover cache de pipeline do OpenGL - + Remove Vulkan Pipeline Cache Remover cache de pipeline do Vulkan - + Remove All Pipeline Caches Remover todos os caches de pipeline - + Remove All Installed Contents Remover Todos os Conteúdos Instalados - - + + Manage Play Time + + + + + Edit Play Time Data + + + + + Remove Play Time Data + Remover dados de tempo jogado + + + + Dump RomFS Despejar RomFS - + Dump RomFS to SDMC Extrair RomFS para SDMC - + Verify Integrity Verificar integridade - + Copy Title ID to Clipboard Copiar título de ID para a área de transferência - + Navigate to GameDB entry Navegue para a Entrada da Base de Dados de Jogos - + Create Shortcut Criar Atalho - + Add to Desktop Adicionar à Área de Trabalho - + Add to Applications Menu Adicionar ao Menu de Aplicativos - + Configure Game - + - Properties - Propriedades - - - + Scan Subfolders Examinar Sub-pastas - + Remove Game Directory Remover diretório do Jogo - + ▲ Move Up ▲ Mover para Cima - + ▼ Move Down ▼ Mover para Baixo - + Open Directory Location Abrir Localização do diretório - + Clear Limpar - + Name Nome - + Compatibility Compatibilidade - + Add-ons Add-ons - + File type Tipo de Arquivo - + Size Tamanho - + Play time Tempo jogado @@ -7190,62 +6247,62 @@ Deseja ignorar isso e sair mesmo assim? GameListItemCompat - + Ingame Não Jogável - + Game starts, but crashes or major glitches prevent it from being completed. O jogo inicia, porém problemas ou grandes falhas impedem que ele seja concluído. - + Perfect Perfeito - + Game can be played without issues. O jogo pode ser jogado sem problemas. - + Playable Jogável - + Game functions with minor graphical or audio glitches and is playable from start to finish. O jogo funciona com pequenas falhas gráficas ou de áudio e pode ser reproduzido do início ao fim. - + Intro/Menu Introdução / Menu - + Game loads, but is unable to progress past the Start Screen. O jogo carrega, porém não consegue passar da tela inicial. - + Won't Boot Não Inicia - + The game crashes when attempting to startup. O jogo trava ao tentar iniciar. - + Not Tested Não Testado - + The game has not yet been tested. O jogo ainda não foi testado. @@ -7253,7 +6310,7 @@ Deseja ignorar isso e sair mesmo assim? GameListPlaceholder - + Double-click to add a new folder to the game list Clique duas vezes para adicionar uma nova pasta à lista de jogos @@ -7261,20 +6318,17 @@ Deseja ignorar isso e sair mesmo assim? GameListSearchField - + %1 of %n result(s) - - - - + - + Filter: Filtro: - + Enter pattern to filter Digite o padrão para filtrar @@ -7350,233 +6404,241 @@ Deseja ignorar isso e sair mesmo assim? HostRoomWindow - + Error Erro - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. + + Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid Eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. Debug Message: - - - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid yuzu account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. -Debug Message: - Falha ao anunciar a sala ao lobby público. Para hospedar uma sala pública você deve ter configurado uma conta válida do yuzu em Emulação -> Configurações -> Web. Se você não quer publicar uma sala no lobby público seleciona a opção Não listado. -Mensagem de depuração: + Hotkeys - + Audio Mute/Unmute Mutar/Desmutar Áudio - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Main Window Janela Principal - + Audio Volume Down Volume Menos - + Audio Volume Up Volume Mais - + Capture Screenshot Captura de Tela - + Change Adapting Filter Alterar Filtro de Adaptação - + Change Docked Mode Alterar Modo de Ancoragem - - Change GPU Accuracy - Alterar Precisão da GPU + + Change GPU Mode + - + Configure - Configurar + - + Configure Current Game - + - + Continue/Pause Emulation Continuar/Pausar Emulação - + Exit Fullscreen Sair da Tela Cheia - Exit yuzu - Sair do yuzu + + Exit Eden + - - Exit eden - - - - + Fullscreen Tela Cheia - + Load File Carregar Ficheiro - + Load/Remove Amiibo Carregar/Remover Amiibo - - Multiplayer Browse Public Game Lobby - Multiplayer Navegar no Lobby de Salas Públicas + + Browse Public Game Lobby + - - Multiplayer Create Room - Multiplayer Criar Sala + + Create Room + - - Multiplayer Direct Connect to Room - Multiplayer Conectar Diretamente à Sala + + Direct Connect to Room + - - Multiplayer Leave Room - Multiplayer Sair da Sala + + Leave Room + - - Multiplayer Show Current Room - Multiplayer Mostrar a Sala Atual + + Show Current Room + - + Restart Emulation Reiniciar Emulação - + Stop Emulation Parar Emulação - + TAS Record Gravar TAS - + TAS Reset Reiniciar TAS - + TAS Start/Stop Iniciar/Parar TAS - + Toggle Filter Bar Alternar Barra de Filtro - + Toggle Framerate Limit Alternar Limite de Quadros por Segundo - + + Toggle Turbo Speed + + + + + Toggle Slow Speed + + + + Toggle Mouse Panning Alternar o Giro do Mouse - + Toggle Renderdoc Capture Alternar a Captura do Renderdoc - + Toggle Status Bar Alternar Barra de Status + + + Toggle Performance Overlay + + InstallDialog - + Please confirm these are the files you wish to install. Por favor confirma que estes são os ficheiros que desejas instalar. - + Installing an Update or DLC will overwrite the previously installed one. Instalar uma Actualização ou DLC irá substituir a instalação anterior. - + Install Instalar - + Install Files to NAND Instalar Ficheiros no NAND @@ -7584,8 +6646,8 @@ Mensagem de depuração: LimitableInputDialog - - The text can't contain any of the following characters: + + The text can't contain any of the following characters: %1 O texto não pode conter nenhum dos seguintes caracteres: %1 @@ -7609,22 +6671,22 @@ Mensagem de depuração: Tempo Estimado 5m 4s - + Loading... A Carregar... - + Loading Shaders %1 / %2 A Carregar Shaders %1 / %2 - + Launching... A iniciar... - + Estimated Time %1 Tempo Estimado %1 @@ -7673,42 +6735,42 @@ Mensagem de depuração: Atualizar Lobby - + Password Required to Join Senha Necessária para Entrar - + Password: Senha: - + Players Jogadores - + Room Name Nome da Sala - + Preferred Game Jogo Preferencial - + Host Anfitrião - + Refreshing Atualizando - + Refresh List Atualizar Lista @@ -7731,362 +6793,1424 @@ Mensagem de depuração: &Arquivos recentes - + + Open &Eden Folders + + + + &Emulation &Emulação - + &View &Vista - + &Reset Window Size &Restaurar tamanho da janela - + &Debugging &Depurar - + + &Game List Mode + + + + + Game &Icon Size + + + + Reset Window Size to &720p Restaurar tamanho da janela para &720p - + Reset Window Size to 720p Restaurar tamanho da janela para 720p - + Reset Window Size to &900p Restaurar tamanho da janela para &900p - + Reset Window Size to 900p Restaurar tamanho da janela para 900p - + Reset Window Size to &1080p Restaurar tamanho da janela para &1080p - + Reset Window Size to 1080p Restaurar tamanho da janela para 1080p - + &Multiplayer &Multijogador - + &Tools &Ferramentas - - &Amiibo - &Amiibo + + Am&iibo + - + + Launch &Applet + + + + &TAS &TAS - + &Create Home Menu Shortcut - + - + + Install &Firmware + + + + &Help &Ajuda - + &Install Files to NAND... &Instalar arquivos na NAND... - + L&oad File... C&arregar arquivo... - + Load &Folder... Carregar &pasta... - + E&xit &Sair - + + &Pause &Pausa - + &Stop &Parar - + &Verify Installed Contents &Verificar conteúdo instalado - - &About eden - + + &About Eden + - - Open &eden Folder - - - - - Open Home Menu - - - - - &Discord - - - - - Open &Setup - - - - - &Desktop - - - - - &Application Menu - - - - &About yuzu - &Sobre o yuzu - - - + Single &Window Mode Modo de &janela única - + Con&figure... Con&figurar... - + Ctrl+, - + - - Display D&ock Widget Headers - Exibir barra de títul&os de widgets afixados + + Enable Overlay Display Applet + - + Show &Filter Bar Mostrar Barra de &Filtros - + Show &Status Bar Mostrar Barra de &Estado - + Show Status Bar Mostrar Barra de Estado - + &Browse Public Game Lobby &Navegar no Lobby de Salas Públicas - + &Create Room &Criar Sala - + &Leave Room &Sair da Sala - + &Direct Connect to Room Conectar &Diretamente Numa Sala - + &Show Current Room Exibir &Sala Atual - + F&ullscreen T&ela cheia - + &Restart &Reiniciar - + Load/Remove &Amiibo... Carregar/Remover &Amiibo... - + &Report Compatibility &Reportar compatibilidade - + Open &Mods Page Abrir Página de &Mods - + Open &Quickstart Guide Abrir &guia de início rápido - + &FAQ &Perguntas frequentes - Open &yuzu Folder - Abrir pasta &yuzu - - - + &Capture Screenshot &Captura de Tela - - Open &Album - Abrir &Álbum + + &Album + - + &Set Nickname and Owner &Definir apelido e proprietário - + &Delete Game Data &Remover dados do jogo - + &Restore Amiibo &Recuperar Amiibo - + &Format Amiibo &Formatar Amiibo - - Open &Mii Editor - Abrir &Editor de Miis + + &Mii Editor + - + &Configure TAS... &Configurar TAS - + Configure C&urrent Game... Configurar jogo atual... - + + &Start &Começar - + &Reset &Restaurar - + + R&ecord G&ravar - + Open &Controller Menu Menu Abrir &Controles - - Install Firmware - Instalar Firmware + + Install Decryption &Keys + - - Install Decryption Keys - Instalar Chaves de Descriptografia + + &Home Menu + - - - MicroProfileDialog - - &MicroProfile - &MicroPerfil + + &Desktop + + + + + &Application Menu + + + + + &Root Data Folder + + + + + &NAND Folder + + + + + &SDMC Folder + + + + + &Mod Folder + + + + + &Log Folder + + + + + From Folder + + + + + From ZIP + + + + + &Eden Dependencies + + + + + &Data Manager + + + + + &Tree View + + + + + &Grid View + + + + + Game Icon Size + + + + + + + None + + + + + Show Game &Name + + + + + Show &Performance Overlay + + + + + Small (32x32) + + + + + Standard (64x64) + + + + + Large (128x128) + + + + + Full Size (256x256) + + + + + Broken Vulkan Installation Detected + + + + + Vulkan initialization failed during boot. + + + + + Running a game + TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping + + + + + Loading Web Applet... + + + + + + Disable Web Applet + + + + + 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.) + + + + + The amount of shaders currently being built + + + + + The current selected resolution scaling multiplier. + + + + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. + + + + + How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. + + + + + 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. + + + + + Unmute + + + + + Mute + + + + + Reset Volume + + + + + &Clear Recent Files + + + + + &Continue + + + + + Warning: Outdated Game Format + + + + + 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.<br>For an explanation of the various Switch formats Eden supports, out our user handbook. This message will not be shown again. + + + + + + Error while loading ROM! + + + + + The ROM format is not supported. + + + + + An error occurred initializing the video core. + + + + + Eden 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: <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>How to Upload the Log File</a>. + + + + + Error while loading ROM! %1 + %1 signifies a numeric error code. + + + + + %1<br>Please redump your files or ask on Discord/Stoat for help. + %1 signifies an error string. + + + + + An unknown error occurred. Please see the log for more details. + + + + + (64-bit) + + + + + (32-bit) + + + + + %1 %2 + %1 is the title name. %2 indicates if the title is 64-bit or 32-bit + + + + + Closing software... + + + + + Save Data + + + + + Mod Data + + + + + Error Opening %1 Folder + + + + + + Folder does not exist! + + + + + Remove Installed Game Contents? + + + + + Remove Installed Game Update? + + + + + Remove Installed Game DLC? + + + + + Remove Entry + + + + + Delete OpenGL Transferable Shader Cache? + + + + + Delete Vulkan Transferable Shader Cache? + + + + + Delete All Transferable Shader Caches? + + + + + Remove Custom Game Configuration? + + + + + Remove Cache Storage? + + + + + Remove File + + + + + Remove Play Time Data + + + + + Reset play time? + + + + + + RomFS Extraction Failed! + + + + + There was an error copying the RomFS files or the user cancelled the operation. + + + + + Full + + + + + Skeleton + + + + + Select RomFS Dump Mode + + + + + Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. + + + + + There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root + + + + + Extracting RomFS... + + + + + + Cancel + + + + + RomFS Extraction Succeeded! + + + + + The operation completed successfully. + + + + + Error Opening %1 + + + + + Select Directory + + + + + Properties + + + + + The game properties could not be loaded. + + + + + Switch Executable (%1);;All Files (*.*) + %1 is an identifier for the Switch executable file extensions. + + + + + Load File + + + + + Open Extracted ROM Directory + + + + + Invalid Directory Selected + + + + + The directory you have selected does not contain a 'main' file. + + + + + Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) + + + + + Install Files + + + + + %n file(s) remaining + + + + + Installing file "%1"... + + + + + + Install Results + + + + + To avoid possible conflicts, we discourage users from installing base games to the NAND. +Please, only use this feature to install updates and DLC. + + + + + %n file(s) were newly installed + + + + + + %n file(s) were overwritten + + + + + + %n file(s) failed to install + + + + + + System Application + + + + + System Archive + + + + + System Application Update + + + + + Firmware Package (Type A) + + + + + Firmware Package (Type B) + + + + + Game + + + + + Game Update + + + + + Game DLC + + + + + Delta Title + + + + + Select NCA Install Type... + + + + + Please select the type of title you would like to install this NCA as: +(In most instances, the default 'Game' is fine.) + + + + + Failed to Install + + + + + The title type you selected for the NCA is invalid. + + + + + File not found + + + + + File "%1" not found + + + + + OK + + + + + Function Disabled + + + + + Compatibility list reporting is currently disabled. Check back later! + + + + + Error opening URL + + + + + Unable to open the URL "%1". + + + + + TAS Recording + + + + + Overwrite file of player 1? + + + + + Invalid config detected + + + + + Handheld controller can't be used on docked mode. Pro controller will be selected. + + + + + + Amiibo + + + + + + The current amiibo has been removed + + + + + Error + + + + + + The current game is not looking for amiibos + + + + + Amiibo File (%1);; All Files (*.*) + + + + + Load Amiibo + + + + + Error loading Amiibo data + + + + + The selected file is not a valid amiibo + + + + + The selected file is already on use + + + + + An unknown error occurred + + + + + + Keys not installed + + + + + + Install decryption keys and restart Eden before attempting to install firmware. + + + + + Select Dumped Firmware Source Location + + + + + Select Dumped Firmware ZIP + + + + + Zipped Archives (*.zip) + + + + + Firmware cleanup failed + + + + + Failed to clean up extracted firmware cache. +Check write permissions in the system temp directory and try again. +OS reported error: %1 + + + + + No firmware available + + + + + Firmware Corrupted + + + + + Unknown applet + + + + + Applet doesn't map to a known value. + + + + + Record not found + + + + + Applet not found. Please reinstall firmware. + + + + + Capture Screenshot + + + + + PNG Image (*.png) + + + + + Update Available + + + + + Download %1? + + + + + TAS state: Running %1/%2 + + + + + TAS state: Recording %1 + + + + + TAS state: Idle %1/%2 + + + + + TAS State: Invalid + + + + + &Stop Running + + + + + Stop R&ecording + + + + + Building: %n shader(s) + + + + + Scale: %1x + %1 is the resolution scaling factor + + + + + Speed: %1% / %2% + + + + + Speed: %1% + + + + + Game: %1 FPS + + + + + Frame: %1 ms + + + + + + FSR + + + + + NO AA + + + + + VOLUME: MUTE + + + + + VOLUME: %1% + Volume percentage (e.g. 50%) + + + + + Derivation Components Missing + + + + + Decryption keys are missing. Install them now? + + + + + Wayland Detected! + + + + + Wayland is known to have significant performance issues and mysterious bugs. +It's recommended to use X11 instead. + +Would you like to force it for future launches? + + + + + Use X11 + + + + + Continue with Wayland + + + + + Don't show again + + + + + Restart Required + + + + + Restart Eden to apply the X11 backend. + + + + + Slow + + + + + Turbo + + + + + Unlocked + + + + + Select RomFS Dump Target + + + + + Please select which RomFS you would like to dump. + + + + + Are you sure you want to close Eden? + + + + + + + Eden + + + + + Are you sure you want to stop the emulation? Any unsaved progress will be lost. + + + + + The currently running application has requested Eden to not exit. + +Would you like to bypass this and exit anyway? + + + + + FXAA + + + + + SMAA + + + + + Nearest + + + + + Bilinear + + + + + Bicubic + + + + + Zero-Tangent + + + + + B-Spline + + + + + Mitchell + + + + + Spline-1 + + + + + Gaussian + + + + + Lanczos + + + + + ScaleForce + + + + + Area + + + + + MMPX + + + + + Docked + + + + + Handheld + + + + + Fast + + + + + Balanced + + + + + Accurate + + + + + Vulkan + + + + + OpenGL GLSL + + + + + OpenGL SPIRV + + + + + OpenGL GLASM + + + + + Null + MigrationWorker - - Data was migrated successfully. - - - - + Linking the old directory failed. You may need to re-run with administrative privileges on Windows. OS gave error: %1 - + - + + + +Note that your configuration and data will be shared with %1. +If this is not desirable, delete the following files: +%2 +%3 +%4 + + + + If you wish to clean up the files which were left in the old data location, you can do so by deleting the following directory: %1 - + + + + + Data was migrated successfully. + + + + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + @@ -8103,7 +8227,7 @@ If you wish to clean up the files which were left in the old data location, you - + Refreshing Atualizando @@ -8113,27 +8237,27 @@ If you wish to clean up the files which were left in the old data location, you Desbanir - + Subject Assunto - + Type Tipo - + Forum Username Nome de Usuário do Fórum - + IP Address Endereço IP - + Refresh Atualizar @@ -8141,37 +8265,37 @@ If you wish to clean up the files which were left in the old data location, you MultiplayerState - + Current connection status Status da conexão atual - + Not Connected. Click here to find a room! Não conectado. Clique aqui para procurar uma sala! - + Not Connected Não Conectado - + Connected Conectado - + New Messages Received Novas Mensagens Recebidas - + Error Erro - + Failed to update the room information. Please check your Internet connection and try hosting the room again. Debug Message: Falha ao atualizar as informações da sala. Por favor verifique sua conexão com a internet e tente hospedar a sala novamente. @@ -8180,89 +8304,6 @@ Mensagem de Depuração: NetworkMessage - - Username is not valid. Must be 4 to 20 alphanumeric characters. - Nome de usuário inválido. Deve conter de 4 a 20 caracteres alfanuméricos. - - - Room name is not valid. Must be 4 to 20 alphanumeric characters. - Nome da sala inválido. Deve conter de 4 a 20 caracteres alfanuméricos. - - - Username is already in use or not valid. Please choose another. - Nome de usuário já está em uso ou não é válido. Por favor escolha outro nome de usuário. - - - IP is not a valid IPv4 address. - O endereço IP não é um endereço IPv4 válido. - - - Port must be a number between 0 to 65535. - Porta deve ser um número entre 0 e 65535. - - - You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - Você deve escolher um Jogo Preferível para hospedar uma sala. Se você não possui nenhum jogo na sua lista ainda, adicione um diretório de jogos clicando no ícone de mais na lista de jogos. - - - Unable to find an internet connection. Check your internet settings. - Não foi possível encontrar uma conexão com a internet. Verifique suas configurações de internet. - - - Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - Não foi possível conectar no host. Verifique que as configurações de conexão estão corretas. Se você ainda não conseguir conectar, entre em contato com o anfitrião da sala e verifique que o host está configurado corretamente com a porta externa redirecionada. - - - Unable to connect to the room because it is already full. - Não foi possível conectar na sala porque a mesma está cheia. - - - Creating a room failed. Please retry. Restarting yuzu might be necessary. - Erro ao criar a sala. Por favor tente novamente. Reiniciar o yuzu pode ser necessário. - - - The host of the room has banned you. Speak with the host to unban you or try a different room. - O anfitrião da sala baniu você. Fale com o anfitrião para que ele remova seu banimento ou tente uma sala diferente. - - - Version mismatch! Please update to the latest version of yuzu. If the problem persists, contact the room host and ask them to update the server. - Versão não compatível! Por favor atualize o yuzu para a última versão. Se o problema persistir entre em contato com o anfitrião da sala e peça que atualize o servidor. - - - Incorrect password. - Senha inválda. - - - An unknown error occurred. If this error continues to occur, please open an issue - Ocorreu um erro desconhecido. Se esse erro continuar ocorrendo, recomendamos abrir uma issue. - - - Connection to room lost. Try to reconnect. - Conexão com a sala encerrada. Tente reconectar. - - - You have been kicked by the room host. - Você foi expulso(a) pelo anfitrião da sala. - - - IP address is already in use. Please choose another. - Este endereço IP já está em uso. Por favor, escolha outro. - - - You do not have enough permission to perform this action. - Você não tem permissão suficiente para realizar esta ação. - - - The user you are trying to kick/ban could not be found. -They may have left the room. - O usuário que você está tentando expulsar/banir não pôde ser encontrado. -Essa pessoa pode já ter saído da sala. - - - No valid network interface is selected. -Please go to Configure -> System -> Network and make a selection. - Nenhuma interface de rede válida foi detectada. - Game already running @@ -8297,10 +8338,132 @@ Você deseja prosseguir mesmo assim? - NetworkMessage::ErrorManager + NewUserDialog - Error - Erro + + + New User + + + + + Change Avatar + + + + + Set Image + + + + + UUID + + + + + Eden + + + + + Username + + + + + UUID must be 32 hex characters (0-9, A-F) + + + + + Generate + + + + + Select User Image + + + + + Image Formats (*.jpg *.jpeg *.png *.bmp) + + + + + No firmware available + + + + + Please install the firmware to use firmware avatars. + + + + + + Error loading archive + + + + + Archive is not available. Please install/reinstall firmware. + + + + + Could not locate RomFS. Your file or decryption keys may be corrupted. + + + + + Error extracting archive + + + + + Could not extract RomFS. Your file or decryption keys may be corrupted. + + + + + Error finding image directory + + + + + Failed to find image directory in the archive. + + + + + No images found + + + + + No avatar images were found in the archive. + + + + + + All Good + Tooltip + + + + + Must be 32 hex characters (0-9, a-f) + Tooltip + + + + + Must be between 1 and 32 characters + Tooltip + @@ -8327,7 +8490,7 @@ Você deseja prosseguir mesmo assim? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -8336,83 +8499,196 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> + + PerformanceOverlay + + + Form + + + + + Frametime + + + + + 0 ms + + + + + + Min: 0 + + + + + + Max: 0 + + + + + + Avg: 0 + + + + + FPS + + + + + 0 fps + + + + + %1 fps + + + + + + Avg: %1 + + + + + + Min: %1 + + + + + + Max: %1 + + + + + %1 ms + + + PlayerControlPreview - + START/PAUSE INICIAR/PAUSAR + + ProfileAvatarDialog + + + Select + + + + + Cancel + + + + + Background Color + + + + + Select Firmware Avatar + + + QObject - - %1 is not playing a game - %1 não está jogando um jogo + + + + Migration + - - %1 is playing %2 - %1 está jogando %2 + + Clear Shader Cache + - - Not playing a game - Não está jogando um jogo + + Keep Old Data + - - Installed SD Titles - Títulos SD instalados + + Clear Old Data + - - Installed NAND Titles - Títulos NAND instalados + + Link Old Directory + - - System Titles - Títulos do sistema + + + + + - - Add New Game Directory - Adicionar novo diretório de jogos + + + No + - - Favorites - Favoritos + + You can manually re-trigger this prompt by deleting the new config directory: +%1 + + + + + Migrating + + + + + Migrating, this may take a while... + - - + + Shift Shift - - + + Ctrl Ctrl - - + + Alt Alt - - - - + + + + [not set] [não configurado] @@ -8422,15 +8698,15 @@ p, li { white-space: pre-wrap; } Hat %1 %2 - - - - - - - - + + + + + + + + Axis %1%2 Eixo %1%2 @@ -8440,359 +8716,383 @@ p, li { white-space: pre-wrap; } Botão %1 - - - - - - + + + + + + [unknown] [Desconhecido] - - - + + + Left Esquerda - - - + + + Right Direita - - - + + + Down Baixo - - - + + + Up Cima - - + + Z Z - - + + R R - - + + L L - - + + A A - - + + B B - - + + X X - - + + Y Y - - + + Start Começar - - + + L1 L1 - - + + L2 L2 - - + + L3 L3 - - + + R1 R1 - - + + R2 R2 - - + + R3 R3 - - + + Circle Círculo - - + + Cross Cruz - - + + Square Quadrado - - + + Triangle Triângulo - - + + Share Compartilhar - - + + Options Opções - - + + [undefined] [indefinido] - + %1%2 %1%2 - - + + [invalid] [inválido] - - + + %1%2Hat %3 %1%2Direcional %3 - - - + + + %1%2Axis %3 %1%2Eixo %3 - - + + %1%2Axis %3,%4,%5 %1%2Eixo %3,%4,%5 - - + + %1%2Motion %3 %1%2Movimentação %3 - - + + %1%2Button %3 %1%2Botão %3 - - + + [unused] [sem uso] - + ZR ZR - + ZL ZL - + SR SR - + SL SL - + Stick L Analógico esquerdo - + Stick R Analógico direito - + Plus Mais - + Minus Menos - - + + Home Home - + Capture Capturar - + Touch Toque - + Wheel Indicates the mouse wheel Volante - + Backward Para trás - + Forward Para a frente - + Task Tarefa - + Extra Extra - + %1%2%3%4 %1%2%3%4 - - + + %1%2%3Hat %4 %1%2%3Alavanca %4 - - + + %1%2%3Axis %4 %1%2%3Eixo %4 - - + + %1%2%3Button %4 %1%2%3Botão %4 - - - - Migration - + + Not playing a game + Não está jogando um jogo - - - - - + + %1 is not playing a game + %1 não está jogando um jogo - - - No - + + %1 is playing %2 + %1 está jogando %2 - - You can manually re-trigger this prompt by deleting the new config directory: -%1 - + + Play Time: %1 + - - Migrating - + + Never Played + - - Migrating, this may take a while... - + + Version: %1 + + + + + Version: 1.0.0 + + + + + Installed SD Titles + Títulos SD instalados + + + + Installed NAND Titles + Títulos NAND instalados + + + + System Titles + Títulos do sistema + + + + Add New Game Directory + Adicionar novo diretório de jogos + + + + Favorites + Favoritos @@ -8883,31 +9183,817 @@ p, li { white-space: pre-wrap; } Caminho de arquivo - + No game data present Nenhum dado do jogo presente - + The following amiibo data will be formatted: Os seguintes dados de amiibo serão formatados: - + The following game data will removed: Os seguintes dados do jogo serão removidos: - + Set nickname and owner: Definir apelido e proprietário: - + Do you wish to restore this amiibo? Deseja restaurar este amiibo? + + QtCommon::Content + + + Game Requires Firmware + + + + + The game you are trying to launch requires firmware to boot or to get past the opening menu. Please <a href='https://yuzu-mirror.github.io/help/quickstart'>dump and install firmware</a>, or press "OK" to launch anyways. + + + + + Installing Firmware... + + + + + + + + + Cancel + + + + + Firmware Install Failed + + + + + Firmware Install Succeeded + + + + + Firmware integrity verification failed! + + + + + + Verification failed for the following files: + +%1 + + + + + + Verifying integrity... + + + + + + Integrity verification succeeded! + + + + + + The operation completed successfully. + + + + + + Integrity verification failed! + + + + + File contents may be corrupt or missing. + + + + + Integrity verification couldn't be performed + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity. + + + + + Select Dumped Keys Location + + + + + Decryption Keys install succeeded + + + + + Decryption Keys install failed + + + + + Orphaned Profiles Detected! + + + + + UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br> + + + + + Really clear data? + + + + + Important data may be lost! + + + + + Are you REALLY sure? + + + + + Once deleted, your data will NOT come back! +Only do this if you're 100% sure you want to delete this data. + + + + + Clearing... + + + + + Select Export Location + + + + + %1.zip + + + + + + Zipped Archives (*.zip) + + + + + Exporting data. This may take a while... + + + + + Exporting + + + + + Exported Successfully + + + + + Data was exported successfully. + + + + + Export Cancelled + + + + + Export was cancelled by the user. + + + + + Export Failed + + + + + Ensure you have write permissions on the targeted directory and try again. + + + + + Select Import Location + + + + + Import Warning + + + + + All previous data in this directory will be deleted. Are you sure you wish to proceed? + + + + + Importing data. This may take a while... + + + + + Importing + + + + + Imported Successfully + + + + + Data was imported successfully. + + + + + Import Cancelled + + + + + Import was cancelled by the user. + + + + + Import Failed + + + + + Ensure you have read permissions on the targeted directory and try again. + + + + + QtCommon::FS + + + Linked Save Data + + + + + Save data has been linked. + + + + + Failed to link save data + + + + + Could not link directory: + %1 +To: + %2 + + + + + Already Linked + + + + + This title is already linked to Ryujinx. Would you like to unlink it? + + + + + Failed to unlink old directory + + + + + + OS returned error: %1 + + + + + Failed to copy save data + + + + + Unlink Successful + + + + + Successfully unlinked Ryujinx save data. Save data has been kept intact. + + + + + Could not find Ryujinx installation + + + + + Could not find a valid Ryujinx installation. This may typically occur if you are using Ryujinx in portable mode. + +Would you like to manually select a portable folder to use? + + + + + Ryujinx Portable Location + + + + + Not a valid Ryujinx directory + + + + + The specified directory does not contain valid Ryujinx data. + + + + + + Could not find Ryujinx save data + + + + + QtCommon::Game + + + Error Removing Contents + + + + + Error Removing Update + + + + + Error Removing DLC + + + + + + + + + + Successfully Removed + + + + + Successfully removed the installed base game. + + + + + The base game is not installed in the NAND and cannot be removed. + + + + + Successfully removed the installed update. + + + + + There is no update installed for this title. + + + + + There are no DLCs installed for this title. + + + + + Successfully removed %1 installed DLC. + + + + + + Error Removing Transferable Shader Cache + + + + + + A shader cache for this title does not exist. + + + + + Successfully removed the transferable shader cache. + + + + + Failed to remove the transferable shader cache. + + + + + Error Removing Vulkan Driver Pipeline Cache + + + + + Failed to remove the driver pipeline cache. + + + + + + Error Removing Transferable Shader Caches + + + + + Successfully removed the transferable shader caches. + + + + + Failed to remove the transferable shader cache directory. + + + + + + Error Removing Custom Configuration + + + + + A custom configuration for this title does not exist. + + + + + Successfully removed the custom game configuration. + + + + + Failed to remove the custom game configuration. + + + + + Reset Metadata Cache + + + + + The metadata cache is already empty. + + + + + The operation completed successfully. + + + + + The metadata cache couldn't be deleted. It might be in use or non-existent. + + + + + Create Shortcut + + + + + Do you want to launch the game in fullscreen? + + + + + Shortcut Created + + + + + Successfully created a shortcut to %1 + + + + + Shortcut may be Volatile! + + + + + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? + + + + + Failed to Create Shortcut + + + + + Failed to create a shortcut to %1 + + + + + Create Icon + + + + + Cannot create icon file. Path "%1" does not exist and cannot be created. + + + + + No firmware available + + + + + Please install firmware to use the home menu. + + + + + Home Menu Applet + + + + + Home Menu is not available. Please reinstall firmware. + + + + + QtCommon::Mod + + + Mod Name + + + + + What should this mod be called? + + + + + RomFS + + + + + ExeFS/Patch + + + + + Cheat + + + + + Mod Type + + + + + Could not detect mod type automatically. Please manually specify the type of mod you downloaded. + +Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods. + + + + + + Mod Extract Failed + + + + + Failed to create temporary directory %1 + + + + + Zip file %1 is empty + + + + + QtCommon::Path + + + Error Opening Shader Cache + + + + + Failed to create or open shader cache for this title, ensure your app data directory has write permissions. + + + + + QtCommon::StringLookup + + + Contains game save data. DO NOT REMOVE UNLESS YOU KNOW WHAT YOU'RE DOING! + + + + + Contains Vulkan and OpenGL pipeline caches. Generally safe to remove. + + + + + Contains updates and DLC for games. + + + + + Contains firmware and applet data. + + + + + Contains game mods, patches, and cheats. + + + + + Decryption Keys were successfully installed + + + + + Unable to read key directory, aborting + + + + + One or more keys failed to copy. + + + + + Verify your keys file has a .keys extension and try again. + + + + + Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. + + + + + Successfully installed firmware version %1 + + + + + Unable to locate potential firmware NCA files + + + + + Failed to delete one or more firmware files. + + + + + One or more firmware files failed to copy into NAND. + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. Restart Eden or re-install firmware. + + + + + Firmware missing. Firmware is required to run certain games and use the Home Menu. + + + + + Firmware reported as present, but was unable to be read. Check for decryption keys and redump firmware if necessary. + + + + + Eden has detected user data for the following emulators: + + + + + Would you like to migrate your data for use in Eden? +Select the corresponding button to migrate data from that emulator. +This may take a while. + + + + + Clearing shader cache is recommended for all users. +Do not uncheck unless you know what you're doing. + + + + + Keeps the old data directory. This is recommended if you aren't +space-constrained and want to keep separate data for the old emulator. + + + + + Deletes the old data directory. +This is recommended on devices with space constraints. + + + + + Creates a filesystem link between the old directory and Eden directory. +This is recommended if you want to share data between emulators. + + + + + Ryujinx title database does not exist. + + + + + Invalid header on Ryujinx title database. + + + + + Invalid magic header on Ryujinx title database. + + + + + Invalid byte alignment on Ryujinx title database. + + + + + No items found in Ryujinx title database. + + + + + Title %1 not found in Ryujinx title database. + + + QtControllerSelectorDialog @@ -8944,7 +10030,7 @@ p, li { white-space: pre-wrap; } - + Pro Controller Comando Pro @@ -8957,7 +10043,7 @@ p, li { white-space: pre-wrap; } - + Dual Joycons Par de Joycons @@ -8970,7 +10056,7 @@ p, li { white-space: pre-wrap; } - + Left Joycon Joycon Esquerdo @@ -8983,7 +10069,7 @@ p, li { white-space: pre-wrap; } - + Right Joycon Joycon Direito @@ -9012,7 +10098,7 @@ p, li { white-space: pre-wrap; } - + Handheld Portátil @@ -9133,32 +10219,32 @@ p, li { white-space: pre-wrap; } Não há a quantidade mínima de controles - + GameCube Controller Controlador de depuração - + Poke Ball Plus Poké Ball Plus - + NES Controller Controle do NES - + SNES Controller Controle do SNES - + N64 Controller Controle do Nintendo 64 - + Sega Genesis Mega Drive @@ -9166,28 +10252,28 @@ p, li { white-space: pre-wrap; } QtErrorDisplay - - - + + + Error Code: %1-%2 (0x%3) Código de erro: %1-%2 (0x%3) - + An error has occurred. Please try again or contact the developer of the software. Ocorreu um erro. Tente novamente ou entre em contato com o desenvolvedor do software. - + An error occurred on %1 at %2. Please try again or contact the developer of the software. Ocorreu um erro em %1 até %2. Tente novamente ou entre em contato com o desenvolvedor do software. - + An error has occurred. %1 @@ -9203,7 +10289,7 @@ Tente novamente ou entre em contato com o desenvolvedor do software. QtProfileSelectionDialog - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -9211,7 +10297,7 @@ Tente novamente ou entre em contato com o desenvolvedor do software. - + Users Utilizadores @@ -9304,7 +10390,7 @@ Tente novamente ou entre em contato com o desenvolvedor do software.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -9313,17 +10399,57 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - - + + OK OK - + Cancel Cancelar + + RyujinxDialog + + + Ryujinx Link + + + + + Linking save data to Ryujinx lets both Ryujinx and Eden reference the same save files for your games. + +By selecting "From Eden", previous save data stored in Ryujinx will be deleted, and vice versa for "From Ryujinx". + + + + + From Eden + + + + + From Ryujinx + + + + + Cancel + + + + + Failed to link save data + + + + + OS returned error: %1 + + + SequenceDialog @@ -9333,143 +10459,31 @@ p, li { white-space: pre-wrap; } - WaitTreeCallstack + SetPlayTimeDialog - - Call stack - Pilha de Chamadas - - - - WaitTreeSynchronizationObject - - - [%1] %2 - [%1] %2 + + Set Play Time Data + - - waited by no thread - esperado por nenhuma thread - - - - WaitTreeThread - - - runnable - executável + + Hours: + - - paused - pausado + + Minutes: + - - sleeping - dormindo + + Seconds: + - - waiting for IPC reply - aguardando resposta do IPC - - - - waiting for objects - esperando por objectos - - - - waiting for condition variable - A espera da variável de condição - - - - waiting for address arbiter - esperando pelo árbitro de endereço - - - - waiting for suspend resume - esperando pra suspender o resumo - - - - waiting - aguardando - - - - initialized - inicializado - - - - terminated - terminado - - - - unknown - desconhecido - - - - PC = 0x%1 LR = 0x%2 - PC = 0x%1 LR = 0x%2 - - - - ideal - ideal - - - - core %1 - núcleo %1 - - - - processor = %1 - processador = %1 - - - - affinity mask = %1 - máscara de afinidade =% 1 - - - - thread id = %1 - id do segmento =% 1 - - - - priority = %1(current) / %2(normal) - prioridade =%1(atual) / %2(normal) - - - - last running ticks = %1 - últimos tiques em execução =%1 - - - - WaitTreeThreadList - - - waited by thread - esperado por thread - - - - WaitTreeWidget - - - &Wait Tree - &Árvore de espera + + Total play time reached maximum. + diff --git a/dist/languages/ru_RU.ts b/dist/languages/ru_RU.ts index 9ff0c1bbd7..2511049613 100644 --- a/dist/languages/ru_RU.ts +++ b/dist/languages/ru_RU.ts @@ -1,25 +1,15 @@ - - - + AboutDialog - - About yuzu - О yuzu - - - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - - About eden - + About Eden + О нас - <html><head/><body><p><span style=" font-size:28pt;">eden</span></p></body></html> - + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> @@ -34,70 +24,57 @@ p, li { white-space: pre-wrap; } hr { height: 1px; border-width: 0; } li.unchecked::marker { content: "\2610"; } li.checked::marker { content: "\2612"; } -</style></head><body style=" font-family:'Adwaita Sans'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> - +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css"> +p, li { white-space: pre-wrap; } +hr { height: 1px; border-width: 0; } +li.unchecked::marker { content: "\2610"; } +li.checked::marker { content: "\2612"; } +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden - Экспериментальный эмулятор Nintendo Switch с открытым исходным кодом и под лицензией GPLv3.0+ которая была основана на эмуляторе Yuzu которая закончила разработку в Марте 2024 года. <br /><br />Эта программа не должна быть использована для игры на нелегальных копиях игр.</span></p></body></html> - <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">This software should not be used to play games you have not legally obtained.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu - экспериментальный эмулятор для Nintendo Switch с открытым исходным кодом, лицензированный под GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Это ПО не должно использоваться для запуска игр, которые были получены нелегальным путём.</span></p></body></html> - - - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Веб-сайт</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Исходный код</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Контрибьюторы</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Лицензия</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;"> сайт</span></a>| <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;"> Исходный код</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;"> Контрибьюторы</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;"> Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;"> Stoat</span></a> |<a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;"> Twitter/X</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;"> Лицензия</span></a></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. eden is not affiliated with Nintendo in any way.</span></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; является торговой маркой Nintendo. yuzu никак не связан с Nintendo.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. Eden is not affiliated with Nintendo in any way.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; является товарным знаком компании Nintendo. Проект Eden никак не связан с Nintendo.</span></p></body></html> CalibrationConfigurationDialog - + Communicating with the server... Подключение к серверу... - + Cancel Отмена - + Touch the top left corner <br>of your touchpad. Коснитесь левого верхнего угла<br>вашего тачпада. - + Now touch the bottom right corner <br>of your touchpad. Теперь коснитесь правого нижнего угла <br> вашего тачпада. - + Configuration completed! Настройка завершена! - + OK ОК @@ -120,78 +97,78 @@ p, li { white-space: pre-wrap; } Отправить сообщение - + Members Участники - + %1 has joined %1 присоединился - + %1 has left %1 вышел - + %1 has been kicked %1 был выгнан - + %1 has been banned %1 был забанен - + %1 has been unbanned %1 был разбанен - + View Profile Посмотреть профиль - - + + Block Player Заблокировать игрока - + When you block a player, you will no longer receive chat messages from them.<br><br>Are you sure you would like to block %1? Когда вы блокируете игрока, вы больше не будете получать от него сообщения в чате.<br><br>Вы уверены, что хотите заблокировать %1? - + Kick Выгнать - + Ban Забанить - + Kick Player Выгнать игрока - + Are you sure you would like to <b>kick</b> %1? Вы уверены, что хотите <b>выгнать</b> %1? - + Ban Player Забанить игрока - + Are you sure you would like to <b>kick and ban</b> %1? This would ban both their forum username and their IP address. @@ -226,17 +203,17 @@ This would ban both their forum username and their IP address. ClientRoomWindow - + Connected Подключено - + Disconnected Отключено - + %1 - %2 (%3/%4 members) - connected %1 - %2 (%3/%4 участников) - подключено @@ -259,14 +236,10 @@ This would ban both their forum username and their IP address. Report Game Compatibility Сообщить о совместимости игры - - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of yuzu you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected yuzu account</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Если вы захотите отправить отчёт в </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">список совместимости yuzu</a><span style=" font-size:10pt;">, следующая информация будет собрана и отображена на сайте:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Информация о железе (ЦП / ГП / Операционная система)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Версия yuzu</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Подключённый аккаунт yuzu</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">eden Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of eden you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected eden account</li></ul></body></html> - + <html><head/><body><p><span style=" font-size:10pt;">Если вы решите отправить тестовый пример в </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">Список Поддержки Eden</span></a><span style=" font-size:10pt;">, Следующая информация будет показана на сайте:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Техническая Информация (CPU / GPU / Операционная Система)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Какую версию вы используете</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Подключённый аккаунт eden</li></ul></body></html> @@ -374,22 +347,22 @@ This would ban both their forum username and their IP address. Спасибо за ваш отчет! - + Submitting Отправка - + Communication error Ошибка соединения - + An error occurred while sending the Testcase Произошла ошибка при отправке отчета - + Next Далее @@ -397,348 +370,383 @@ This would ban both their forum username and their IP address. ConfigurationShared - + % % - + Amiibo editor Amiibo редактор - + Controller configuration Конфигурация контроллера - + Data erase Стирание данных - + Error Ошибка - + Net connect Соединение по сети - + Player select Выбор игрока - + Software keyboard Виртуальная клавиатура - + Mii Edit Mii редактор - + Online web Онлайн веб - + Shop Магазин - + Photo viewer Просмотр фотографий - + Offline web Оффлайн веб - + Login share Поделиться логином - + Wifi web auth Веб вход в wi-fi - + My page Моя страница - + + Enable Overlay Applet + Включить апплет оверлея + + + + Enables Horizon's built-in overlay applet. Press and hold the home button for 1 second to show it. + Активирует встроенный в Horizon оверлейный апплет. Для его отображения нажмите и удерживайте кнопку «HOME» в течение одной секунды. + + + Output Engine: Движок вывода: - + Output Device: Устройство вывода: - + Input Device: Устройство ввода: - + Mute audio Отключить звук - + Volume: Громкость: - + Mute audio when in background Заглушить звук в фоновом режиме - + Multicore CPU Emulation Многоядерная эмуляция ЦП - - This option increases CPU emulation thread use from 1 to the Switch’s maximum of 4. -This is mainly a debug option and shouldn’t be disabled. - Этот параметр увеличивает использование потоков эмуляции ЦП с 1 до 4. -Это в основном параметр отладки и не должен быть отключен. + + This option increases CPU emulation thread use from 1 to the maximum of 4. +This is mainly a debug option and shouldn't be disabled. + Этот параметр увеличивает использование потоков эмуляции ЦПУ с 1 до максимального значения 4. +В основном это параметр отладки, и его не следует отключать. - + Memory Layout Схема памяти - - Increases the amount of emulated RAM from the stock 4GB of the retail Switch to the developer kit's 8/6GB. -It’s doesn’t improve stability or performance and is intended to let big texture mods fit in emulated RAM. -Enabling it will increase memory use. It is not recommended to enable unless a specific game with a texture mod needs it. - Увеличивает количество эмулируемой оперативной памяти с 4 ГБ обычной консоли Switch до 8/6 ГБ как у девкита для разработчиков. -Это не улучшает стабильность или производительность и предназначено для того, чтобы моды на большие текстуры помещались в эмулируемую оперативную память. -Включение этой функции увеличит использование памяти. Рекомендуется включать только в случае необходимости для конкретной игры с модом текстур. + + Increases the amount of emulated RAM. +Doesn't affect performance/stability but may allow HD texture mods to load. + Увеличивает объем эмулируемой оперативной памяти. +Не влияет на производительность/стабильность, но может загружать моды на HD текстуры. - + Limit Speed Percent Ограничение процента cкорости - - Controls the game's maximum rendering speed, but it’s up to each game if it runs faster or not. + + Controls the game's maximum rendering speed, but it's up to each game if it runs faster or not. 200% for a 30 FPS game is 60 FPS, and for a 60 FPS game it will be 120 FPS. Disabling it means unlocking the framerate to the maximum your PC can reach. - Управляет максимальной скоростью отрисовки игры - но зависит от конкретной игры, будет ли она работать быстрее. -200% для игры с частотой кадров 30 FPS - это 60 FPS, а для игры с частотой кадров 60 FPS - это будет 120 FPS. -Отключение этой функции означает разблокировку частоты кадров до максимального значения, которое может достичь ваш ПК. + Управляет максимальной скоростью рендеринга в игре, но от каждой игры зависит, будет ли она работать быстрее или нет. +200% для игры со скоростью 30 фпс - это 60 фпс, а для игры со скоростью 60 фпс - 120 фпс. +Отключение этой функции означает, что фпс будет увеличен до максимальной, который может достичь ваш компьютер. - + + Turbo Speed + Турбо-режим + + + + When the Turbo Speed hotkey is pressed, the speed will be limited to this percentage. + Когда нажата кнопка турбо-режима, скорость будет ограничена до этого процента + + + + Slow Speed + Замедленный режим + + + + When the Slow Speed hotkey is pressed, the speed will be limited to this percentage. + Когда нажата кнопка замедленного режима, скорость будет замедлена до этого процента + + + Synchronize Core Speed - + Синхронизировать Скорость Ядра - - Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). -Compatibility varies by game; many (especially older ones) may not respond well. + + Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). Can help reduce stuttering at lower framerates. - + Синхронизирует скорость работы ядра ЦПУ с максимальной скоростью рендеринга в игре, чтобы повысить FPS, не влияя на скорость игры (анимацию, физику и т.д.). +Может помочь уменьшить заикания при низкой частоте кадров. - + Accuracy: Точность: - - This setting controls the accuracy of the emulated CPU. -Don't change this unless you know what you are doing. - Эта настройка контролирует точность эмулции процессора. -Не изменяйте ее, если не знаете, что делаете. + + Change the accuracy of the emulated CPU (for debugging only). + Изменяет точность работы эмулируемого ЦПУ (только для отладки). - - + + Backend: Бэкэнд: - - Fast CPU Time - + + CPU Overclock + Разгон ЦП - + Overclocks the emulated CPU to remove some FPS limiters. Weaker CPUs may see reduced performance, and certain games may behave improperly. Use Boost (1700MHz) to run at the Switch's highest native clock, or Fast (2000MHz) to run at 2x clock. - + Разгоняет эмулируемый процессор, чтобы снять некоторые ограничения FPS. На более слабых процессорах может наблюдаться снижение производительности, а некоторые игры могут работать некорректно. +Используй Буст (1700MHz) что-бы использовать максимальные нативные такты Консоли Switch, или Ускоренный (2000MHz) что-бы использовать в 2 раза больше. - + + Custom CPU Ticks + Пользовательские такты CPU + + + + Set a custom value of CPU ticks. Higher values can increase performance, but may cause deadlocks. A range of 77-21000 is recommended. + Ставит пользовательское значение тиков ЦПУ. Более высокие значения могут повысить производительность, но могут привести к взаимоблокировкам. Рекомендуется использовать диапазон 77-21000. + + + + Enable Host MMU Emulation (fastmem) + Включить эмуляцию Host MMU (fastmem) + + + + This optimization speeds up memory accesses by the guest program. +Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU. +Disabling this forces all memory accesses to use Software MMU Emulation. + Эта оптимизация ускоряет доступ к памяти гостевой программы. +Его включение может привести к тому, что чтение/запись из гостевой памяти выполняется напрямую в память с использованием хоста MMU. +Отключение заставляет все доступы к памяти использовать программную эмуляцию MMU. + + + Unfuse FMA (improve performance on CPUs without FMA) Отключить FMA (улучшает производительность на ЦП без FMA) - + This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support. Этот вариант улучшает скорость путем снижения точности инструкций слияния-умножения-сложения на процессорах без поддержки нативной FMA. - + Faster FRSQRTE and FRECPE Ускоренные FRSQRTE и FRECPE - + This option improves the speed of some approximate floating-point functions by using less accurate native approximations. Этот вариант улучшает скорость некоторых приближенных функций с плавающей запятой за счет использования менее точных встроенных приближений. - + Faster ASIMD instructions (32 bits only) Ускоренные инструкции ASIMD (только 32 бит) - + This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes. Этот вариант улучшает скорость 32-битных функций с плавающей запятой ASIMD путем выполнения с неправильными режимами округления. - + Inaccurate NaN handling Неточная обработка NaN - + This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions. Этот вариант улучшает скорость отключая проверки на NaN. Обратите внимание, что это также снижает точность некоторых операций с плавающей запятой. - + Disable address space checks Отключить проверку адресного пространства - - This option improves speed by eliminating a safety check before every memory read/write in guest. -Disabling it may allow a game to read/write the emulator's memory. - Эта опция повышает скорость за счет исключения проверки безопасности перед каждым чтением/записью памяти в гостевом режиме. -Отключение этой опции может позволить игре читать/записывать память эмулятора. + + This option improves speed by eliminating a safety check before every memory operation. +Disabling it may allow arbitrary code execution. + Эта опция повышает скорость работы за счет исключения проверки безопасности перед каждой операцией с памятью. +Ее отключение может привести к выполнению произвольного кода. - + Ignore global monitor Игнорировать глобальный мониторинг - + 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. Эта опция повышает скорость, полагаясь только на семантику cmpxchg для обеспечения безопасности инструкций исключительного доступа. Обратите внимание, что это может привести к дедлокам и race condition. - + API: API: - - Switches between the available graphics APIs. -Vulkan is recommended in most cases. - Переключение между доступными графическими API. -В большинстве случаев рекомендуется использовать Vulkan. + + Changes the output graphics API. +Vulkan is recommended. + Изменяет графический интерфейс вывода. +Рекомендуется использовать Vulkan. - + Device: Устройство: - - This setting selects the GPU to use with the Vulkan backend. - Эта настройка выбирает GPU для Vulkan. + + This setting selects the GPU to use (Vulkan only). + Этот параметр определяет используемый ГПУ (только для Vulkan). - - Shader Backend: - Бэкенд шейдеров: - - - - The shader backend to use for the OpenGL renderer. -GLSL is the fastest in performance and the best in rendering accuracy. -GLASM is a deprecated NVIDIA-only backend that offers much better shader building performance at the cost of FPS and rendering accuracy. -SPIR-V compiles the fastest, but yields poor results on most GPU drivers. - Шейдерный бэкэнд, используемый для OpenGL-рендерера. -GLSL - самый быстрый и лучший по точности визуализации. -GLASM - устаревший бэкэнд, доступный только для NVIDIA, обеспечивающий гораздо лучшую производительность построения шейдеров, но с меньшим FPS и точностью визуализации. -SPIR-V компилирует быстрее всего, но дает плохие результаты на большинстве драйверов GPU. - - - + Resolution: Разрешение: - - Forces the game to render at a different resolution. -Higher resolutions require much more VRAM and bandwidth. -Options lower than 1X can cause rendering issues. + + Forces to render at a different resolution. +Higher resolutions require more VRAM and bandwidth. +Options lower than 1X can cause artifacts. Принуждает игру отображаться с другим разрешением. Более высокие разрешения требуют гораздо больше VRAM и пропускной способности. -Опции ниже 1X могут вызывать проблемы с отображением. +Опции ниже 1X могут вызывать артефакты. - + Window Adapting Filter: Фильтр адаптации окна: - + FSR Sharpness: Резкость FSR: - - Determines how sharpened the image will look while using FSR’s dynamic contrast. + + Determines how sharpened the image will look using FSR's dynamic contrast. Определяет, насколько чётким будет изображение при использовании динамического контраста FSR. - + Anti-Aliasing Method: Метод сглаживания: - + The anti-aliasing method to use. SMAA offers the best quality. -FXAA has a lower performance impact and can produce a better and more stable picture under very low resolutions. - Метод сглаживания +FXAA can produce a more stable picture in lower resolutions. + Какой Метод сглаживания использовать. SMAA предлагает лучшее качество. FXAA имеет меньшее влияние на производительность и может создавать лучшую и более стабильную картинку на очень низком разрешении. - + Fullscreen Mode: Полноэкранный режим: - + The method used to render the window in fullscreen. Borderless offers the best compatibility with the on-screen keyboard that some games request for input. Exclusive fullscreen may offer better performance and better Freesync/Gsync support. @@ -747,62 +755,53 @@ Borderless более совместим с экранной клавиатур Эксклюзивный полноэкранный режим может иметь лучшую производительность и лучшую поддержку Freesync/Gsync. - + Aspect Ratio: Соотношение сторон: - - Stretches the game to fit the specified aspect ratio. -Switch games only support 16:9, so custom game mods are required to get other ratios. + + Stretches the renderer to fit the specified aspect ratio. +Most games only support 16:9, so modifications are required to get other ratios. Also controls the aspect ratio of captured screenshots. Растягивает игру, чтобы она соответствовала указанному соотношению сторон. -Игры для Nintendo Switch поддерживают только 16:9, поэтому для использования других соотношений требуются пользовательские моды. +Игры для Nintendo Switch поддерживают только 16:9, поэтому для использования других соотношений требуются моды. Также контролирует соотношение сторон захваченных скриншотов. - - Use disk pipeline cache - Использовать кэш конвейера на диске + + Use persistent pipeline cache + Использовать постоянный конвейерный кэш - + Allows saving shaders to storage for faster loading on following game boots. Disabling it is only intended for debugging. Позволяет сохранять шейдеры на диск для более быстрой загрузки при последующем запуске игры. Отключение этой функции предназначено только для отладки. - - Optimize SPIRV output shader - + + Optimize SPIRV output + Оптимизация вывода SPIRV - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. This feature is experimental. - + Выполняет дополнительный проход оптимизации сгенерированных шейдеров SPIRV. +Потребует больше времени на компиляцию шейдеров. +Может немного улучшить производительность. +Эта функция экспериментальна. - - Use asynchronous GPU emulation - Использовать асинхронную эмуляцию ГП - - - - Uses an extra CPU thread for rendering. -This option should always remain enabled. - Использует дополнительный поток ЦП для рендеринга. -Эта опция всегда должна оставаться включенной. - - - + NVDEC emulation: Эмуляция NVDEC: - + Specifies how videos should be decoded. It can either use the CPU or the GPU for decoding, or perform no decoding at all (black screen on videos). In most cases, GPU decoding provides the best performance. @@ -811,263 +810,431 @@ In most cases, GPU decoding provides the best performance. В большинстве случаев декодирование с использованием ГП обеспечивает лучшую производительность. - + ASTC Decoding Method: Метод декодирования ASTC: - + This option controls how ASTC textures should be decoded. -CPU: Use the CPU for decoding, slowest but safest method. -GPU: Use the GPU's compute shaders to decode ASTC textures, recommended for most games and users. -CPU Asynchronously: Use the CPU to decode ASTC textures as they arrive. Completely eliminates ASTC decoding -stuttering at the cost of rendering issues while the texture is being decoded. +CPU: Use the CPU for decoding. +GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). +CPU Asynchronously: Use the CPU to decode ASTC textures on demand. EliminatesASTC decoding +stuttering but may present artifacts. Этот параметр управляет способом декодирования текстур ASTC. -CPU: Использовать ЦП для декодирования, самый медленный, но безопасный метод. -GPU: Использовать вычислительные шейдеры ГП для декодирования текстур ASTC, рекомендуется для большинства игр и пользователей. -CPU Асинхронно: Использовать ЦП для декодирования текстур ASTC по мере их поступления. Полностью устраняет заикание при декодировании ASTC, но вызывает артефакты во время декодирования текстуры. +CPU: Использовать ЦП для декодирования. +GPU: Использовать вычислительные шейдеры ГП для декодирования текстур ASTC (рекомендуется) +CPU Асинхронно: Использовать ЦП для декодирования текстур ASTC по мере их поступления. Полностью устраняет заикание при декодировании ASTC, но может вызывать артефакты. - + ASTC Recompression Method: Метод пересжатия ASTC: - - Almost all desktop and laptop dedicated GPUs lack support for ASTC textures, forcing the emulator to decompress to an intermediate format any card supports, RGBA8. -This option recompresses RGBA8 to either the BC1 or BC3 format, saving VRAM but negatively affecting image quality. - Почти все выделенные графические процессоры для настольных и портативных компьютеров не поддерживают текстуры ASTC, что заставляет эмулятор распаковывать их в промежуточный формат, поддерживаемый любой картой, RGBA8. -Эта опция повторно сжимает RGBA8 в формат BC1 или BC3, экономя видеопамять, но негативно влияя на качество изображения. + + Most GPUs lack support for ASTC textures and must decompress to anintermediate format: RGBA8. +BC1/BC3: The intermediate format will be recompressed to BC1 or BC3 format, + saving VRAM but degrading image quality. + Большинство графических процессоров не поддерживают текстуры ASTC и должны быть распакованы в промежуточный формат: RGBA8. +BC1/BC3: Промежуточный формат будет повторно сжат в формат BC1 или BC3, +что сэкономит ОЗУ, но ухудшит качество изображения. - + + Frame Pacing Mode (Vulkan only) + Режим синхронизации кадров (только Vulkan) + + + + Controls how the emulator manages frame pacing to reduce stuttering and make the frame rate smoother and more consistent. + Управляет синхронизацией кадров в эмуляторе для уменьшения рывков и обеспечения более плавной и стабильной частоты кадров. + + + VRAM Usage Mode: - + Режим Использования VRAM - - Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. Has no effect on integrated graphics. Aggressive mode may severely impact the performance of other applications such as recording software. - + + Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. +Aggressive mode may impact performance of other applications such as recording software. + Выбирает, должен ли эмулятор отдавать предпочтение экономии памяти или максимально использовать доступную видеопамять для повышения производительности. +Агрессивный режим может серьезно повлиять на производительность других приложений, например: приложение для записи. - + + Skip CPU Inner Invalidation + Пропустить внутреннюю инвалидацию ЦП + + + + Skips certain cache invalidations during memory updates, reducing CPU usage and improving latency. This may cause soft-crashes. + Позволяет избежать некоторых ошибок в кэше при обновлении памяти, снижая нагрузку на ЦПУ и увеличивая время ожидания. Это может привести к программным сбоям. + + + VSync Mode: Режим верт. синхронизации: - + FIFO (VSync) does not drop frames or exhibit tearing but is limited by the screen refresh rate. -FIFO Relaxed is similar to FIFO but allows tearing as it recovers from a slow down. +FIFO Relaxed 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. +Immediate (no synchronization) presents whatever is available and can exhibit tearing. FIFO (Верт. синхронизация) не пропускает кадры и не имеет разрывов, но ограничен частотой обновления экрана. -FIFO Relaxed похож на FIFO, но может иметь разрывы при восстановлении после просадок. -Mailbox может иметь меньшую задержку, чем FIFO, и не имеет разрывов, но может пропускать кадры. -Моментальная (без синхронизации) просто показывает все кадры и может иметь разрывы. +FIFO Relaxed: похож на FIFO, но может иметь разрывы при восстановлении после просадок. +Mailbox: может иметь меньшую задержку, чем FIFO, и не имеет разрывов, но может пропускать кадры. +Моментальная (без синхронизации) показывает когда доступно и может иметь разрывы. - + + Sync Memory Operations + Синхронизация операций с памятью + + + + Ensures data consistency between compute and memory operations. +This option fixes issues in games, but may degrade performance. +Unreal Engine 4 games often see the most significant changes thereof. + Обеспечивает согласованность данных между вычислительными операциями и операциями с памятью. +Эта опция устраняет проблемы в играх, но может привести к снижению производительности. +В играх на Unreal Engine 4 часто происходят наиболее существенные изменения. + + + Enable asynchronous presentation (Vulkan only) Включите асинхронное отображение (только для Vulkan) - + Slightly improves performance by moving presentation to a separate CPU thread. Немного улучшает производительность, перемещая презентацию на отдельный поток ЦП. - + Force maximum clocks (Vulkan only) Принудительно заставить максимальную тактовую частоту (только для Vulkan) - + Runs work in the background while waiting for graphics commands to keep the GPU from lowering its clock speed. Выполняет работу в фоновом режиме в ожидании графических команд, не позволяя ГП снижать тактовую частоту. - + Anisotropic Filtering: Анизотропная фильтрация: - + Controls the quality of texture rendering at oblique angles. -It’s a light setting and safe to set at 16x on most GPUs. +Safe to set at 16x on most GPUs. Контролирует качество отображения текстур под наклонными углами. -Это нетребовательная настройка, можно выбрать 16x на большинстве графических процессоров. +Безопасно выбрать до 16x на многих ГПУ. - - Accuracy Level: - Уровень точности: + + GPU Mode: + Режим ГП: - - GPU emulation accuracy. -Most games render fine with Normal, but High is still required for some. -Particles tend to only render correctly with High accuracy. -Extreme should only be used for debugging. -This option can be changed while playing. -Some games may require booting on high to render properly. - Точность эмуляции GPU. -Большинство игр отображаются нормально с настройкой "Нормальная", но для некоторых требуется "Высокая". -Частицы обычно отображаются правильно только с высокой точностью. -"Экстремальная" следует использовать только для отладки. -Эту опцию можно изменить во время игры. -Некоторые игры могут требовать запуска с высокой точностью для правильного отображения. + + Controls the GPU emulation mode. +Most games render fine with Fast or Balanced modes, but Accurate is still required for some. +Particles tend to only render correctly with Accurate mode. + Управляет режимом эмуляции графического процессора. +Большинство игр нормально отображаются в режимах «Быстрый» или «Сбалансированный», но для некоторых требуется режим «Точный». +Частицы обычно корректно отображаются только в режиме «Точный». - - Use asynchronous shader building (Hack) - Использовать асинхронное построение шейдеров (Хак) + + DMA Accuracy: + Точность DMA: - - Enables asynchronous shader compilation, which may reduce shader stutter. -This feature is experimental. - Включает асинхронную компиляцию шейдеров, что уменьшит зависания из-за шейдеров. Функция является экспериментальной. + + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. + Управляет точностью DMA. Безопасная точность может исправить проблемы в некоторых играх, но также может повлиять на производительность. - Use Fast GPU Time (Hack) - Включить Fast GPU Time (Хак) + + Enable asynchronous shader compilation + Включить асинхронную компиляцию шейдеров - Enables Fast GPU Time. This option will force most games to run at their highest native resolution. - Включает функцию Fast GPU Time. Этот параметр заставит большинство игр работать в максимальном родном разрешении. + + May reduce shader stutter. + Может уменьшить заикание шейдера. - + + Fast GPU Time + Быстрое время ГП + + + + Overclocks the emulated GPU to increase dynamic resolution and render distance. +Use 256 for maximal performance and 512 for maximal graphics fidelity. + Разгоняет эмулируемый графический процессор для увеличения динамического разрешения и дальности прорисовки. +Используйте 256 для максимальной производительности и 512 для максимального качества графики. + + + + GPU Unswizzle + Распаковка GPU + + + + Accelerates BCn 3D texture decoding using GPU compute. +Disable if experiencing crashes or graphical glitches. + Ускоряет 3d Декодирование текстуры BCn используя вычисления GPU +Выключите, если испытывайте вылеты или проблемы с графикой. + + + + GPU Unswizzle Max Texture Size + Макс. размер текстуры Unswizzle + + + + Sets the maximum size (MiB) for GPU-based texture unswizzling. +While the GPU is faster for medium and large textures, the CPU may be more efficient for very small ones. +Adjust this to find the balance between GPU acceleration and CPU overhead. + Задает максимальный размер (в МБ) текстур для преобразования формата на ГПУ. + Хотя ГПУ быстрее работает со средними и большими текстурами, ЦП может быть эффективнее для очень маленьких. + Настройте это значение, чтобы найти баланс между ускорением на ГПУ и нагрузкой на ЦП. + + + + GPU Unswizzle Stream Size + Размер потока распаковки GPU + + + + Sets the maximum amount of texture data (in MiB) processed per frame. +Higher values can reduce stutter during texture loading but may impact frame consistency. + Устанавливает максимальный объем текстур (в мегабайтах), обрабатываемых за кадр. +Более высокие значения могут уменьшить статтеры при прогрузке текстур, но могут негативно повлиять на плавность кадров. + + + + GPU Unswizzle Chunk Size + Размер ансвиззлинг-блока ГП + + + + Determines the number of depth slices processed in a single dispatch. +Increasing this can improve throughput on high-end GPUs but may cause TDR or driver timeouts on weaker hardware. + Определяет количество слоев глубины, обрабатываемых за один вызов. +Увеличение этого параметра может повысить пропускную способность флагманских ГП, но может привести к вылету/зависанию видеодрайвера на менее производительных системах. + + + Use Vulkan pipeline cache Использовать конвейерный кэш Vulkan - + Enables GPU vendor-specific pipeline cache. This option can improve shader loading time significantly in cases where the Vulkan driver does not store pipeline cache files internally. Включает кэш конвейера, специфичный для производителя ГП. Эта опция может значительно улучшить время загрузки шейдеров в тех случаях, когда драйвер Vulkan не хранит внутренние файлы кэша конвейера. - + Enable Compute Pipelines (Intel Vulkan Only) Включить вычислительные конвейеры (только для Intel Vulkan) - - Enable compute pipelines, required by some games. -This setting only exists for Intel proprietary drivers, and may crash if enabled. + + 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. - Включите вычислительные конвейеры, необходимые для некоторых игр. -Эта настройка существует только для проприетарных драйверов Intel и может вызвать вылеты, если включена. -Вычислительные конвейеры включены по умолчанию во всех остальных драйверах. + Требуется для некоторых игр. +Этот параметр существует только для фирменных драйверов Intel и может привести к сбою, если он включен. +Конвейеры вычислений всегда включены во всех других драйверах. - + Enable Reactive Flushing Включить реактивную очистку - + Uses reactive flushing instead of predictive flushing, allowing more accurate memory syncing. Вместо прогнозирующей очистки используется реактивная очистка, что обеспечивает более точную синхронизацию памяти. - + Sync to framerate of video playback Привязать к фреймрейту видео. - + Run the game at normal speed during video playback, even when the framerate is unlocked. Обычная скорость игры во время видео, даже если фреймрейт разблокирован. - + Barrier feedback loops Обратная связь с барьерами. - + Improves rendering of transparency effects in specific games. Улучшает эффекты прозрачности в некоторых играх. - + + Enable buffer history + История буфера<br style=""> + + + + Enables access to previous buffer states. +This option may improve rendering quality and performance consistency in some games. + Позволяет получить доступ к предыдущим состояниям буфера. +Эта опция может улучшить качество рендеринга и стабильность производительности в некоторых играх. + + + + Fix bloom effects + Исправить Bloom-эффекты + + + + Removes bloom in Burnout. + Удаляет bloom-эффект в Burnout. + + + + Enable Legacy Rescale Pass + Включить устаревший пропуск перемасштабирования + + + + May fix rescale issues in some games by relying on behavior from the previous implementation. +Legacy behavior workaround that fixes line artifacts on AMD and Intel GPUs, and grey texture flicker on Nvidia GPUs in Luigis Mansion 3. + + + + + Extended Dynamic State + Расширенное динамическое состояние + + + + Controls the number of features that can be used in Extended Dynamic State. +Higher states allow for more features and can increase performance, but may cause additional graphical issues. + Управляет количеством функций, которые можно использовать в расширенном динамическом состоянии. +Более высокие значения позволяют использовать больше функций и могут повысить производительность, но могут привести к дополнительным проблемам с графикой. + + + + Vertex Input Dynamic State + Динамическое состояние вершинного ввода + + + + Enables vertex input dynamic state feature for better quality and performance. + Включает функцию динамического состояния вершинного ввода для повышения качества и производительности. + + + + Sample Shading + Сэмпловый шейдинг + + + + Allows the fragment shader to execute per sample in a multi-sampled fragment instead of once per fragment. Improves graphics quality at the cost of performance. +Higher values improve quality but degrade performance. + Позволяет шейдеру фрагментов выполняться на каждый сэмпл в мульти-сэмпловом фрагменте вместо одного раза на фрагмент. Улучшает качество графики ценой производительности. +Более высокие значения повышают качество, но снижают производительность. + + + RNG Seed Сид RNG - + Controls the seed of the random number generator. -Mainly used for speedrunning purposes. - Управляет начальным значением генератора случайных чисел. В основном используется для спидранов. +Mainly used for speedrunning. + Управляет начальным значением генератора случайных чисел. + В основном используется для спидранов. - + Device Name Название устройства - - The name of the emulated Switch. - Имя эмулируемого Switch. + + The name of the console. + Имя консоли. - + Custom RTC Date: Пользовательская RTC-дата: - - This option allows to change the emulated clock of the Switch. + + This option allows to change the clock of the console. Can be used to manipulate time in games. - Этот параметр позволяет изменить эмулируемые часы на Switch. + Этот параметр позволяет изменить эмулируемые часы на консоли. Может использоваться для манипуляции временем в играх. - + + The number of seconds from the current unix time + Количество секунд от текущего времени unix + + + Language: Язык: - - Note: this can be overridden when region setting is auto-select - Примечание: может быть перезаписано если регион выбирается автоматически + + This option can be overridden when region setting is auto-select + Это Может быть перезаписано если регион выбирается автоматически - + Region: Регион: - - The region of the emulated Switch. - Регион эмулируемого Switch. + + The region of the console. + Регион консоли. - + Time Zone: Часовой пояс: - - The time zone of the emulated Switch. - Часовой пояс эмулируемого Switch. + + The time zone of the console. + Часовой пояс консоли. - + Sound Output Mode: Режим вывода звука: - + Console Mode: Консольный режим: - - Selects if the console is emulated in Docked or Handheld mode. + + Selects if the console is in Docked or Handheld mode. Games will change their resolution, details and supported controllers and depending on this setting. Setting to Handheld can help improve performance for low end systems. Выбирает, эмулируется ли консоль в режиме подключенного к док-станции или портативного режима. @@ -1075,902 +1242,1049 @@ Setting to Handheld can help improve performance for low end systems. Установка в режим портативной консоли может помочь улучшить производительность для слабых устройств. - - Prompt for user on game boot - Спрашивать пользователя при запуске игры + + Unit Serial + - Ask to select a user profile on each boot, useful if multiple people use yuzu on the same PC. - Спрашивать выбрать профиль пользователя при каждой загрузке - полезно, если несколько людей используют yuzu на одном компьютере. + + Battery Serial + - - Pause emulation when in background - Приостанавливать эмуляцию в фоновом режиме + + Debug knobs + - This setting pauses yuzu when focusing other windows. - Эта настройка приостанавливает работу yuzu при переключении на другие окна. + + Prompt for user profile on boot + Спрашивать профиль пользователя при запуске - - Fast GPU Time (Hack) - + + Useful if multiple people use the same PC. + Полезно, если несколько человек используют один и тот же компьютер. - - Overclocks the emulated GPU to increase dynamic resolution and render distance. -Use 128 for maximal performance and 512 for maximal graphics fidelity. - + + Pause when not in focus + Делает паузу, когда не в фокусе - - Extended Dynamic State - + + Pauses emulation when focusing on other windows. + Ставит на паузу эмуляцию, когда фокусируешься на другие окна. - - Enables the VkExtendedDynamicState* extensions. -Higher dynamic states will generally improve performance, but may cause issues on certain games or devices. - - - - - Provoking Vertex - - - - - Improves lighting and vertex handling in certain games. -Only Vulkan 1.0+ devices support this extension. - - - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - - Ask to select a user profile on each boot, useful if multiple people use eden on the same PC. - - - - - This setting pauses eden when focusing other windows. - - - - + Confirm before stopping emulation Подтвердите перед остановкой эмуляции - - This setting overrides game prompts asking to confirm stopping the game. + + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. Эта настройка переопределяет запросы игры, запрашивающие подтверждение остановки игры. Включение этой настройки обходит такие запросы и непосредственно завершает эмуляцию. - + Hide mouse on inactivity Спрятать мышь при неактивности - - This setting hides the mouse after 2.5s of inactivity. + + Hides the mouse after 2.5s of inactivity. Эта настройка скрывает указатель мыши после 2,5 секунды бездействия. - + Disable controller applet Отключить веб-апплет - - Forcibly disables the use of the controller applet by guests. -When a guest attempts to open the controller applet, it is immediately closed. - Принудительно отключает использование приложения контроллера гостями. При попытке гостя открыть приложение контроллера оно немедленно закрывается. + + Forcibly disables the use of the controller applet in emulated programs. +When a program attempts to open the controller applet, it is immediately closed. + Принудительно отключает использование приложения контроллера в эмулированных программах. + При попытке программы открыть приложение контроллера, оно немедленно закрывается. - + Check for updates - + Проверка обновлений - + Whether or not to check for updates upon startup. - + Следует ли проверять наличие обновлений при запуске. - + Enable Gamemode Включить режим игры - + + Force X11 as Graphics Backend + Использовать X11 в качестве графического бэкенда + + + Custom frontend Свой фронтенд - + Real applet Реальное приложение - + Never - + Никогда - + On Load - + При загрузке - + Always - + Всегда - + CPU ЦП - + GPU графический процессор - + CPU Asynchronous Асинхронный ГП - + Uncompressed (Best quality) Без сжатия (наилучшее качество) - + BC1 (Low quality) BC1 (низкое качество) - + BC3 (Medium quality) BC3 (среднее качество) - - Conservative - - - - - Aggressive - - - - - OpenGL - OpenGL - - - - Vulkan - Vulkan - - - - Null - Null - - - - GLSL - GLSL - - - - GLASM (Assembly Shaders, NVIDIA Only) - GLASM (ассемблерные шейдеры, только для NVIDIA) - - - - SPIR-V (Experimental, AMD/Mesa Only) - SPIR-V (Экспериментальный, только для AMD/Mesa) - - - - Normal - Нормальная - - - - High - Высокая - - - - Extreme - Экстрим - - - + + Auto Авто - + + 30 FPS + 30 FPS + + + + 60 FPS + 60 FPS + + + + 90 FPS + 90 FPS + + + + 120 FPS + 120 FPS + + + + Conservative + Консервативный + + + + Aggressive + Агрессивный + + + + Vulkan + Vulkan + + + + OpenGL GLSL + OpenGL GLSL + + + + OpenGL GLASM (Assembly Shaders, NVIDIA Only) + OpenGL GLASM (ассемблерные шейдеры, только для NVIDIA) + + + + OpenGL SPIR-V (Experimental, AMD/Mesa Only) + OpenGL SPIR-V (Экспериментальный, только для AMD/Mesa) + + + + Null + Null + + + + Fast + Быстро + + + + Balanced + Сбалансированный + + + + Accurate Точно - - Unsafe - Небезопасно - - - - Paranoid (disables most optimizations) - Параноик (отключает большинство оптимизаций) - - - - Dynarmic - Dynarmic - - - - NCE - NCE - - - - Borderless Windowed - Окно без границ - - - - Exclusive Fullscreen - Эксклюзивный полноэкранный - - - - No Video Output - Отсутствие видеовыхода - - - - CPU Video Decoding - Декодирование видео на ЦП - - - - GPU Video Decoding (Default) - Декодирование видео на ГП (по умолчанию) - - - - 0.25X (180p/270p) [EXPERIMENTAL] - - - - - 0.5X (360p/540p) [EXPERIMENTAL] - 0.5X (360p/540p) [ЭКСПЕРИМЕНТАЛЬНО] - - - - 0.75X (540p/810p) [EXPERIMENTAL] - 0.75X (540p/810p) [ЭКСПЕРИМЕНТАЛЬНО] - - - - 1X (720p/1080p) - 1X (720p/1080p) - - - - 1.5X (1080p/1620p) [EXPERIMENTAL] - 1.5X (1080p/1620p) [ЭКСПЕРИМЕНТАЛЬНО] - - - - 2X (1440p/2160p) - 2X (1440p/2160p) - - - - 3X (2160p/3240p) - 3X (2160p/3240p) - - - - 4X (2880p/4320p) - 4X (2880p/4320p) - - - - 5X (3600p/5400p) - 5X (3600p/5400p) - - - - 6X (4320p/6480p) - 6X (4320p/6480p) - - - - 7X (5040p/7560p) - 7X (5040p/7560p) - - - - 8X (5760p/8640p) - 8X (5760p/8640p) - - - - Nearest Neighbor - Ближайший сосед - - - - Bilinear - Билинейный - - - - Bicubic - Бикубический - - - - Gaussian - Гаусс - - - - ScaleForce - ScaleForce - - - - AMD FidelityFX™️ Super Resolution - AMD FidelityFX™️ Super Resolution - - - - Area - - - - - None - Никакой - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Default (16:9) - Стандартное (16:9) - - - - Force 4:3 - Заставить 4:3 - - - - Force 21:9 - Заставить 21:9 - - - - Force 16:10 - Заставить 16:10 - - - - Stretch to Window - Растянуть до окна - - - - Automatic - Автоматически - - - + + Default По умолчанию - + + Unsafe (fast) + Небезопасно (быстро) + + + + Safe (stable) + Безопасно (стабильно) + + + + Unsafe + Небезопасно + + + + Paranoid (disables most optimizations) + Параноик (отключает большинство оптимизаций) + + + + Debugging + Отладка + + + + Dynarmic + Dynarmic + + + + NCE + NCE + + + + Borderless Windowed + Окно без границ + + + + Exclusive Fullscreen + Эксклюзивный полноэкранный + + + + No Video Output + Отсутствие видеовыхода + + + + CPU Video Decoding + Декодирование видео на ЦП + + + + GPU Video Decoding (Default) + Декодирование видео на ГП (по умолчанию) + + + + 0.25X (180p/270p) [EXPERIMENTAL] + 0.25X (180p/270p)[ЭКСПЕРИМЕНТАЛЬНО] + + + + 0.5X (360p/540p) [EXPERIMENTAL] + 0.5X (360p/540p) [ЭКСПЕРИМЕНТАЛЬНО] + + + + 0.75X (540p/810p) [EXPERIMENTAL] + 0.75X (540p/810p) [ЭКСПЕРИМЕНТАЛЬНО] + + + + 1X (720p/1080p) + 1X (720p/1080p) + + + + 1.25X (900p/1350p) [EXPERIMENTAL] + 1.25X (900p/1350p) [ЭКПЕРИМЕНТАЛЬНО] + + + + 1.5X (1080p/1620p) [EXPERIMENTAL] + 1.5X (1080p/1620p) [ЭКСПЕРИМЕНТАЛЬНО] + + + + 2X (1440p/2160p) + 2X (1440p/2160p) + + + + 3X (2160p/3240p) + 3X (2160p/3240p) + + + + 4X (2880p/4320p) + 4X (2880p/4320p) + + + + 5X (3600p/5400p) + 5X (3600p/5400p) + + + + 6X (4320p/6480p) + 6X (4320p/6480p) + + + + 7X (5040p/7560p) + 7X (5040p/7560p) + + + + 8X (5760p/8640p) + 8X (5760p/8640p) + + + + Nearest Neighbor + Ближайший сосед + + + + Bilinear + Билинейный + + + + Bicubic + Бикубический + + + + Gaussian + Гаусс + + + + Lanczos + Lanczos + + + + ScaleForce + ScaleForce + + + + AMD FidelityFX Super Resolution + AMD FidelityFX™️ Super Resolution + + + + Area + Зона + + + + MMPX + MMPX + + + + Zero-Tangent + Zero-Tangent + + + + B-Spline + B-Spline + + + + Mitchell + Mitchell + + + + Spline-1 + Spline-1 + + + + + None + Никакой + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Default (16:9) + Стандартное (16:9) + + + + Force 4:3 + Заставить 4:3 + + + + Force 21:9 + Заставить 21:9 + + + + Force 16:10 + Заставить 16:10 + + + + Stretch to Window + Растянуть до окна + + + + Automatic + Автоматически + + + 2x 2x - + 4x 4x - + 8x 8x - + 16x 16x - + + 32x + 32x + + + + 64x + 64x + + + Japanese (日本語) Японский (日本語) - + American English Американский английский - + French (français) Французский (français) - + German (Deutsch) Немецкий (Deutsch) - + Italian (italiano) Итальянский (italiano) - + Spanish (español) Испанский (español) - + Chinese Китайский - + Korean (한국어) Корейский (한국어) - + Dutch (Nederlands) Голландский (Nederlands) - + Portuguese (português) Португальский (português) - + Russian (Русский) Русский - + Taiwanese Тайваньский - + British English Британский английский - + Canadian French Канадский французский - + Latin American Spanish Латиноамериканский испанский - + Simplified Chinese Упрощённый китайский - + Traditional Chinese (正體中文) Традиционный китайский (正體中文) - + Brazilian Portuguese (português do Brasil) Бразильский португальский (português do Brasil) - - + + Polish (polska) + Польский (polska) + + + + Thai (แบบไทย) + Тайский (แบบไทย) + + + + Japan Япония - + USA США - + Europe Европа - + Australia Австралия - + China Китай - + Korea Корея - + Taiwan Тайвань - + Auto (%1) Auto select time zone Авто (%1) - + Default (%1) Default time zone По умолчанию (%1) - + CET CET - + CST6CDT CST6CDT - + Cuba Куба - + EET EET - + Egypt Египт - + Eire Эйре - + EST EST - + EST5EDT EST5EDT - + GB GB - + GB-Eire GB-Эйре - + GMT GMT - + GMT+0 GMT+0 - + GMT-0 GMT-0 - + GMT0 GMT0 - + Greenwich Гринвич - + Hongkong Гонконг - + HST HST - + Iceland Исландия - + Iran Иран - + Israel Израиль - + Jamaica Ямайка - + Kwajalein Кваджалейн - + Libya Ливия - + MET MET - + MST MST - + MST7MDT MST7MDT - + Navajo Навахо - + NZ NZ - + NZ-CHAT NZ-CHAT - + Poland Польша - + Portugal Португалия - + PRC PRC - + PST8PDT PST8PDT - + ROC ROC - + ROK ROK - + Singapore Сингапур - + Turkey Турция - + UCT UCT - + Universal Универсальный - + UTC UTC - + W-SU W-SU - + WET WET - + Zulu Зулусы - + Mono Моно - + Stereo Стерео - + Surround Объёмный звук - + 4GB DRAM (Default) 4 ГБ ОЗУ (по умолчанию) - + 6GB DRAM (Unsafe) 6GB ОЗУ (Небезопасно) - + 8GB DRAM - + 8ГБ ОЗУ - + 10GB DRAM (Unsafe) - + 10ГБ ОЗУ(Небезопасно) - + 12GB DRAM (Unsafe) - + 12ГБ ОЗУ(Небезопасно) - - Low (128) - - - - - Medium (256) - - - - - High (512) - - - - 8GB DRAM (Unsafe) - 8GB ОЗУ (Небезопасно) - - - + Docked В док-станции - + Handheld Портативный - + + + Off + Выкл. + + + Boost (1700MHz) - + Разгон (1700MHz) - + Fast (2000MHz) - + Быстрая (2000MHz) - + Always ask (Default) Всегда спрашивать (По умолчанию) - + Only if game specifies not to stop Только если игра указывает не останавливаться - + Never ask Никогда не спрашивать + + + + Medium (256) + Средний (256) + + + + + High (512) + Высокий (512) + + + + Very Small (16 MB) + Очень малый (16 МБ) + + + + Small (32 MB) + Малый (32 МБ) + + + + Normal (128 MB) + Обычный (128 МБ) + + + + Large (256 MB) + Большой (256 МБ) + + + + Very Large (512 MB) + Очень большой (512 МБ) + + + + Very Low (4 MB) + Очень низкий (4 МБ) + + + + Low (8 MB) + Низкий (8 МБ) + + + + Normal (16 MB) + Обычный (16 МБ) + + + + Medium (32 MB) + Средний (32 МБ) + + + + High (64 MB) + Высокий (64 МБ) + + + + Very Low (32) + Очень низкий (32) + + + + Low (64) + Низкий (64) + + + + Normal (128) + Обычный (128) + + + + Disabled + Выключено + + + + ExtendedDynamicState 1 + Расширенное динамическое состояние 1 + + + + ExtendedDynamicState 2 + Расширенное динамическое состояние 2 + + + + ExtendedDynamicState 3 + Расширенное динамическое состояние 3 + + + + Tree View + В виде списка + + + + Grid View + В виде сетки + ConfigureApplets @@ -2042,7 +2356,7 @@ When a guest attempts to open the controller applet, it is immediately closed.По умолчанию - + Auto Авто @@ -2116,7 +2430,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">Эта оптимизация ускоряет доступ гостевой программы к памяти.</div> - <div style="white-space: nowrap"> Включение этой оптимизации встраивает доступ к указателям PageTable::pointers в эмулируемый код.</div> + <div style="white-space: nowrap"> Включение этой оптимизации встраивает доступ к указателям PageTable::pointers в эмулируемый код.</div> <div style="white-space: nowrap">Отключение этой функции заставляет все обращения к памяти проходить через функции Memory::Read/Memory::Write.</div> @@ -2229,12 +2543,12 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all memory accesses to use Software MMU Emulation.</div> <div style="white-space: nowrap">Эта оптимизация ускоряет доступ гостевой программы к памяти.</div> - <div style="white-space: nowrap"> Включение этой оптимизации приводит к тому, что чтение/запись гостевой памяти производится непосредственно в память и использует MMU хоста.</div> + <div style="white-space: nowrap"> Включение этой оптимизации приводит к тому, что чтение/запись гостевой памяти производится непосредственно в память и использует MMU хоста.</div> <div style="white-space: nowrap">Отключение этой функции заставляет все обращения к памяти использовать программную эмуляцию MMU.</div> @@ -2247,13 +2561,13 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up exclusive memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all exclusive memory accesses to use Software MMU Emulation.</div> <div style="white-space: nowrap">Эта оптимизация ускоряет доступ гостевой программы к эксклюзивной памяти.</div> <div style="white-space: nowrap">Включение этой оптимизации приводит к тому, что чтение/запись в эксклюзивную память гостя выполняется непосредственно в память и использует MMU хоста.</div> - <div style="white-space: nowrap"> Отключение этой функции заставляет все эксклюзивные доступы к памяти использовать эмуляцию программного MMU.</div> + <div style="white-space: nowrap"> Отключение этой функции заставляет все эксклюзивные доступы к памяти использовать эмуляцию программного MMU.</div> @@ -2281,7 +2595,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up memory accesses by allowing invalid memory accesses to succeed.</div> - <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> + <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> <div style="white-space: nowrap">Эта оптимизация ускоряет обращение к памяти, позволяя успешное обращение к недопустимой памяти.</div> @@ -2322,30 +2636,30 @@ When a guest attempts to open the controller applet, it is immediately closed.Журналирование - - Open Log Location - Открыть папку для журналов - - - + Global Log Filter Глобальный фильтр журналов - + When checked, the max size of the log increases from 100 MB to 1 GB Если включено, максимальный размер журнала увеличивается со 100 МБ до 1 ГБ - + Enable Extended Logging** Включить расширенное ведение журнала** - + Show Log in Console Показывать журнал в консоли + + + Open Log Location + Открыть папку для журналов + Homebrew @@ -2482,18 +2796,9 @@ When a guest attempts to open the controller applet, it is immediately closed.Включить все типы контроллеров - - Censor username in logs - - - - - **This will be reset automatically when eden closes. - - - - Enable Auto-Stub** - Включить автоподставку** + + Enable Auto-Stub + Включить Auto Stab @@ -2502,8 +2807,8 @@ When a guest attempts to open the controller applet, it is immediately closed. - Enable CPU Debugging - Включить отладку ЦП + Use dev.keys + @@ -2516,43 +2821,74 @@ When a guest attempts to open the controller applet, it is immediately closed.Отладка - - Flush log output on each line - + + Battery Serial: + Серийный номер батареи: - - Enable FS Access Log - Включить журнал доступа к ФС + + Bitmask for quick development toggles + Битовая маска отладочных флагов - + + Set debug knobs (bitmask) + Задать отладочные флаги (битовая маска) + + + + 16-bit debug knob set for quick development toggles + 16-битные отладочные флаги (быстрое переключение) + + + + (bitmask) + (битовая маска) + + + + Debug Knobs: + Отладочные флаги: + + + + Unit Serial: + Серийный номер устройства: + + + Enable this to output the latest generated audio command list to the console. Only affects games using the audio renderer. Включите эту опцию, чтобы вывести на консоль последний сгенерированный список аудиокоманд. Влияет только на игры, использующие аудио рендерер. - - Enable Auto-Stub - - - - + Dump Audio Commands To Console** Дамп аудиокоманд в консоль** - + + Flush log output on each line + Полный вывод лога в каждой строке + + + + Enable FS Access Log + Включить журнал доступа к ФС + + + Enable Verbose Reporting Services** Включить службу отчётов в развернутом виде** - **This will be reset automatically when yuzu closes. - **Это будет автоматически сброшено после закрытия yuzu. + + Censor username in logs + Скрывать имя пользователя в логах - - Web applet not compiled - Веб-апплет не скомпилирован + + **This will be reset automatically when Eden closes. + **Это будет автоматически сбрасываться когда Eden закрывается. @@ -2594,14 +2930,10 @@ When a guest attempts to open the controller applet, it is immediately closed. ConfigureDialog - - yuzu Configuration - Параметры yuzu - - eden Configuration - + Eden Configuration + Конфигурация Eden @@ -2609,88 +2941,88 @@ When a guest attempts to open the controller applet, it is immediately closed.Некоторые настройки доступны только тогда, когда игра не запущена. - + Applets Апплеты - - + + Audio Звук - - + + CPU ЦП - + Debug Отладка - + Filesystem Файловая система - - + + General Общие - - + + Graphics Графика - + GraphicsAdvanced ГрафикаРасширенные - - GraphicsExtensions - + + GraphicsExtra + Дополнительно (Графика) - + Hotkeys Горячие клавиши - - + + Controls Управление - + Profiles Профили - + Network Сеть - - + + System Система - + Game List Список игр - + Web Сеть @@ -2720,9 +3052,10 @@ When a guest attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2732,107 +3065,191 @@ When a guest attempts to open the controller applet, it is immediately closed.SD Карта - + + Save Data + Сохранить данные + + + Gamecard Картридж - + Path Путь - + Inserted Вставлен - + Current Game Текущая игра - + Patch Manager Управление патчами - + Dump Decompressed NSOs Дамп распакованных NSO - + Dump ExeFS Дамп ExeFS - + Mod Load Root Папка с модами - + Dump Root Корень дампа - + Caching Кэширование - + Cache Game List Metadata Кэшировать метаданные списка игр - - - - + Reset Metadata Cache Сбросить кэш метаданных - + Select Emulated NAND Directory... Выберите папку для эмулируемого NAND... - + Select Emulated SD Directory... Выберите папку для эмулируемого SD... - + + + Select Save Data Directory... + Выбрать директорию для сохранения данных... + + + Select Gamecard Path... Выберите папку для картриджей... - + Select Dump Directory... Выберите папку для дампов... - + Select Mod Load Directory... Выберите папку для модов... - - The metadata cache is already empty. - Кэш метаданных уже пустой. + + Save Data Directory + Папка сохранений - - The operation completed successfully. - Операция выполнена успешно. + + Choose an action for the save data directory: + Выберите действие для каталога сохранения данных: - - The metadata cache couldn't be deleted. It might be in use or non-existent. - Кэш метаданных не может быть удален. Возможно, он используется или отсутствует. + + Set Custom Path + Установить пользовательский путь + + + + Reset to NAND + Сброс в NAND + + + + Save data exists in both the old and new locations. + +Old: %1 +New: %2 + +Would you like to migrate saves from the old location? +WARNING: This will overwrite any conflicting saves in the new location! + Сохраненные данные существуют как в старом, так и в новом каталогах. + +Old: %1 +New: %2 + +Вы желаете перенести сохранения из старого каталога? +ПРЕДУПРЕЖДЕНИЕ: Это приведет к перезаписи всех конфликтующих сохранений в новом каталоге! + + + + Would you like to migrate your save data to the new location? + +From: %1 +To: %2 + Вы хотите перенести данные в новое расположение? + + + + Migrate Save Data + Перенести сохраненные данные + + + + Migrating save data... + Перенос игровых данных... + + + + Cancel + Отмена + + + + + Migration Failed + Перенос завершился ошибкой + + + + Failed to create destination directory. + Не удалось создать целевой каталог. + + + + Failed to migrate save data: +%1 + Не удалось перенести данные: +%1 + + + + Migration Complete + Перенос успешно завершён + + + + Save data has been migrated successfully. + +Would you like to delete the old save data? + Игровые данные успешно перенесены. +Вы хотите удалить старые игровые данные? @@ -2850,28 +3267,54 @@ When a guest attempts to open the controller applet, it is immediately closed. - Linux - Linux + External Content + Дополнительный контент - + + Add directories to scan for DLCs and Updates without installing to NAND + Добавить директории для DLC и обновлений без их установки в NAND + + + + Add Directory + Добавить директорию + + + + Remove Selected + Удалить выделенное + + + Reset All Settings Сбросить все настройки - yuzu - yuzu + + Eden + Eden - - eden - - - - + This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed? Это сбросит все настройки и удалит все конфигурации под отдельные игры. При этом не будут удалены пути для игр, профили или профили ввода. Продолжить? + + + Select External Content Directory... + Выбрать каталог для дополнительного контента... + + + + Directory Already Added + Каталог успешно добавлен + + + + This directory is already in the list. + Этот каталог уже есть в списке. + ConfigureGraphics @@ -2901,33 +3344,33 @@ When a guest attempts to open the controller applet, it is immediately closed.Фоновый цвет: - + % FSR sharpening percentage (e.g. 50%) % - + Off Отключена - + VSync Off Верт. синхронизация отключена - + Recommended Рекомендуется - + On Включена - + VSync On Верт. синхронизация включена @@ -2945,7 +3388,7 @@ When a guest attempts to open the controller applet, it is immediately closed.Расширенные - + Advanced Graphics Settings Расширенные настройки графики @@ -2955,24 +3398,38 @@ When a guest attempts to open the controller applet, it is immediately closed. Form - Форма + Форма - Extensions - + Extras + Дополнительно - - Vulkan Extension Settings - + + Hacks + Хаки - - While it's recommended to use state 3, some games may perform better on lower states. Setting to 0 (disabled) may also break games. -If your GPU is older (i.e. RX570/580 or older), it may not support these features. If this is the case, set the slider to 0 and uncheck all boxes. -These settings are experimental, and may cause black screens. If your games fail to boot or are stuck on a black screen, change these settings around. - + + Changing these options from their default may cause issues. Novitii cavete! + Внимание! Изменение стандартных настроек этих параметров может вызвать проблемы. + + + + Vulkan Extensions + Vulkan Расширения + + + + % + Sample Shading percentage (e.g. 50%) + % + + + + Extended Dynamic State is disabled on macOS due to MoltenVK compatibility issues that cause black screens. + Расширенное динамическое состояние отключено в macOS из-за проблем с совместимостью MoltenVK, которые приводят к появлению черных экранов. @@ -3003,75 +3460,75 @@ These settings are experimental, and may cause black screens. If your games fail Ввостановить значения по умолчанию. - + Action Действие - + Hotkey Горячая клавиша - + Controller Hotkey Горячая клавиша контроллера - - - + + + Conflicting Key Sequence Конфликтующее сочетание клавиш - - + + The entered key sequence is already assigned to: %1 Введенное сочетание уже назначено на: %1 - + [waiting] [ожидание] - + Invalid Недопустимо - + Invalid hotkey settings Неверные настройки горячих клавиш - + An error occurred. Please report this issue on github. Произошла ошибка. Пожалуйста, сообщите об этой проблеме на github. - + Restore Default Ввостановить значение по умолчанию - + Clear Очистить - + Conflicting Button Sequence Конфликтующее сочетание кнопок - + The default button sequence is already assigned to: %1 Сочетание кнопок по умолчанию уже назначено на: %1 - + The default key sequence is already assigned to: %1 Сочетание клавиш по умолчанию уже назначено на: %1 @@ -3391,12 +3848,8 @@ These settings are experimental, and may cause black screens. If your games fail - Requires restarting eden - - - - Requires restarting yuzu - Требует перезапуск yuzu + Requires restarting Eden + Требует перезапуска Eden @@ -3546,30 +3999,19 @@ These settings are experimental, and may cause black screens. If your games fail - + Left Stick Левый мини-джойстик - - - - - - - Up - Вверх - - - - - - - - - - Left - Влево + + + + + + + Down + Вниз @@ -3583,14 +4025,25 @@ These settings are experimental, and may cause black screens. If your games fail Вправо - - - - - - - Down - Вниз + + + + + + + + Left + Влево + + + + + + + + + Up + Вверх @@ -3637,14 +4090,6 @@ These settings are experimental, and may cause black screens. If your games fail D-Pad Крестовина - - - - - - SL - SL - @@ -3654,59 +4099,55 @@ These settings are experimental, and may cause black screens. If your games fail SR - - - - L - L + + + + + SL + SL - + ZL ZL + + + + + L + L + Minus Минус - - - - Capture - Захват - - + Plus Плюс - - - Home - Home + + + + ZR + ZR - - + + R R - - - - - ZR - ZR - Motion 1 @@ -3717,6 +4158,18 @@ These settings are experimental, and may cause black screens. If your games fail Motion 2 Движение 2 + + + + Capture + Захват + + + + + Home + Home + Face Buttons @@ -3729,10 +4182,10 @@ These settings are experimental, and may cause black screens. If your games fail X - - - Y - Y + + + B + B @@ -3741,14 +4194,14 @@ These settings are experimental, and may cause black screens. If your games fail A - - - B - B + + + Y + Y - + Right Stick Правый мини-джойстик @@ -3763,242 +4216,242 @@ These settings are experimental, and may cause black screens. If your games fail Настроить - - - - + + + + Clear Очистить - - - - - + + + + + [not set] [не задано] - - - + + + Invert button Инвертировать кнопку - - + + Toggle button Переключить кнопку - + Turbo button Турбо кнопка - - + + Invert axis Инвертировать оси - - - + + + Set threshold Установить порог - - + + Choose a value between 0% and 100% Выберите значение между 0% и 100% - + Toggle axis Переключить оси - + Set gyro threshold Установить порог гироскопа - + Calibrate sensor Калибровка датчика - + Map Analog Stick Задать аналоговый мини-джойстик - + After pressing OK, first move your joystick horizontally, and then vertically. To invert the axes, first move your joystick vertically, and then horizontally. После нажатия на ОК, двигайте ваш мини-джойстик горизонтально, а затем вертикально. Чтобы инвертировать оси, сначала двигайте ваш мини-джойстик вертикально, а затем горизонтально. - + Center axis Центрировать оси - - + + Deadzone: %1% Мёртвая зона: %1% - - + + Modifier Range: %1% Диапазон модификатора: %1% - - + + Pro Controller Контроллер Pro - + Dual Joycons Двойные Joy-Con'ы - + Left Joycon Левый Joy-Сon - + Right Joycon Правый Joy-Сon - + Handheld Портативный - + GameCube Controller Контроллер GameCube - + Poke Ball Plus Poke Ball Plus - + NES Controller Контроллер NES - + SNES Controller Контроллер SNES - + N64 Controller Контроллер N64 - + Sega Genesis Sega Genesis - + Start / Pause Старт / Пауза - + Z Z - + Control Stick Мини-джойстик управления - + C-Stick C-Джойстик - + Shake! Встряхните! - + [waiting] [ожидание] - + New Profile Новый профиль - + Enter a profile name: Введите имя профиля: - - + + Create Input Profile Создать профиль управления - + The given profile name is not valid! Заданное имя профиля недействительно! - + Failed to create the input profile "%1" Не удалось создать профиль управления "%1" - + Delete Input Profile Удалить профиль управления - + Failed to delete the input profile "%1" Не удалось удалить профиль управления "%1" - + Load Input Profile Загрузить профиль управления - + Failed to load the input profile "%1" Не удалось загрузить профиль управления "%1" - + Save Input Profile Сохранить профиль управления - + Failed to save the input profile "%1" Не удалось сохранить профиль управления "%1" @@ -4021,15 +4474,6 @@ To invert the axes, first move your joystick vertically, and then horizontally.< По умолчанию - - ConfigureLinuxTab - - - - Linux - Linux - - ConfigureMotionTouch @@ -4055,7 +4499,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< - + Configure Настроить @@ -4085,111 +4529,93 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Порт: - - Learn More - Узнать больше - - - - + + Test Тест - + Add Server Добавить сервер - + Remove Server Удалить сервер - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Узнать больше</span></a> - - - + %1:%2 %1:%2 - yuzu - yuzu + + + + + + + Eden + Eden - - <a href='https://eden-emulator.github.io/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - - - - + Port number has invalid characters Номер порта содержит недопустимые символы - - - - - - - eden - - - - + Port has to be in range 0 and 65353 Порт должен быть в районе от 0 до 65353 - + IP address is not valid IP-адрес недействителен - + This UDP server already exists Этот UDP сервер уже существует - + Unable to add more than 8 servers Невозможно добавить более 8 серверов - + Testing Тестирование - + Configuring Настройка - + Test Successful Тест успешен - + Successfully received data from the server. Успешно получена информация с сервера - + Test Failed Тест провален - + Could not receive valid data from the server.<br>Please verify that the server is set up correctly and the address and port are correct. Не удалось получить действительные данные с сервера.<br>Убедитесь, что сервер правильно настроен, а также проверьте адрес и порт. - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. Тест UDP или калибрация в процессе.<br>Пожалуйста, подождите завершения. @@ -4316,9 +4742,9 @@ Current values are %1% and %2% respectively. Интерфейс сети - - None - Нет + + Enable Airplane Mode + Включить режим полета @@ -4374,49 +4800,54 @@ Current values are %1% and %2% respectively. Некоторые настройки доступны только тогда, когда игра не запущена. - + Add-Ons Дополнения - + System Система - + CPU ЦП - + Graphics Графика - + Adv. Graphics Расш. Графика - - GPU Extensions - + + Ext. Graphics + Доп. Графика - + Audio Звук - + Input Profiles Профили управления - Linux - Linux + Network + Сеть + + + + Applets + Апплеты @@ -4437,15 +4868,115 @@ Current values are %1% and %2% respectively. Дополнения - + + Import Mod from ZIP + Импортировать мод из ZIP-архива + + + + Import Mod from Folder + Импортировать мод из папки + + + Patch Name Название патча - + Version Версия + + + Mod Install Succeeded + Установка мода прошла успешно + + + + Successfully installed all mods. + Все моды установлены успешно. + + + + Mod Install Failed + Не удалось установить мод + + + + Failed to install the following mods: + %1 +Check the log for details. + Не удалось установить следующие моды: + %1 +Проверьте лог чтобы узнать детали. + + + + Mod Folder + Папка модов + + + + Zipped Mod Location + Расположение сжатых модов + + + + Zipped Archives (*.zip) + Сжатые Архивы (*.zip) + + + + Invalid Selection + Недопустимый выбор + + + + Only mods, cheats, and patches can be deleted. +To delete NAND-installed updates, right-click the game in the game list and click Remove -> Remove Installed Update. + Только моды, читы и патчи могут быть удалены. +Чтобы удалить установленные NAND-обновления, кликните ПКМ на игру в списке, выберите Удалить -> Удалить Установленное Обновление. + + + + You are about to delete the following installed mods: + + Удалить следующие установленные моды: + + + + + +Once deleted, these can NOT be recovered. Are you 100% sure you want to delete them? + +После удаления они не смогут быть восстановлены. Вы на 100% уверены, что хотите их удалить? + + + + Delete add-on(s)? + Удалить аддон(ы)? + + + + Successfully deleted + Успешно удалено + + + + Successfully deleted all selected mods. + Все выбранные моды успешно удалены + + + + &Delete + &Удалить + + + + &Open in File Manager + + ConfigureProfileManager @@ -4475,32 +5006,17 @@ Current values are %1% and %2% respectively. Имя пользователя - - Set Image - Выбрать изображение - - - + Add Добавить - - Rename - Переименовать - - - - Remove - Удалить - - - + Profile management is available only when game is not running. Управление профилями недоступно пока запущена игра. - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -4508,100 +5024,80 @@ Current values are %1% and %2% respectively. %2 - - Enter Username - Введите имя пользователя - - - + Users Пользователи - - Enter a username for the new user: - Введите имя пользователя для нового профиля: - - - - Enter a new username: - Введите новое имя пользователя: - - - - Select User Image - Выберите изображение пользователя - - - - JPEG Images (*.jpg *.jpeg) - Изображения JPEG (*.jpg, *.jpeg) - - - + Error deleting image Ошибка при удалении изображения - + Error occurred attempting to overwrite previous image at: %1. Ошибка при попытке перезаписи предыдущего изображения в: %1. - + Error deleting file Ошибка при удалении файла - + Unable to delete existing file: %1. Не удалось удалить существующий файл: %1. - + Error creating user image directory Ошибка при создании папки пользовательских изображений - + Unable to create directory %1 for storing user images. Не получилось создать папку %1 для хранения изображений пользователя. - - Error copying user image - Ошибка при копировании изображения пользователя + + Error saving user image + Ошибка при сохранении пользовательского изображения - - Unable to copy image from %1 to %2 - Не получилось скопировать изображение из %1 в %2 + + Unable to save image to file + Не удается сохранить изображение в файл - - Error resizing user image - Ошибка при изменении размера изображения пользователя + + &Edit + &Редактировать - - Unable to resize image - Невозможно изменить размер изображения + + &Delete + &Удалить + + + + Edit User + Редактировать пользователя ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. Удалить этого пользователя? Все сохраненные данные пользователя будут удалены. - + Confirm Delete Подтвердите удаление - + Name: %1 UUID: %2 Имя: %1 @@ -4654,7 +5150,7 @@ UUID: %2 - + Enable Включить @@ -4665,7 +5161,7 @@ UUID: %2 - + Not connected Не подключено @@ -4675,63 +5171,63 @@ UUID: %2 По умолчанию - + Clear Очистить - + [not set] [не задано] - + Invert axis Инвертировать оси - - + + Deadzone: %1% Мёртвая зона: %1% - + Error enabling ring input Ошибка при включении ввода кольца - + Direct Joycon driver is not enabled Прямой драйвер Joycon не активен - + Configuring Настройка - + The current mapped device doesn't support the ring controller Текущее выбранное устройство не поддерживает контроллер Ring - + The current mapped device doesn't have a ring attached К текущему устройству не прикреплено кольцо - + The current mapped device is not connected Текущее устройство не подключено - + Unexpected driver result %1 Неожиданный результат драйвера %1 - + [waiting] [ожидание] @@ -4755,7 +5251,7 @@ UUID: %2 Ядро - + Warning: "%1" is not a valid language for region "%2" Внимание: язык "%1" не подходит для региона "%2" @@ -4767,14 +5263,10 @@ UUID: %2 TAS TAS - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the yuzu website.</p></body></html> - <html><head/><body><p>Считывает входные данные контроллера из скриптов в том же формате, что и скрипты TAS-nx.<br/>Для более подробного объяснения обратитесь к <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">странице помощи</span></a> на сайте yuzu.</p></body></html> - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the eden website.</p></body></html> - + <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the user handbook.</p></body></html> + <html><head/><body><p>Считывает ввод с контроллера из скриптов в том же формате, что и скрипты TAS-nx.<br/>Подробности изложены в руководстве пользователя.</p></body></html> @@ -4807,17 +5299,22 @@ UUID: %2 Приостановить выполнение во время загрузки - + + Show recording dialog + + + + Script Directory Папка для скриптов - + Path Путь - + ... ... @@ -4825,12 +5322,12 @@ UUID: %2 ConfigureTasDialog - + TAS Configuration Настройка TAS - + Select TAS Load Directory... Выбрать папку загрузки TAS... @@ -4934,14 +5431,10 @@ Drag points to change position, or double-click table cells to edit values.Configure Touchscreen Настроийка сенсорного экрана - - Warning: The settings in this page affect the inner workings of yuzu's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - Внимание: Настройки на этой странице влияют на внутреннюю работу эмулируемого сенсорного экрана yuzu. Их изменение может привести к нежелательному поведению, как например частичная или полная неработоспособность сенсорного экрана. Вы должны использовать эту страницу только в том случае, если знаете, что делаете. - - Warning: The settings in this page affect the inner workings of eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - + Warning: The settings in this page affect the inner workings of Eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. + Внимание: Настройки на этой странице влияют на внутреннюю работу эмулируемого сенсорного экрана Eden. Их изменение может привести к нежелательному поведению, например, к частичной или неработоспособности сенсорного экрана. Пользоваться этой страницей следует только в том случае, если вы знаете, что делаете. @@ -4972,64 +5465,43 @@ Drag points to change position, or double-click table cells to edit values. ConfigureUI - - - + + None Нет - - - Small (32x32) - Маленький (32х32) - - Standard (64x64) - Стандартный (64х64) - - - - Large (128x128) - Большой (128х128) - - - - Full Size (256x256) - Полноразмерный (256х256) - - - Small (24x24) Маленький (24х24) - + Standard (48x48) Стандартный (48х48) - + Large (72x72) Большой (72х72) - + Filename Название файла - + Filetype Тип файла - + Title ID ID приложения - + Title Name Название игры @@ -5098,71 +5570,66 @@ Drag points to change position, or double-click table cells to edit values. - Game Icon Size: - Размер иконки игры: - - - Folder Icon Size: Размер иконки папки: - + Row 1 Text: Текст 1-ой строки: - + Row 2 Text: Текст 2-ой строки: - + Screenshots Скриншоты - + Ask Where To Save Screenshots (Windows Only) Спрашивать куда сохранять скриншоты (Только для Windows) - + Screenshots Path: Папка для скриншотов: - + ... ... - + TextLabel TextLabel - + Resolution: Разрешение: - + Select Screenshots Path... Выберите папку для скриншотов... - + <System> <System> - + English English - + Auto (%1 x %2, %3 x %4) Screenshot width value Авто (%1 x %2, %3 x %4) @@ -5260,170 +5727,178 @@ Drag points to change position, or double-click table cells to edit values.Web Сеть - - yuzu Web Service - Веб-сервис yuzu - - - By providing your username and token, you agree to allow yuzu to collect additional usage data, which may include user identifying information. - Предоставляя свое имя пользователя и токен, вы соглашаетесь разрешить yuzu собирать дополнительные данные об использовании, которые могут включать информацию, идентифицирующую пользователя. - - eden Web Service - + Eden Web Service + Веб-сервис Eden - - By providing your username and token, you agree to allow eden to collect additional usage data, which may include user identifying information. - - - - - Verify - Подтвердить - - - - Sign up - Регистрация - - - + Token: Токен: - + Username: Имя пользователя: - - What is my token? - Что такое токен и где его найти? + + Generate + Создать - + Web Service configuration can only be changed when a public room isn't being hosted. Настройки веб-службы могут быть изменены только в том случае, когда не хостится публичная комната. - Telemetry - Телеметрия - - - Share anonymous usage data with the yuzu team - Делиться анонимной информацией об использовании с командой yuzu - - - Learn more - Узнать больше - - - Telemetry ID: - ID телеметрии: - - - Regenerate - Перегенерировать - - - + Discord Presence Discord Presence - + Show Current Game in your Discord Status Показывать текущую игру в вашем статусе Discord - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Узнать больше</span></a> - - - - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Регистрация</span></a> - - - - <a href='https://evilperson1337.notion.site/Hosting-a-Room-Inside-of-Eden-20457c2edaf680108abac6215a79acdb'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - - - - - Warning - - - + - Verification is currently nonfunctional, instead generate a random 48-character string with only lowercase a-z. - - - - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">Что такое токен и где его найти?</span></a> - - - Telemetry ID: 0x%1 - ID телеметрии: 0x%1 - - - Unspecified - Отсутствует - - - Token not verified - Токен не подтвержден - - - Token was not verified. The change to your token has not been saved. - Токен не был подтвержден. Изменение вашего токена не было сохранено. - - - - Unverified, please click Verify before saving configuration + All Good Tooltip - Не подтверждено, пожалуйста нажмите кнопку Подтвердить прежде чем сохранять конфигурацию. + Все хорошо - Verifying... - Подтверждение... - - - Verified + + Must be between 4-20 characters Tooltip - Потверждён + 4-20 символов - Verification failed + + Must be 48 characters, and lowercase a-z Tooltip - Ошибка подтверждения - - - Verification failed - Ошибка подтверждения - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - Ошибка подтверждения. Убедитесь, что вы правильно ввели свой токен и что ваше подключение к Интернету работает. + Должно быть 48 символов и содержать только строчные буквы a-z ControllerDialog - + Controller P1 Контроллер P1 - + &Controller P1 [&C] Контроллер P1 + + DataDialog + + + Data Manager + Управление данными + + + + Deleting ANY data is IRREVERSABLE! + Удаление ЛЮБЫХ данных НЕВОЗВРАТИМО! + + + + Shaders + Шейдеры + + + + UserNAND + UserNAND + + + + SysNAND + SysNAND + + + + Mods + Моды + + + + Saves + Сохранения + + + + DataWidget + + + Form + Форма + + + + Tooltip + Подсказка + + + + Open with your system file manager + Открывает с вашим системным менеджером файлов + + + + Delete all data in this directory. THIS IS 100% IRREVERSABLE! + Удаляет все данные из этого каталога. ЭТО 100% НЕВОЗВРАТИМО! + + + + Export all data in this directory. This may take a while! + Экспортирует все данные из этого каталога. Это может занять некоторое время! + + + + Import data for this directory. This may take a while, and will delete ALL EXISTING DATA! + Импортирует данные для этого каталога. Это может занять некоторое время и приведет к удалению ВСЕХ СУЩЕСТВУЮЩИХ ДАННЫХ! + + + + Calculating... + Подсчитываем... + + + + DepsDialog + + + Eden Dependencies + Зависимости Eden + + + + <html><head/><body><p><span style=" font-size:28pt;">Eden Dependencies</span></p></body></html> + <html><head/><body><p><span style=" font-size:28pt;">Зависимости Eden</span></p></body></html> + + + + <html><head/><body><p>The projects that make Eden possible</p></body></html> + <html><head/><body><p>Проекты, которые сделали Eden возможным</p></body></html> + + + + Dependency + Зависимость + + + + Version + Версия + + DirectConnect @@ -5485,1527 +5960,154 @@ Drag points to change position, or double-click table cells to edit values. Username is not valid. Must be 4 to 20 alphanumeric characters. - Имя пользователя недействительно. Должно быть от 4 до 20 буквенно-цифровых символов. + Имя пользователя недопустимо. Должно быть от 4 до 20 буквенно-цифровых символов. Room name is not valid. Must be 4 to 20 alphanumeric characters. - Название комнаты недействительно. Должно быть от 4 до 20 буквенно-цифровых символов. + Название комнаты недопустимо. Должно быть от 4 до 20 буквенно-цифровых символов. Username is already in use or not valid. Please choose another. - Имя пользователя уже используется или недействительно. Пожалуйста, выберите другое. + Имя пользователя уже используется или недействительно. Пожалуйста, выберите другое. IP is not a valid IPv4 address. - IP не является действительным адресом IPv4. + IP не является действительным адресом IPv4. Port must be a number between 0 to 65535. - Порт должен быть числом от 0 до 65535. + Порт должен быть числом от 0 до 65535. You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - Вы должны выбрать предпочтительную игру, чтобы хостить комнату. Если в вашем списке игр еще нет ни одной игры, добавьте папку с игрой, нажав на значок плюса в списке игр. + Вы должны выбрать предпочтительную игру, чтобы хостить комнату. Если в вашем списке игр еще нет ни одной игры, добавьте папку с игрой, нажав на значок плюса в списке игр. Unable to find an internet connection. Check your internet settings. - Невозможно найти подключение к Интернету. Проверьте настройки интернета. + Невозможно найти подключение к Интернету. Проверьте настройки интернета. Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - Невозможно подключиться к хосту. Проверьте правильность настроек подключения. Если подключение по-прежнему невозможно, свяжитесь с хостом комнаты и убедитесь, что хост правильно настроен с проброшенным внешним портом. + Невозможно подключиться к хосту. Проверьте правильность настроек подключения. Если подключение по-прежнему невозможно, свяжитесь с хостом комнаты и убедитесь, что хост правильно настроен с проброшенным внешним портом. Unable to connect to the room because it is already full. - Невозможно подключиться к комнате, так как она уже заполнена. + Невозможно подключиться к комнате, так как она уже заполнена. - Creating a room failed. Please retry. Restarting eden might be necessary. - + Creating a room failed. Please retry. Restarting Eden might be necessary. + Не удалось создать комнату. Пожалуйста, повторите попытку. Возможно, потребуется перезапустить Eden. The host of the room has banned you. Speak with the host to unban you or try a different room. - Хост комнаты забанил вас. Поговорите с хостом, чтобы он разбанил вас, или попробуйте другую комнату. + Хост комнаты забанил вас. Поговорите с хостом, чтобы он разбанил вас, или попробуйте другую комнату. - Version mismatch! Please update to the latest version of eden. If the problem persists, contact the room host and ask them to update the server. - + Version mismatch! Please update to the latest version of Eden. If the problem persists, contact the room host and ask them to update the server. + Несоответствие версий! Пожалуйста, обновите Eden до последней версии. Если проблема не устранена, обратитесь к администратору помещения и попросите их обновить сервер. Incorrect password. - Неверный пароль. + Неверный пароль. An unknown error occurred. If this error continues to occur, please open an issue - Произошла неизвестная ошибка. Если эта ошибка продолжает возникать, пожалуйста, откройте проблему + Произошла неизвестная ошибка. Если эта ошибка продолжает возникать, пожалуйста, откройте проблему Connection to room lost. Try to reconnect. - Соединение с комнатой потеряно. Попробуйте подключиться снова. + Соединение с комнатой потеряно. Попробуйте подключиться снова. You have been kicked by the room host. - Вы были выгнаны хостом комнаты. + Вы были выгнаны хостом комнаты. IP address is already in use. Please choose another. - IP-адрес уже используется. Пожалуйста, выберите другой. + IP-адрес уже используется. Пожалуйста, выберите другой. You do not have enough permission to perform this action. - У вас нет достаточных разрешений для выполнения этого действия. + У вас нет достаточных разрешений для выполнения этого действия. The user you are trying to kick/ban could not be found. They may have left the room. - Пользователь, которого вы пытаетесь выгнать/забанить, не найден. + Пользователь, которого вы пытаетесь выгнать/забанить, не найден. Возможно, они покинули комнату. No valid network interface is selected. Please go to Configure -> System -> Network and make a selection. - Не выбран допустимый интерфейс сети. + Не выбран допустимый интерфейс сети. Пожалуйста, перейдите в Параметры -> Система -> Сеть и сделайте выбор. Error - Ошибка - - - - GMainWindow - - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Anonymous data is collected</a> to help improve yuzu. <br/><br/>Would you like to share your usage data with us? - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Анонимные данные собираются для того,</a> чтобы помочь улучшить работу yuzu. <br/><br/>Хотели бы вы делиться данными об использовании с нами? - - - Telemetry - Телеметрия - - - - Broken Vulkan Installation Detected - Обнаружена поврежденная установка Vulkan - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - Не удалось выполнить инициализацию Vulkan во время загрузки.<br><br>Нажмите <a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>здесь для получения инструкций по устранению проблемы</a>. - - - - Running a game - TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping - Запущена игра - - - - Loading Web Applet... - Загрузка веб-апплета... - - - - - Disable Web Applet - Отключить веб-апплет - - - - 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.) - Отключение веб-апплета может привести к неожиданному поведению и должно использоваться только с Super Mario 3D All-Stars. Вы уверены, что хотите отключить веб-апплет? -(Его можно снова включить в настройках отладки.) - - - - The amount of shaders currently being built - Количество создаваемых шейдеров на данный момент - - - - The current selected resolution scaling multiplier. - Текущий выбранный множитель масштабирования разрешения. - - - - Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. - Текущая скорость эмуляции. Значения выше или ниже 100% указывают на то, что эмуляция идет быстрее или медленнее, чем на Switch. - - - - How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. - Количество кадров в секунду в данный момент. Значение будет меняться между играми и сценами. - - - - 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. - Время, которое нужно для эмуляции 1 кадра Switch, не принимая во внимание ограничение FPS или вертикальную синхронизацию. Для эмуляции в полной скорости значение должно быть не больше 16,67 мс. - - - - Unmute - Включить звук - - - - Mute - Выключить звук - - - - Reset Volume - Сбросить громкость - - - - &Clear Recent Files - [&C] Очистить недавние файлы - - - - &Continue - [&C] Продолжить - - - - &Pause - [&P] Пауза - - - - Warning Outdated Game Format - Предупреждение устаревший формат игры - - - 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.<br><br>For an explanation of the various Switch formats yuzu supports, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - Для этой игры вы используете разархивированный формат ROM'а, который является устаревшим и был заменен другими, такими как NCA, NAX, XCI или NSP. В разархивированных каталогах ROM'а отсутствуют иконки, метаданные и поддержка обновлений. <br><br>Для получения информации о различных форматах Switch, поддерживаемых yuzu, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>просмотрите нашу вики</a>. Это сообщение больше не будет отображаться. - - - - - Error while loading ROM! - Ошибка при загрузке ROM'а! - - - - The ROM format is not supported. - Формат ROM'а не поддерживается. - - - - An error occurred initializing the video core. - Произошла ошибка при инициализации видеоядра. - - - 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: <a href='https://yuzu-emu.org/help/reference/log-files/'>How to Upload the Log File</a>. - yuzu столкнулся с ошибкой при запуске видеоядра. Обычно это вызвано устаревшими драйверами ГП, включая интегрированные. Проверьте журнал для получения более подробной информации. Дополнительную информацию о доступе к журналу смотрите на следующей странице: <a href='https://yuzu-emu.org/help/reference/log-files/'>Как загрузить файл журнала</a>. - - - - Error while loading ROM! %1 - %1 signifies a numeric error code. - Ошибка при загрузке ROM'а! %1 - - - %1<br>Please follow <a href='https://yuzu-emu.org/help/quickstart/'>the yuzu quickstart guide</a> to redump your files.<br>You can refer to the yuzu wiki</a> or the yuzu Discord</a> for help. - %1 signifies an error string. - %1<br>Пожалуйста, следуйте <a href='https://yuzu-emu.org/help/quickstart/'>краткому руководству пользователя yuzu</a> чтобы пере-дампить ваши файлы<br>Вы можете обратиться к вики yuzu</a> или Discord yuzu</a> для помощи. - - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://eden-emulator.github.io/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - - - - - Game Updates Warning - - - - - The game you are trying to launch is known to have performance or booting issues when updates are applied. Please try increasing the memory layout to 6GB or 8GB if any issues occur.<br><br>Press "OK" to continue launching, or "Cancel" to cancel the launch. - - - - - Don't show again for this game - - - - - 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.<br><br>For an explanation of the various Switch formats eden supports, <a href='https://eden-emulator.github.io/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - - - - - eden 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: <a href='https://eden-emulator.github.io/help/reference/log-files/'>How to Upload the Log File</a>. - - - - - %1<br>Please redump your files or ask on Discord for help. - %1 signifies an error string. - - - - - An unknown error occurred. Please see the log for more details. - Произошла неизвестная ошибка. Пожалуйста, проверьте журнал для подробностей. - - - - (64-bit) - (64-х битный) - - - - (32-bit) - (32-х битный) - - - - %1 %2 - %1 is the title name. %2 indicates if the title is 64-bit or 32-bit - %1 %2 - - - - Closing software... - Закрываем программу... - - - - Save Data - Сохранения - - - - Mod Data - Данные модов - - - - Error Opening %1 Folder - Ошибка при открытии папки %1 - - - - - Folder does not exist! - Папка не существует! - - - - Error Opening Transferable Shader Cache - Ошибка при открытии переносного кэша шейдеров - - - - Failed to create the shader cache directory for this title. - Не удалось создать папку кэша шейдеров для этой игры. - - - - Error Removing Contents - Ошибка при удалении содержимого - - - - Error Removing Update - Ошибка при удалении обновлений - - - - Error Removing DLC - Ошибка при удалении DLC - - - - Remove Installed Game Contents? - Удалить установленное содержимое игр? - - - - Remove Installed Game Update? - Удалить установленные обновления игры? - - - - Remove Installed Game DLC? - Удалить установленные DLC игры? - - - - Remove Entry - Удалить запись - - - - - - - - - Successfully Removed - Успешно удалено - - - - Successfully removed the installed base game. - Установленная игра успешно удалена. - - - - The base game is not installed in the NAND and cannot be removed. - Игра не установлена в NAND и не может быть удалена. - - - - Successfully removed the installed update. - Установленное обновление успешно удалено. - - - - There is no update installed for this title. - Для этой игры не было установлено обновление. - - - - There are no DLC installed for this title. - Для этой игры не были установлены DLC. - - - - Successfully removed %1 installed DLC. - Установленное DLC %1 было успешно удалено - - - - Delete OpenGL Transferable Shader Cache? - Удалить переносной кэш шейдеров OpenGL? - - - - Delete Vulkan Transferable Shader Cache? - Удалить переносной кэш шейдеров Vulkan? - - - - Delete All Transferable Shader Caches? - Удалить весь переносной кэш шейдеров? - - - - Remove Custom Game Configuration? - Удалить пользовательскую настройку игры? - - - - Remove Cache Storage? - Удалить кэш-хранилище? - - - - Remove File - Удалить файл - - - - Remove Play Time Data - Удалить данные о времени игры - - - - Reset play time? - Сбросить время игры? - - - - - Error Removing Transferable Shader Cache - Ошибка при удалении переносного кэша шейдеров - - - - - A shader cache for this title does not exist. - Кэш шейдеров для этой игры не существует. - - - - Successfully removed the transferable shader cache. - Переносной кэш шейдеров успешно удалён. - - - - Failed to remove the transferable shader cache. - Не удалось удалить переносной кэш шейдеров. - - - - Error Removing Vulkan Driver Pipeline Cache - Ошибка при удалении конвейерного кэша Vulkan - - - - Failed to remove the driver pipeline cache. - Не удалось удалить конвейерный кэш шейдеров. - - - - - Error Removing Transferable Shader Caches - Ошибка при удалении переносного кэша шейдеров - - - - Successfully removed the transferable shader caches. - Переносной кэш шейдеров успешно удален. - - - - Failed to remove the transferable shader cache directory. - Ошибка при удалении папки переносного кэша шейдеров. - - - - - Error Removing Custom Configuration - Ошибка при удалении пользовательской настройки - - - - A custom configuration for this title does not exist. - Пользовательская настройка для этой игры не существует. - - - - Successfully removed the custom game configuration. - Пользовательская настройка игры успешно удалена. - - - - Failed to remove the custom game configuration. - Не удалось удалить пользовательскую настройку игры. - - - - - RomFS Extraction Failed! - Не удалось извлечь RomFS! - - - - There was an error copying the RomFS files or the user cancelled the operation. - Произошла ошибка при копировании файлов RomFS или пользователь отменил операцию. - - - - Full - Полный - - - - Skeleton - Скелет - - - - Select RomFS Dump Mode - Выберите режим дампа RomFS - - - - Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. - Пожалуйста, выберите, как вы хотите выполнить дамп RomFS. <br>Полный скопирует все файлы в новую папку, в то время как <br>скелет создаст только структуру папок. - - - - There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root - В %1 недостаточно свободного места для извлечения RomFS. Пожалуйста, освободите место или выберите другую папку для дампа в Эмуляция > Настройка > Система > Файловая система > Корень дампа - - - - Extracting RomFS... - Извлечение RomFS... - - - - - - - - Cancel - Отмена - - - - RomFS Extraction Succeeded! - Извлечение RomFS прошло успешно! - - - - - - The operation completed successfully. - Операция выполнена. - - - - Integrity verification couldn't be performed! - Проверка целостности не может быть выполнена! - - - - File contents were not checked for validity. - Файл не проверялся на корректность. - - - - - Verifying integrity... - Проверка целостности... - - - - - Integrity verification succeeded! - Проверка целостности прошла успешно! - - - - - Integrity verification failed! - Проверка целостности не удалась! - - - - File contents may be corrupt. - Файл может быть поврежден. - - - - - - - Create Shortcut - Создать ярлык - - - - Do you want to launch the game in fullscreen? - Вы хотите запустить игру в полноэкранном режиме? - - - - Successfully created a shortcut to %1 - Успешно создан ярлык в %1 - - - - This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - Это создаст ярлык для текущего AppImage. Он может не работать после обновлений. Продолжить? - - - - Failed to create a shortcut to %1 - Не удалось создать ярлык для %1 - - - - Create Icon - Создать иконку - - - - Cannot create icon file. Path "%1" does not exist and cannot be created. - Невозможно создать файл иконки. Путь "%1" не существует и не может быть создан. - - - - Error Opening %1 - Ошибка открытия %1 - - - - Select Directory - Выбрать папку - - - - Properties - Свойства - - - - The game properties could not be loaded. - Не удалось загрузить свойства игры. - - - - Switch Executable (%1);;All Files (*.*) - %1 is an identifier for the Switch executable file extensions. - Исполняемый файл Switch (%1);;Все файлы (*.*) - - - - Load File - Загрузить файл - - - - Open Extracted ROM Directory - Открыть папку извлечённого ROM'а - - - - Invalid Directory Selected - Выбрана недопустимая папка - - - - The directory you have selected does not contain a 'main' file. - Папка, которую вы выбрали, не содержит файла 'main'. - - - - Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - Устанавливаемый файл Switch (*.nca, *.nsp, *.xci);;Архив контента Nintendo (*.nca);;Пакет подачи Nintendo (*.nsp);;Образ картриджа NX (*.xci) - - - - Install Files - Установить файлы - - - - %n file(s) remaining - - Остался %n файл - Осталось %n файл(ов) - Осталось %n файл(ов) - - - - - Installing file "%1"... - Установка файла "%1"... - - - - - Install Results - Результаты установки - - - - To avoid possible conflicts, we discourage users from installing base games to the NAND. -Please, only use this feature to install updates and DLC. - Чтобы избежать возможных конфликтов, мы не рекомендуем пользователям устанавливать игры в NAND. -Пожалуйста, используйте эту функцию только для установки обновлений и DLC. - - - - %n file(s) were newly installed - - - %n файл был недавно установлен - - %n файл(ов) было недавно установлено - - %n файл(ов) было недавно установлено - - - - - - %n file(s) were overwritten - - - %n файл был перезаписан - - %n файл(ов) было перезаписано - - %n файл(ов) было перезаписано - - - - - - %n file(s) failed to install - - - %n файл не удалось установить - - %n файл(ов) не удалось установить - - %n файл(ов) не удалось установить - - - - - - System Application - Системное приложение - - - - System Archive - Системный архив - - - - System Application Update - Обновление системного приложения - - - - Firmware Package (Type A) - Пакет прошивки (Тип А) - - - - Firmware Package (Type B) - Пакет прошивки (Тип Б) - - - - Game - Игра - - - - Game Update - Обновление игры - - - - Game DLC - DLC игры - - - - Delta Title - Дельта-титул - - - - Select NCA Install Type... - Выберите тип установки NCA... - - - - Please select the type of title you would like to install this NCA as: -(In most instances, the default 'Game' is fine.) - Пожалуйста, выберите тип приложения, который вы хотите установить для этого NCA: - (В большинстве случаев, подходит стандартный выбор «Игра».) - - - - Failed to Install - Ошибка установки - - - - The title type you selected for the NCA is invalid. - Тип приложения, который вы выбрали для NCA, недействителен. - - - - File not found - Файл не найден - - - - File "%1" not found - Файл "%1" не найден - - - - OK - ОК - - - - - Hardware requirements not met - Не удовлетворены системные требования - - - - - Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled. - Ваша система не соответствует рекомендуемым системным требованиям. Отчеты о совместимости были отключены. - - - - Missing yuzu Account - Отсутствует аккаунт yuzu - - - - In order to submit a game compatibility test case, you must link your eden account.<br><br/>To link your eden account, go to Emulation &gt; Configuration &gt; Web. - - - - - Install decryption keys and restart eden before attempting to install firmware. - - - - - Firmware installation cancelled, firmware may be in bad state, restart eden or re-install firmware. - - - - - Encryption keys are missing. - - - - - Are you sure you want to close eden? - - - - - - - eden - - - - - The currently running application has requested eden to not exit. - -Would you like to bypass this and exit anyway? - - - - In order to submit a game compatibility test case, you must link your yuzu account.<br><br/>To link your yuzu account, go to Emulation &gt; Configuration &gt; Web. - Чтобы отправить отчет о совместимости игры, необходимо привязать свою учетную запись yuzu.<br><br/>Чтобы привязать свою учетную запись yuzu, перейдите в раздел Эмуляция &gt; Параметры &gt; Сеть. - - - - Error opening URL - Ошибка при открытии URL - - - - Unable to open the URL "%1". - Не удалось открыть URL: "%1". - - - - TAS Recording - Запись TAS - - - - Overwrite file of player 1? - Перезаписать файл игрока 1? - - - - Invalid config detected - Обнаружена недопустимая конфигурация - - - - Handheld controller can't be used on docked mode. Pro controller will be selected. - Портативный контроллер не может быть использован в режиме док-станции. Будет выбран контроллер Pro. - - - - - Amiibo - Amiibo - - - - - The current amiibo has been removed - Текущий amiibo был убран - - - - Error Ошибка - - - - The current game is not looking for amiibos - Текущая игра не ищет amiibo - - - - Amiibo File (%1);; All Files (*.*) - Файл Amiibo (%1);; Все Файлы (*.*) - - - - Load Amiibo - Загрузить Amiibo - - - - Error loading Amiibo data - Ошибка загрузки данных Amiibo - - - - The selected file is not a valid amiibo - Выбранный файл не является допустимым amiibo - - - - The selected file is already on use - Выбранный файл уже используется - - - - An unknown error occurred - Произошла неизвестная ошибка - - - - - Verification failed for the following files: - -%1 - Проверка не удалась для следующих файлов: - -%1 - - - - Keys not installed - Ключи не установлены - - - Install decryption keys and restart yuzu before attempting to install firmware. - Установите ключи дешифрования и перезапустите yuzu перед попыткой установки прошивки. - - - - Select Dumped Firmware Source Location - Выберите местоположение прошивки. - - - - Installing Firmware... - Установка прошивки... - - - - - - - Firmware install failed - Не удалось установить прошивку - - - - Unable to locate potential firmware NCA files - Не удалось найти возможные NCA файлы прошивки . - - - - Failed to delete one or more firmware file. - Не удалось удалить один или несколько файлов прошивки. - - - Firmware installation cancelled, firmware may be in bad state, restart yuzu or re-install firmware. - Установка прошивки отменена, прошивка может быть в плохом состоянии, перезапустите yuzu или переустановите прошивку. - - - - One or more firmware files failed to copy into NAND. - Один или несколько файлов прошивки не удалось скопировать в NAND. - - - - Firmware integrity verification failed! - Сбой проверки целостности прошивки! - - - - Select Dumped Keys Location - Выберите местоположение сохранения ключей. - - - - - - Decryption Keys install failed - Ошибка установки ключей дешифровки - - - - prod.keys is a required decryption key file. - prod.keys - это обязательный файл ключа для дешифровки. - - - - One or more keys failed to copy. - Один или несколько ключей не удалось скопировать. - - - - Decryption Keys install succeeded - Установка ключей дешифровки прошла успешно. - - - - Decryption Keys were successfully installed - Установка ключей для дешифровки прошла успешно. - - - - Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. - Ошибка инициализации ключей дешифровки. Проверьте, что ваши инструменты для дампа обновлены и повторно выполните дамп ключей. - - - - - - - - - - No firmware available - Нет доступной прошивки - - - - Please install the firmware to use the Album applet. - Пожалуйста, установите прошивку, чтобы использовать приложение Альбом. - - - - Album Applet - Апплет Альбом - - - - Album applet is not available. Please reinstall firmware. - Апплет Альбом недоступен. Пожалуйста, переустановите прошивку. - - - - Please install the firmware to use the Cabinet applet. - Пожалуйста, установите прошивку, чтобы использовать приложение Кабинет. - - - - Cabinet Applet - Кабинет - - - - Cabinet applet is not available. Please reinstall firmware. - Приложение Кабинет недоступно. Пожалуйста, переустановите прошивку. - - - - Please install the firmware to use the Mii editor. - Пожалуйста, установите прошивку, чтобы использовать редактор Mii. - - - - Mii Edit Applet - Mii Edit Applet - - - - Mii editor is not available. Please reinstall firmware. - Mii редактор недоступен. Пожалуйста, переустановите прошивку. - - - - Please install the firmware to use the Controller Menu. - Пожалуйста, установите прошивку, чтобы использовать меню контроллера. - - - - Controller Applet - Апплет контроллера - - - - Controller Menu is not available. Please reinstall firmware. - Меню контроллера недоступно. Пожалуйста, переустановите прошивку. - - - - Please install the firmware to use the Home Menu. - - - - - - Home Menu Applet - - - - - - Home Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use Starter. - - - - - Starter Applet - - - - - Starter is not available. Please reinstall firmware. - - - - - Please install firmware to use the home menu. - - - - - Capture Screenshot - Сделать скриншот - - - - PNG Image (*.png) - Изображение PNG (*.png) - - - - Update Available - - - - - Update %1 for Eden is available. -Would you like to download it? - - - - - TAS state: Running %1/%2 - Состояние TAS: Выполняется %1/%2 - - - - TAS state: Recording %1 - Состояние TAS: Записывается %1 - - - - TAS state: Idle %1/%2 - Состояние TAS: Простой %1/%2 - - - - TAS State: Invalid - Состояние TAS: Неверное - - - - &Stop Running - [&S] Остановка - - - - &Start - [&S] Начать - - - - Stop R&ecording - [&E] Закончить запись - - - - R&ecord - [&E] Запись - - - - Building: %n shader(s) - - Постройка: %n шейдер - Постройка: %n шейдер(ов) - Постройка: %n шейдер(ов) - - - - - Scale: %1x - %1 is the resolution scaling factor - Масштаб: %1x - - - - Speed: %1% / %2% - Скорость: %1% / %2% - - - - Speed: %1% - Скорость: %1% - - - Game: %1 FPS (Unlocked) - Игра: %1 FPS (Неограниченно) - - - - Game: %1 FPS - Игра: %1 FPS - - - - Frame: %1 ms - Кадр: %1 мс - - - - %1 %2 - %1 %2 - - - - - FSR - FSR - - - - NO AA - БЕЗ СГЛАЖИВАНИЯ - - - - VOLUME: MUTE - ГРОМКОСТЬ: ЗАГЛУШЕНА - - - - VOLUME: %1% - Volume percentage (e.g. 50%) - ГРОМКОСТЬ: %1% - - - - Derivation Components Missing - Компоненты расчета отсутствуют - - - Encryption keys are missing. <br>Please follow <a href='https://yuzu-emu.org/help/quickstart/'>the yuzu quickstart guide</a> to get all your keys, firmware and games. - Ключи шифрования отсутствуют. <br>Пожалуйста, следуйте <a href='https://yuzu-emu.org/help/quickstart/'>краткому руководству пользователя yuzu</a>, чтобы получить все ваши ключи, прошивку и игры. - - - - Select RomFS Dump Target - Выберите цель для дампа RomFS - - - - Please select which RomFS you would like to dump. - Пожалуйста, выберите, какой RomFS вы хотите сдампить. - - - Are you sure you want to close yuzu? - Вы уверены, что хотите закрыть yuzu? - - - yuzu - yuzu - - - - Are you sure you want to stop the emulation? Any unsaved progress will be lost. - Вы уверены, что хотите остановить эмуляцию? Любой несохраненный прогресс будет потерян. - - - The currently running application has requested yuzu to not exit. - -Would you like to bypass this and exit anyway? - Запущенное в настоящий момент приложение просит yuzu не завершать работу. - -Хотите ли вы обойти это и выйти в любом случае? - - - - None - Никакой - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Nearest - Ближайший - - - - Bilinear - Билинейный - - - - Bicubic - Бикубический - - - - Gaussian - Гаусс - - - - ScaleForce - ScaleForce - - - - Area - - - - - Docked - В док-станции - - - - Handheld - Портативный - - - - Normal - Нормальная - - - - High - Высокая - - - - Extreme - Экстрим - - - - Vulkan - Vulkan - - - - OpenGL - OpenGL - - - - Null - Null - - - - GLSL - GLSL - - - - GLASM - GLASM - - - - SPIRV - SPIRV - GRenderWindow - - + + OpenGL not available! OpenGL не доступен! - + OpenGL shared contexts are not supported. Общие контексты OpenGL не поддерживаются. - yuzu has not been compiled with OpenGL support. - yuzu не был скомпилирован с поддержкой OpenGL. + + Eden has not been compiled with OpenGL support. + Eden не был скомпилирован с поддержкой OpenGL. - - eden has not been compiled with OpenGL support. - - - - - + + Error while initializing OpenGL! Ошибка при инициализации OpenGL! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. Ваш ГП может не поддерживать OpenGL, или у вас установлен устаревший графический драйвер. - + Error while initializing OpenGL 4.6! Ошибка при инициализации OpenGL 4.6! - + Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 Ваш ГП может не поддерживать OpenGL 4.6, или у вас установлен устаревший графический драйвер.<br><br>Рендерер GL:<br>%1 - + Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2 Ваш ГП может не поддерживать одно или несколько требуемых расширений OpenGL. Пожалуйста, убедитесь в том, что у вас установлен последний графический драйвер.<br><br>Рендерер GL:<br>%1<br><br>Неподдерживаемые расширения:<br>%2 @@ -7013,192 +6115,208 @@ Would you like to bypass this and exit anyway? GameList - + + &Add New Game Directory + &Добавить новую директорию игр + + + Favorite Избранное - + Start Game Запустить игру - + Start Game without Custom Configuration Запустить игру без пользовательской настройки - + Open Save Data Location Открыть папку для сохранений - + Open Mod Data Location Открыть папку для модов - + Open Transferable Pipeline Cache Открыть переносной кэш конвейера - + + Link to Ryujinx + Ссылка на Ryujinx + + + Remove Удалить - + Remove Installed Update Удалить установленное обновление - + Remove All Installed DLC Удалить все установленные DLC - + Remove Custom Configuration Удалить пользовательскую настройку - - Remove Play Time Data - Удалить данные о времени игры - - - + Remove Cache Storage Удалить кэш-хранилище? - + Remove OpenGL Pipeline Cache Удалить кэш конвейера OpenGL - + Remove Vulkan Pipeline Cache Удалить кэш конвейера Vulkan - + Remove All Pipeline Caches Удалить весь кэш конвейеров - + Remove All Installed Contents Удалить все установленное содержимое - - + + Manage Play Time + Manage Play Time + + + + Edit Play Time Data + Изменить дату Игрового времени + + + + Remove Play Time Data + Удалить данные о времени игры + + + + Dump RomFS Дамп RomFS - + Dump RomFS to SDMC Сдампить RomFS в SDMC - + Verify Integrity Проверить целостность - + Copy Title ID to Clipboard Скопировать ID приложения в буфер обмена - + Navigate to GameDB entry Перейти к странице GameDB - + Create Shortcut Создать ярлык - + Add to Desktop Добавить на Рабочий стол - + Add to Applications Menu Добавить в меню приложений - + Configure Game - + Настроить игру - Properties - Свойства - - - + Scan Subfolders Сканировать подпапки - + Remove Game Directory Удалить папку с играми - + ▲ Move Up ▲ Переместить вверх - + ▼ Move Down ▼ Переместить вниз - + Open Directory Location Открыть расположение папки - + Clear Очистить - + Name Имя - + Compatibility Совместимость - + Add-ons Дополнения - + File type Тип файла - + Size Размер - + Play time Время игры @@ -7206,62 +6324,62 @@ Would you like to bypass this and exit anyway? GameListItemCompat - + Ingame Запускается - + Game starts, but crashes or major glitches prevent it from being completed. Игра запускается, но вылеты или серьезные баги не позволяют ее завершить. - + Perfect Идеально - + Game can be played without issues. В игру можно играть без проблем. - + Playable Играбельно - + Game functions with minor graphical or audio glitches and is playable from start to finish. Игра работает с незначительными графическими и/или звуковыми ошибками и проходима от начала до конца. - + Intro/Menu Вступление/Меню - + Game loads, but is unable to progress past the Start Screen. Игра загружается, но не проходит дальше стартового экрана. - + Won't Boot Не запускается - + The game crashes when attempting to startup. Игра вылетает при запуске. - + Not Tested Не проверено - + The game has not yet been tested. Игру ещё не проверяли на совместимость. @@ -7269,7 +6387,7 @@ Would you like to bypass this and exit anyway? GameListPlaceholder - + Double-click to add a new folder to the game list Нажмите дважды, чтобы добавить новую папку в список игр @@ -7277,21 +6395,17 @@ Would you like to bypass this and exit anyway? GameListSearchField - + %1 of %n result(s) - - %1 из %n результат(ов) - %1 из %n результат(ов) - %1 из %n результат(ов) - + %1 из %n результат(ов)%1 из %n результат(ов)%1 из %n результат(ов)%1 из %n результат(ов) - + Filter: Поиск: - + Enter pattern to filter Введите текст для поиска @@ -7367,233 +6481,242 @@ Would you like to bypass this and exit anyway? HostRoomWindow - + Error Ошибка - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. + + Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid Eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. Debug Message: - - - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid yuzu account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. -Debug Message: - Не удалось объявить комнату в публичном лобби. Чтобы хостить публичную комнату, у вас должна быть действующая учетная запись yuzu, настроенная в Эмуляция -> Параметры -> Сеть. Если вы не хотите объявлять комнату в публичном лобби, выберите вместо этого скрытый тип. -Сообщение отладки: + Не удалось объявить комнату в общедоступном лобби. Чтобы разместить комнату в открытом доступе, у вас должна быть действительная учетная запись Eden, настроенная в Эмуляция -> Настройка -> Веб. Если вы не хотите публиковать номер в общедоступном лобби, выберите "Не размещать". +Сообщение об отладке: Hotkeys - + Audio Mute/Unmute Включение/отключение звука - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Main Window Основное окно - + Audio Volume Down Уменьшить громкость звука - + Audio Volume Up Повысить громкость звука - + Capture Screenshot Сделать скриншот - + Change Adapting Filter Изменить адаптирующий фильтр - + Change Docked Mode Изменить режим консоли - - Change GPU Accuracy - Изменить точность ГП + + Change GPU Mode + Изменить режим ГП - + Configure - Настроить + Настроить - + Configure Current Game - + Настроить текущую игру - + Continue/Pause Emulation Продолжение/Пауза эмуляции - + Exit Fullscreen Выйти из полноэкранного режима - Exit yuzu - Выйти из yuzu + + Exit Eden + Выйти из Eden - - Exit eden - - - - + Fullscreen Полный экран - + Load File Загрузить файл - + Load/Remove Amiibo Загрузить/удалить Amiibo - - Multiplayer Browse Public Game Lobby - Мультиплеер - просмотр общего игрового лобби + + Browse Public Game Lobby + Просмотреть публичные игровые лобби - - Multiplayer Create Room - Мультиплеер - создать лобби + + Create Room + Создать комнату - - Multiplayer Direct Connect to Room - Мультилеер - прямое подключение к комнате + + Direct Connect to Room + Прямое подключение к комнате - - Multiplayer Leave Room - Мультиплеер - покинуть лобби + + Leave Room + Покинуть комнату - - Multiplayer Show Current Room - Мультиплеер - показать текущую комнату + + Show Current Room + Показать текущую комнату - + Restart Emulation Перезапустить эмуляцию - + Stop Emulation Остановить эмуляцию - + TAS Record Запись TAS - + TAS Reset Сброс TAS - + TAS Start/Stop Старт/Стоп TAS - + Toggle Filter Bar Переключить панель поиска - + Toggle Framerate Limit Переключить ограничение частоты кадров - + + Toggle Turbo Speed + Турбо-режим + + + + Toggle Slow Speed + Медленный режим + + + Toggle Mouse Panning Переключить панорамирование мыши - + Toggle Renderdoc Capture Переключить захват Renderdoc - + Toggle Status Bar Переключить панель состояния + + + Toggle Performance Overlay + Оверлей производительности + InstallDialog - + Please confirm these are the files you wish to install. Пожалуйста, убедитесь что это те файлы, что вы хотите установить. - + Installing an Update or DLC will overwrite the previously installed one. Установка обновления или DLC перезапишет ранее установленное. - + Install Установить - + Install Files to NAND Установить файлы в NAND @@ -7601,8 +6724,8 @@ Debug Message: LimitableInputDialog - - The text can't contain any of the following characters: + + The text can't contain any of the following characters: %1 В тексте недопустимы следующие символы: %1 @@ -7626,22 +6749,22 @@ Debug Message: Примерное время 5м 4с - + Loading... Загрузка... - + Loading Shaders %1 / %2 Загрузка шейдеров %1 / %2 - + Launching... Запуск... - + Estimated Time %1 Осталось примерно %1 @@ -7690,42 +6813,42 @@ Debug Message: Обновить лобби - + Password Required to Join Для входа необходим пароль - + Password: Пароль: - + Players Игроки - + Room Name Название комнаты - + Preferred Game Предпочтительная игра - + Host Хост - + Refreshing Обновление - + Refresh List Обновить список @@ -7748,362 +6871,1456 @@ Debug Message: [&R] Недавние файлы - + + Open &Eden Folders + Открыть &Eden папки + + + &Emulation [&E] Эмуляция - + &View [&V] Вид - + &Reset Window Size [&R] Сбросить размер окна - + &Debugging [&D] Отладка - + + &Game List Mode + &Вид списка игр + + + + Game &Icon Size + Размер &иконки игры + + + Reset Window Size to &720p Сбросить размер окна до &720p - + Reset Window Size to 720p Сбросить размер окна до 720p - + Reset Window Size to &900p Сбросить размер окна до &900p - + Reset Window Size to 900p Сбросить размер окна до 900p - + Reset Window Size to &1080p Сбросить размер окна до &1080p - + Reset Window Size to 1080p Сбросить размер окна до 1080p - + &Multiplayer [&M] Мультиплеер - + &Tools [&T] Инструменты - - &Amiibo - &Amiibo + + Am&iibo + Amiibo - + + Launch &Applet + Запустить &Апплет + + + &TAS [&T] TAS - + &Create Home Menu Shortcut - + &Create Ярлык главного меню - + + Install &Firmware + Установить &Firmware + + + &Help [&H] Помощь - + &Install Files to NAND... [&I] Установить файлы в NAND... - + L&oad File... [&O] Загрузить файл... - + Load &Folder... [&F] Загрузить папку... - + E&xit [&X] Выход - + + &Pause [&P] Пауза - + &Stop [&S] Стоп - + &Verify Installed Contents &Проверить установленное содержимое - - &About eden - + + &About Eden + &About Eden - - Open &eden Folder - - - - - Open Home Menu - - - - - &Discord - - - - - Open &Setup - - - - - &Desktop - - - - - &Application Menu - - - - &About yuzu - [&A] О yuzu - - - + Single &Window Mode [&W] Режим одного окна - + Con&figure... [&F] Параметры... - + Ctrl+, - + Ctrl+, - - Display D&ock Widget Headers - [&O] Отображать заголовки виджетов дока + + Enable Overlay Display Applet + Включить апплет оверлейного дисплея - + Show &Filter Bar [&F] Показать панель поиска - + Show &Status Bar [&S] Показать панель статуса - + Show Status Bar Показать панель статуса - + &Browse Public Game Lobby [&B] Просмотреть публичные игровые лобби - + &Create Room [&C] Создать комнату - + &Leave Room [&L] Покинуть комнату - + &Direct Connect to Room [&D] Прямое подключение к комнате - + &Show Current Room [&S] Показать текущую комнату - + F&ullscreen [&U] Полноэкранный - + &Restart [&R] Перезапустить - + Load/Remove &Amiibo... [&A] Загрузить/Удалить Amiibo... - + &Report Compatibility [&R] Сообщить о совместимости - + Open &Mods Page [&M] Открыть страницу модов - + Open &Quickstart Guide [&Q] Открыть руководство пользователя - + &FAQ [&F] ЧАВО - Open &yuzu Folder - [&Y] Открыть папку yuzu - - - + &Capture Screenshot [&C] Сделать скриншот - - Open &Album - Открыть &Album + + &Album + &Альбом - + &Set Nickname and Owner &Установить никнейм и владельца - + &Delete Game Data &Удалить данные игры - + &Restore Amiibo &Восстановить Amiibo - + &Format Amiibo &Форматировать Amiibo - - Open &Mii Editor - Открыть &Mii Editor + + &Mii Editor + &Редактирование Mii - + &Configure TAS... [&C] Настройка TAS... - + Configure C&urrent Game... [&U] Настроить текущую игру... - + + &Start [&S] Запустить - + &Reset [&S] Сбросить - + + R&ecord [&E] Запись - + Open &Controller Menu Открыть &меню контроллера - - Install Firmware - Установить прошивку + + Install Decryption &Keys + Установить ключи - - Install Decryption Keys - Установите ключи дешифровки + + &Home Menu + &Главное меню - - - MicroProfileDialog - - &MicroProfile - [&M] MicroProfile + + &Desktop + &Desktop + + + + &Application Menu + &Application Меню + + + + &Root Data Folder + &Root Папка данных + + + + &NAND Folder + &NAND Папка + + + + &SDMC Folder + &SDMC Папка + + + + &Mod Folder + &Mod Папка + + + + &Log Folder + &Log Папка + + + + From Folder + C папки + + + + From ZIP + С ZIP + + + + &Eden Dependencies + &Eden Зависимости + + + + &Data Manager + Менеджер данных + + + + &Tree View + &В виде списка + + + + &Grid View + &В виде сетки + + + + Game Icon Size + Размер иконки игры + + + + + + None + Нет + + + + Show Game &Name + Показать имя &игры + + + + Show &Performance Overlay + Показать &оверлей производительности + + + + Small (32x32) + Маленький (32х32) + + + + Standard (64x64) + Стандартный (64х64) + + + + Large (128x128) + Большой (128х128) + + + + Full Size (256x256) + Полноразмерный (256х256) + + + + Broken Vulkan Installation Detected + Проблема с установкой Vulkan + + + + Vulkan initialization failed during boot. + Ошибка инициализации Vulkan при запуске. + + + + Running a game + TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping + Запуск игры + + + + Loading Web Applet... + Загрузка веб-апплета... + + + + + Disable Web Applet + Отключить веб-апплет + + + + 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.) + Отключение веб-апплета может привести к неопределённому поведению и должно использоваться только с Super Mario 3D All-Stars. Вы уверены, что хотите отключить веб-апплет? +(Его можно будет снова включить в настройках отладки.) + + + + The amount of shaders currently being built + Количество шейдеров, компилируемых в данный момент + + + + The current selected resolution scaling multiplier. + Текущий выбранный множитель масштабирования разрешения. + + + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. + Текущая скорость эмуляции. Значения выше или ниже 100% означают, что эмуляция работает быстрее или медленнее, чем Nintendo Switch. + + + + How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. + Текущее количество кадров в секунду, отображаемых игрой. Этот показатель варьируется от игры к игре и от сцены к сцене. + + + + 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. + Время, затраченное на эмуляцию одного кадра Switch, без учёта ограничения частоты кадров или вертикальной синхронизации. Для полной скорости эмуляции это значение должно быть не более 16,67 мс. + + + + Unmute + Включить звук + + + + Mute + Отключить звук + + + + Reset Volume + Сбросить громкость + + + + &Clear Recent Files + Очистить недавние файлы + + + + &Continue + Продолжить + + + + Warning: Outdated Game Format + Внимание: Устаревший формат игры + + + + 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.<br>For an explanation of the various Switch formats Eden supports, out our user handbook. This message will not be shown again. + Вы используете для этой игры формат деконструированной ROM-директории, который является устаревшим и был заменён другими форматами, такими как NCA, NAX, XCI или NSP. Деконструированные ROM-директории не содержат иконок, метаданных и не поддерживают обновления.<br>Для объяснения различных форматов Switch, которые поддерживает Eden, обратитесь к руководству пользователя. Это сообщение больше не будет показано. + + + + + Error while loading ROM! + Ошибка при загрузке ROM! + + + + The ROM format is not supported. + Формат ROM не поддерживается. + + + + An error occurred initializing the video core. + Произошла ошибка при инициализации графического ядра. + + + + Eden 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: <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>How to Upload the Log File</a>. + В Eden произошла ошибка при работе графического ядра. Обычно это вызвано устаревшими драйверами GPU, включая встроенную графику. Подробности смотрите в логе. Для получения информации о доступе к логу посетите следующую страницу: <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>Как загрузить файл лога</a>. + + + + Error while loading ROM! %1 + %1 signifies a numeric error code. + Ошибка при загрузке ROM! %1 + + + + %1<br>Please redump your files or ask on Discord/Stoat for help. + %1 signifies an error string. + %1<br>Пожалуйста, пересоздайте дампы ваших файлов или обратитесь за помощью в Discord/Stoat. + + + + An unknown error occurred. Please see the log for more details. + Произошла неизвестная ошибка. Подробности смотрите в логе. + + + + (64-bit) + (64-х битный) + + + + (32-bit) + (32-х битный) + + + + %1 %2 + %1 is the title name. %2 indicates if the title is 64-bit or 32-bit + %1 %2 + + + + Closing software... + Завершение работы... + + + + Save Data + Сохранить данные + + + + Mod Data + Данные модов + + + + Error Opening %1 Folder + Ошибка при открытии папки %1 + + + + + Folder does not exist! + Папка не существует! + + + + Remove Installed Game Contents? + Удалить установленное содержание игры? + + + + Remove Installed Game Update? + Удалить установленные обновления игры? + + + + Remove Installed Game DLC? + Удалить установленные DLC игры? + + + + Remove Entry + Удалить запись + + + + Delete OpenGL Transferable Shader Cache? + Удалить переносной кэш шейдеров OpenGL? + + + + Delete Vulkan Transferable Shader Cache? + Удалить переносной кэш шейдеров Vulkan? + + + + Delete All Transferable Shader Caches? + Удалить весь переносной кэш шейдеров? + + + + Remove Custom Game Configuration? + Удалить пользовательские настройки игры? + + + + Remove Cache Storage? + Удалить кэш-хранилище? + + + + Remove File + Удалить файл + + + + Remove Play Time Data + Удалить проведенное время в этой игре + + + + Reset play time? + Сбросить игровое время? + + + + + RomFS Extraction Failed! + Не удалось извлечь RomFS! + + + + There was an error copying the RomFS files or the user cancelled the operation. + Произошла ошибка при копировании файлов RomFS или пользователь отменил операцию. + + + + Full + Полный + + + + Skeleton + Скелет + + + + Select RomFS Dump Mode + Выберите режим дампа RomFS + + + + Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. + Пожалуйста, выберите, как вы хотите выполнить дамп RomFS. <br>Полный скопирует все файлы в новую папку, в то время как <br>скелет создаст только структуру папок. + + + + There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root + В %1 недостаточно свободного места для извлечения RomFS. Пожалуйста, освободите место или выберите другую папку для дампа в Эмуляция > Параметры > Система > Файловая система > Корень дампа + + + + Extracting RomFS... + Извлечение RomFS... + + + + + Cancel + Отмена + + + + RomFS Extraction Succeeded! + Извлечение RomFS прошло успешно! + + + + The operation completed successfully. + Операция выполнена успешно. + + + + Error Opening %1 + Ошибка при открытии %1 + + + + Select Directory + Выбрать папку + + + + Properties + Свойства + + + + The game properties could not be loaded. + Не удалось загрузить свойства игры. + + + + Switch Executable (%1);;All Files (*.*) + %1 is an identifier for the Switch executable file extensions. + Исполняемый файл Switch (%1);;Все файлы (*.*) + + + + Load File + Загрузить файл + + + + Open Extracted ROM Directory + Открыть папку извлечённого ROM'а + + + + Invalid Directory Selected + Выбрана недопустимая папка + + + + The directory you have selected does not contain a 'main' file. + Папка, которую вы выбрали, не содержит файла 'main'. + + + + Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) + Устанавливаемый файл Switch (*.nca, *.nsp, *.xci);;Архив контента Nintendo (*.nca);;Пакет подачи Nintendo (*.nsp);;Образ картриджа NX (*.xci) + + + + Install Files + Установить файлы + + + + %n file(s) remaining + %n файл(ов) осталось%n файл(ов) осталось%n файл(ов) осталось%n файл(ов) осталось + + + + Installing file "%1"... + Установка файла "%1"... + + + + + Install Results + Результаты установки + + + + To avoid possible conflicts, we discourage users from installing base games to the NAND. +Please, only use this feature to install updates and DLC. + Чтобы избежать возможных конфликтов, мы не рекомендуем пользователям устанавливать игры в NAND. +Пожалуйста, используйте эту функцию только для установки обновлений и DLC. + + + + %n file(s) were newly installed + + %n файл(ов) были установлены недавно +%n файл(ов) были установлены недавно +%n файл(ов) были установлены недавно +%n файл(ов) были установлены недавно + + + + + %n file(s) were overwritten + + %n файл(ов) были перезаписаны +%n файл(ов) были перезаписаны +%n файл(ов) были перезаписаны +%n файл(ов) были перезаписаны + + + + + %n file(s) failed to install + + %n файл(ов) не удалось установить +%n файл(ов) не удалось установить +%n файл(ов) не удалось установить +%n файл(ов) не удалось установить + + + + + System Application + Системное приложение + + + + System Archive + Системный архив + + + + System Application Update + Обновление системного приложения + + + + Firmware Package (Type A) + Пакет прошивки (Тип А) + + + + Firmware Package (Type B) + Пакет прошивки (Тип Б) + + + + Game + Игра + + + + Game Update + Обновление игры + + + + Game DLC + DLC игры + + + + Delta Title + Тип приложения + + + + Select NCA Install Type... + Выберите тип установки NCA... + + + + Please select the type of title you would like to install this NCA as: +(In most instances, the default 'Game' is fine.) + Пожалуйста, выберите тип приложения, который вы хотите установить для этого NCA: +(В большинстве случаев, подходит стандартный выбор 'Игра') + + + + Failed to Install + Ошибка установки + + + + The title type you selected for the NCA is invalid. + Тип приложения, который вы выбрали для NCA недействителен. + + + + File not found + Файл не найден + + + + File "%1" not found + Файл "%1" не найден + + + + OK + ОК + + + + Function Disabled + Функция выключена + + + + Compatibility list reporting is currently disabled. Check back later! + Репортинг списка совместимости в настоящее время отключен. Проверьте позже! + + + + Error opening URL + Ошибка при открытии URL + + + + Unable to open the URL "%1". + Не удалось открыть URL "%1". + + + + TAS Recording + Запись TAS + + + + Overwrite file of player 1? + Перезаписать файл игрока 1? + + + + Invalid config detected + Обнаружена недопустимая конфигурация + + + + Handheld controller can't be used on docked mode. Pro controller will be selected. + Портативный контроллер не может быть использован в режиме док-станции. Будет выбран контроллер Pro. + + + + + Amiibo + Amiibo + + + + + The current amiibo has been removed + Текущий amiibo был удален + + + + Error + Ошибка + + + + + The current game is not looking for amiibos + Текущая игра не ищет amiibo + + + + Amiibo File (%1);; All Files (*.*) + Файл Amiibo (%1);; Все Файлы (*.*) + + + + Load Amiibo + Загрузить Amiibo + + + + Error loading Amiibo data + Ошибка загрузки данных Amiibo + + + + The selected file is not a valid amiibo + Выбранный файл не является действительным Amiibo + + + + The selected file is already on use + Выбранный файл уже используется + + + + An unknown error occurred + Произошла неизвестная ошибка + + + + + Keys not installed + Ключи не установлены + + + + + Install decryption keys and restart Eden before attempting to install firmware. + Установите ключи расшифровки и перезапустите Eden, прежде чем пытаться установить прошивку. + + + + Select Dumped Firmware Source Location + Выберите местоположение дампнутой прошивки. + + + + Select Dumped Firmware ZIP + Выберите ZIP-архив дампа прошивки + + + + Zipped Archives (*.zip) + Сжатые Архивы (*.zip) + + + + Firmware cleanup failed + Не удалось выполнить очистку прошивки + + + + Failed to clean up extracted firmware cache. +Check write permissions in the system temp directory and try again. +OS reported error: %1 + Не удалось очистить извлеченный кэш прошивки. +Проверьте права на запись во временном каталоге системы и повторите попытку. +Операционная система сообщила об ошибке: %1 + + + + No firmware available + Нет доступной прошивки + + + + Firmware Corrupted + Прошивка повреждена + + + + Unknown applet + Неизвестный апплет + + + + Applet doesn't map to a known value. + Апплет не сопоставляется с известным значением. + + + + Record not found + Запись не найдена + + + + Applet not found. Please reinstall firmware. + Апплет не найден. Пожалуйста, переустановите прошивку. + + + + Capture Screenshot + Сделать скриншот + + + + PNG Image (*.png) + Изображение PNG (*.png) + + + + Update Available + Обновление доступно + + + + Download %1? + Скачать %1? + + + + TAS state: Running %1/%2 + Состояние TAS: Выполняется %1/%2 + + + + TAS state: Recording %1 + Состояние TAS: Записывается %1 + + + + TAS state: Idle %1/%2 + Состояние TAS: Простой %1/%2 + + + + TAS State: Invalid + Состояние TAS: Неверное + + + + &Stop Running + &Остановить + + + + Stop R&ecording + З&акончить запись + + + + Building: %n shader(s) + Компиляция %n шейдер(ов)Компиляция %n шейдер(ов)Компиляция %n шейдер(ов)Компиляция %n шейдер(ов) + + + + Scale: %1x + %1 is the resolution scaling factor + Масштаб: %1x + + + + Speed: %1% / %2% + Скорость: %1% / %2% + + + + Speed: %1% + Скорость: %1% + + + + Game: %1 FPS + Игра: %1 FPS + + + + Frame: %1 ms + Кадр: %1 мс + + + + + FSR + FSR + + + + NO AA + БЕЗ СГЛАЖИВАНИЯ + + + + VOLUME: MUTE + ГРОМКОСТЬ: ЗАГЛУШЕНА + + + + VOLUME: %1% + Volume percentage (e.g. 50%) + ГРОМКОСТЬ: %1% + + + + Derivation Components Missing + Компоненты расчета отсутствуют + + + + Decryption keys are missing. Install them now? + Ключи шифрования отсутствуют. Установить их? + + + + Wayland Detected! + Обнаружен Wayland! + + + + Wayland is known to have significant performance issues and mysterious bugs. +It's recommended to use X11 instead. + +Would you like to force it for future launches? + Wayland известен значительными проблемами с производительностью и различными ошибками. +Рекомендуется использовать X11 вместо него. + +Хотите принудительно использовать его для будущих запусков? + + + + Use X11 + Использовать X11 + + + + Continue with Wayland + Продолжить с Wayland + + + + Don't show again + Не показывать снова + + + + Restart Required + Требуется перезагрузка + + + + Restart Eden to apply the X11 backend. + Перезапустите Eden чтобы применить бэкэнд X11. + + + + Slow + Медленно + + + + Turbo + Турбо + + + + Unlocked + Разблокирован + + + + Select RomFS Dump Target + Выбрать цель дампа RomFS + + + + Please select which RomFS you would like to dump. + Пожалуйста, выберите, какой RomFS вы хотите сдампить. + + + + Are you sure you want to close Eden? + Вы уверены, что хотите закрыть Eden? + + + + + + Eden + Eden + + + + Are you sure you want to stop the emulation? Any unsaved progress will be lost. + Вы уверены, что хотите остановить эмуляцию? Любой несохраненный прогресс будет потерян. + + + + The currently running application has requested Eden to not exit. + +Would you like to bypass this and exit anyway? + Запущенное в данный момент приложение запросило Eden не завершать работу. + +Хотели бы вы обойти это и выйти в любом случае? + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Nearest + Ближайший + + + + Bilinear + Билинейный + + + + Bicubic + Бикубический + + + + Zero-Tangent + Zero-Tangent + + + + B-Spline + B-Spline + + + + Mitchell + Mitchell + + + + Spline-1 + Spline-1 + + + + Gaussian + Гаусс + + + + Lanczos + Lanczos + + + + ScaleForce + ScaleForce + + + + Area + Зона + + + + MMPX + MMPX + + + + Docked + Док-станция + + + + Handheld + Портативный + + + + Fast + Быстрый + + + + Balanced + Сбалансированный + + + + Accurate + Точность + + + + Vulkan + Vulkan + + + + OpenGL GLSL + OpenGL GLSL + + + + OpenGL SPIRV + OpenGL SPIRV + + + + OpenGL GLASM + OpenGL GLASM + + + + Null + Null MigrationWorker - - Data was migrated successfully. - - - - + Linking the old directory failed. You may need to re-run with administrative privileges on Windows. OS gave error: %1 - + Не удалось связать старый каталог. Возможно, вам потребуется повторно запустить программу с правами администратора в Windows. +Операционная система выдала ошибку: %1 - + + + +Note that your configuration and data will be shared with %1. +If this is not desirable, delete the following files: +%2 +%3 +%4 + + +Обратите внимание, что ваша конфигурация и данные будут переданы в% 1. +Если это нежелательно, удалите следующие файлы: +%2 +%3 +%4 + + + If you wish to clean up the files which were left in the old data location, you can do so by deleting the following directory: %1 - + + +Если вы хотите очистить файлы, которые остались в старом расположении данных, вы можете сделать это, удалив следующий каталог: +%1 + + + + Data was migrated successfully. + Данные успешно перенесены. + + + + ModSelectDialog + + + Dialog + Диалог + + + + The specified folder or archive contains the following mods. Select which ones to install. + Указанная папка или архив содержит следующие модификации. Выберите, какие из них необходимо установить. @@ -8120,7 +8337,7 @@ If you wish to clean up the files which were left in the old data location, you - + Refreshing Обновление @@ -8130,27 +8347,27 @@ If you wish to clean up the files which were left in the old data location, you Разбанить - + Subject Объект - + Type Тип - + Forum Username Имя пользователя на форуме - + IP Address IP-адрес - + Refresh Обновить @@ -8158,37 +8375,37 @@ If you wish to clean up the files which were left in the old data location, you MultiplayerState - + Current connection status Текущий статус подключения - + Not Connected. Click here to find a room! Не подключено. Нажмите здесь, чтобы найти комнату! - + Not Connected Не подключено - + Connected Подключено - + New Messages Received Получены новые сообщения - + Error Ошибка - + Failed to update the room information. Please check your Internet connection and try hosting the room again. Debug Message: Не удалось обновить информацию о комнате. Пожалуйста, проверьте подключение к Интернету и попробуйте снова захостить комнату. @@ -8197,90 +8414,6 @@ Debug Message: NetworkMessage - - Username is not valid. Must be 4 to 20 alphanumeric characters. - Имя пользователя недействительно. Должно быть от 4 до 20 буквенно-цифровых символов. - - - Room name is not valid. Must be 4 to 20 alphanumeric characters. - Название комнаты недействительно. Должно быть от 4 до 20 буквенно-цифровых символов. - - - Username is already in use or not valid. Please choose another. - Имя пользователя уже используется или недействительно. Пожалуйста, выберите другое. - - - IP is not a valid IPv4 address. - IP не является действительным адресом IPv4. - - - Port must be a number between 0 to 65535. - Порт должен быть числом от 0 до 65535. - - - You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - Вы должны выбрать предпочтительную игру, чтобы хостить комнату. Если в вашем списке игр еще нет ни одной игры, добавьте папку с игрой, нажав на значок плюса в списке игр. - - - Unable to find an internet connection. Check your internet settings. - Невозможно найти подключение к Интернету. Проверьте настройки интернета. - - - Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - Невозможно подключиться к хосту. Проверьте правильность настроек подключения. Если подключение по-прежнему невозможно, свяжитесь с хостом комнаты и убедитесь, что хост правильно настроен с проброшенным внешним портом. - - - Unable to connect to the room because it is already full. - Невозможно подключиться к комнате, так как она уже заполнена. - - - Creating a room failed. Please retry. Restarting yuzu might be necessary. - Создание комнаты не удалось. Пожалуйста, повторите попытку. Возможно, потребуется перезапуск yuzu. - - - The host of the room has banned you. Speak with the host to unban you or try a different room. - Хост комнаты забанил вас. Поговорите с хостом, чтобы он разбанил вас, или попробуйте другую комнату. - - - Version mismatch! Please update to the latest version of yuzu. If the problem persists, contact the room host and ask them to update the server. - Несоответствие версии! Пожалуйста, обновитесь до последней версии yuzu. Если проблема сохраняется, свяжитесь с хостом комнаты и попросите его обновить сервер. - - - Incorrect password. - Неверный пароль. - - - An unknown error occurred. If this error continues to occur, please open an issue - Произошла неизвестная ошибка. Если эта ошибка продолжает возникать, пожалуйста, откройте проблему - - - Connection to room lost. Try to reconnect. - Соединение с комнатой потеряно. Попробуйте подключиться снова. - - - You have been kicked by the room host. - Вы были выгнаны хостом комнаты. - - - IP address is already in use. Please choose another. - IP-адрес уже используется. Пожалуйста, выберите другой. - - - You do not have enough permission to perform this action. - У вас нет достаточных разрешений для выполнения этого действия. - - - The user you are trying to kick/ban could not be found. -They may have left the room. - Пользователь, которого вы пытаетесь выгнать/забанить, не найден. -Возможно, они покинули комнату. - - - No valid network interface is selected. -Please go to Configure -> System -> Network and make a selection. - Не выбран допустимый интерфейс сети. -Пожалуйста, перейдите в Параметры -> Система -> Сеть и сделайте выбор. - Game already running @@ -8315,10 +8448,132 @@ Proceed anyway? - NetworkMessage::ErrorManager + NewUserDialog - Error - Ошибка + + + New User + Новый пользователь + + + + Change Avatar + Изменить Аватар + + + + Set Image + Выбрать изображение + + + + UUID + UUID + + + + Eden + Eden + + + + Username + Имя пользователя + + + + UUID must be 32 hex characters (0-9, A-F) + UUID должен состоять из 32-х шестнадцатеричных символов (0-9, A-F) + + + + Generate + Сгенерировать + + + + Select User Image + Выберите изображение пользователя + + + + Image Formats (*.jpg *.jpeg *.png *.bmp) + Форматы изображений (*.jpg *.jpeg *.png *.bmp) + + + + No firmware available + Нет доступной прошивки + + + + Please install the firmware to use firmware avatars. + Пожалуйста, установите прошивку что бы использовать аватар в ней. + + + + + Error loading archive + Ошибка при загрузке архива + + + + Archive is not available. Please install/reinstall firmware. + Архив недоступен. Пожалуйста установите/переустановите прошивку. + + + + Could not locate RomFS. Your file or decryption keys may be corrupted. + Не удалось найти RomFS. Возможно, ваш файл или ключи шифрования повреждены. + + + + Error extracting archive + Ошибка при извлечении архива + + + + Could not extract RomFS. Your file or decryption keys may be corrupted. + Не удалось извлечь RomFS. Возможно, ваш файл или ключи шифрования повреждены. + + + + Error finding image directory + Не удалось найти пути к изображениям + + + + Failed to find image directory in the archive. + Не удалось найти каталог изображений в архиве. + + + + No images found + Изображения не нашлись + + + + No avatar images were found in the archive. + Не удалось найти аватар-изображения в архиве. + + + + + All Good + Tooltip + Все хорошо + + + + Must be 32 hex characters (0-9, a-f) + Tooltip + Должен быть из 32-х шестнадцатеричных символов (0-9, a-f) + + + + Must be between 1 and 32 characters + Tooltip + Должно быть от 1 до 32 символов @@ -8345,7 +8600,7 @@ Proceed anyway? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -8354,83 +8609,199 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> + + PerformanceOverlay + + + Form + Форма + + + + Frametime + Frametime + + + + 0 ms + 0 мс + + + + + Min: 0 + Мин: 0 + + + + + Max: 0 + Макс: 0 + + + + + Avg: 0 + Сред: 0 + + + + FPS + FPS + + + + 0 fps + 0 fps + + + + %1 fps + %1 fps + + + + + Avg: %1 + Сред: %1 + + + + + Min: %1 + Мин: %1 + + + + + Max: %1 + Макс: %1 + + + + %1 ms + %1 мс + + PlayerControlPreview - + START/PAUSE СТАРТ/ПАУЗА + + ProfileAvatarDialog + + + Select + Выбрать + + + + Cancel + Отмена + + + + Background Color + Фоновый цвет + + + + Select Firmware Avatar + Выбрать аватар прошивки + + QObject - - %1 is not playing a game - %1 не играет в игру + + + + Migration + Перенос - - %1 is playing %2 - %1 играет в %2 + + Clear Shader Cache + Очистить кэш шейдеров - - Not playing a game - Не играет в игру + + Keep Old Data + Сохранить старые данные - - Installed SD Titles - Установленные SD игры + + Clear Old Data + Очистить старые данные - - Installed NAND Titles - Установленные NAND игры + + Link Old Directory + Путь старой директории - - System Titles - Системные игры + + + + + +тест + - - Add New Game Directory - Добавить новую папку с играми + + + No + Нет - - Favorites - Избранные + + You can manually re-trigger this prompt by deleting the new config directory: +%1 + Вы можете вручную повторно запустить этот запрос, удалив новый каталог конфигурации: +%1 + + + + Migrating + Переносим + + + + Migrating, this may take a while... + Переносим, это может занять некоторое время... - - + + Shift Shift - - + + Ctrl Ctrl - - + + Alt Alt - - - - + + + + [not set] [не задано] @@ -8440,15 +8811,15 @@ p, li { white-space: pre-wrap; } Крестовина %1 %2 - - - - - - - - + + + + + + + + Axis %1%2 Ось %1%2 @@ -8458,359 +8829,383 @@ p, li { white-space: pre-wrap; } Кнопка %1 - - - - - - + + + + + + [unknown] [неизвестно] - - - + + + Left Влево - - - + + + Right Вправо - - - + + + Down Вниз - - - + + + Up Вверх - - + + Z Z - - + + R R - - + + L L - - + + A A - - + + B B - - + + X X - - + + Y Y - - + + Start Start - - + + L1 L1 - - + + L2 L2 - - + + L3 L3 - - + + R1 R1 - - + + R2 R2 - - + + R3 R3 - - + + Circle Круг - - + + Cross Крестик - - + + Square Квадрат - - + + Triangle Треугольник - - + + Share Share - - + + Options Options - - + + [undefined] [не определено] - + %1%2 %1%2 - - + + [invalid] [недопустимо] - - + + %1%2Hat %3 %1%2Крест. %3 - - - + + + %1%2Axis %3 %1%2Ось %3 - - + + %1%2Axis %3,%4,%5 %1%2Ось %3,%4,%5 - - + + %1%2Motion %3 %1%2Движение %3 - - + + %1%2Button %3 %1%2Кнопка %3 - - + + [unused] [не используется] - + ZR ZR - + ZL ZL - + SR SR - + SL SL - + Stick L Левый стик - + Stick R Правый стик - + Plus Плюс - + Minus Минус - - + + Home Home - + Capture Захват - + Touch Сенсор - + Wheel Indicates the mouse wheel Колёсико - + Backward Назад - + Forward Вперёд - + Task Задача - + Extra Дополнительная - + %1%2%3%4 %1%2%3%4 - - + + %1%2%3Hat %4 %1%2%3Крест. %4 - - + + %1%2%3Axis %4 %1%2%3Ось %4 - - + + %1%2%3Button %4 %1%2%3Кнопка %4 - - - - Migration - + + Not playing a game + Не играет в игру - - - - - + + %1 is not playing a game + %1 не играет в игру - - - No - + + %1 is playing %2 + %1 играет в %2 - - You can manually re-trigger this prompt by deleting the new config directory: -%1 - + + Play Time: %1 + Игровое время: %1 - - Migrating - + + Never Played + Ни разу не сыграно - - Migrating, this may take a while... - + + Version: %1 + Версия: %1 + + + + Version: 1.0.0 + Версия: 1.0.0 + + + + Installed SD Titles + Установленные SD игры + + + + Installed NAND Titles + Установленные NAND игры + + + + System Titles + Системные игры + + + + Add New Game Directory + Добавить новую папку с играми + + + + Favorites + Избранные @@ -8901,31 +9296,831 @@ p, li { white-space: pre-wrap; } Путь к файлу - + No game data present Данные игры отсутствуют - + The following amiibo data will be formatted: Следующие данные amiibo будут отформатированы: - + The following game data will removed: Следующие данные игры будут удалены: - + Set nickname and owner: Установите псевдоним и владельца: - + Do you wish to restore this amiibo? Хотите ли вы восстановить эту amiibo? + + QtCommon::Content + + + Game Requires Firmware + Игре требуется прошивка + + + + The game you are trying to launch requires firmware to boot or to get past the opening menu. Please <a href='https://yuzu-mirror.github.io/help/quickstart'>dump and install firmware</a>, or press "OK" to launch anyways. + Игра, которую вы пытаетесь запустить, требует прошивку для запуска или загрузки начального меню. Сделайте <a href='https://yuzu-mirror.github.io/help/quickstart'>дамп и установите прошивку</a>, или нажмите "OK" чтобы запустить в любом случае. + + + + Installing Firmware... + Устанавливаем прошивку... + + + + + + + + Cancel + Отмена + + + + Firmware Install Failed + Не удалось установить прошивку + + + + Firmware Install Succeeded + Прошивка успешно установлена + + + + Firmware integrity verification failed! + Сбой проверки целостности прошивки! + + + + + Verification failed for the following files: + +%1 + Проверка не удалась для следующих файлов: + +%1 + + + + + Verifying integrity... + Проверка целостности... + + + + + Integrity verification succeeded! + Проверка целостности прошла успешно! + + + + + The operation completed successfully. + Операция выполнена успешно. + + + + + Integrity verification failed! + Проверка целостности не удалась! + + + + File contents may be corrupt or missing. + Файл может быть поврежден или отсутствует. + + + + Integrity verification couldn't be performed + Проверка целостности не может быть выполнена + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity. + Установка прошивки отменена, возможно, прошивка находится в неисправном состоянии или повреждена. Не удалось проверить содержимое файла на достоверность. + + + + Select Dumped Keys Location + Выберите местоположение дампнутых ключей + + + + Decryption Keys install succeeded + Установка ключей дешифровки прошла успешно. + + + + Decryption Keys install failed + Ошибка установки ключей дешифровки + + + + Orphaned Profiles Detected! + Обнаружены опустевшие профили! + + + + UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br> + ЕСЛИ ВЫ НЕ ПРОЧИТАЕТЕ ЭТО, МОГУТ ПРОИЗОЙТИ НЕОЖИДАННЫЕ НЕПРИЯТНОСТИ!<br>Eden обнаружил следующие каталоги сохранений без прикрепленных профилей:<br>%1<br><br>Следующие профили являются действительными:<br>%2<br><br>Нажмите «ОК», чтобы открыть папку с сохранениями и исправить свои профили.<br>Подсказка: скопируйте содержимое самой большой или последней измененной папки в другое место, удалите все пустые профили и переместите скопированное содержимое в нормальный профиль.<br><br>Все еще не понятно? Посмотрите эту <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>страницу для помощи</a>.<br> + + + + Really clear data? + Очистить данные? + + + + Important data may be lost! + Важные данные могут быть утеряны! + + + + Are you REALLY sure? + Вы ТОЧНО уверены? + + + + Once deleted, your data will NOT come back! +Only do this if you're 100% sure you want to delete this data. + После удаления ваши данные НЕ смогут быть восстановлены! +Делайте это только в том случае, если вы на 100% уверены, что хотите удалить эти данные. + + + + Clearing... + Очистка... + + + + Select Export Location + Выберите местоположение экспорта + + + + %1.zip + %1.zip + + + + + Zipped Archives (*.zip) + Сжатые Архивы (*.zip) + + + + Exporting data. This may take a while... + Экспортирование данных. Это может занять некоторое время... + + + + Exporting + Экспортирование + + + + Exported Successfully + Успешно экспортировано + + + + Data was exported successfully. + Данные были успешно экспортированы. + + + + Export Cancelled + Экспорт отменен + + + + Export was cancelled by the user. + Экспорт был отменён пользователем. + + + + Export Failed + Экспорт не удался + + + + Ensure you have write permissions on the targeted directory and try again. + Убедитесь, что у вас есть права на запись в целевом каталоге, и повторите попытку. + + + + Select Import Location + Выберите местоположение импорта + + + + Import Warning + Предупреждение об импорте + + + + All previous data in this directory will be deleted. Are you sure you wish to proceed? + Все предыдущие данные в этом каталоге будут удалены. Вы уверены, что хотите продолжить? + + + + Importing data. This may take a while... + Импортирование данных. Это может занять некоторое время... + + + + Importing + Импортирование + + + + Imported Successfully + Успешно импортировано + + + + Data was imported successfully. + Данные были успешно импортированы. + + + + Import Cancelled + Импорт отменен + + + + Import was cancelled by the user. + Импорт был отменён пользователем. + + + + Import Failed + Импорт не удался + + + + Ensure you have read permissions on the targeted directory and try again. + Убедитесь, что у вас есть права на чтение в целевом каталоге, и повторите попытку. + + + + QtCommon::FS + + + Linked Save Data + Сохраненные данные + + + + Save data has been linked. + Данные сохранены. + + + + Failed to link save data + Не удалось сохранить данные + + + + Could not link directory: + %1 +To: + %2 + Не удалось установить связь каталог: + %1 +C: + %2 + + + + Already Linked + Уже связано + + + + This title is already linked to Ryujinx. Would you like to unlink it? + Это приложение уже связано с Ryujinx. Хотите отменить связь? + + + + Failed to unlink old directory + Не удалось отвязать старый каталог + + + + + OS returned error: %1 + ОС вернула ошибку: %1 + + + + Failed to copy save data + Не удалось скопировать сохраненные данные + + + + Unlink Successful + Успешная отвязка + + + + Successfully unlinked Ryujinx save data. Save data has been kept intact. + Сохраненные данные Ryujinx были успешно отвязаны. Сохраненные данные остались нетронутыми. + + + + Could not find Ryujinx installation + Не удалось найти установку Ryujinx + + + + Could not find a valid Ryujinx installation. This may typically occur if you are using Ryujinx in portable mode. + +Would you like to manually select a portable folder to use? + Не удалось найти действительную установку Ryujinx. Обычно это происходит, если вы используете Ryujinx в портативном режиме. + + + + Ryujinx Portable Location + Местоположение портативного Ryujinx + + + + Not a valid Ryujinx directory + Не действительная Ryujinx директория + + + + The specified directory does not contain valid Ryujinx data. + Указанный каталог не содержит действительных данных Ryujinx. + + + + + Could not find Ryujinx save data + Не удалось найти сохраненные данные Ryujinx + + + + QtCommon::Game + + + Error Removing Contents + Ошибка при удалении содержимого + + + + Error Removing Update + Ошибка при удалении обновления + + + + Error Removing DLC + Ошибка при удалении DLC + + + + + + + + + Successfully Removed + Успешно удалено + + + + Successfully removed the installed base game. + Успешно удалена установленная база игры. + + + + The base game is not installed in the NAND and cannot be removed. + Базовая Игра не установлена в NAND и не может быть удалена. + + + + Successfully removed the installed update. + Успешно удалено установленное обновление. + + + + There is no update installed for this title. + Для этой игры не было установлено обновлений. + + + + There are no DLCs installed for this title. + Для этой игры не было установлено DLCs. + + + + Successfully removed %1 installed DLC. + Успешно удалено %1 установленных DLC. + + + + + Error Removing Transferable Shader Cache + Ошибка при удалении переносного кэша шейдеров + + + + + A shader cache for this title does not exist. + Кэш шейдеров для этой игры не существует. + + + + Successfully removed the transferable shader cache. + Переносной кэш шейдеров успешно удалён. + + + + Failed to remove the transferable shader cache. + Не удалось удалить переносной кэш шейдеров. + + + + Error Removing Vulkan Driver Pipeline Cache + Ошибка при удалении конвейерного кэша Vulkan + + + + Failed to remove the driver pipeline cache. + Не удалось удалить конвейерный кэш шейдеров. + + + + + Error Removing Transferable Shader Caches + Ошибка при удалении переносного кэша шейдеров + + + + Successfully removed the transferable shader caches. + Переносной кэш шейдеров успешно удален. + + + + Failed to remove the transferable shader cache directory. + Ошибка при удалении пути переносного кэша шейдеров. + + + + + Error Removing Custom Configuration + Ошибка при удалении пользовательской настройки + + + + A custom configuration for this title does not exist. + Пользовательская настройка для этой игры не существует. + + + + Successfully removed the custom game configuration. + Пользовательская настройка игры успешно удалена. + + + + Failed to remove the custom game configuration. + Не удалось удалить пользовательскую настройку игры. + + + + Reset Metadata Cache + Сбросить кэш метаданных + + + + The metadata cache is already empty. + Кэш метаданных уже пустой. + + + + The operation completed successfully. + Операция выполнена успешно. + + + + The metadata cache couldn't be deleted. It might be in use or non-existent. + Кэш метаданных не может быть удален. Возможно, он используется или не существует. + + + + Create Shortcut + Создать ярлык + + + + Do you want to launch the game in fullscreen? + Вы хотите запустить игру в полноэкранном режиме? + + + + Shortcut Created + Ярлык создан + + + + Successfully created a shortcut to %1 + Успешно создан ярлык в %1 + + + + Shortcut may be Volatile! + Ярлык может быть нестабильным! + + + + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? + Это создаст ярлык для текущего AppImage. Он может не работать после обновлений. Продолжить? + + + + Failed to Create Shortcut + Не удалось создать ярлык + + + + Failed to create a shortcut to %1 + Не удалось создать ярлык в %1 + + + + Create Icon + Создать иконку + + + + Cannot create icon file. Path "%1" does not exist and cannot be created. + Невозможно создать файл иконки. Путь "%1" не существует и не может быть создан. + + + + No firmware available + Нет доступной прошивки + + + + Please install firmware to use the home menu. + Пожалуйста, установите прошивку, чтобы использовать главное меню. + + + + Home Menu Applet + Главное меню Applet + + + + Home Menu is not available. Please reinstall firmware. + Главное меню недоступно. Пожалуйста. переустановите прошивку + + + + QtCommon::Mod + + + Mod Name + Название мода + + + + What should this mod be called? + Как следует назвать этот мод? + + + + RomFS + RomFS + + + + ExeFS/Patch + ExeFS/Патч + + + + Cheat + Чит + + + + Mod Type + Тип мода + + + + Could not detect mod type automatically. Please manually specify the type of mod you downloaded. + +Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods. + Не удалось автоматически определить тип мода. Пожалуйста, вручную укажите тип загруженного мода. + +Большинство модификаций являются модами типа RomFS, но патчи (.pchtxt) обычно являются типом ExeFS. + + + + + Mod Extract Failed + Не удалось извлечь мод + + + + Failed to create temporary directory %1 + Не удалось создать временную директорию %1 + + + + Zip file %1 is empty + Zip файл %1 пуст + + + + QtCommon::Path + + + Error Opening Shader Cache + Ошибка при открытии кэша шейдера + + + + Failed to create or open shader cache for this title, ensure your app data directory has write permissions. + Не удалось создать или открыть кэш шейдера для этого приложения, убедитесь что у вашего каталога данных приложения есть права на запись. + + + + QtCommon::StringLookup + + + Contains game save data. DO NOT REMOVE UNLESS YOU KNOW WHAT YOU'RE DOING! + Содержит данные внутриигрового сохранения. НЕ УДАЛЯЙТЕ, ЕСЛИ НЕ ЗНАЕТЕ, ЧТО ДЕЛАЕТЕ! + + + + Contains Vulkan and OpenGL pipeline caches. Generally safe to remove. + Содержит потоковые кэши Vulkan и OpenGL. Как правило безопасно для удаления. + + + + Contains updates and DLC for games. + Содержит обновления и DLC для игр. + + + + Contains firmware and applet data. + Содержит прошивку и данные апплета. + + + + Contains game mods, patches, and cheats. + Содержит игровые моды, патчи и читы. + + + + Decryption Keys were successfully installed + Ключи шифрования были успешно установлены. + + + + Unable to read key directory, aborting + Невозможно прочитать каталог, прерывание + + + + One or more keys failed to copy. + Не удалось скопировать один или более ключей. + + + + Verify your keys file has a .keys extension and try again. + Убедитесь, что файл-ключ имеет расширение .keys, и попробуйте снова. + + + + Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. + Не удалось инициализировать ключи. Проверьте, актуальны ли ваши инструменты для дампа и передампите ключи. + + + + Successfully installed firmware version %1 + Успешно установлена прошивки версии %1 + + + + Unable to locate potential firmware NCA files + Не удалось найти потенциальные NCA файлы прошивки + + + + Failed to delete one or more firmware files. + Не удалось удалить один или более файлов прошивки. + + + + One or more firmware files failed to copy into NAND. + Не удалось скопировать один или более прошивок в NAND. + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. Restart Eden or re-install firmware. + Установка прошивки отменена, прошивка может быть в плохом состоянии или повреждена. Перезапустите Eden или переустановите прошивку. + + + + Firmware missing. Firmware is required to run certain games and use the Home Menu. + Отсутствует прошивка. Прошивка необходима для запуска определенных игр и использования главного меню. + + + + Firmware reported as present, but was unable to be read. Check for decryption keys and redump firmware if necessary. + Прошивка установлена, но не может быть прочитана. Проверьте ключи шифрования и при необходимости повторно скопируйте прошивку. + + + + Eden has detected user data for the following emulators: + Eden обнаружил пользовательские данные для следующих эмуляторов: + + + + Would you like to migrate your data for use in Eden? +Select the corresponding button to migrate data from that emulator. +This may take a while. + Хотите перенести свои данные для использования в Eden? +Нажмите соответствующую кнопку, чтобы перенести данные из этого эмулятора. +Это может занять некоторое время. + + + + Clearing shader cache is recommended for all users. +Do not uncheck unless you know what you're doing. + Очистка кэша шейдера рекомендуется всем пользователям. +Не снимайте галочку, если не знаете, что делаете. + + + + Keeps the old data directory. This is recommended if you aren't +space-constrained and want to keep separate data for the old emulator. + Сохраняет старый каталог данных. Это рекомендуется, если у вас нет +ограничений по свободному пространству и вы хотите сохранить отдельные данные для старого эмулятора. + + + + Deletes the old data directory. +This is recommended on devices with space constraints. + Удаляет старый каталог данных. +Это рекомендуется на устройствах с ограниченным свободным пространством. + + + + Creates a filesystem link between the old directory and Eden directory. +This is recommended if you want to share data between emulators. + Создает ссылку файловой системы между старым каталогом и каталогом Eden. +Это рекомендуется, если вы хотите обмениваться данными между эмуляторами. + + + + Ryujinx title database does not exist. + База данных приложений Ryujinx отсутствует. + + + + Invalid header on Ryujinx title database. + Недопустимый заголовок в базе данных приложений Ryujinx. + + + + Invalid magic header on Ryujinx title database. + Недопустимый magic заголовок в базе данных приложений Ryujinx. + + + + Invalid byte alignment on Ryujinx title database. + Неверное выравнивание байтов в базе данных приложений Ryujinx. + + + + No items found in Ryujinx title database. + В базе данных приложений Ryujinx не найдено ни одного элемента. + + + + Title %1 not found in Ryujinx title database. + Приложение %1 не найдено в базе данных приложений Ryujinx. + + QtControllerSelectorDialog @@ -8962,7 +10157,7 @@ p, li { white-space: pre-wrap; } - + Pro Controller Контроллер Pro @@ -8975,7 +10170,7 @@ p, li { white-space: pre-wrap; } - + Dual Joycons Двойные Joy-Сon'ы @@ -8988,7 +10183,7 @@ p, li { white-space: pre-wrap; } - + Left Joycon Левый Joy-Сon @@ -9001,7 +10196,7 @@ p, li { white-space: pre-wrap; } - + Right Joycon Правый Joy-Сon @@ -9030,7 +10225,7 @@ p, li { white-space: pre-wrap; } - + Handheld Портативный @@ -9151,32 +10346,32 @@ p, li { white-space: pre-wrap; } Недостаточно контроллеров - + GameCube Controller Контроллер GameCube - + Poke Ball Plus Poke Ball Plus - + NES Controller Контроллер NES - + SNES Controller Контроллер SNES - + N64 Controller Контроллер N64 - + Sega Genesis Sega Genesis @@ -9184,28 +10379,28 @@ p, li { white-space: pre-wrap; } QtErrorDisplay - - - + + + Error Code: %1-%2 (0x%3) Код ошибки: %1-%2 (0x%3) - + An error has occurred. Please try again or contact the developer of the software. Произошла ошибка. Пожалуйста, попробуйте еще раз или свяжитесь с разработчиком ПО. - + An error occurred on %1 at %2. Please try again or contact the developer of the software. Произошла ошибка на %1 в %2. Пожалуйста, попробуйте еще раз или свяжитесь с разработчиком ПО. - + An error has occurred. %1 @@ -9221,7 +10416,7 @@ Please try again or contact the developer of the software. QtProfileSelectionDialog - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -9229,7 +10424,7 @@ Please try again or contact the developer of the software. %2 - + Users Пользователи @@ -9322,7 +10517,7 @@ Please try again or contact the developer of the software. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -9331,17 +10526,59 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - - + + OK ОК - + Cancel Отмена + + RyujinxDialog + + + Ryujinx Link + Связка с Ryujinx + + + + Linking save data to Ryujinx lets both Ryujinx and Eden reference the same save files for your games. + +By selecting "From Eden", previous save data stored in Ryujinx will be deleted, and vice versa for "From Ryujinx". + Связывание сохраненных данных с Ryujinx позволяет как Ryujinx, так и Eden использовать одни и те же файлы сохранений для ваших игр. + +При выборе «Из Eden» предыдущие сохраненные данные, хранящиеся в Ryujinx, будут удалены, и наоборот для «Из Ryujinx». + + + + From Eden + Из Eden + + + + From Ryujinx + Из Ryujinx + + + + Cancel + Отмена + + + + Failed to link save data + Не удалось связать данные + + + + OS returned error: %1 + ОС вернула ошибку: %1 + + SequenceDialog @@ -9351,143 +10588,31 @@ p, li { white-space: pre-wrap; } - WaitTreeCallstack + SetPlayTimeDialog - - Call stack - Стэк вызовов - - - - WaitTreeSynchronizationObject - - - [%1] %2 - [%1] %2 + + Set Play Time Data + Изменить игровое время - - waited by no thread - не ожидается ни одним потоком - - - - WaitTreeThread - - - runnable - runnable + + Hours: + Часы: - - paused - paused + + Minutes: + Минуты: - - sleeping - sleeping + + Seconds: + Секунды: - - waiting for IPC reply - ожидание ответа IPC - - - - waiting for objects - ожидание объектов - - - - waiting for condition variable - waiting for condition variable - - - - waiting for address arbiter - waiting for address arbiter - - - - waiting for suspend resume - waiting for suspend resume - - - - waiting - waiting - - - - initialized - initialized - - - - terminated - terminated - - - - unknown - неизвестно - - - - PC = 0x%1 LR = 0x%2 - PC = 0x%1 LR = 0x%2 - - - - ideal - ideal - - - - core %1 - ядро %1 - - - - processor = %1 - процессор = %1 - - - - affinity mask = %1 - маска сходства = %1 - - - - thread id = %1 - идентификатор потока = %1 - - - - priority = %1(current) / %2(normal) - приоритет = %1(текущий) / %2(обычный) - - - - last running ticks = %1 - last running ticks = %1 - - - - WaitTreeThreadList - - - waited by thread - ожидается потоком - - - - WaitTreeWidget - - - &Wait Tree - [&W] Дерево ожидания + + Total play time reached maximum. + Общее максимальное игровое время. diff --git a/dist/languages/sv.ts b/dist/languages/sv.ts index c09132e468..8c525ba02a 100644 --- a/dist/languages/sv.ts +++ b/dist/languages/sv.ts @@ -1,25 +1,15 @@ - - - + AboutDialog - - About yuzu - Om yuzu - - - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - - About eden - + About Eden + Om Eden - <html><head/><body><p><span style=" font-size:28pt;">eden</span></p></body></html> - + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> @@ -34,70 +24,57 @@ p, li { white-space: pre-wrap; } hr { height: 1px; border-width: 0; } li.unchecked::marker { content: "\2610"; } li.checked::marker { content: "\2612"; } -</style></head><body style=" font-family:'Adwaita Sans'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> - +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css"> +p, li { white-space: pre-wrap; } +hr { height: 1px; border-width: 0; } +li.unchecked::marker { content: "\2610"; } +li.checked::marker { content: "\2612"; } +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden är en experimentell emulator för Nintendo Switch baserad på öppen källkod och licensierad under GPLv3.0+ som baseras på yuzu-emulatorn vars utveckling avslutades i mars 2024. <br /><br />Denna programvara bör inte användas för att spela spel som du inte har skaffat på laglig väg.</span></p></body></html> - <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">This software should not be used to play games you have not legally obtained.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu är en experimentell Nintendo Switch emulator byggd på öppen källkod licenserad under GPL.3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Denna mjukvara bör inte användas för att spela spel som du inte har förvärvat på laglig väg.</span></p></body></html> - - - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Hemsida</span></a>I<a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Källkod</span></a>I<a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Bidragsgivare</span></a>I<a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licens</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Webbplats</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Källkod</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Bidragsgivare</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licens</span></a></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. eden is not affiliated with Nintendo in any way.</span></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; är ett varumärke Nintendo äger. yuzu är inte på något sätt associerat med Nintendo.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. Eden is not affiliated with Nintendo in any way.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; är ett varumärke som tillhör Nintendo. Eden har ingen anknytning till Nintendo..</span></p></body></html> CalibrationConfigurationDialog - + Communicating with the server... Kommunicerar med servern... - + Cancel Avbryt - + Touch the top left corner <br>of your touchpad. - Tryck på det övre vänstra hörnet <br>på pekplattan. + Tryck på det övre vänstra hörnet <br>på din pekplatta. - + Now touch the bottom right corner <br>of your touchpad. - Tryck nu på det nedre högra hörnet <br> på pekplattan + Tryck nu på det nedre högra hörnet <br>på din pekplatta. - + Configuration completed! - Konfiguration slutförd! + Konfigurationen är klar! - + OK OK @@ -112,7 +89,7 @@ p, li { white-space: pre-wrap; } Send Chat Message - Skicka Chat- meddelande + Skicka chattmeddelande @@ -120,84 +97,84 @@ p, li { white-space: pre-wrap; } Skicka meddelande - + Members Medlemmar - + %1 has joined - %1 har anslutit + %1 har gått med - + %1 has left %1 har lämnat - + %1 has been kicked - %1 har blivit utkastad + %1 har blivit utsparkad - + %1 has been banned - %1 har blivit bannlyst + %1 har blivit avstängd - + %1 has been unbanned - %1 har haft dess bannlysning upphävd. + %1 har fått sin avstängning upphävd - + View Profile - Se Profil + Visa profil - - + + Block Player - Blockera Spelare + Blockera spelare - + When you block a player, you will no longer receive chat messages from them.<br><br>Are you sure you would like to block %1? - När du blockerar en spelare så kommer du inte längre att kunna ta emot chat-meddelanden från denne. <br><br>Är du säker på att du vill blockera %1? + När du blockerar en spelare kommer du inte längre att få chattmeddelanden från dem.<br><br>Är du säker på att du vill blockera %1? + + + + Kick + Sparka ut - Kick - Kasta ut + Ban + Stäng av - - Ban - Bannlys + + Kick Player + Sparka ut spelare - Kick Player - Kasta ut Spelare + Are you sure you would like to <b>kick</b> %1? + Är du säker på att du vill <b>sparka</b> %1? - - Are you sure you would like to <b>kick</b> %1? - Är du säker på att du vill <b>kasta ut</b> %1? + + Ban Player + Stäng av spelare - Ban Player - Bannlys Spelare - - - Are you sure you would like to <b>kick and ban</b> %1? This would ban both their forum username and their IP address. - Är du säker på att du vill <b>sparka ut och bannlysa</b> %1? + Är du säker på att du vill <b>sparka och stänga av</b> %1? -Detta kommer bannlysa både dennes användarnamn på forum samt IP-adress. +Detta skulle stänga av både deras forumanvändarnamn och deras IP-adress. @@ -220,25 +197,25 @@ Detta kommer bannlysa både dennes användarnamn på forum samt IP-adress. Leave Room - Lämna Rum + Lämna rummet ClientRoomWindow - + Connected - Uppkopplad + Ansluten - + Disconnected - Nedkopplad + Frånkopplad - + %1 - %2 (%3/%4 members) - connected - %1 - %2 (%3/%4 medlemmar) - Uppkopplad + %1 - %2 (%3/%4 medlemmar) - ansluten @@ -246,7 +223,7 @@ Detta kommer bannlysa både dennes användarnamn på forum samt IP-adress. Report Compatibility - Rapportera Kompatibilitet + Rapportera kompatibilitet @@ -257,139 +234,135 @@ Detta kommer bannlysa både dennes användarnamn på forum samt IP-adress. Report Game Compatibility - Rapportera Spelkompatibilitet - - - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of yuzu you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected yuzu account</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Skulle du välja att skicka in ett testfall till </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzus Kompatibilitetslista </span></a><span style=" font-size:10pt;">, så kommer följande information sparas och visas på sidan: </span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Hårdvaruinformation (CPU / GPU / Operativsystem) </li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Vilken version av yuzu du använder </li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Det anslutna yuzu kontot </li></ul></body></html> + Rapportera spelkompatibilitet <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">eden Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of eden you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected eden account</li></ul></body></html> - + <html><head/><body><p><span style=" font-size:10pt;">Om du väljer att skicka in ett testresultat till </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">edens kompatibilitetslista</span></a><span style=" font-size:10pt;"> kommer följande information kommer att samlas in och visas på webbplatsen:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hårdvaruinformation (CPU / GPU / operativsystem)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Vilken version av eden du kör</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Det anslutna eden-kontot</li></ul></body></html> <html><head/><body><p>Does the game boot?</p></body></html> - <html><head/><body><p>Startar Spelet? </p></body></html> + <html><head/><body><p>Startar spelet?</p></body></html> Yes The game starts to output video or audio - Ja Spelet öppnar till utmatning av video eller audio + Ja Spelet börjar mata ut video eller ljud No The game doesn't get past the "Launching..." screen - Nej Spelet öppnar ej förbi "Startar..." skärmen + Nej Spelet kommer inte längre än till skärmen "Startar..." Yes The game gets past the intro/menu and into gameplay - Ja Spelet öppnar förbi introt/menyn och in i själva spelandet + Ja Spelet tar sig förbi intro/meny och in i spelet No The game crashes or freezes while loading or using the menu - + Nej Spelet kraschar eller fryser när det laddas eller när menyn används <html><head/><body><p>Does the game reach gameplay?</p></body></html> - + <html><head/><body><p>Når spelet upp till spelbarhet?</p></body></html> Yes The game works without crashes - + Ja Spelet fungerar utan kraschar No The game crashes or freezes during gameplay - + Nej Spelet kraschar eller fryser under spelets gång <html><head/><body><p>Does the game work without crashing, freezing or locking up during gameplay?</p></body></html> - + <html><head/><body><p>Fungerar spelet utan att krascha, frysa eller låsa sig under spelets gång?</p></body></html> Yes The game can be finished without any workarounds - + Ja Spelet kan slutföras utan några lösningar No The game can't progress past a certain area - + Nej Spelet kan inte fortsätta förbi ett visst område <html><head/><body><p>Is the game completely playable from start to finish?</p></body></html> - + <html><head/><body><p>Är spelet helt spelbart från början till slut?</p></body></html> Major The game has major graphical errors - + Större Spelet har stora grafiska fel Minor The game has minor graphical errors - + Mindre Spelet har mindre grafiska fel None Everything is rendered as it looks on the Nintendo Switch - + Inget Allt återges som det ser ut på Nintendo Switch <html><head/><body><p>Does the game have any graphical glitches?</p></body></html> - + <html><head/><body><p>Har spelet några grafiska problem?</p></body></html> Major The game has major audio errors - + Större Spelet har stora ljudfel Minor The game has minor audio errors - + Mindre Spelet har mindre ljudfel None Audio is played perfectly - + Inget Ljudet spelas upp perfekt <html><head/><body><p>Does the game have any audio glitches / missing effects?</p></body></html> - + <html><head/><body><p>Har spelet några ljudstörningar / saknade effekter?</p></body></html> Thank you for your submission! - Tack för din feedback! + Tack för att du skickade in! - + Submitting - Skickar in + Skickar - + Communication error Kommunikationsfel - + An error occurred while sending the Testcase - Ett fel inträffade medan Testcase skickades + Ett fel inträffade när testfallet skickades - + Next Nästa @@ -397,1517 +370,1928 @@ Detta kommer bannlysa både dennes användarnamn på forum samt IP-adress. ConfigurationShared - + % % - + Amiibo editor - + Amiibo-redigerare - + Controller configuration - + Konfiguration av kontroller - + Data erase - + Dataradering - + Error Fel - + Net connect - + Nätanslutning - + Player select - + Välj spelare - + Software keyboard - + Programvarutangentbord - + Mii Edit - + Mii-redigering - + Online web - + Online webb - + Shop - + Butik - + Photo viewer - + Bildvisare - + Offline web - + Offline webb - + Login share - + Inloggningsdelning - + Wifi web auth - + Wifi-autentisering via webben - + My page - + Min sida - + + Enable Overlay Applet + Aktivera överläggsapplet + + + + Enables Horizon's built-in overlay applet. Press and hold the home button for 1 second to show it. + Aktiverar Horizons inbyggda överläggsapplet. Håll hemknappen intryckt i 1 sekund för att visa den. + + + Output Engine: - Utgångsmotor: + Utmatningsmotor: - + Output Device: - + Utmatningsenhet: - + Input Device: - + Inmatningsenhet: - + Mute audio - + Stäng av ljudet - + Volume: Volym: - + Mute audio when in background - + Stäng av ljudet när det är i bakgrunden - + Multicore CPU Emulation - Flerkärnig CPU-emulering + Emulering av flerkärnig CPU - - This option increases CPU emulation thread use from 1 to the Switch’s maximum of 4. -This is mainly a debug option and shouldn’t be disabled. - + + This option increases CPU emulation thread use from 1 to the maximum of 4. +This is mainly a debug option and shouldn't be disabled. + Det här alternativet ökar användningen av CPU-emulatortrådar från 1 till maximalt 4. +Det här är främst ett felsökningsalternativ och bör inte vara inaktiverat. - + Memory Layout - + Minneslayout - - Increases the amount of emulated RAM from the stock 4GB of the retail Switch to the developer kit's 8/6GB. -It’s doesn’t improve stability or performance and is intended to let big texture mods fit in emulated RAM. -Enabling it will increase memory use. It is not recommended to enable unless a specific game with a texture mod needs it. - + + Increases the amount of emulated RAM. +Doesn't affect performance/stability but may allow HD texture mods to load. + Ökar mängden emulerat RAM-minne. +Påverkar inte prestanda/stabilitet men kan göra det möjligt att läsa in HD-texturmods. - + Limit Speed Percent - Begränsa hastighetsprocent + Begränsa hastighet i procent - - Controls the game's maximum rendering speed, but it’s up to each game if it runs faster or not. + + Controls the game's maximum rendering speed, but it's up to each game if it runs faster or not. 200% for a 30 FPS game is 60 FPS, and for a 60 FPS game it will be 120 FPS. Disabling it means unlocking the framerate to the maximum your PC can reach. - + Kontrollerar spelets maximala renderingshastighet, men det är upp till varje spel om det körs snabbare eller inte. +200% för ett spel med 30 bilder/s är 60 bilder/s, och för ett spel med 60 bilder/s blir det 120 bilder/s. +Att inaktivera det innebär att du låser upp bildfrekvensen till det maximala som din dator kan nå. - + + Turbo Speed + Turbohastighet + + + + When the Turbo Speed hotkey is pressed, the speed will be limited to this percentage. + När snabbtangenten Turbohastighet trycks ned begränsas hastigheten till denna procentandel. + + + + Slow Speed + Låg hastighet + + + + When the Slow Speed hotkey is pressed, the speed will be limited to this percentage. + När snabbtangenten för låg hastighet trycks ned begränsas hastigheten till denna procentandel. + + + Synchronize Core Speed - + Synkronisera kärnhastigheten - - Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). -Compatibility varies by game; many (especially older ones) may not respond well. + + Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). Can help reduce stuttering at lower framerates. - + Synkroniserar CPU-kärnans hastighet med spelets maximala renderingshastighet för att öka bilder/s utan att påverka spelets hastighet (animationer, fysik etc.). +Kan bidra till att minska hackande vid lägre bildfrekvenser. - + Accuracy: Noggrannhet: - - This setting controls the accuracy of the emulated CPU. -Don't change this unless you know what you are doing. - + + Change the accuracy of the emulated CPU (for debugging only). + Ändra noggrannheten för den emulerade CPU:n (endast för felsökning). - - + + Backend: - + Bakände: - - Fast CPU Time - + + CPU Overclock + CPU-överklockning - + Overclocks the emulated CPU to remove some FPS limiters. Weaker CPUs may see reduced performance, and certain games may behave improperly. Use Boost (1700MHz) to run at the Switch's highest native clock, or Fast (2000MHz) to run at 2x clock. - + Överklockar den emulerade processorn för att ta bort vissa FPS-begränsningar. Svagare processorer kan få minskad prestanda och vissa spel kan bete sig felaktigt. +Använd Boost (1700MHz) för att köra med Switchens högsta inbyggda klocka, eller Fast (2000MHz) för att köra med 2x klocka. - + + Custom CPU Ticks + Anpassade CPU-ticks + + + + Set a custom value of CPU ticks. Higher values can increase performance, but may cause deadlocks. A range of 77-21000 is recommended. + Ange ett anpassat värde för CPU-ticks. Högre värden kan öka prestandan, men kan orsaka deadlocks. Ett intervall på 77-21000 rekommenderas. + + + + Enable Host MMU Emulation (fastmem) + Aktivera värd-MMU-emulering (fastmem) + + + + This optimization speeds up memory accesses by the guest program. +Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU. +Disabling this forces all memory accesses to use Software MMU Emulation. + Denna optimering påskyndar minnesåtkomsten för gästprogrammet. +Om den aktiveras sker läsning/skrivning av gästminnet direkt i minnet och använder värdens MMU. +Om den inaktiveras tvingas all minnesåtkomst att använda programvaru-MMU-emulering. + + + Unfuse FMA (improve performance on CPUs without FMA) - Sära FMA (förbättra prestanda på CPU:er utan FMA) + Unfuse FMA (förbättrar prestanda på CPU:er utan FMA) - + This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support. - + Detta alternativ förbättrar hastigheten genom att minska noggrannheten i fused-multiply-add-instruktioner på processorer utan inbyggt FMA-stöd. - + Faster FRSQRTE and FRECPE Snabbare FRSQRTE och FRECPE - + This option improves the speed of some approximate floating-point functions by using less accurate native approximations. - + Detta alternativ förbättrar hastigheten för vissa approximativa flyttalsfunktioner genom att använda mindre exakta inbyggda approximationer. - + Faster ASIMD instructions (32 bits only) - Snabbare ASIMD instruktioner (enbart 32-bitars) + Snabbare ASIMD-instruktioner (endast 32 bitar) - + This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes. - + Detta alternativ förbättrar hastigheten för 32-bitars ASIMD flyttalsfunktioner genom att köra med felaktiga avrundningslägen. - + Inaccurate NaN handling - + Felaktig NaN-hantering - + This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions. - + Detta alternativ förbättrar hastigheten genom att ta bort NaN-kontrollen. +Observera att detta också minskar noggrannheten för vissa instruktioner för flyttal. - + Disable address space checks - + Inaktivera kontroller av adressutrymme - - This option improves speed by eliminating a safety check before every memory read/write in guest. -Disabling it may allow a game to read/write the emulator's memory. - + + This option improves speed by eliminating a safety check before every memory operation. +Disabling it may allow arbitrary code execution. + Det här alternativet förbättrar hastigheten genom att eliminera en säkerhetskontroll före varje minnesoperation. +Om du inaktiverar det kan det bli möjligt att köra godtycklig kod. - + Ignore global monitor - + Ignorera global monitor - + 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. - + Detta alternativ förbättrar hastigheten genom att endast förlita sig på semantiken i cmpxchg för att garantera säkerheten för instruktioner med exklusiv åtkomst. +Observera att detta kan leda till deadlocks och andra tävlingsförhållanden. - + API: API: - - Switches between the available graphics APIs. -Vulkan is recommended in most cases. - + + Changes the output graphics API. +Vulkan is recommended. + Ändrar grafik-API:et för utdata. +Vulkan rekommenderas. - + Device: Enhet: - - This setting selects the GPU to use with the Vulkan backend. - + + This setting selects the GPU to use (Vulkan only). + Denna inställning väljer vilken GPU som ska användas (endast Vulkan). - - Shader Backend: - - - - - The shader backend to use for the OpenGL renderer. -GLSL is the fastest in performance and the best in rendering accuracy. -GLASM is a deprecated NVIDIA-only backend that offers much better shader building performance at the cost of FPS and rendering accuracy. -SPIR-V compiles the fastest, but yields poor results on most GPU drivers. - - - - + Resolution: - + Status: - - Forces the game to render at a different resolution. -Higher resolutions require much more VRAM and bandwidth. -Options lower than 1X can cause rendering issues. - + + Forces to render at a different resolution. +Higher resolutions require more VRAM and bandwidth. +Options lower than 1X can cause artifacts. + Tvingar rendering till en annan upplösning. +Högre upplösningar kräver mer VRAM och bandbredd. +Alternativ lägre än 1X kan orsaka artefakter. - + Window Adapting Filter: - + Fönsteranpassande filter: - + FSR Sharpness: - + FSR-skärpa: - - Determines how sharpened the image will look while using FSR’s dynamic contrast. - + + Determines how sharpened the image will look using FSR's dynamic contrast. + Bestämmer hur skarp bilden ska se ut med hjälp av FSR:s dynamiska kontrast. - + Anti-Aliasing Method: - + Metod för kantutjämning: - + The anti-aliasing method to use. SMAA offers the best quality. -FXAA has a lower performance impact and can produce a better and more stable picture under very low resolutions. - +FXAA can produce a more stable picture in lower resolutions. + Den kantutjämningsmetod som ska användas. +SMAA erbjuder den bästa kvaliteten. +FXAA kan ge en stabilare bild i lägre upplösningar. - + Fullscreen Mode: - + Helskärmsläge: - + The method used to render the window in fullscreen. Borderless offers the best compatibility with the on-screen keyboard that some games request for input. Exclusive fullscreen may offer better performance and better Freesync/Gsync support. - + Den metod som används för att rendera fönstret i helskärm. +Borderless ger bäst kompatibilitet med skärmtangentbordet som vissa spel kräver för inmatning. +Exklusiv helskärm kan ge bättre prestanda och bättre stöd för Freesync/Gsync. - + Aspect Ratio: Bildförhållande: - - Stretches the game to fit the specified aspect ratio. -Switch games only support 16:9, so custom game mods are required to get other ratios. + + Stretches the renderer to fit the specified aspect ratio. +Most games only support 16:9, so modifications are required to get other ratios. Also controls the aspect ratio of captured screenshots. - + Sträcker ut renderaren så att den passar det angivna bildförhållandet. +De flesta spel stöder endast 16:9, så modifieringar krävs för att få andra bildförhållanden. +Kontrollerar även bildförhållandet för tagna skärmdumpar. - - Use disk pipeline cache - + + Use persistent pipeline cache + Använd permanent pipeline-cache - + Allows saving shaders to storage for faster loading on following game boots. Disabling it is only intended for debugging. - + Gör det möjligt att spara shaders i lagringsutrymmet för snabbare laddning vid nästa spelstart. +Att inaktivera detta är endast avsett för felsökning. - - Optimize SPIRV output shader - + + Optimize SPIRV output + Optimera SPIRV-utdata - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. This feature is experimental. - + Kör ytterligare ett optimeringspass över genererade SPIRV-shaders. +Kommer att öka tidsåtgången för shaderkompilering. +Kan förbättra prestandan något. +Denna funktion är experimentell. - - Use asynchronous GPU emulation - Använd asynkron GPU-emulering - - - - Uses an extra CPU thread for rendering. -This option should always remain enabled. - - - - + NVDEC emulation: - + NVDEC-emulering: - + Specifies how videos should be decoded. It can either use the CPU or the GPU for decoding, or perform no decoding at all (black screen on videos). In most cases, GPU decoding provides the best performance. - + Anger hur videoklipp ska avkodas. +Den kan antingen använda CPU eller GPU för avkodning, eller inte utföra någon avkodning alls (svart skärm på videoklipp). +I de flesta fall ger GPU-avkodning bäst prestanda. - + ASTC Decoding Method: - + ASTC-avkodningsmetod: - + This option controls how ASTC textures should be decoded. -CPU: Use the CPU for decoding, slowest but safest method. -GPU: Use the GPU's compute shaders to decode ASTC textures, recommended for most games and users. -CPU Asynchronously: Use the CPU to decode ASTC textures as they arrive. Completely eliminates ASTC decoding -stuttering at the cost of rendering issues while the texture is being decoded. - +CPU: Use the CPU for decoding. +GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). +CPU Asynchronously: Use the CPU to decode ASTC textures on demand. EliminatesASTC decoding +stuttering but may present artifacts. + Det här alternativet att kontrollera hur ASTC-texturer ska avkodas. +CPU: Använd CPU:n för avkodning. +GPU: Använd GPU:ns beräkningsskuggare för att avkoda ASTC-texturer (rekommenderas). +CPU asynkront: Använd CPU:n för att avkoda ASTC-texturer vid behov. Eliminerar ASTC-avkodningsstörningar +men kan ge artefakter. - + ASTC Recompression Method: - + ASTC-återkomprimeringsmetod: - - Almost all desktop and laptop dedicated GPUs lack support for ASTC textures, forcing the emulator to decompress to an intermediate format any card supports, RGBA8. -This option recompresses RGBA8 to either the BC1 or BC3 format, saving VRAM but negatively affecting image quality. - + + Most GPUs lack support for ASTC textures and must decompress to anintermediate format: RGBA8. +BC1/BC3: The intermediate format will be recompressed to BC1 or BC3 format, + saving VRAM but degrading image quality. + De flesta GPU:er saknar stöd för ASTC-texturer och måste dekomprimeras till ett mellanliggande format: RGBA8. +BC1/BC3: Det mellanliggande formatet kommer att komprimeras om till BC1- eller BC3-format, +vilket sparar VRAM men försämrar bildkvaliteten. - + + Frame Pacing Mode (Vulkan only) + Frame Pacing Mode (endast Vulkan) + + + + Controls how the emulator manages frame pacing to reduce stuttering and make the frame rate smoother and more consistent. + Styr hur emulatorn hanterar bildhastigheten för att minska hackighet och göra bildfrekvensen jämnare och mer konsekvent. + + + VRAM Usage Mode: - + VRAM-användningsläge: - - Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. Has no effect on integrated graphics. Aggressive mode may severely impact the performance of other applications such as recording software. - + + Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. +Aggressive mode may impact performance of other applications such as recording software. + Väljer om emulatorn ska prioritera att spara minne eller utnyttja tillgängligt videominne maximalt för prestanda. +Aggressivt läge kan påverka prestandan hos andra program, till exempel inspelningsprogram. - + + Skip CPU Inner Invalidation + Hoppa över CPU:ns interna ogiltigförklaring + + + + Skips certain cache invalidations during memory updates, reducing CPU usage and improving latency. This may cause soft-crashes. + Hoppar över vissa cache-ogiltigförklaringar under minnesuppdateringar, vilket minskar CPU-användningen och förbättrar latensen. Detta kan orsaka mjuka krascher. + + + VSync Mode: - + VSync-läge: - + FIFO (VSync) does not drop frames or exhibit tearing but is limited by the screen refresh rate. -FIFO Relaxed is similar to FIFO but allows tearing as it recovers from a slow down. +FIFO Relaxed 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. - +Immediate (no synchronization) presents whatever is available and can exhibit tearing. + FIFO (VSync) tappar inte bildrutor och uppvisar inte tearing, men begränsas av skärmens uppdateringsfrekvens. +FIFO Relaxed tillåter tearing när det återhämtar sig från en avmattning. +Mailbox kan ha lägre latens än FIFO och uppvisar inte tearing, men kan tappa bildrutor. +Immediate (ingen synkronisering) visar allt som är tillgängligt och kan uppvisa tearing. - + + Sync Memory Operations + Synkronisera minnesoperationer + + + + Ensures data consistency between compute and memory operations. +This option fixes issues in games, but may degrade performance. +Unreal Engine 4 games often see the most significant changes thereof. + Kontrollerar datakonsistens mellan beräknings- och minnesoperationer. + +Det här alternativet åtgärdar problem i spel, men kan försämra prestandan. + +Unreal Engine 4-spel upplever ofta de mest betydande förändringarna av detta. + + + Enable asynchronous presentation (Vulkan only) - + Aktivera asynkron presentation (endast Vulkan) - + Slightly improves performance by moving presentation to a separate CPU thread. - + Förbättrar prestandan något genom att flytta presentationen till en separat CPU-tråd. - + Force maximum clocks (Vulkan only) - + Tvinga fram maximal klockfrekvens (endast Vulkan) - + Runs work in the background while waiting for graphics commands to keep the GPU from lowering its clock speed. - + Körs i bakgrunden i väntan på grafikkommandon för att förhindra att GPU:n sänker sin klockhastighet. - + Anisotropic Filtering: Anisotropisk filtrering: - + Controls the quality of texture rendering at oblique angles. -It’s a light setting and safe to set at 16x on most GPUs. - +Safe to set at 16x on most GPUs. + Kontrollerar kvaliteten på texturrendering vid sneda vinklar. + +Säker att ställa in på 16x på de flesta GPU:er. - - Accuracy Level: - Noggranhetsnivå: + + GPU Mode: + GPU-läge: - - GPU emulation accuracy. -Most games render fine with Normal, but High is still required for some. -Particles tend to only render correctly with High accuracy. -Extreme should only be used for debugging. -This option can be changed while playing. -Some games may require booting on high to render properly. - + + Controls the GPU emulation mode. +Most games render fine with Fast or Balanced modes, but Accurate is still required for some. +Particles tend to only render correctly with Accurate mode. + Kontrollerar GPU-emuleringsläget. +De flesta spel renderas bra med lägena Snabb eller Balanserad, men för vissa krävs fortfarande läget Noggrann. +Partiklar tenderar att endast renderas korrekt med läget Noggrann. - - Use asynchronous shader building (Hack) - + + DMA Accuracy: + DMA-noggrannhet: - - Enables asynchronous shader compilation, which may reduce shader stutter. -This feature is experimental. - + + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. + Kontrollerar DMA-precisionens noggrannhet. Säker precision åtgärdar problem i vissa spel men kan försämra prestandan. - + + Enable asynchronous shader compilation + Aktivera asynkron shaderkompilering + + + + May reduce shader stutter. + Kan minska shader-hackighet. + + + + Fast GPU Time + Snabb GPU-tid + + + + Overclocks the emulated GPU to increase dynamic resolution and render distance. +Use 256 for maximal performance and 512 for maximal graphics fidelity. + Överklockar den emulerade GPU:n för att öka den dynamiska upplösningen och renderingsavståndet. +Använd 256 för maximal prestanda och 512 för maximal grafisk trohet. + + + + GPU Unswizzle + GPU Unswizzle + + + + Accelerates BCn 3D texture decoding using GPU compute. +Disable if experiencing crashes or graphical glitches. + Accelererar avkodning av BCn 3D-texturer med hjälp av GPU-beräkningar. +Inaktivera om du upplever krascher eller grafiska fel. + + + + GPU Unswizzle Max Texture Size + Maximal texturstorlek för GPU Unswizzle + + + + Sets the maximum size (MiB) for GPU-based texture unswizzling. +While the GPU is faster for medium and large textures, the CPU may be more efficient for very small ones. +Adjust this to find the balance between GPU acceleration and CPU overhead. + Ställer in maximal storlek (MiB) för GPU-baserad textur-unswizzling. +GPU är snabbare för medelstora och stora texturer, men CPU kan vara effektivare för mycket små texturer. +Justera detta för att hitta balansen mellan GPU-acceleration och CPU-överbelastning. + + + + GPU Unswizzle Stream Size + Strömstorlek för GPU Unswizzle + + + + Sets the maximum amount of texture data (in MiB) processed per frame. +Higher values can reduce stutter during texture loading but may impact frame consistency. + Ställer in den maximala mängden texturdata (i MiB) som bearbetas per bildruta. +Högre värden kan minska hackighet under texturinläsning men kan påverka bildrutans konsistens. + + + + GPU Unswizzle Chunk Size + Chunk-storlek för GPU Unswizzle + + + + Determines the number of depth slices processed in a single dispatch. +Increasing this can improve throughput on high-end GPUs but may cause TDR or driver timeouts on weaker hardware. + Bestämmer antalet djupskivor som bearbetas i en enda sändning. +Att öka detta kan förbättra genomströmningen på avancerade GPU:er, men kan orsaka TDR eller drivrutinstidsgränser på svagare hårdvara. + + + Use Vulkan pipeline cache - + Använda Vulkan pipeline-cache - + Enables GPU vendor-specific pipeline cache. This option can improve shader loading time significantly in cases where the Vulkan driver does not store pipeline cache files internally. - + Aktiverar GPU-leverantörsspecifik pipeline-cache. +Det här alternativet kan förbättra laddningstiden för shaders avsevärt i fall där Vulkan-drivrutinen inte lagrar pipeline-cache-filer internt. - + Enable Compute Pipelines (Intel Vulkan Only) - + Aktivera compute pipelines (endast Intel Vulkan) - - Enable compute pipelines, required by some games. -This setting only exists for Intel proprietary drivers, and may crash if enabled. + + 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. - + Krävs av vissa spel. +Denna inställning finns endast för Intels egna drivrutiner och kan orsaka krascher om den aktiveras. +Beräkningspipelines är alltid aktiverade på alla andra drivrutiner. - + Enable Reactive Flushing - + Aktivera Reactive Flushing - + Uses reactive flushing instead of predictive flushing, allowing more accurate memory syncing. - + Använder reaktiv rensning i stället för prediktiv rensning, vilket ger mer exakt minnessynkning. - + Sync to framerate of video playback - + Synkronisera med bildfrekvensen för videouppspelning - + Run the game at normal speed during video playback, even when the framerate is unlocked. - + Kör spelet i normal hastighet under videouppspelning, även när bildfrekvensen är upplåst. - + Barrier feedback loops - + Återkopplingsloopar för barriärer - + Improves rendering of transparency effects in specific games. - + Förbättrar renderingen av transparenseffekter i vissa spel. - + + Enable buffer history + Aktivera bufferthistorik + + + + Enables access to previous buffer states. +This option may improve rendering quality and performance consistency in some games. + Aktiverar åtkomst till tidigare bufferttillstånd. +Det här alternativet kan förbättra renderingskvaliteten och prestandakonsistensen i vissa spel. + + + + Fix bloom effects + Korrigera bloom-effekter + + + + Removes bloom in Burnout. + Tar bort bloom i Burnout. + + + + Enable Legacy Rescale Pass + Aktivera äldre omskalningspass + + + + May fix rescale issues in some games by relying on behavior from the previous implementation. +Legacy behavior workaround that fixes line artifacts on AMD and Intel GPUs, and grey texture flicker on Nvidia GPUs in Luigis Mansion 3. + Kan åtgärda skalningsproblem i vissa spel genom att förlita sig på beteendet från den tidigare implementeringen. +Äldre beteende som åtgärdar linjeartefakter på AMD- och Intel-GPU:er och grå texturflimmer på Nvidia-GPU:er i Luigis Mansion 3. + + + + Extended Dynamic State + Utökad dynamisk status + + + + Controls the number of features that can be used in Extended Dynamic State. +Higher states allow for more features and can increase performance, but may cause additional graphical issues. + Kontrollerar antalet funktioner som kan användas i utökat dynamiskt tillstånd. +Högre tillstånd möjliggör fler funktioner och kan öka prestandan, men kan orsaka ytterligare grafiska problem. + + + + Vertex Input Dynamic State + Dynamiskt tillstånd för vertexinmatning + + + + Enables vertex input dynamic state feature for better quality and performance. + Aktiverar funktionen för dynamiskt tillstånd för vertexinmatning för bättre kvalitet och prestanda. + + + + Sample Shading + Provskuggning + + + + Allows the fragment shader to execute per sample in a multi-sampled fragment instead of once per fragment. Improves graphics quality at the cost of performance. +Higher values improve quality but degrade performance. + Tillåter fragment-shadern att exekveras per prov i ett multisamplade fragment istället för en gång per fragment. Förbättrar grafikens kvalitet på bekostnad av prestanda. +Högre värden förbättrar kvaliteten men försämrar prestandan. + + + RNG Seed - RNG Seed + RNG-frö - + Controls the seed of the random number generator. -Mainly used for speedrunning purposes. - +Mainly used for speedrunning. + Att kontrollera fröet till slumptalsgeneratorn. +Används främst för speedrunning. - + Device Name - + Enhetsnamn - - The name of the emulated Switch. - + + The name of the console. + Konsolens namn. - + Custom RTC Date: - + Anpassat RTC-datum: - - This option allows to change the emulated clock of the Switch. + + This option allows to change the clock of the console. Can be used to manipulate time in games. - + Med det här alternativet kan du ändra klockan på konsolen. +Kan användas för att manipulera tiden i spel. - + + The number of seconds from the current unix time + Antalet sekunder från aktuell Unix-tid + + + Language: - + Språk: - - Note: this can be overridden when region setting is auto-select - Notera: detta kan bli överskritt medans regionsinställningarna är satta till auto-select + + This option can be overridden when region setting is auto-select + Det här alternativet kan åsidosättas när regioninställningen är automatiskt vald. - + Region: Region: - - The region of the emulated Switch. - + + The region of the console. + Konsolens region. - + Time Zone: Tidszon: - - The time zone of the emulated Switch. - + + The time zone of the console. + Konsolens tidszon. - + Sound Output Mode: - + Ljudutmatningsläge: - + Console Mode: - + Konsolläge: - - Selects if the console is emulated in Docked or Handheld mode. + + Selects if the console is in Docked or Handheld mode. Games will change their resolution, details and supported controllers and depending on this setting. Setting to Handheld can help improve performance for low end systems. - + Väljer om konsolen är i dockat eller handhållet läge. +Spel ändrar upplösning, detaljer och stödda kontroller beroende på denna inställning. +Inställningen Handhållen kan förbättra prestandan för enklare system. - - Prompt for user on game boot - Fråga efter användare vid spelstart + + Unit Serial + Enhetens serienr - - Pause emulation when in background - Pausa emulationen när fönstret är i bakgrunden + + Battery Serial + Batteriets serienr - - Fast GPU Time (Hack) - + + Debug knobs + Felsökningsknappar - - Overclocks the emulated GPU to increase dynamic resolution and render distance. -Use 128 for maximal performance and 512 for maximal graphics fidelity. - + + Prompt for user profile on boot + Fråga efter användarprofil vid uppstart - - Extended Dynamic State - + + Useful if multiple people use the same PC. + Användbart om flera personer använder samma dator. - - Enables the VkExtendedDynamicState* extensions. -Higher dynamic states will generally improve performance, but may cause issues on certain games or devices. - + + Pause when not in focus + Pausa när inte i fokus - - Provoking Vertex - + + Pauses emulation when focusing on other windows. + Pausar emulering när fokus är på andra fönster. - - Improves lighting and vertex handling in certain games. -Only Vulkan 1.0+ devices support this extension. - - - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - - Ask to select a user profile on each boot, useful if multiple people use eden on the same PC. - - - - - This setting pauses eden when focusing other windows. - - - - + Confirm before stopping emulation - + Bekräfta innan emuleringen stoppas - - This setting overrides game prompts asking to confirm stopping the game. + + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - + Åsidosätter frågor om att bekräfta att emuleringen ska avslutas. +Om du aktiverar den hoppar du över sådana uppmaningar och avslutar emuleringen direkt. - + Hide mouse on inactivity - Göm mus när inaktiv + Dölj musen vid inaktivitet - - This setting hides the mouse after 2.5s of inactivity. - + + Hides the mouse after 2.5s of inactivity. + Döljer musen efter 2,5 sekunders inaktivitet. - + Disable controller applet - + Inaktivera kontroller-appleten - - Forcibly disables the use of the controller applet by guests. -When a guest attempts to open the controller applet, it is immediately closed. - + + Forcibly disables the use of the controller applet in emulated programs. +When a program attempts to open the controller applet, it is immediately closed. + Inaktiverar med tvång användningen av kontrollerappletten i emulerade program. +När ett program försöker öppna kontrollerappletten stängs den omedelbart. - + Check for updates - + Leta efter uppdateringar - + Whether or not to check for updates upon startup. - + Om uppdateringar ska sökas vid start eller inte. - + Enable Gamemode - + Aktivera Gamemode - + + Force X11 as Graphics Backend + Tvinga X11 som grafikbackend + + + Custom frontend - + Anpassad frontend - + Real applet - + Verklig applet - + Never - + Aldrig - + On Load - + Vid inläsning - + Always - + Alltid - + CPU CPU - + GPU - + GPU - + CPU Asynchronous - + CPU asynkron - + Uncompressed (Best quality) - + Okomprimerad (bästa kvalitet) - + BC1 (Low quality) - + BC1 (låg kvalitet) - + BC3 (Medium quality) - + BC3 (medelhög kvalitet) - - Conservative - - - - - Aggressive - - - - - OpenGL - - - - - Vulkan - - - - - Null - - - - - GLSL - - - - - GLASM (Assembly Shaders, NVIDIA Only) - - - - - SPIR-V (Experimental, AMD/Mesa Only) - - - - - Normal - - - - - High - - - - - Extreme - - - - + + Auto Auto - + + 30 FPS + 30 bilder/s + + + + 60 FPS + 60 bilder/s + + + + 90 FPS + 90 bilder/s + + + + 120 FPS + 120 bilder/s + + + + Conservative + Konservativ + + + + Aggressive + Aggressiv + + + + Vulkan + Vulkan + + + + OpenGL GLSL + OpenGL GLSL + + + + OpenGL GLASM (Assembly Shaders, NVIDIA Only) + OpenGL GLASM (Assembly Shaders, endast NVIDIA) + + + + OpenGL SPIR-V (Experimental, AMD/Mesa Only) + OpenGL SPIR-V (Experimentell, endast AMD/Mesa) + + + + Null + Null + + + + Fast + Snabb + + + + Balanced + Balanserad + + + + Accurate - Noggrann + Exakt - - Unsafe - Osäker - - - - Paranoid (disables most optimizations) - Paranoid (stänger av de flesta optimeringar) - - - - Dynarmic - - - - - NCE - - - - - Borderless Windowed - - - - - Exclusive Fullscreen - - - - - No Video Output - - - - - CPU Video Decoding - - - - - GPU Video Decoding (Default) - - - - - 0.25X (180p/270p) [EXPERIMENTAL] - - - - - 0.5X (360p/540p) [EXPERIMENTAL] - - - - - 0.75X (540p/810p) [EXPERIMENTAL] - - - - - 1X (720p/1080p) - - - - - 1.5X (1080p/1620p) [EXPERIMENTAL] - - - - - 2X (1440p/2160p) - - - - - 3X (2160p/3240p) - - - - - 4X (2880p/4320p) - - - - - 5X (3600p/5400p) - - - - - 6X (4320p/6480p) - - - - - 7X (5040p/7560p) - - - - - 8X (5760p/8640p) - - - - - Nearest Neighbor - - - - - Bilinear - - - - - Bicubic - - - - - Gaussian - - - - - ScaleForce - - - - - AMD FidelityFX™️ Super Resolution - - - - - Area - - - - - None - Ingen - - - - FXAA - - - - - SMAA - - - - - Default (16:9) - Standard (16:9) - - - - Force 4:3 - Tvinga 4:3 - - - - Force 21:9 - Tvinga 21:9 - - - - Force 16:10 - - - - - Stretch to Window - Tänj över fönster - - - - Automatic - - - - + + Default Standard - + + Unsafe (fast) + Osäker (snabb) + + + + Safe (stable) + Säker (stabil) + + + + Unsafe + Inte säker + + + + Paranoid (disables most optimizations) + Paranoid (inaktiverar de flesta optimeringar) + + + + Debugging + Felsökning + + + + Dynarmic + Dynarmisk + + + + NCE + NCE + + + + Borderless Windowed + Ramlöst fönsterläge + + + + Exclusive Fullscreen + Exklusiv helskärm + + + + No Video Output + Ingen videoutgång + + + + CPU Video Decoding + CPU-videoavkodning + + + + GPU Video Decoding (Default) + GPU videoavkodning (standard) + + + + 0.25X (180p/270p) [EXPERIMENTAL] + 0.25X (180p/270p) [EXPERIMENTELL] + + + + 0.5X (360p/540p) [EXPERIMENTAL] + 0.5X (360p/540p) [EXPERIMENTELL] + + + + 0.75X (540p/810p) [EXPERIMENTAL] + 0.75X (540p/810p) [EXPERIMENTELL] + + + + 1X (720p/1080p) + 1X (720p/1080p) + + + + 1.25X (900p/1350p) [EXPERIMENTAL] + 1.25X (900p/1350p) [EXPERIMENTELL] + + + + 1.5X (1080p/1620p) [EXPERIMENTAL] + 1.5X (1080p/1620p) [EXPERIMENTELL] + + + + 2X (1440p/2160p) + 2X (1440p/2160p) + + + + 3X (2160p/3240p) + 3X (2160p/3240p) + + + + 4X (2880p/4320p) + 4X (2880p/4320p) + + + + 5X (3600p/5400p) + 5X (3600p/5400p) + + + + 6X (4320p/6480p) + 6X (4320p/6480p) + + + + 7X (5040p/7560p) + 7X (5040p/7560p) + + + + 8X (5760p/8640p) + 8X (5760p/8640p) + + + + Nearest Neighbor + Närmsta granne + + + + Bilinear + Bilinjär + + + + Bicubic + Bikubisk + + + + Gaussian + Gaussisk + + + + Lanczos + Lanczos + + + + ScaleForce + ScaleForce + + + + AMD FidelityFX Super Resolution + AMD FidelityFX Super Resolution + + + + Area + Område + + + + MMPX + MMPX + + + + Zero-Tangent + Zero-Tangent + + + + B-Spline + B-Spline + + + + Mitchell + Mitchell + + + + Spline-1 + Spline-1 + + + + + None + Ingen + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Default (16:9) + Standard (16:9) + + + + Force 4:3 + Tvinga 4:3 + + + + Force 21:9 + Tvinga 21:9 + + + + Force 16:10 + Tvinga 16:10 + + + + Stretch to Window + Sträck ut till fönster + + + + Automatic + Automatiskt + + + 2x 2x - + 4x 4x - + 8x 8x - + 16x 16x - + + 32x + 32x + + + + 64x + 64x + + + Japanese (日本語) Japanska (日本語) - + American English - + Amerikansk engelska - + French (français) Franska (français) - + German (Deutsch) Tyska (Deutsch) - + Italian (italiano) Italienska (italiano) - + Spanish (español) Spanska (español) - + Chinese Kinesiska - + Korean (한국어) Koreanska (한국어) - + Dutch (Nederlands) - Holländska (Nederlands) + Nederländska (Nederlands) - + Portuguese (português) Portugisiska (português) - + Russian (Русский) Ryska (Русский) - + Taiwanese Taiwanesiska - + British English - Brittisk Engelska + Brittisk engelska - + Canadian French - Kanadensisk Franska + Kanadensisk franska - + Latin American Spanish - Latinamerikansk Spanska + Latinamerikansk spanska - + Simplified Chinese - Förenklad Kinesiska + Förenklad kinesiska - + Traditional Chinese (正體中文) - Traditionell Kinesiska (正體中文) + Traditionell kinesiska (正體中文) - + Brazilian Portuguese (português do Brasil) - + Brasiliansk portugisiska (português do Brasil) - - + + Polish (polska) + Polska (polska) + + + + Thai (แบบไทย) + Thai (แบบไทย) + + + + Japan Japan - + USA USA - + Europe - Europe + Europa - + Australia Australien - + China Kina - + Korea Korea - + Taiwan Taiwan - + Auto (%1) Auto select time zone - + Auto (%1) - + Default (%1) Default time zone - + Standard (%1) - + CET CET - + CST6CDT CST6CDT - + Cuba Kuba - + EET EET - + Egypt Egypten - + Eire - Eire + Irland - + EST EST - + EST5EDT EST5EDT - + GB GB - + GB-Eire - GB-Eire + GB-Irland - + GMT GMT - + GMT+0 GMT+0 - + GMT-0 GMT-0 - + GMT0 GMT0 - + Greenwich Greenwich - + Hongkong Hongkong - + HST HST - + Iceland Island - + Iran Iran - + Israel Israel - + Jamaica Jamaica - + Kwajalein Kwajalein - + Libya Libyen - + MET MET - + MST MST - + MST7MDT MST7MDT - + Navajo Navajo - + NZ NZ - + NZ-CHAT NZ-CHAT - + Poland Polen - + Portugal Portugal - + PRC PRC - + PST8PDT PST8PDT - + ROC ROC - + ROK ROK - + Singapore Singapore - + Turkey Turkiet - + UCT UCT - + Universal Universal - + UTC UTC - + W-SU W-SU - + WET - WET + VÅT - + Zulu Zulu - + Mono Mono - + Stereo Stereo - + Surround Surround - + 4GB DRAM (Default) - + 4 GB DRAM (standard) - + 6GB DRAM (Unsafe) - + 6 GB DRAM (osäker) - + 8GB DRAM - + 8 GB DRAM - + 10GB DRAM (Unsafe) - + 10 GB DRAM (osäker) - + 12GB DRAM (Unsafe) - + 12 GB DRAM (osäker) - - Low (128) - - - - - Medium (256) - - - - - High (512) - - - - + Docked Dockad - + Handheld - Handheld + Handhållen - + + + Off + Av + + + Boost (1700MHz) - + Boost (1700MHz) - + Fast (2000MHz) - + Snabb (2000 MHz) - + Always ask (Default) - + Fråga alltid (standard) - + Only if game specifies not to stop - + Endast om spelet anger att det inte ska stoppas - + Never ask - + Fråga aldrig + + + + + Medium (256) + Medium (256) + + + + + High (512) + Hög (512) + + + + Very Small (16 MB) + Mycket liten (16 MB) + + + + Small (32 MB) + Liten (32 MB) + + + + Normal (128 MB) + Normal (128 MB) + + + + Large (256 MB) + Stor (256 MB) + + + + Very Large (512 MB) + Mycket stor (512 MB) + + + + Very Low (4 MB) + Mycket låg (4 MB) + + + + Low (8 MB) + Låg (8 MB) + + + + Normal (16 MB) + Normal (16 MB) + + + + Medium (32 MB) + Medium (32 MB) + + + + High (64 MB) + Hög (64 MB) + + + + Very Low (32) + Mycket låg (32) + + + + Low (64) + Låg (64) + + + + Normal (128) + Normal (128) + + + + Disabled + Inaktiverad + + + + ExtendedDynamicState 1 + ExtendedDynamicState 1 + + + + ExtendedDynamicState 2 + ExtendedDynamicState 2 + + + + ExtendedDynamicState 3 + ExtendedDynamicState 3 + + + + Tree View + Trädvy + + + + Grid View + Rutnätsvy @@ -1920,12 +2304,12 @@ When a guest attempts to open the controller applet, it is immediately closed. Applets - + Appletar Applet mode preference - + Inställning för applet-läge @@ -1942,17 +2326,17 @@ When a guest attempts to open the controller applet, it is immediately closed. Configure Infrared Camera - Konfigurera Infraröd Kamera + Konfigurera infraröd kamera Select where the image of the emulated camera comes from. It may be a virtual camera or a real camera. - Välj var bilden från den emulerade kameran kommer från. Det kommer vara antingen en virtuell kamera eller en riktig kamera. + Välj varifrån bilden av den emulerade kameran kommer. Det kan vara en virtuell kamera eller en riktig kamera. Camera Image Source: - Källa för Kamerabild: + Bildkälla för kamera: @@ -1962,7 +2346,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Preview - Förhandsgranskning + Förhandsvisa @@ -1972,7 +2356,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Click to preview - Klicka för förhandsgranskning + Klicka för att förhandsvisa @@ -1980,7 +2364,7 @@ When a guest attempts to open the controller applet, it is immediately closed.Återställ till standard - + Auto Auto @@ -2005,22 +2389,22 @@ When a guest attempts to open the controller applet, it is immediately closed. We recommend setting accuracy to "Auto". - Vi rekommenderar att sätta noggrannhet till "Auto". + Vi rekommenderar att du ställer in noggrannheten på "Auto". CPU Backend - + CPU-backend Unsafe CPU Optimization Settings - Osäkra CPU-optimeringsinställningar + Osäkra inställningar för CPU-optimering These settings reduce accuracy for speed. - Dessa inställningar offrar noggrannhet för hastighet + Dessa inställningar minskar noggrannheten för att öka hastigheten. @@ -2038,12 +2422,12 @@ When a guest attempts to open the controller applet, it is immediately closed. Toggle CPU Optimizations - Växla CPU-Optimeringar + Växla CPU-optimeringar <html><head/><body><p><span style=" font-weight:600;">For debugging only.</span><br/>If you're not sure what these do, keep all of these enabled. <br/>These settings, when disabled, only take effect when CPU Debugging is enabled. </p></body></html> - <html><head/><body><p><span style=" font-weight:600;">Endast för felsökning.</span><br/> Om du inte är säker på vad dessa gör, behåll alla dessa påslagna.<br/> Dessa inställningar, när avslagna, kommer bara att ha effekt när CPU-felsökning är påslagen.</p></body></html> + <html><head/><body><p><span style=" font-weight:600;">Endast för felsökning.</span><br/>Om du inte är säker på vad dessa gör, behåll alla dessa aktiverade. <br/>Dessa inställningar, när de är inaktiverade, träder endast i kraft när CPU-felsökning är aktiverad. </p></body></html> @@ -2053,16 +2437,15 @@ When a guest attempts to open the controller applet, it is immediately closed. -<div style="white-space: nowrap">Den här optimeringen ökar hastigheten för minnesaccess av gästporgrammet.</div> -<div style="white-space: nowrap">Om på inlinar det access till PageTable::pointers till -avgjord kod.</div> -<div style="white-space: nowrap">Om av tvingas all minnesaccsess att gå genom Memory::Read/Memory::Write funktioner.</div> - + <div style="white-space: nowrap">Denna optimering snabbar upp gästprogrammets minnesåtkomst.</div> + <div style="white-space: nowrap">Om du aktiverar den inlinesas åtkomst till PageTable::-pekare i den emitterade koden.</div> + <div style="white-space: nowrap">Om du inaktiverar detta måste all minnesåtkomst gå via funktionerna Memory::Read/Memory::Write.</div> + Enable inline page tables - Sätt på inline page tables + Aktivera inline-sidtabeller @@ -2070,13 +2453,13 @@ avgjord kod.</div> <div>This optimization avoids dispatcher lookups by allowing emitted basic blocks to jump directly to other basic blocks if the destination PC is static.</div> -<div>Denna optimering undviker dispatcher lookups genom att tillåta emmiterade basala block att hoppa direkt till andra basala block om destinationsdatorn är statisk.</div> - + <div>Denna optimering gör att man undviker att leta efter avsändare genom att låta emitterade basblock hoppa direkt till andra basblock om destinationsdatorn är statisk.</div> + Enable block linking - Sätt på blocklinkning + Aktivera blocklänkning @@ -2084,13 +2467,13 @@ avgjord kod.</div> <div>This optimization avoids dispatcher lookups by keeping track potential return addresses of BL instructions. This approximates what happens with a return stack buffer on a real CPU.</div> -<div>Denna optimering undviker dispatcherlookups genom att hålla kolla på potentiella returadresser av BL instruktioner. Detta approximerar vad som händer med en returnstackbuffer på en riktig CPU.</div> - + <div>Denna optimering undviker uppslagningar i dispatchern genom att hålla reda på potentiella returadresser för BL-instruktioner. Detta motsvarar ungefär vad som händer med en returstackbuffert på en riktig CPU.</div> + Enable return stack buffer - Sätt på return stack buffer + Aktivera retur för stackbuffert @@ -2098,13 +2481,13 @@ avgjord kod.</div> <div>Enable a two-tiered dispatch system. A faster dispatcher written in assembly has a small MRU cache of jump destinations is used first. If that fails, dispatch falls back to the slower C++ dispatcher.</div> -<div>Sätt på ett tvådelat avsändningssystem. En snabbare avsändare skriven i assembly har en liten MRU cache av hoppdestinationer som används först. Om det misslyckas, faller avsändaren tillbaka på den långsammare C++ avsändaren.</div> - + <div>Aktivera ett tvådelat sändningssystem. En snabbare avsändare som är skriven i assembly och har en liten MRU-cache med hoppdestinationer används först. Om det misslyckas faller sändningen tillbaka till den långsammare C++-sändaren.</div> + Enable fast dispatcher - Sätt på snabb dispatcher + Aktivera snabb avsändare @@ -2112,13 +2495,13 @@ avgjord kod.</div> <div>Enables an IR optimization that reduces unnecessary accesses to the CPU context structure.</div> -<div>Sätter på en IR optimering som reducerar onödiga åtkomster till CPU-kontextstrukturen.</div> - + <div>Aktiverar en IR-optimering som minskar onödiga åtkomster till CPU-kontextstrukturen.</div> + Enable context elimination - Sätt på kontexteliminering + Aktivera kontexteliminering @@ -2126,13 +2509,13 @@ avgjord kod.</div> <div>Enables IR optimizations that involve constant propagation.</div> -<div>Sätter på IR optimering som involverar konstant propagation.</div> - + <div>Aktiverar IR-optimeringar som innebär konstantutbredning.</div> + Enable constant propagation - Sätt på konstant propagation + Aktivera konstant propagering @@ -2140,13 +2523,13 @@ avgjord kod.</div> <div>Enables miscellaneous IR optimizations.</div> -<div>Sätter på diverse IR optimeringar.</div> - + <div>Aktiverar diverse IR-optimeringar.</div> + Enable miscellaneous optimizations - Sätter på diverse optimeringar + Aktivera diverse optimeringar @@ -2154,42 +2537,51 @@ avgjord kod.</div> <div style="white-space: nowrap">When enabled, a misalignment is only triggered when an access crosses a page boundary.</div> <div style="white-space: nowrap">When disabled, a misalignment is triggered on all misaligned accesses.</div> - <div style="white-space: nowrap">När påsatt, ett misalignment är endast triggat när en koppling korsar en sidobarriär.</div> -<div style="white-space: nowrap">När ej påsatt, är ett misalignment endast triggat på alla misalignade kopplingar.</div> - + + <div style="white-space: nowrap">När funktionen är aktiverad utlöses en felinriktning endast när en åtkomst korsar en sidgräns.</div> + <div style="white-space: nowrap">När den är inaktiverad utlöses en feljustering vid alla feljusterade accesser.</div> + Enable misalignment check reduction - Sätter på misalignment check reduction + Aktivera minskning av feljusteringskontroller <div style="white-space: nowrap">This optimization speeds up memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all memory accesses to use Software MMU Emulation.</div> - + + <div style="white-space: nowrap">Denna optimering snabbar upp gästprogrammets minnesåtkomst.</div> + <div style="white-space: nowrap">Om du aktiverar den görs läsningar/skrivningar i gästminnet direkt i minnet och värdens MMU används.</div> + <div style="white-space: nowrap">Om den inaktiveras måste all minnesåtkomst använda Software MMU Emulation.</div> + Enable Host MMU Emulation (general memory instructions) - + Aktivera Host MMU Emulation (allmänna minnesinstruktioner) <div style="white-space: nowrap">This optimization speeds up exclusive memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all exclusive memory accesses to use Software MMU Emulation.</div> - + + <div style="white-space: nowrap">Denna optimering påskyndar gästprogrammets exklusiva minnesåtkomst.</div> + <div style="white-space: nowrap">Om du aktiverar den görs läsningar/skrivningar i gästens exklusiva minne direkt i minnet och värdens MMU används.</div> + <div style="white-space: nowrap">Om du inaktiverar den här optimeringen måste alla exklusiva minnesåtkomster använda Software MMU Emulation.</div> + Enable Host MMU Emulation (exclusive memory instructions) - + Aktivera Host MMU Emulation (exklusiva minnesinstruktioner) @@ -2197,30 +2589,36 @@ avgjord kod.</div> <div style="white-space: nowrap">This optimization speeds up exclusive memory accesses by the guest program.</div> <div style="white-space: nowrap">Enabling it reduces the overhead of fastmem failure of exclusive memory accesses.</div> - + + <div style="white-space: nowrap">Denna optimering påskyndar gästprogrammets exklusiva minnesåtkomst.</div> + <div style="white-space: nowrap">Om du aktiverar den minskar omkostnaderna för fastmem-fel vid exklusiv minnesåtkomst.</div> + Enable recompilation of exclusive memory instructions - + Aktivera omkompilering av exklusiva minnesinstruktioner <div style="white-space: nowrap">This optimization speeds up memory accesses by allowing invalid memory accesses to succeed.</div> - <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> + <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> - + + <div style="white-space: nowrap">Denna optimering snabbar upp minnesåtkomster genom att tillåta att ogiltiga minnesåtkomster lyckas.</div> + <div style="white-space: nowrap">Om du aktiverar den minskar overhead för alla minnesåtkomster och den har ingen inverkan på program som inte använder ogiltigt minne.</div> + Enable fallbacks for invalid memory accesses - + Aktivera reservfunktioner för ogiltiga minnesåtkomster CPU settings are available only when game is not running. - CPU-inställningar är bara tillgängliga när spelet inte körs. + CPU-inställningarna är endast tillgängliga när spelet inte körs. @@ -2246,29 +2644,29 @@ avgjord kod.</div> Loggning - - Open Log Location - Öppna Logg-Destination - - - + Global Log Filter - Globalt Loggfilter + Globalt loggfilter - + When checked, the max size of the log increases from 100 MB to 1 GB - När ibockad, ökar maxstorleken för loggen från 100 MB till 1 GB + När detta markeras ökar maxstorleken på loggen från 100 MB till 1 GB + + + + Enable Extended Logging** + Aktivera utökad loggning** - Enable Extended Logging** - Slå på Utökad Loggning** + Show Log in Console + Visa logg i konsolen - Show Log in Console - Visa Logg i Terminal + Open Log Location + Öppna loggplats @@ -2278,7 +2676,7 @@ avgjord kod.</div> Arguments String - Argumentsträng + Argument String @@ -2288,97 +2686,97 @@ avgjord kod.</div> When checked, it executes shaders without loop logic changes - + När den är markerad körs shaders utan ändringar i looplogiken Disable Loop safety checks - + Inaktivera säkerhetskontroller för loop When checked, it will dump all the macro programs of the GPU - + När den är markerad kommer den att dumpa alla makroprogram på GPU:n Dump Maxwell Macros - + Dumpa Maxwell-makron When checked, it enables Nsight Aftermath crash dumps - + När den är markerad aktiverar den Nsight Aftermath-kraschdumpar Enable Nsight Aftermath - + Aktivera Nsight Aftermath When checked, it will dump all the original assembler shaders from the disk shader cache or game as found - + När den är markerad kommer den att dumpa alla ursprungliga assembler shaders från diskens shader cache eller spelet som hittas Dump Game Shaders - + Dumpa spel-shaders Enable Renderdoc Hotkey - + Aktivera snabbtangent för Renderdoc When checked, it disables the macro Just In Time compiler. Enabling this makes games run slower - + När den är markerad inaktiveras makrokompilatorn Just In Time. Om du aktiverar detta går spelen långsammare Disable Macro JIT - Stäng av Macro JIT + Inaktivera Macro JIT When checked, it disables the macro HLE functions. Enabling this makes games run slower - + När den är markerad inaktiveras HLE-funktionerna för makro. Om du aktiverar detta går spelen långsammare Disable Macro HLE - + Inaktivera makro HLE When checked, the graphics API enters a slower debugging mode - När ibockad så går grafik API:et in i ett långsammare felsökningsläge + När den är markerad går grafik-API:et in i ett långsammare felsökningsläge Enable Graphics Debugging - Sätt på grafikdebugging + Aktivera felsökning av grafik When checked, yuzu will log statistics about the compiled pipeline cache - + När den är markerad kommer yuzu att logga statistik om den kompilerade pipeline-cachen Enable Shader Feedback - + Aktivera shader-återkoppling <html><head/><body><p>When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.</p></body></html> - + <html><head/><body><p>När den är markerad inaktiveras omordning av uppladdningar i mappat minne, vilket gör det möjligt att associera uppladdningar med specifika dragningar. Kan minska prestandan i vissa fall.</p></body></html> Disable Buffer Reorder - + Inaktivera omordning av buffertar @@ -2388,47 +2786,42 @@ avgjord kod.</div> 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. - + Aktiverar yuzu för att kontrollera att Vulkan-miljön fungerar när programmet startas. Inaktivera detta om det orsakar problem med att externa program ser yuzu. Perform Startup Vulkan Check - + Utför Vulkan-kontroll vid uppstart Disable Web Applet - Avaktivera Webbappletten + Inaktivera webbapplet Enable All Controller Types - + Aktivera alla typer av kontroller - - Censor username in logs - - - - - **This will be reset automatically when eden closes. - + + Enable Auto-Stub + Aktivera Auto-Stub Kiosk (Quest) Mode - Kiosk(Quest)-läge + Kiosk-läge (Quest) - Enable CPU Debugging - + Use dev.keys + Använd dev.keys Enable Debug Asserts - + Aktivera Debug Asserts @@ -2436,39 +2829,74 @@ avgjord kod.</div> Felsökning - - Flush log output on each line - + + Battery Serial: + Batteriets serienummer: - - Enable FS Access Log - + + Bitmask for quick development toggles + Bitmask för snabba utvecklingsväxlingar - + + Set debug knobs (bitmask) + Ställ in felsökningsknoppar (bitmask) + + + + 16-bit debug knob set for quick development toggles + Ställ in 16-bitars felsökningsknoppar för snabba utvecklingsväxlingar + + + + (bitmask) + (bitmask) + + + + Debug Knobs: + Felsökningsknoppar: + + + + Unit Serial: + Enhetens serienummer: + + + Enable this to output the latest generated audio command list to the console. Only affects games using the audio renderer. - + Aktivera detta för att skicka ut den senaste genererade ljudkommandolistan till konsolen. Påverkar endast spel som använder ljudrenderaren. - - Enable Auto-Stub - - - - + Dump Audio Commands To Console** - + Dumpa ljudkommandon till konsolen** - + + Flush log output on each line + Spola loggutmatningen på varje rad + + + + Enable FS Access Log + Aktivera FS Access Log + + + Enable Verbose Reporting Services** - + Aktivera Verbose Reporting Services** - - Web applet not compiled - + + Censor username in logs + Censurera användarnamn i loggar + + + + **This will be reset automatically when Eden closes. + **Detta återställs automatiskt när Eden stänger. @@ -2476,7 +2904,7 @@ avgjord kod.</div> Configure Debug Controller - Konfigurera debugkontrollern + Konfigurera felsökningskontroller @@ -2486,7 +2914,7 @@ avgjord kod.</div> Defaults - Standardinställningar + Standard @@ -2500,7 +2928,7 @@ avgjord kod.</div> Debug - Debug + Felsök @@ -2510,103 +2938,99 @@ avgjord kod.</div> ConfigureDialog - - yuzu Configuration - yuzu Konfigurering - - eden Configuration - + Eden Configuration + Konfigurera Eden Some settings are only available when a game is not running. - + Vissa inställningar är endast tillgängliga när ett spel inte är igång. - + Applets - + Appletar - - + + Audio Ljud - - + + CPU CPU - + Debug - Debug + Felsök - + Filesystem Filsystem - - + + General Allmänt - - + + Graphics Grafik - - - GraphicsAdvanced - Avancerade grafikinställningar - - - - GraphicsExtensions - - - - - Hotkeys - Snabbknappar - - + GraphicsAdvanced + GraphicsAdvanced + + + + GraphicsExtra + GraphicsExtra + + + + Hotkeys + Snabbtangenter + + + + Controls Kontroller - + Profiles Profiler - + Network Nätverk - - + + System System - + Game List Spellista - + Web Webb @@ -2626,7 +3050,7 @@ avgjord kod.</div> Storage Directories - Lagringskataloger + Kataloger för lagring @@ -2636,9 +3060,10 @@ avgjord kod.</div> - - - + + + + ... ... @@ -2648,107 +3073,195 @@ avgjord kod.</div> SD-kort - - Gamecard - Spelkort + + Save Data + Sparat data - + + Gamecard + Gamecard + + + Path Sökväg - + Inserted - Införd - - - - Current Game - Nuvarande Spel + Infogad + Current Game + Aktuellt spel + + + Patch Manager - Patchhanteraren + Patchhanterare - + Dump Decompressed NSOs - Dumpa Okomprimerade NSOs + Dumpa dekomprimerade NSO:er - + Dump ExeFS Dumpa ExeFS - + Mod Load Root - Mod ladda root + Rot för inläsning av mods - + Dump Root - Dumpa Root + Dumpa rot - + Caching - Cachning + Mellanlagring - + Cache Game List Metadata - Spara spellistmetadata + Metadata för spellistan i cacheminnet - - - - + Reset Metadata Cache - Återställ metadatasparning - - - - Select Emulated NAND Directory... - Välj emulerad NAND-katalog... - - - - Select Emulated SD Directory... - Välj emulerad SD katalog... - - - - Select Gamecard Path... - Välj Spelkortssökväg... - - - - Select Dump Directory... - Välj dumpsökväg... + Återställ cachen för metadata + Select Emulated NAND Directory... + Välj katalog för emulerad NAND... + + + + Select Emulated SD Directory... + Välj katalog för emulerad SD... + + + + + Select Save Data Directory... + Välj katalog för sparat data... + + + + Select Gamecard Path... + Välj sökväg för Gamecard... + + + + Select Dump Directory... + Välj dumpkatalog... + + + Select Mod Load Directory... - Välj modladdningssökväg + Välj katalog för modinläsningar... - - The metadata cache is already empty. - Metadata cachen är redan tom. + + Save Data Directory + Katalog för sparat data - - The operation completed successfully. - Operationen slutfördes utan problem + + Choose an action for the save data directory: + Välj en åtgärd för katalogen för sparat data: - - The metadata cache couldn't be deleted. It might be in use or non-existent. - Metadata cachen kunde inte tas bort. Den kan vara under användning eller icke-existerande. + + Set Custom Path + Ställ in anpassad sökväg + + + + Reset to NAND + Återställ till NAND + + + + Save data exists in both the old and new locations. + +Old: %1 +New: %2 + +Would you like to migrate saves from the old location? +WARNING: This will overwrite any conflicting saves in the new location! + Sparat data finns både på den gamla och nya platsen. + +Gamla: %1 +Nya: %2 + +Vill du migrera sparade data från den gamla platsen? +VARNING: Detta kommer att skriva över alla sparade data som finns på den nya platsen! + + + + Would you like to migrate your save data to the new location? + +From: %1 +To: %2 + Vill du migrera ditt sparade data till den nya platsen? + +Från: %1 +Till: %2 + + + + Migrate Save Data + Migrera sparat data + + + + Migrating save data... + Migrerar sparat data... + + + + Cancel + Avbryt + + + + + Migration Failed + Migrering misslyckades + + + + Failed to create destination directory. + Misslyckades med att skapa målkatalog. + + + + Failed to migrate save data: +%1 + Misslyckades med att migrera sparat data: +%1 + + + + Migration Complete + Migreringen är färdig + + + + Save data has been migrated successfully. + +Would you like to delete the old save data? + Sparat data har migrerats utan problem. + +Vill du ta bort gammalt sparat data? @@ -2756,7 +3269,7 @@ avgjord kod.</div> Form - Form + Formulär @@ -2766,27 +3279,53 @@ avgjord kod.</div> - Linux - + External Content + Externt innehåll - + + Add directories to scan for DLCs and Updates without installing to NAND + Lägg till kataloger för att söka efter DLC och uppdateringar utan att installera dem på NAND + + + + Add Directory + Lägg till katalog + + + + Remove Selected + Ta bort markerade + + + Reset All Settings - Återställ Alla Inställningar + Återställ alla inställningar - yuzu - yuzu + + Eden + Eden - - eden - - - - + This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed? - + Detta återställer alla inställningar och tar bort alla konfigurationer per spel. Detta raderar inte spelkataloger, profiler eller inmatningsprofiler. Fortsätta? + + + + Select External Content Directory... + Välj katalog för externt innehåll... + + + + Directory Already Added + Katalogen redan tillagd + + + + This directory is already in the list. + Denna katalog finns redan i listan. @@ -2794,7 +3333,7 @@ avgjord kod.</div> Form - Form + Formulär @@ -2817,35 +3356,35 @@ avgjord kod.</div> Bakgrundsfärg: - + % FSR sharpening percentage (e.g. 50%) % - + Off - + Av - + VSync Off - + VSync Av - + Recommended - + Rekommenderad - + On - + - + VSync On - + VSync På @@ -2861,7 +3400,7 @@ avgjord kod.</div> Avancerat - + Advanced Graphics Settings Avancerade grafikinställningar @@ -2871,24 +3410,38 @@ avgjord kod.</div> Form - + Formulär - Extensions - + Extras + Extras - - Vulkan Extension Settings - + + Hacks + Hack - - While it's recommended to use state 3, some games may perform better on lower states. Setting to 0 (disabled) may also break games. -If your GPU is older (i.e. RX570/580 or older), it may not support these features. If this is the case, set the slider to 0 and uncheck all boxes. -These settings are experimental, and may cause black screens. If your games fail to boot or are stuck on a black screen, change these settings around. - + + Changing these options from their default may cause issues. Novitii cavete! + Ändring av dessa alternativ från deras standardvärden kan orsaka problem. Novitii cavete! + + + + Vulkan Extensions + Vulkan-utökningar + + + + % + Sample Shading percentage (e.g. 50%) + % + + + + Extended Dynamic State is disabled on macOS due to MoltenVK compatibility issues that cause black screens. + Extended Dynamic State är inaktiverat på macOS på grund av kompatibilitetsproblem med MoltenVK som orsakar svarta skärmar. @@ -2896,12 +3449,12 @@ These settings are experimental, and may cause black screens. If your games fail Hotkey Settings - Snabbtangentinställningar + Inställningar för snabbtangenter Hotkeys - Snabbknappar + Snabbtangenter @@ -2919,77 +3472,77 @@ These settings are experimental, and may cause black screens. If your games fail Återställ till standard - + Action - Handling + Åtgärd - + Hotkey Snabbtangent - + Controller Hotkey - + Snabbtangent för kontroller - - - + + + Conflicting Key Sequence - Motstridig Tangentsekvens + Motstridig tangentsekvens - - + + The entered key sequence is already assigned to: %1 - Den valda tangentsekvensen är redan tilldelad: %1 + Den inmatade tangentsekvensen är redan tilldelad: %1 - + [waiting] [väntar] - + Invalid - + Ogiltig - + Invalid hotkey settings - + Ogiltiga inställningar för snabbtangenter - + An error occurred. Please report this issue on github. - + Ett fel har inträffat. Rapportera detta problem på github. - + Restore Default - Återställ standard + Återställ till standard - + Clear Rensa - + Conflicting Button Sequence - + Motstridig knappsekvens - + The default button sequence is already assigned to: %1 - + Standardknappsekvensen är redan tilldelad till: %1 - + The default key sequence is already assigned to: %1 - Standardtangentsekvensen är redan tilldelad: %1 + Standardknappsekvensen är redan tilldelad till: %1 @@ -2997,7 +3550,7 @@ These settings are experimental, and may cause black screens. If your games fail ConfigureInput - Konfigurera Input + ConfigureInput @@ -3066,7 +3619,7 @@ These settings are experimental, and may cause black screens. If your games fail Handheld - Handheld + Handhållen @@ -3132,12 +3685,12 @@ These settings are experimental, and may cause black screens. If your games fail Connected - Kopplad + Ansluten Defaults - Standardinställningar + Standard @@ -3172,7 +3725,7 @@ These settings are experimental, and may cause black screens. If your games fail L Body - L Kropp + L-kropp @@ -3184,7 +3737,7 @@ These settings are experimental, and may cause black screens. If your games fail L Button - L Knapp + L-knapp @@ -3196,7 +3749,7 @@ These settings are experimental, and may cause black screens. If your games fail R Body - R Kropp + R-kropp @@ -3208,7 +3761,7 @@ These settings are experimental, and may cause black screens. If your games fail R Button - R Knapp + R-knapp @@ -3248,7 +3801,7 @@ These settings are experimental, and may cause black screens. If your games fail Emulated Devices - + Emulerade enheter @@ -3263,7 +3816,7 @@ These settings are experimental, and may cause black screens. If your games fail Touchscreen - Touchscreen + Pekskärm @@ -3273,7 +3826,7 @@ These settings are experimental, and may cause black screens. If your games fail Debug Controller - Debugkontroller + Felsök kontroller @@ -3286,12 +3839,12 @@ These settings are experimental, and may cause black screens. If your games fail Ring Controller - + Ringkontroller Infrared Camera - + Infraröd kamera @@ -3301,54 +3854,54 @@ These settings are experimental, and may cause black screens. If your games fail Emulate Analog with Keyboard Input - + Emulera analogt med tangentbordsinmatning - Requires restarting eden - + Requires restarting Eden + Kräver omstart av Eden Enable XInput 8 player support (disables web applet) - + Aktivera stöd för XInput 8-spelare (inaktiverar webbapplet) Enable UDP controllers (not needed for motion) - + Aktivera UDP-kontroller (behövs inte för rörelse) Controller navigation - + Navigering med kontroller Enable direct JoyCon driver - + Aktivera direkt JoyCon-drivrutin Enable direct Pro Controller driver [EXPERIMENTAL] - + Aktivera direktdrivrutin för Pro Controller [EXPERIMENTELL] Allows unlimited uses of the same Amiibo in games that would otherwise limit you to one use. - + Tillåter obegränsad användning av samma Amiibo i spel som annars skulle begränsa dig till en användning. Use random Amiibo ID - + Använd slumpmässigt Amiibo ID Motion / Touch - Rörelse / Touch + Rörelse / beröring @@ -3366,57 +3919,57 @@ These settings are experimental, and may cause black screens. If your games fail Input Profiles - + Inmatningsprofiler Player 1 Profile - + Profil för spelare 1 Player 2 Profile - + Profil för spelare 2 Player 3 Profile - + Profil för spelare 3 Player 4 Profile - + Profil för spelare 4 Player 5 Profile - + Profil för spelare 5 Player 6 Profile - + Profil för spelare 6 Player 7 Profile - + Profil för spelare 7 Player 8 Profile - + Profil för spelare 8 Use global input configuration - + Använd global konfiguration av inmatning Player %1 profile - + Profil för spelare %1 @@ -3424,12 +3977,12 @@ These settings are experimental, and may cause black screens. If your games fail Configure Input - Konfigurera Inmatning + Konfigurera inmatning Connect Controller - Koppla kontroller + Anslut kontroller @@ -3449,39 +4002,28 @@ These settings are experimental, and may cause black screens. If your games fail New - Ny + Nytt Delete - Radera + Ta bort - + Left Stick - Vänster Spak + Vänster styrspak - - - - - - - Up - Upp - - - - - - - - - - Left - Vänster + + + + + + + Down + Ner @@ -3495,14 +4037,25 @@ These settings are experimental, and may cause black screens. If your games fail Höger - - - - - - - Down - Ner + + + + + + + + Left + Vänster + + + + + + + + + Up + Upp @@ -3524,7 +4077,7 @@ These settings are experimental, and may cause black screens. If your games fail Range - Räckvidd + Intervall @@ -3536,26 +4089,18 @@ These settings are experimental, and may cause black screens. If your games fail Deadzone: 0% - Dödzon: 0% + Dödzon: 0 Modifier Range: 0% - Modifieringsräckvidd: 0% + Modifieringsintervall: 0% D-Pad - D-Pad - - - - - - - SL - SL + Riktningsknappar @@ -3566,73 +4111,81 @@ These settings are experimental, and may cause black screens. If your games fail SR - - - - L - L + + + + + SL + SL - + ZL ZL + + + + + L + L + Minus Minus + + + + + Plus + Plus + + + + + + ZR + ZR + + + + + + + R + R + + + + Motion 1 + Motion 1 + + + + Motion 2 + Motion 2 + Capture Fånga - - - - - Plus - Pluss - Home Hem - - - - - - R - R - - - - - - ZR - ZR - - - - Motion 1 - - - - - Motion 2 - - Face Buttons - Knappar + Handlingsknappar @@ -3641,10 +4194,10 @@ These settings are experimental, and may cause black screens. If your games fail X - - - Y - Y + + + B + B @@ -3653,21 +4206,21 @@ These settings are experimental, and may cause black screens. If your games fail A - - - B - B + + + Y + Y - + Right Stick - Höger Spak + Högerspak Mouse panning - + Muspanorering @@ -3675,243 +4228,244 @@ These settings are experimental, and may cause black screens. If your games fail Konfigurera - - - - + + + + Clear Rensa - - - - - + + + + + [not set] - [ej angett] + [inte inställd] - - - + + + Invert button - + Invertera-knappen - - + + Toggle button - + Växla knapp - + Turbo button - + Turbo-knapp - - + + Invert axis - + Invertera axeln - - - + + + Set threshold - + Ställ in tröskelvärde - - + + Choose a value between 0% and 100% - + Välj ett värde mellan 0% och 100% - + Toggle axis - + Växla axel - + Set gyro threshold - + Ställ in gyrotröskelvärde - + Calibrate sensor - - - - - Map Analog Stick - + Kalibrera sensorn + Map Analog Stick + Mappa analog spak + + + After pressing OK, first move your joystick horizontally, and then vertically. To invert the axes, first move your joystick vertically, and then horizontally. - + När du har tryckt på OK för du först joysticken horisontellt och sedan vertikalt. +Om du vill invertera axlarna för du joysticken först vertikalt och sedan horisontellt. - + Center axis - + Centrera axel - - + + Deadzone: %1% Dödzon: %1% - - + + Modifier Range: %1% - Modifieringsräckvidd: %1% + Modifieringsintervall: %1% - - + + Pro Controller - Prokontroller + Pro Controller - + Dual Joycons Dubbla Joycons - + Left Joycon Vänster Joycon - + Right Joycon Höger Joycon - + Handheld Handhållen - + GameCube Controller - GameCube-kontroll + GameCube-kontroller - + Poke Ball Plus Poke Ball Plus - + NES Controller - NES-kontroll + NES-kontroller - + SNES Controller - SNES-kontroll + SNES-kontroller - + N64 Controller - N64-kontroll + N64-kontroller - + Sega Genesis Sega Genesis - + Start / Pause - + Starta / Pausa - + Z Z - + Control Stick - + Kontrollspak - + C-Stick - + C-spak - + Shake! - + Skaka! - + [waiting] [väntar] - + New Profile Ny profil - + Enter a profile name: - + Ange ett profilnamn: + + + + + Create Input Profile + Skapa inmatningsprofil - - Create Input Profile - - - - The given profile name is not valid! - + Det angivna profilnamnet är inte giltigt! - + Failed to create the input profile "%1" - + Misslyckades med att skapa inmatningsprofilen "%1" + + + + Delete Input Profile + Radera inmatningsprofil - Delete Input Profile - + Failed to delete the input profile "%1" + Misslyckades med att ta bort inmatningsprofilen "%1" - - Failed to delete the input profile "%1" - + + Load Input Profile + Läs in inmatningsprofil - Load Input Profile - + Failed to load the input profile "%1" + Misslyckades med att läsa in inmatningsprofilen "%1" - - Failed to load the input profile "%1" - + + Save Input Profile + Spara inmatningsprofil - Save Input Profile - - - - Failed to save the input profile "%1" - + Misslyckades med att spara inmatningsprofilen "%1" @@ -3919,7 +4473,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Create Input Profile - + Skapa inmatningsprofil @@ -3932,21 +4486,12 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Standard - - ConfigureLinuxTab - - - - Linux - - - ConfigureMotionTouch Configure Motion / Touch - Konfigurera Rörelse / Touch + Konfigurera rörelse/tryck @@ -3956,7 +4501,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< UDP Calibration: - + UDP-kalibrering: @@ -3966,24 +4511,24 @@ To invert the axes, first move your joystick vertically, and then horizontally.< - + Configure Konfigurera Touch from button profile: - + Touch från knapprofilen: CemuhookUDP Config - CemuhookUDP-konfigurering + Konfig för CemuhookUDP You may use any Cemuhook compatible UDP input source to provide motion and touch input. - Du kan använda Cemuhook-kompatibla UDP-inmatningskällor för att förse rörelse- och touchinmatning. + Du kan använda vilken UDP-ingångskälla som helst som är kompatibel med Cemuhook för att tillhandahålla rörelse- och pekinmatning. @@ -3996,113 +4541,95 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Port: - - Learn More - Lär dig mer - - - - + + Test - Test + Testa - + Add Server - + Lägg till server - + Remove Server - + Ta bort server - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Lär dig mer</span></a> - - - + %1:%2 - + %1:%2 - yuzu - yuzu + + + + + + + Eden + Eden - - <a href='https://eden-emulator.github.io/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - - - - + Port number has invalid characters - + Portnumret har ogiltiga tecken - - - - - - - eden - - - - + Port has to be in range 0 and 65353 - + Port måste ligga inom intervallet 0 och 65353 + + + + IP address is not valid + IP-adressen är inte giltig - IP address is not valid - + This UDP server already exists + Denna UDP-server finns redan - This UDP server already exists - - - - Unable to add more than 8 servers - + Det går inte att lägga till fler än 8 servrar - + Testing Testar - + Configuring Konfigurerar - + Test Successful - Test framgångsrikt + Testet lyckades - + Successfully received data from the server. - Tog emot data från servern framgångsrikt + Tog emot data från servern. - + Test Failed - Test misslyckades + Testet misslyckades - + Could not receive valid data from the server.<br>Please verify that the server is set up correctly and the address and port are correct. - Kunde inte ta emot giltig data från servern.<br>Var vänlig verifiera att servern är korrekt uppsatt och att adressen och porten är korrekta. + Kunde inte ta emot giltiga data från servern.<br>Kontrollera att servern är korrekt konfigurerad och att adress och port är korrekta. - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. - UDP Test eller kalibreringskonfiguration är igång.<br>Var vänlig vänta för dem att slutföras. + UDP Test- eller kalibreringskonfiguration pågår.<br>Vänta tills de är klara. @@ -4110,27 +4637,27 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Configure mouse panning - + Konfigurera muspanorering Enable mouse panning - + Aktivera muspanorering Can be toggled via a hotkey. Default hotkey is Ctrl + F9 - + Kan växlas via en snabbtangent. Standard snabbtangent är Ctrl + F9 Sensitivity - + Känslighet Horizontal - + Horisontell @@ -4144,37 +4671,37 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Vertical - + Vertikal Deadzone counterweight - + Motvikt för dödzon Counteracts a game's built-in deadzone - + Motverkar ett spels inbyggda dödzon Deadzone - + Dödläge Stick decay - + Spakförsämring Strength - + Styrka Minimum - + Minimum @@ -4185,22 +4712,23 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Mouse panning works better with a deadzone of 0% and a range of 100%. Current values are %1% and %2% respectively. - + Muspanorering fungerar bättre med en dödzon på 0% a och ett intervall på 100%. +Nuvarande värden är %1% respektive %2%. Emulated mouse is enabled. This is incompatible with mouse panning. - + Emulerad mus är aktiverad. Detta är inte kompatibelt med muspanorering. Emulated mouse is enabled - Emulerad datormus är aktiverad + Emulerad mus är aktiverad Real mouse input and mouse panning are incompatible. Please disable the emulated mouse in input advanced settings to allow mouse panning. - + Inmatning med riktig mus och muspanorering är inte kompatibla. Inaktivera den emulerade musen i avancerade inställningar för inmatning för att tillåta muspanorering. @@ -4223,12 +4751,12 @@ Current values are %1% and %2% respectively. Network Interface - + Nätverksgränssnitt - - None - Ingen + + Enable Airplane Mode + Aktivera flygplansläge @@ -4251,7 +4779,7 @@ Current values are %1% and %2% respectively. Title ID - Titel-ID + Titelns ID @@ -4261,7 +4789,7 @@ Current values are %1% and %2% respectively. Format - Formatera + Format @@ -4281,57 +4809,62 @@ Current values are %1% and %2% respectively. Some settings are only available when a game is not running. - + Vissa inställningar är endast tillgängliga när ett spel inte är igång. - + Add-Ons Tillägg - + System System - + CPU CPU - + Graphics Grafik - + Adv. Graphics - Avancerade Grafikinställningar + Avancerad grafik - - GPU Extensions - + + Ext. Graphics + Ext. grafik - + Audio Ljud - + Input Profiles - + Inmatningsprofiler - Linux - + Network + Nätverk + + + + Applets + Appletar Properties - egenskaper + Egenskaper @@ -4347,15 +4880,115 @@ Current values are %1% and %2% respectively. Tillägg - - Patch Name - Patch namn + + Import Mod from ZIP + Importera mod från ZIP - + + Import Mod from Folder + Importera mod från mapp + + + + Patch Name + Patchnamn + + + Version Version + + + Mod Install Succeeded + Mod installerad + + + + Successfully installed all mods. + Alla mods installerade. + + + + Mod Install Failed + Installation av mod misslyckades + + + + Failed to install the following mods: + %1 +Check the log for details. + Misslyckades med att installera följande mods: + %1 +Kontrollera loggen för information. + + + + Mod Folder + Mapp för mod + + + + Zipped Mod Location + Plats för zippad mod + + + + Zipped Archives (*.zip) + Zip-arkiv (*.zip) + + + + Invalid Selection + Ogiltigt val + + + + Only mods, cheats, and patches can be deleted. +To delete NAND-installed updates, right-click the game in the game list and click Remove -> Remove Installed Update. + Endast mods, fusk och patchar kan tas bort. +För att ta bort NAND-installerade uppdateringar, högerklicka på spelet i spellistan och klicka på Ta bort -> Ta bort installerad uppdatering. + + + + You are about to delete the following installed mods: + + Du är på väg att ta bort följande installerade mods: + + + + + +Once deleted, these can NOT be recovered. Are you 100% sure you want to delete them? + +När de har tagits bort kan de INTE återställas. Är du 100% säker på att du vill ta bort dem? + + + + Delete add-on(s)? + Ta bort tillägg? + + + + Successfully deleted + Borttagning lyckades + + + + Successfully deleted all selected mods. + Alla valda mods har tagits bort. + + + + &Delete + &Ta bort + + + + &Open in File Manager + Ö&ppna i filhanterare + ConfigureProfileManager @@ -4377,7 +5010,7 @@ Current values are %1% and %2% respectively. Current User - Nuvarande användare + Aktuell användare @@ -4385,32 +5018,17 @@ Current values are %1% and %2% respectively. Användarnamn - - Set Image - Välj bild - - - + Add Lägg till - - Rename - Döp om - - - - Remove - Ta bort - - - + Profile management is available only when game is not running. - Profilhantering är endast tillgänglig när spelet inte körs. + Profilhantering är endast tillgänglig när spelet inte är igång. - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -4418,103 +5036,84 @@ Current values are %1% and %2% respectively. %2 - - Enter Username - Skriv in användarnamn - - - + Users Användare - - Enter a username for the new user: - Skriv in användarnamn för den nya användaren: - - - - Enter a new username: - Skriv in ett nytt användarnamn: - - - - Select User Image - Välj Användarbild - - - - JPEG Images (*.jpg *.jpeg) - JPEG-bilder (*.jpg *.jpeg) - - - + Error deleting image - Fel när bilden raderades + Fel vid borttagning av bild - + Error occurred attempting to overwrite previous image at: %1. - Fel uppstod när man försökte överskriva föregående bild vid: %1. + Fel uppstod vid försök att skriva över föregående bild vid: %1. - + Error deleting file - Fel när fil raderades + Fel vid borttagning av fil - + Unable to delete existing file: %1. - Kan inte radera existerande fil: %1. + Det går inte att ta bort en befintlig fil: %1. - + Error creating user image directory - Fel när användarbild skapades + Fel vid skapande av katalog för användarbilder - + Unable to create directory %1 for storing user images. - Oförmögen att skapa katalog %1 för att spara användarbilder. + Det går inte att skapa katalog %1 f eller lagra användarbilder. - - Error copying user image - Fel under kopiering av användarbild + + Error saving user image + Fel vid sparande av användarbild - - Unable to copy image from %1 to %2 - Oförmögen att kopiera bild från %1 till %2 + + Unable to save image to file + Kunde inte spara bild till fil - - Error resizing user image - + + &Edit + R&edigera - - Unable to resize image - + + &Delete + &Ta bort + + + + Edit User + Redigera användare ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. - + Ta bort den här användaren? Alla användarens sparade data kommer att raderas. - + Confirm Delete - Bekräfta Radering + Bekräfta borttagning - + Name: %1 UUID: %2 - + Namn: %1 +UUID: %2 @@ -4522,17 +5121,17 @@ UUID: %2 Configure Ring Controller - + Konfigurera ringkontroller 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. - + För att använda Ring-Con ska du konfigurera spelare 1 som höger Joy-Con (både fysisk och emulerad) och spelare 2 som vänster Joy-Con (vänster fysisk och dubbel emulerad) innan du startar spelet. Virtual Ring Sensor Parameters - + Parametrar för sensor för virtuell ring @@ -4544,39 +5143,39 @@ UUID: %2 Push - Knuff + Tryck Deadzone: 0% - Dödzon: 0% + Dödzon: 0 Direct Joycon Driver - + Direkt Joycon-drivrutin Enable Ring Input - + Aktivera Ring-inmatning - + Enable Aktivera Ring Sensor Value - + Ringsensorns värde - + Not connected - + Inte ansluten @@ -4584,63 +5183,63 @@ UUID: %2 Återställ till standard - + Clear Rensa - + [not set] - [ej angett] + [inte inställd] - + Invert axis - + Invertera axeln - - + + Deadzone: %1% Dödzon: %1% - + Error enabling ring input - + Fel vid aktivering av Ring-inmatning - + Direct Joycon driver is not enabled - + Direkt Joycon-drivrutinen är inte aktiverad - + Configuring Konfigurerar - + The current mapped device doesn't support the ring controller - - - - - The current mapped device doesn't have a ring attached - + Den aktuella mappade enheten stöder inte ringkontrollen + The current mapped device doesn't have a ring attached + Den nuvarande mappade enheten har inte en ring ansluten + + + The current mapped device is not connected - + Den aktuella mappade enheten är inte ansluten - + Unexpected driver result %1 - + Oväntat drivrutinsresultat %1 - + [waiting] [väntar] @@ -4650,7 +5249,7 @@ UUID: %2 Form - Form + Formulär @@ -4661,12 +5260,12 @@ UUID: %2 Core - + Kärna - + Warning: "%1" is not a valid language for region "%2" - + Varning: "%1" är inte ett giltigt språk för region "%2" @@ -4674,55 +5273,60 @@ UUID: %2 TAS - + TAS - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the eden website.</p></body></html> - + <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the user handbook.</p></body></html> + <html><head/><body><p>Läser in kontroller från skript i samma format som TAS-nx-skript.<br/>För en mer detaljerad förklaring, se användarhandboken.</p></body></html> To check which hotkeys control the playback/recording, please refer to the Hotkey settings (Configure -> General -> Hotkeys). - + För att kontrollera vilka snabbtangenter som styr uppspelning/inspelning, se inställningarna för snabbtangenter (Configure -> General -> Hotkeys). WARNING: This is an experimental feature.<br/>It will not play back scripts frame perfectly with the current, imperfect syncing method. - + VARNING: Detta är en experimentell funktion.<br/>Den kommer inte att spela upp scripts frame perfekt med den nuvarande, ofullkomliga synkroniseringsmetoden. Settings - + Inställningar Enable TAS features - + Aktivera TAS-funktioner Loop script - + Loop-skript Pause execution during loads - + Pausa exekvering under inläsningar - + + Show recording dialog + Visa inspelningsdialog + + + Script Directory - + Skriptkatalog - + Path Sökväg - + ... ... @@ -4730,14 +5334,14 @@ UUID: %2 ConfigureTasDialog - + TAS Configuration - + TAS-konfiguration - + Select TAS Load Directory... - + Välj katalog för TAS-inläsningar... @@ -4745,39 +5349,39 @@ UUID: %2 Configure Touchscreen Mappings - Konfigurera Touchscreen + Konfigurera mappningar för pekskärm Mapping: - Kartläggning: + Mappning: New - Ny + Nytt Delete - Radera + Ta bort Rename - Döp om + Byt namn Click the bottom area to add a point, then press a button to bind. Drag points to change position, or double-click table cells to edit values. - Klocka den understa området för att lägga till en punkt, klicka sedan på en knapp att binda. -Dra punkter för att ändra position, eller dubbelklicka tabellceller för att redigera värden. + Klicka på det nedre området för att lägga till en punkt och tryck sedan på en knapp för att binda. +Dra punkterna för att ändra position, eller dubbelklicka på tabellcellerna för att redigera värden. Delete Point - Radera punkt + Ta bort punkt @@ -4804,22 +5408,22 @@ Dra punkter för att ändra position, eller dubbelklicka tabellceller för att r Enter the name for the new profile. - Skriv in namn för den nya profilen. + Ange namnet på den nya profilen. Delete Profile - Radera profil + Ta bort profil Delete profile %1? - Radera profil %1? + Ta bort profil %1? Rename Profile - Döp om profil + Byt namn på profil @@ -4837,31 +5441,27 @@ Dra punkter för att ändra position, eller dubbelklicka tabellceller för att r Configure Touchscreen - Konfigurera Pekskärm - - - Warning: The settings in this page affect the inner workings of yuzu's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - Varning: Inställningarna på denna sida påverkar de inre delarna av yuzus emulerande pekskärm. Ändring kan resultera i oönskat beteende, som att pekskärmen slutar fungera. Använd bara denna sida om du vet va du gör. + Konfigurera pekskärm - Warning: The settings in this page affect the inner workings of eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - + Warning: The settings in this page affect the inner workings of Eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. + Varning: Inställningarna på denna sida påverkar den interna funktionen hos Edens emulerade pekskärm. Om du ändrar dem kan det leda till oönskade effekter, till exempel att pekskärmen fungerar delvis eller inte alls. Du bör endast använda denna sida om du vet vad du gör. Touch Parameters - Pekskärmsparametrar + Touch-parametrar Touch Diameter Y - Pekskärmsdiameter Y + Touch-diameter Y Touch Diameter X - Pekskärmsdiameter X + Touch-diameter X @@ -4871,72 +5471,51 @@ Dra punkter för att ändra position, eller dubbelklicka tabellceller för att r Restore Defaults - Återställ Standardvärden + Återställ till standard ConfigureUI - - - + + None Ingen - - - Small (32x32) - - - Standard (64x64) - + Small (24x24) + Liten (24x24) - Large (128x128) - + Standard (48x48) + Standard (48x48) - Full Size (256x256) - + Large (72x72) + Stor (72x72) - Small (24x24) - - - - - Standard (48x48) - - - - - Large (72x72) - - - - Filename Filnamn - + Filetype - + Filtyp - + Title ID - Titel-ID + Titelns ID - + Title Name - + Titelnamn @@ -4949,7 +5528,7 @@ Dra punkter för att ändra position, eller dubbelklicka tabellceller för att r UI - UI + Användargränssnitt @@ -4959,7 +5538,7 @@ Dra punkter för att ändra position, eller dubbelklicka tabellceller för att r Note: Changing language will apply your configuration. - Notera: Om du ändrar språk kommer detta applicera din konfiguration. + Observera: Om du ändrar språk kommer din konfiguration att tillämpas. @@ -4979,98 +5558,93 @@ Dra punkter för att ändra position, eller dubbelklicka tabellceller för att r Show Compatibility List - + Visa kompatibilitetslista Show Add-Ons Column - Visa Add-Ons-Kolumn + Visa tilläggskolumn Show Size Column - + Visa storlek kolumn Show File Types Column - + Visa filtypskolumnen Show Play Time Column - + Visa speltidskolumn - Game Icon Size: - + Folder Icon Size: + Ikonstorlek för mapp: - Folder Icon Size: - + Row 1 Text: + Rad 1-text: - Row 1 Text: - Rad 1 Text: - - - Row 2 Text: - Rad 2 Text: + Rad 2-text: - + Screenshots - Skrämdump + Skärmbilder - + Ask Where To Save Screenshots (Windows Only) - Fråga till var man ska spara skärmdumpar (endast Windows) + Fråga var du vill spara skärmdumpar (endast Windows) - + Screenshots Path: - Skärmdumpssökväg + Sökväg för skärmdumpar: - + ... ... - + TextLabel - + TextLabel - + Resolution: - + Status: - + Select Screenshots Path... - Välj Skärmdumpssökväg... + Välj sökväg för skärmdumpar... - + <System> <System> - + English Engelska - + Auto (%1 x %2, %3 x %4) Screenshot width value - + Auto (%1 x %2, %3 x %4) @@ -5078,12 +5652,12 @@ Dra punkter för att ändra position, eller dubbelklicka tabellceller för att r Configure Vibration - + Konfigurera vibration Press any controller button to vibrate the controller. - + Tryck på valfri knapp på handkontrollen för att vibrera handkontrollen. @@ -5145,12 +5719,12 @@ Dra punkter för att ändra position, eller dubbelklicka tabellceller för att r Settings - + Inställningar Enable Accurate Vibration - + Aktivera exakt vibration @@ -5158,170 +5732,183 @@ Dra punkter för att ändra position, eller dubbelklicka tabellceller för att r Form - Form + Formulär Web Webb - - yuzu Web Service - yuzu Webb-Service - - - By providing your username and token, you agree to allow yuzu to collect additional usage data, which may include user identifying information. - Genom att ge användarnamn och nyckel så godkänner du att yuzu tar användarstatistik, vilket kan inkludera identifierande användarinformation. - - eden Web Service - + Eden Web Service + Edens webbtjänst - - By providing your username and token, you agree to allow eden to collect additional usage data, which may include user identifying information. - - - - - Verify - Verifiera - - - - Sign up - Registrera - - - + Token: - Pollett: + Token: - + Username: - Användarnamn: + Användarnamn: - - What is my token? - Vad är min pollett? + + Generate + Generera - + Web Service configuration can only be changed when a public room isn't being hosted. - + Webbtjänstkonfigurationen kan endast ändras när ett offentligt rum inte är värd. - Telemetry - Telemetri - - - Share anonymous usage data with the yuzu team - Skicka anonym användarstatistik till yuzu teamet - - - Learn more - Lär dig mer - - - Telemetry ID: - Telemetri ID: - - - Regenerate - Regenerera - - - + Discord Presence - Discord Närvaro + Discord-närvaro - + Show Current Game in your Discord Status - Visa Nuvarande Spel i din Discord Status - - - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Lär dig mer</span></a> - - - - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Registrera</span></a> - - - - <a href='https://evilperson1337.notion.site/Hosting-a-Room-Inside-of-Eden-20457c2edaf680108abac6215a79acdb'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - - - - - Warning - + Visa aktuellt spel i din Discord-status + - Verification is currently nonfunctional, instead generate a random 48-character string with only lowercase a-z. - - - - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">Vad är min pollett? </span></a> - - - Telemetry ID: 0x%1 - Telemetri ID: 0x%1 - - - Unspecified - Ospecificerat - - - Token not verified - Pollett ej verifierad - - - Token was not verified. The change to your token has not been saved. - Polletten verifierades inte. Ändringen till din pollett har inte sparats. - - - - Unverified, please click Verify before saving configuration + All Good Tooltip - + Allt är bra - Verifying... - Verifierar... - - - Verification failed + + Must be between 4-20 characters Tooltip - Verifiering misslyckad + Måste bestå av mellan 4 och 20 tecken - Verification failed - Verifiering misslyckad - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - Verifiering misslyckad. Kontrollera att du har skrivit in din pollett korrekt, och att din internetuppkoppling fungerar. + + Must be 48 characters, and lowercase a-z + Tooltip + Måste bestå av 48 tecken och små bokstäver a-z ControllerDialog - + Controller P1 - + Kontroller P1 - + &Controller P1 - + &Kontroller P1 + + + + DataDialog + + + Data Manager + Datahanterare + + + + Deleting ANY data is IRREVERSABLE! + Borttagning av VALFRITT data går INTE ATT ÅNGRA! + + + + Shaders + Shaders + + + + UserNAND + UserNAND + + + + SysNAND + SysNAND + + + + Mods + Moddar + + + + Saves + Sparningar + + + + DataWidget + + + Form + Formulär + + + + Tooltip + Verktygstips + + + + Open with your system file manager + Öppna med din systemfilhanterare + + + + Delete all data in this directory. THIS IS 100% IRREVERSABLE! + Ta bort allt data i denna katalog. DETTA GÅR INTE ATT ÅNGRA! + + + + Export all data in this directory. This may take a while! + Exportera allt data i denna katalog. Detta kan ta en stund! + + + + Import data for this directory. This may take a while, and will delete ALL EXISTING DATA! + Importera data för denna katalog. Detta kan ta en stund och kommer att ta bort ALLT BEFINTLIGT DATA! + + + + Calculating... + Beräknar... + + + + DepsDialog + + + Eden Dependencies + Edens beroenden + + + + <html><head/><body><p><span style=" font-size:28pt;">Eden Dependencies</span></p></body></html> + <html><head/><body><p><span style=" font-size:28pt;">Edens beroenden</span></p></body></html> + + + + <html><head/><body><p>The projects that make Eden possible</p></body></html> + <html><head/><body><p>Projekten som gör Eden möjligt</p></body></html> + + + + Dependency + Beroende + + + + Version + Version @@ -5329,27 +5916,27 @@ Dra punkter för att ändra position, eller dubbelklicka tabellceller för att r Direct Connect - + Direkt anslutning Server Address - + Serveradress <html><head/><body><p>Server address of the host</p></body></html> - + <html><head/><body><p>Serveradress för värden</p></body></html> Port - + Port <html><head/><body><p>Port number the host is listening on</p></body></html> - + <html><head/><body><p>Portnummer som värden lyssnar på</p></body></html> @@ -5385,1734 +5972,426 @@ Dra punkter för att ändra position, eller dubbelklicka tabellceller för att r Username is not valid. Must be 4 to 20 alphanumeric characters. - + Användarnamnet är inte giltigt. Måste innehålla 4 till 20 alfanumeriska tecken. Room name is not valid. Must be 4 to 20 alphanumeric characters. - + Rumsnamnet är inte giltigt. Måste vara 4 till 20 alfanumeriska tecken. Username is already in use or not valid. Please choose another. - + Användarnamnet används redan eller är ogiltigt. Välj ett annat. IP is not a valid IPv4 address. - + IP är inte en giltig IPv4-adress. Port must be a number between 0 to 65535. - + Port måste vara ett nummer mellan 0 och 65535. You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - + Du måste välja ett Preferred Game för att vara värd för ett rum. Om du inte har några spel i din spellista ännu kan du lägga till en spelmapp genom att klicka på plusikonen i spellistan. Unable to find an internet connection. Check your internet settings. - + Det går inte att hitta en internetanslutning. Kontrollera dina internetinställningar. Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - + Det går inte att ansluta till värden. Kontrollera att anslutningsinställningarna är korrekta. Om du fortfarande inte kan ansluta kontaktar du rumsvärden och kontrollerar att värden är korrekt konfigurerad med den externa porten vidarebefordrad. Unable to connect to the room because it is already full. - + Det går inte att ansluta till rummet eftersom det redan är fullt. - Creating a room failed. Please retry. Restarting eden might be necessary. - + Creating a room failed. Please retry. Restarting Eden might be necessary. + Det gick inte att skapa ett rum. Försök igen. Det kan vara nödvändigt att starta om Eden. The host of the room has banned you. Speak with the host to unban you or try a different room. - + Värden för rummet har stängt av dig. Prata med värden för att häva avstängningen eller prova ett annat rum. - Version mismatch! Please update to the latest version of eden. If the problem persists, contact the room host and ask them to update the server. - + Version mismatch! Please update to the latest version of Eden. If the problem persists, contact the room host and ask them to update the server. + Versionskonflikt! Uppdatera till den senaste versionen av Eden. Om problemet kvarstår, kontakta rummets värd och be dem uppdatera servern. Incorrect password. - + Felaktigt lösenord. An unknown error occurred. If this error continues to occur, please open an issue - + Ett okänt fel har inträffat. Om det här felet fortsätter att inträffa, öppna ett ärende Connection to room lost. Try to reconnect. - + Anslutning till rum förlorades. Försök att återansluta. You have been kicked by the room host. - + Du har blivit utsparkad av rumsvärden. IP address is already in use. Please choose another. - + IP-adressen är redan i bruk. Välj en annan. You do not have enough permission to perform this action. - + Du har inte tillräcklig behörighet för att utföra den här åtgärden. The user you are trying to kick/ban could not be found. They may have left the room. - + Användaren som du försöker sparka/förbjuda kunde inte hittas. +De kan ha lämnat rummet. No valid network interface is selected. Please go to Configure -> System -> Network and make a selection. - + Inget giltigt nätverksgränssnitt har valts. +Gå till Konfigurera -> System -> Nätverk och gör ett val. Error - Fel - - - - GMainWindow - - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Anonymous data is collected</a> to help improve yuzu. <br/><br/>Would you like to share your usage data with us? - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Anonym data skickas </a>För att förbättra yuzu. <br/><br/>Vill du dela med dig av din användarstatistik med oss? - - - Telemetry - Telemetri - - - - Broken Vulkan Installation Detected - Felaktig Vulkaninstallation Upptäckt - - - - Running a game - TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping - - - - - Loading Web Applet... - Laddar WebApplet... - - - - - Disable Web Applet - Avaktivera Webbappletten - - - - 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.) - - - - - The amount of shaders currently being built - Mängden shaders som just nu byggs - - - - The current selected resolution scaling multiplier. - - - - - Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. - Nuvarande emuleringshastighet. Värden över eller under 100% indikerar på att emulationen körs snabbare eller långsammare än en Switch. - - - - How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. - Hur många bilder per sekund som spelet just nu visar. Detta varierar från spel till spel och scen till scen. - - - - 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. - 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. - - - - Unmute - - - - - Mute - - - - - Reset Volume - - - - - &Clear Recent Files - - - - - &Continue - - - - - &Pause - &Paus - - - - Warning Outdated Game Format - Varning Föråldrat Spelformat - - - 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.<br><br>For an explanation of the various Switch formats yuzu supports, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - 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.<br><br>För en förklaring av de olika format som yuzu stöder, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>kolla in vår wiki</a>. Det här meddelandet visas inte igen. - - - - - Error while loading ROM! - Fel vid laddning av ROM! - - - - The ROM format is not supported. - ROM-formatet stöds inte. - - - - An error occurred initializing the video core. - Ett fel inträffade vid initiering av videokärnan. - - - - Error while loading ROM! %1 - %1 signifies a numeric error code. - - - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://eden-emulator.github.io/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - - - - - Game Updates Warning - - - - - The game you are trying to launch is known to have performance or booting issues when updates are applied. Please try increasing the memory layout to 6GB or 8GB if any issues occur.<br><br>Press "OK" to continue launching, or "Cancel" to cancel the launch. - - - - - Don't show again for this game - - - - - 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.<br><br>For an explanation of the various Switch formats eden supports, <a href='https://eden-emulator.github.io/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - - - - - eden 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: <a href='https://eden-emulator.github.io/help/reference/log-files/'>How to Upload the Log File</a>. - - - - - %1<br>Please redump your files or ask on Discord for help. - %1 signifies an error string. - - - - - An unknown error occurred. Please see the log for more details. - Ett okänt fel har uppstått. Se loggen för mer information. - - - - (64-bit) - - - - - (32-bit) - - - - - %1 %2 - %1 is the title name. %2 indicates if the title is 64-bit or 32-bit - - - - - Closing software... - - - - - Save Data - Spardata - - - - Mod Data - Mod-data - - - - Error Opening %1 Folder - Fel Öppnar %1 Mappen - - - - - Folder does not exist! - Mappen finns inte! - - - - Error Opening Transferable Shader Cache - Fel Under Öppning Av Överförbar Shadercache - - - - Failed to create the shader cache directory for this title. - - - - - Error Removing Contents - - - - - Error Removing Update - - - - - Error Removing DLC - - - - - Remove Installed Game Contents? - - - - - Remove Installed Game Update? - - - - - Remove Installed Game DLC? - - - - - Remove Entry - Ta bort katalog - - - - - - - - - Successfully Removed - Framgångsrikt borttagen - - - - Successfully removed the installed base game. - Tog bort det installerade basspelet framgångsrikt. - - - - The base game is not installed in the NAND and cannot be removed. - Basspelet är inte installerat i NAND och kan inte tas bort. - - - - Successfully removed the installed update. - Tog bort den installerade uppdateringen framgångsrikt. - - - - There is no update installed for this title. - Det finns ingen uppdatering installerad för denna titel. - - - - There are no DLC installed for this title. - Det finns inga DLC installerade för denna titel. - - - - Successfully removed %1 installed DLC. - Tog framgångsrikt bort den %1 installerade DLCn. - - - - Delete OpenGL Transferable Shader Cache? - - - - - Delete Vulkan Transferable Shader Cache? - - - - - Delete All Transferable Shader Caches? - - - - - Remove Custom Game Configuration? - Ta Bort Anpassad Spelkonfiguration? - - - - Remove Cache Storage? - - - - - Remove File - Radera fil - - - - Remove Play Time Data - - - - - Reset play time? - - - - - - Error Removing Transferable Shader Cache - Fel När Överförbar Shader Cache Raderades - - - - - A shader cache for this title does not exist. - En shader cache för denna titel existerar inte. - - - - Successfully removed the transferable shader cache. - Raderade den överförbara shadercachen framgångsrikt. - - - - Failed to remove the transferable shader cache. - Misslyckades att ta bort den överförbara shadercache - - - - Error Removing Vulkan Driver Pipeline Cache - - - - - Failed to remove the driver pipeline cache. - - - - - - Error Removing Transferable Shader Caches - - - - - Successfully removed the transferable shader caches. - - - - - Failed to remove the transferable shader cache directory. - - - - - - Error Removing Custom Configuration - Fel När Anpassad Konfiguration Raderades - - - - A custom configuration for this title does not exist. - En anpassad konfiguration för denna titel existerar inte. - - - - Successfully removed the custom game configuration. - Tog bort den anpassade spelkonfigurationen framgångsrikt. - - - - Failed to remove the custom game configuration. - Misslyckades att ta bort den anpassade spelkonfigurationen. - - - - - RomFS Extraction Failed! - RomFS Extraktion Misslyckades! - - - - There was an error copying the RomFS files or the user cancelled the operation. - Det uppstod ett fel vid kopiering av RomFS filer eller användaren avbröt operationen. - - - - Full - Full - - - - Skeleton - Skelett - - - - Select RomFS Dump Mode - Välj RomFS Dump-Läge - - - - Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. - Välj hur du vill att RomFS ska dumpas. <br>Full kommer att kopiera alla filer i den nya katalogen medan <br>skelett bara skapar katalogstrukturen. - - - - There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root - - - - - Extracting RomFS... - Extraherar RomFS... - - - - - - - - Cancel - Avbryt - - - - RomFS Extraction Succeeded! - RomFS Extraktion Lyckades! - - - - - - The operation completed successfully. - Operationen var lyckad. - - - - Integrity verification couldn't be performed! - - - - - File contents were not checked for validity. - - - - - - Verifying integrity... - - - - - - Integrity verification succeeded! - - - - - - Integrity verification failed! - - - - - File contents may be corrupt. - - - - - - - - Create Shortcut - - - - - Do you want to launch the game in fullscreen? - - - - - Successfully created a shortcut to %1 - - - - - This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - - - - - Failed to create a shortcut to %1 - - - - - Create Icon - - - - - Cannot create icon file. Path "%1" does not exist and cannot be created. - - - - - Error Opening %1 - Fel under öppning av %1 - - - - Select Directory - Välj Katalog - - - - Properties - Egenskaper - - - - The game properties could not be loaded. - Spelegenskaperna kunde inte laddas. - - - - Switch Executable (%1);;All Files (*.*) - %1 is an identifier for the Switch executable file extensions. - Switch Körbar (%1);;Alla Filer (*.*) - - - - Load File - Ladda Fil - - - - Open Extracted ROM Directory - Öppna Extraherad ROM-Katalog - - - - Invalid Directory Selected - Ogiltig Katalog Vald - - - - The directory you have selected does not contain a 'main' file. - Katalogen du har valt innehåller inte en 'main'-fil. - - - - Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - Installerbar Switch-fil (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - - - - Install Files - Installera filer - - - - %n file(s) remaining - - - - - - - - Installing file "%1"... - Installerar Fil "%1"... - - - - - Install Results - Installera resultat - - - - To avoid possible conflicts, we discourage users from installing base games to the NAND. -Please, only use this feature to install updates and DLC. - - - - - %n file(s) were newly installed - - - - - - - - - %n file(s) were overwritten - - - - - - - - - %n file(s) failed to install - - - - - - - - - System Application - Systemapplikation - - - - System Archive - Systemarkiv - - - - System Application Update - Systemapplikationsuppdatering - - - - Firmware Package (Type A) - Firmwarepaket (Typ A) - - - - Firmware Package (Type B) - Firmwarepaket (Typ B) - - - - Game - Spel - - - - Game Update - Speluppdatering - - - - Game DLC - Spel DLC - - - - Delta Title - Delta Titel - - - - Select NCA Install Type... - Välj NCA-Installationsläge... - - - - Please select the type of title you would like to install this NCA as: -(In most instances, the default 'Game' is fine.) - Välj vilken typ av titel du vill installera som: -(I de flesta fallen, standard 'Spel' är bra.) - - - - Failed to Install - Misslyckades med Installationen - - - - The title type you selected for the NCA is invalid. - Den titeltyp du valt för NCA är ogiltig. - - - - File not found - Filen hittades inte - - - - File "%1" not found - Filen "%1" hittades inte - - - - OK - OK - - - - - Hardware requirements not met - Hårdvarukraven uppfylls ej - - - - - Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled. - - - - - Missing yuzu Account - yuzu Konto hittades inte - - - - In order to submit a game compatibility test case, you must link your eden account.<br><br/>To link your eden account, go to Emulation &gt; Configuration &gt; Web. - - - - - Install decryption keys and restart eden before attempting to install firmware. - - - - - Firmware installation cancelled, firmware may be in bad state, restart eden or re-install firmware. - - - - - Encryption keys are missing. - - - - - Are you sure you want to close eden? - - - - - - - eden - - - - - The currently running application has requested eden to not exit. - -Would you like to bypass this and exit anyway? - - - - In order to submit a game compatibility test case, you must link your yuzu account.<br><br/>To link your yuzu account, go to Emulation &gt; Configuration &gt; Web. - För att skicka ett spelkompatibilitetstest, du måste länka ditt yuzu-konto.<br><br/>För att länka ditt yuzu-konto, gå till Emulering &gt, Konfigurering &gt, Web. - - - - Error opening URL - Fel när URL öppnades - - - - Unable to open the URL "%1". - Oförmögen att öppna URL:en "%1". - - - - TAS Recording - TAS Inspelning - - - - Overwrite file of player 1? - Överskriv spelare 1:s fil? - - - - Invalid config detected - Ogiltig konfiguration upptäckt - - - - Handheld controller can't be used on docked mode. Pro controller will be selected. - - - - - - Amiibo - Amiibo - - - - - The current amiibo has been removed - Den aktuella amiibon har avlägsnats - - - - Error Fel - - - - The current game is not looking for amiibos - Det aktuella spelet letar ej efter amiibos - - - - Amiibo File (%1);; All Files (*.*) - Amiibo Fil (%1);; Alla Filer (*.*) - - - - Load Amiibo - Ladda Amiibo - - - - Error loading Amiibo data - Fel vid laddning av Amiibodata - - - - The selected file is not a valid amiibo - Den valda filen är inte en giltig amiibo - - - - The selected file is already on use - Den valda filen är redan använd - - - - An unknown error occurred - Ett okänt fel har inträffat - - - - - Verification failed for the following files: - -%1 - - - - - Keys not installed - - - - - Select Dumped Firmware Source Location - - - - - Installing Firmware... - - - - - - - - Firmware install failed - - - - - Unable to locate potential firmware NCA files - - - - - Failed to delete one or more firmware file. - - - - - One or more firmware files failed to copy into NAND. - - - - - Firmware integrity verification failed! - - - - - Select Dumped Keys Location - - - - - - - Decryption Keys install failed - - - - - prod.keys is a required decryption key file. - - - - - One or more keys failed to copy. - - - - - Decryption Keys install succeeded - - - - - Decryption Keys were successfully installed - - - - - Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. - - - - - - - - - - - No firmware available - - - - - Please install the firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Controller Menu. - - - - - Controller Applet - Kontroll-Applet - - - - Controller Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Home Menu. - - - - - - Home Menu Applet - - - - - - Home Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use Starter. - - - - - Starter Applet - - - - - Starter is not available. Please reinstall firmware. - - - - - Please install firmware to use the home menu. - - - - - Capture Screenshot - Skärmdump - - - - PNG Image (*.png) - PNG Bild (*.png) - - - - Update Available - - - - - Update %1 for Eden is available. -Would you like to download it? - - - - - TAS state: Running %1/%2 - TAStillstånd: pågående %1/%2 - - - - TAS state: Recording %1 - TAStillstånd: spelar in %1 - - - - TAS state: Idle %1/%2 - TAStillstånd: inaktiv %1/%2 - - - - TAS State: Invalid - TAStillstånd: ogiltigt - - - - &Stop Running - - - - - &Start - &Start - - - - Stop R&ecording - - - - - R&ecord - - - - - Building: %n shader(s) - - - - - - - - Scale: %1x - %1 is the resolution scaling factor - - - - - Speed: %1% / %2% - Hastighet: %1% / %2% - - - - Speed: %1% - Hastighet: %1% - - - - Game: %1 FPS - Spel: %1 FPS - - - - Frame: %1 ms - Ruta: %1 ms - - - - %1 %2 - - - - - - FSR - - - - - NO AA - - - - - VOLUME: MUTE - - - - - VOLUME: %1% - Volume percentage (e.g. 50%) - - - - - Derivation Components Missing - Deriveringsdelar saknas - - - - Select RomFS Dump Target - Välj RomFS Dumpa Mål - - - - Please select which RomFS you would like to dump. - Välj vilken RomFS du vill dumpa. - - - Are you sure you want to close yuzu? - Är du säker på att du vill stänga yuzu? - - - yuzu - yuzu - - - - Are you sure you want to stop the emulation? Any unsaved progress will be lost. - Är du säker på att du vill stoppa emuleringen? Du kommer att förlora osparade framsteg. - - - The currently running application has requested yuzu to not exit. - -Would you like to bypass this and exit anyway? - Applikationen som nu körs har begärt att yuzu inte avslutas. - -Vill du strunta i detta och avsluta ändå? - - - - None - Ingen - - - - FXAA - - - - - SMAA - - - - - Nearest - - - - - Bilinear - - - - - Bicubic - - - - - Gaussian - - - - - ScaleForce - - - - - Area - - - - - Docked - Dockad - - - - Handheld - Handheld - - - - Normal - - - - - High - - - - - Extreme - - - - - Vulkan - - - - - OpenGL - - - - - Null - - - - - GLSL - - - - - GLASM - - - - - SPIRV - - GRenderWindow - - + + OpenGL not available! - OpenGL inte tillgängligt! + OpenGL är inte tillgängligt! - + OpenGL shared contexts are not supported. - + Delade OpenGL-kontexter stöds inte. - yuzu has not been compiled with OpenGL support. - yuzu har inte komilerats med OpenGL support. + + Eden has not been compiled with OpenGL support. + Eden har inte kompilerats med OpenGL-stöd. - - eden has not been compiled with OpenGL support. - - - - - + + Error while initializing OpenGL! - Fel under initialisering av OpenGL! + Fel vid initiering av OpenGL! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. - + Din GPU kanske inte stöder OpenGL, eller så har du inte den senaste grafikdrivrutinen. - + Error while initializing OpenGL 4.6! - + Fel vid initiering av OpenGL 4.6! - + Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 - + Din GPU kanske inte stöder OpenGL 4.6, eller så har du inte den senaste grafikdrivrutinen.<br><br>GL Renderer:<br>%1 - + Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2 - + Din GPU kanske inte stöder ett eller flera av de nödvändiga OpenGL-tilläggen. Se till att du har den senaste grafikdrivrutinen.<br><br>GL Renderer:<br>%1<br><br>Tillägg som inte stöds:<br>%2 GameList - + + &Add New Game Directory + &Lägg till ny spelkatalog + + + Favorite - + Favorit - + Start Game - + Starta spel - + Start Game without Custom Configuration - + Starta spelet utan anpassad konfiguration - + Open Save Data Location - Öppna Spara Data Destination + Öppna plats för sparat data - + Open Mod Data Location - Öppna Mod Data Destination + Öppna plats för moddata - + Open Transferable Pipeline Cache - + Öppna cache för överförbar pipeline - + + Link to Ryujinx + Länka till Ryujinx + + + Remove - Ta Bort + Ta bort - + Remove Installed Update - Ta Bort Installerad Uppdatering + Ta bort installerad uppdatering - + Remove All Installed DLC - Ta Bort Alla Installerade DLC + Ta bort alla installerade DLC - + Remove Custom Configuration - Ta Bort Anpassad Konfiguration + Ta bort anpassad konfiguration - - Remove Play Time Data - - - - + Remove Cache Storage - + Ta bort cache-lagring - + Remove OpenGL Pipeline Cache - + Ta bort OpenGL Pipeline Cache - + Remove Vulkan Pipeline Cache - + Ta bort Vulkan Pipeline Cache - + Remove All Pipeline Caches - + Ta bort alla pipeline-cacher - + Remove All Installed Contents - Ta Bort Allt Installerat Innehåll + Ta bort allt installerat innehåll - - + + Manage Play Time + Hantera speltid + + + + Edit Play Time Data + Redigera data för speltid + + + + Remove Play Time Data + Ta bort data om speltid + + + + Dump RomFS Dumpa RomFS - + Dump RomFS to SDMC - + Dumpa RomFS till SDMC - + Verify Integrity - + Verifiera integritet - + Copy Title ID to Clipboard - Kopiera Titel ID till Urklipp + Kopiera titel-id till urklipp - + Navigate to GameDB entry - Navigera till GameDB-sida + Navigera till GameDB-post - + Create Shortcut - + Skapa genväg - + Add to Desktop - + Lägg till på skrivbordet - + Add to Applications Menu - + Lägg till i programmenyn - + Configure Game - + Konfigurera spelet - Properties - Egenskaper - - - + Scan Subfolders - Skanna Underkataloger + Sök igenom undermappar - + Remove Game Directory - Radera Spelkatalog + Ta bort spelkatalog - + ▲ Move Up ▲ Flytta upp - + ▼ Move Down ▼ Flytta ner - + Open Directory Location - Öppna Sökvägsplats + Öppna katalogplats - + Clear Rensa - + Name Namn - + Compatibility Kompatibilitet - + Add-ons - Add-Ons + Tillägg - + File type Filtyp - + Size Storlek - + Play time - + Speltid GameListItemCompat - + Ingame - + Spelproblem - + Game starts, but crashes or major glitches prevent it from being completed. - + Spelet startar men kraschar eller större fel gör att det inte kan slutföras. - + Perfect Perfekt - + Game can be played without issues. - + Spelet kan spelas utan problem. - + Playable - + Spelbart - + Game functions with minor graphical or audio glitches and is playable from start to finish. - + Spelet fungerar med små grafiska eller ljudmässiga fel och är spelbart från början till slut. - + Intro/Menu Intro/Meny - + Game loads, but is unable to progress past the Start Screen. - + Spelet läses in men det går inte att komma förbi startskärmen. - + Won't Boot - Startar Inte + Startar inte - + The game crashes when attempting to startup. - Spelet kraschar när man försöker starta det. + Spelet kraschar när det försöker starta. - + Not Tested - Inte Testad + Inte testat - + The game has not yet been tested. Spelet har ännu inte testats. @@ -7120,28 +6399,25 @@ Vill du strunta i detta och avsluta ändå? GameListPlaceholder - + Double-click to add a new folder to the game list - Dubbelklicka för att lägga till en ny mapp i spellistan. + Dubbelklicka för att lägga till en ny mapp i spellistan GameListSearchField - + %1 of %n result(s) - - - - + %1 av %n resultat%1 av %n resultat - + Filter: - Filter: + Filtrera: - + Enter pattern to filter Ange mönster för att filtrera @@ -7151,22 +6427,22 @@ Vill du strunta i detta och avsluta ändå? Create Room - + Skapa rum Room Name - + Rumsnamn Preferred Game - + Föredraget spel Max Players - + Max antal spelare @@ -7176,7 +6452,7 @@ Vill du strunta i detta och avsluta ändå? (Leave blank for open game) - + (Lämna tomt för öppet spel) @@ -7186,7 +6462,7 @@ Vill du strunta i detta och avsluta ändå? Port - + Port @@ -7196,244 +6472,263 @@ Vill du strunta i detta och avsluta ändå? Load Previous Ban List - + Läs in tidigare avstängningslista Public - + Offentlig Unlisted - + Inte listad Host Room - + Värdrum HostRoomWindow - + Error Fel - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. + + Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid Eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. Debug Message: - + Det gick inte att annonsera rummet i den offentliga lobbyn. För att kunna vara värd för ett offentligt rum måste du ha ett giltigt Eden-konto konfigurerat i Emulering -> Konfigurera -> Webb. Om du inte vill publicera ett rum i den offentliga lobbyn väljer du istället Olistade. +Felsökningsmeddelande: Hotkeys - + Audio Mute/Unmute - + Ljud avstängt/aktiverat - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Main Window - + Huvudfönster - + Audio Volume Down - + Ljudvolym ned - + Audio Volume Up - + Ljudvolym upp - + Capture Screenshot - Skärmdump + Ta skärmbild - + Change Adapting Filter - + Ändra anpassningsfilter - + Change Docked Mode - + Ändra dockningsläge - - Change GPU Accuracy - + + Change GPU Mode + Ändra GPU-läge - + Configure - Konfigurera + Konfigurera - + Configure Current Game - + Konfigurera aktuellt spel - + Continue/Pause Emulation - + Fortsätt/Pausa emulering - + Exit Fullscreen - + Avsluta helskärm - - Exit eden - + + Exit Eden + Avsluta Eden - + Fullscreen - Fullskärm + Helskärm - + Load File - Ladda Fil + Läs in fil - + Load/Remove Amiibo - + Läs in/ta bort Amiibo - - Multiplayer Browse Public Game Lobby - + + Browse Public Game Lobby + Bläddra i den publika spellobbyn - - Multiplayer Create Room - + + Create Room + Skapa rum - - Multiplayer Direct Connect to Room - + + Direct Connect to Room + Direktanslutning till rum - - Multiplayer Leave Room - + + Leave Room + Lämna rum - - Multiplayer Show Current Room - + + Show Current Room + Visa aktuellt rum - + Restart Emulation - + Starta om emuleringen - + Stop Emulation - + Stoppa emulering - + TAS Record - + TAS-post - + TAS Reset - + TAS-återställning - + TAS Start/Stop - + TAS starta/stoppa - + Toggle Filter Bar - + Växla filterfält - + Toggle Framerate Limit - + Växla gräns för bildfrekvens - + + Toggle Turbo Speed + Växla turbohastighet + + + + Toggle Slow Speed + Växla låg hastighet + + + Toggle Mouse Panning - + Växla muspanorering - + Toggle Renderdoc Capture - + Växla till Renderdoc Capture - + Toggle Status Bar - + Växla statusfält + + + + Toggle Performance Overlay + Växla prestandaöverlägg InstallDialog - - - Please confirm these are the files you wish to install. - Var vänlig bekräfta att detta är filerna du önskar installera. - - Installing an Update or DLC will overwrite the previously installed one. - Att installera en uppdatering eller DLC kommer överskriva den före detta installerade DLC:n eller uppdateringen. + Please confirm these are the files you wish to install. + Bekräfta att detta är de filer som du vill installera. - + + Installing an Update or DLC will overwrite the previously installed one. + Installation av en uppdatering eller DLC kommer att skriva över den tidigare installerade. + + + Install Installera - + Install Files to NAND Installera filer till NAND @@ -7441,10 +6736,11 @@ Debug Message: LimitableInputDialog - - The text can't contain any of the following characters: + + The text can't contain any of the following characters: %1 - + Texten får inte innehålla något av följande tecken: +%1 @@ -7452,37 +6748,37 @@ Debug Message: Loading Shaders 387 / 1628 - Laddar Shaders 387 / 1628 + Läser in shaders 387 / 1628 Loading Shaders %v out of %m - Laddar Shaders %v utav %m + Läser in Shaders %v av %m Estimated Time 5m 4s - Beräknad Tid 5m 4s + Beräknad tid 5m 4s - + Loading... - Laddar... + Läser in... - + Loading Shaders %1 / %2 - Laddar Shaders %1 / %2 + Läser in shaders %1 / %2 - + Launching... Startar... - + Estimated Time %1 - Beräknad Tid %1 + Beräknad tid %1 @@ -7490,7 +6786,7 @@ Debug Message: Public Room Browser - + Bläddrare för offentliga rum @@ -7501,72 +6797,72 @@ Debug Message: Filters - + Filter Search - + Sök Games I Own - + Spel jag äger Hide Empty Rooms - + Dölj tomma rum Hide Full Rooms - + Dölj fulla rum Refresh Lobby - + Uppdatera lobbyn - + Password Required to Join - + Lösenord krävs för att gå med - + Password: - + Lösenord: - + Players Spelare - + Room Name - + Rumsnamn + + + + Preferred Game + Föredraget spel - Preferred Game - - - - Host - + Värd - + Refreshing - + Uppdaterar - + Refresh List - + Uppdatera lista @@ -7579,362 +6875,1458 @@ Debug Message: &File - &Fil + &Arkiv &Recent Files - + &Rekommenterade filer - + + Open &Eden Folders + Öppna &Eden-mappar + + + &Emulation &Emulering - + &View - &Vyn - - - - &Reset Window Size - - - - - &Debugging - + &Visa + &Reset Window Size + Å&terställ fönsterstorlek + + + + &Debugging + &Felsökning + + + + &Game List Mode + Läge för s&pellista + + + + Game &Icon Size + Storlek för spel&ikon + + + Reset Window Size to &720p - + Återställ fönsterstorlek till &720p - + Reset Window Size to 720p - + Återställ fönsterstorlek till 720p - + Reset Window Size to &900p - + Återställ fönsterstorlek till &900p - + Reset Window Size to 900p - + Återställ fönsterstorleken till 900p - + Reset Window Size to &1080p - + Återställ fönsterstorlek till &1080p - + Reset Window Size to 1080p - + Återställ fönsterstorleken till 1080p - + &Multiplayer - + &Flera spelare - + &Tools - + Ver&ktyg - - &Amiibo - + + Am&iibo + Am&iibo - + + Launch &Applet + Starta &applet + + + &TAS - + &TAS - + &Create Home Menu Shortcut - + S&kapa genväg till startmenyn - + + Install &Firmware + Installera &firmware + + + &Help &Hjälp - + &Install Files to NAND... - + &Installera filer till NAND... - + L&oad File... - + Läs &in fil... - + Load &Folder... - + Läs in &mapp... - + E&xit A&vsluta - + + &Pause &Paus - + &Stop - &Sluta + &Stoppa - + &Verify Installed Contents - + &Verifiera installerat innehåll - - &About eden - + + &About Eden + &Om Eden + + + + Single &Window Mode + Enkelt &fönsterläge + + + + Con&figure... + Kon&figurera... + + + + Ctrl+, + Ctrl+, + + + + Enable Overlay Display Applet + Aktivera applet för överläggsvisning + + + + Show &Filter Bar + Visa &filterfält + + + + Show &Status Bar + Visa &statusrad + + + + Show Status Bar + Visa statusrad + + + + &Browse Public Game Lobby + &Bläddra i offentlig spellobby + + + + &Create Room + &Skapa rum + + + + &Leave Room + &Lämna rummet + + + + &Direct Connect to Room + &Direkt anslutning till rum + + + + &Show Current Room + &Visa aktuellt rum + + + + F&ullscreen + H&elskärm - Open &eden Folder - - - - - Open Home Menu - - - - - &Discord - - - - - Open &Setup - - - - - &Desktop - - - - - &Application Menu - - - - - Single &Window Mode - - - - - Con&figure... - - - - - Ctrl+, - - - - - Display D&ock Widget Headers - - - - - Show &Filter Bar - - - - - Show &Status Bar - - - - - Show Status Bar - Visa Statusfält - - - - &Browse Public Game Lobby - - - - - &Create Room - - - - - &Leave Room - - - - - &Direct Connect to Room - - - - - &Show Current Room - - - - - F&ullscreen - - - - &Restart - - - - - Load/Remove &Amiibo... - - - - - &Report Compatibility - - - - - Open &Mods Page - - - - - Open &Quickstart Guide - - - - - &FAQ - + Starta o&m + Load/Remove &Amiibo... + Läs in/ta bort &Amiibo... + + + + &Report Compatibility + &Rapportera kompatibilitet + + + + Open &Mods Page + Öppna &Mods-sidan + + + + Open &Quickstart Guide + Öppna &snabbstartsguide + + + + &FAQ + &Frågor och svar + + + &Capture Screenshot - + &Ta skärmdump - - Open &Album - + + &Album + &Album - + &Set Nickname and Owner - + &Ange smeknamn och ägare - + &Delete Game Data - + &Radera speldata - + &Restore Amiibo - + Å&terställ Amiibo - + &Format Amiibo - + &Formatera Amiibo - - Open &Mii Editor - + + &Mii Editor + &Mii-redigerare - + &Configure TAS... - + &Konfigurera TAS... - + Configure C&urrent Game... - + Konfigurera a&ktuellt spel... - + + &Start - &Start + &Starta - + &Reset - + Starta &om - + + R&ecord - + Spela &in - + Open &Controller Menu - + Öppna &kontrollermenyn - - Install Firmware - + + Install Decryption &Keys + Installera avkrypteringsn&ycklar - - Install Decryption Keys - + + &Home Menu + &Hemmeny - - - MicroProfileDialog - - &MicroProfile - + + &Desktop + S&krivbord + + + + &Application Menu + &Applikationsmeny + + + + &Root Data Folder + &Rotdatamapp + + + + &NAND Folder + &NAND-mapp + + + + &SDMC Folder + &SDMC-mapp + + + + &Mod Folder + &Mod-mapp + + + + &Log Folder + &Loggmapp + + + + From Folder + Från mapp + + + + From ZIP + Från ZIP + + + + &Eden Dependencies + &Edens beroenden + + + + &Data Manager + &Datahanterare + + + + &Tree View + &Trädvy + + + + &Grid View + &Rutnätsvy + + + + Game Icon Size + Storlek för spelikon + + + + + + None + Ingen + + + + Show Game &Name + Visa spel&namn + + + + Show &Performance Overlay + Visa &prestandaöverlägg + + + + Small (32x32) + Liten (32x32) + + + + Standard (64x64) + Standard (64x64) + + + + Large (128x128) + Stor (128x128) + + + + Full Size (256x256) + Full storlek (256x256) + + + + Broken Vulkan Installation Detected + Felaktig Vulkan-installation upptäcktes + + + + Vulkan initialization failed during boot. + Vulkan-initialiseringen misslyckades under uppstarten. + + + + Running a game + TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping + Kör ett spel + + + + Loading Web Applet... + Läser in webbapplet... + + + + + Disable Web Applet + Inaktivera webbapplet + + + + 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.) + Att inaktivera webbappletten kan leda till odefinierat beteende och bör endast användas med Super Mario 3D All-Stars. Är du säker på att du vill inaktivera webbappletten? +(Detta kan återaktiveras i felsökningsinställningarna.) + + + + The amount of shaders currently being built + Antalet shaders som för närvarande byggs + + + + The current selected resolution scaling multiplier. + Den aktuella valda multiplikatorn för upplösningsskalning. + + + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. + Aktuell emuleringshastighet. Värden högre eller lägre än 100% indikerar att emuleringen körs snabbare eller långsammare än en Switch. + + + + How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. + Hur många bildrutor per sekund spelet för närvarande visar. Detta varierar från spel till spel och från scen till scen. + + + + 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. + Tid som krävs för att emulera en Switch-bildruta, exklusive bildbegränsning eller v-synkronisering. För emulering i full hastighet bör detta vara högst 16,67 ms. + + + + Unmute + Aktivera ljud + + + + Mute + Tyst + + + + Reset Volume + Återställ volym + + + + &Clear Recent Files + &Töm tidigare filer + + + + &Continue + &Fortsätt + + + + Warning: Outdated Game Format + Varning: Föråldrat spelformat + + + + 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.<br>For an explanation of the various Switch formats Eden supports, out our user handbook. This message will not be shown again. + Du använder det dekonstruerade ROM-katalogformatet för detta spel, vilket är ett föråldrat format som har ersatts av andra format såsom NCA, NAX, XCI eller NSP. Dekonstruerade ROM-kataloger saknar ikoner, metadata och uppdateringsstöd.<br> För en förklaring av de olika Switch-format som Eden har stöd för, se vår användarhandbok. Detta meddelande kommer inte att visas igen. + + + + + Error while loading ROM! + Fel vid inläsning av ROM! + + + + The ROM format is not supported. + ROM-formatet stöds inte. + + + + An error occurred initializing the video core. + Ett fel uppstod vid initialiseringen av videokärnan. + + + + Eden 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: <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>How to Upload the Log File</a>. + Eden har stött på ett fel vid körning av videokärnan. Detta orsakas vanligtvis av föråldrade GPU-drivrutiner, inklusive integrerade sådana. Se loggen för mer information. För mer information om hur du kommer åt loggen, se följande sida: <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>Hur man laddar upp loggfilen</a>. + + + + Error while loading ROM! %1 + %1 signifies a numeric error code. + Fel vid inläsning av ROM! %1 + + + + %1<br>Please redump your files or ask on Discord/Stoat for help. + %1 signifies an error string. + %1<br>Dumpa dina filer igen eller fråga på Discord/Stoat för hjälp. + + + + An unknown error occurred. Please see the log for more details. + Ett okänt fel har uppstått. Se loggen för mer information. + + + + (64-bit) + (64-bitar) + + + + (32-bit) + (32-bitar) + + + + %1 %2 + %1 is the title name. %2 indicates if the title is 64-bit or 32-bit + %1 %2 + + + + Closing software... + Stänger programvara... + + + + Save Data + Sparat data + + + + Mod Data + Mod-data + + + + Error Opening %1 Folder + Fel vid öppning av mappen %1 + + + + + Folder does not exist! + Mappen finns inte! + + + + Remove Installed Game Contents? + Ta bort installerat spelinnehåll? + + + + Remove Installed Game Update? + Ta bort installerad speluppdatering? + + + + Remove Installed Game DLC? + Ta bort installerat spel-DLC? + + + + Remove Entry + Ta bort post + + + + Delete OpenGL Transferable Shader Cache? + Ta bort OpenGL Transferable Shader Cache? + + + + Delete Vulkan Transferable Shader Cache? + Ta bort Vulkan Transferable Shader Cache? + + + + Delete All Transferable Shader Caches? + Ta bort alla Transferable Shader Caches? + + + + Remove Custom Game Configuration? + Ta bort anpassad spelkonfiguration? + + + + Remove Cache Storage? + Ta bort cachelagring? + + + + Remove File + Ta bort fil + + + + Remove Play Time Data + Ta bort data om speltid + + + + Reset play time? + Nollställ speltid? + + + + + RomFS Extraction Failed! + Extrahering av RomFS misslyckades! + + + + There was an error copying the RomFS files or the user cancelled the operation. + Det uppstod ett fel vid kopieringen av RomFS-filerna eller så avbröt användaren åtgärden. + + + + Full + Fullständigt + + + + Skeleton + Skelett + + + + Select RomFS Dump Mode + Välj dumpläge för RomFS + + + + Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. + Välj hur du vill att RomFS ska dumpas. <br>Fullständigt kopierar alla filer till den nya katalogen, medan <br>skelett endast skapar katalogstrukturen. + + + + There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root + Det finns inte tillräckligt med ledigt utrymme på %1 för att extrahera RomFS. Frigör utrymme eller välj en annan dumpkatalog under Emulering > Konfigurera > System > Filsystem > Dumprot. + + + + Extracting RomFS... + Extraherar RomFS... + + + + + Cancel + Avbryt + + + + RomFS Extraction Succeeded! + Extrahering av RomFS lyckades! + + + + The operation completed successfully. + Operationen slutfördes. + + + + Error Opening %1 + Fel vid öppning av %1 + + + + Select Directory + Välj katalog + + + + Properties + Egenskaper + + + + The game properties could not be loaded. + Spelegenskaperna kunde inte läsas in. + + + + Switch Executable (%1);;All Files (*.*) + %1 is an identifier for the Switch executable file extensions. + Körbar Switch-fil (%1);;Alla filer (*.*) + + + + Load File + Läs in fil + + + + Open Extracted ROM Directory + Öppna katalog för extraherad ROM + + + + Invalid Directory Selected + Ogiltig katalog valdes + + + + The directory you have selected does not contain a 'main' file. + Den katalog du har valt innehåller ingen ”main”-fil. + + + + Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) + Installerbar Switch-fil (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) + + + + Install Files + Installera filer + + + + %n file(s) remaining + %n fil återstår%n filer återstår + + + + Installing file "%1"... + Installerar filen "%1"... + + + + + Install Results + Installationsresultat + + + + To avoid possible conflicts, we discourage users from installing base games to the NAND. +Please, only use this feature to install updates and DLC. + För att undvika eventuella konflikter avråder vi användare från att installera basspel på NAND. +Använd endast denna funktion för att installera uppdateringar och DLC. + + + + %n file(s) were newly installed + + %n ny fil installerades +%n nya filer installerades + + + + + %n file(s) were overwritten + + %n fil skrevs över +%n filer skrevs över + + + + + %n file(s) failed to install + + %n fil gick inte att installera +%n filer gick inte att installera + + + + + System Application + Systemapplikation + + + + System Archive + Systemarkiv + + + + System Application Update + Uppdatering för systemapplikation + + + + Firmware Package (Type A) + Firmware-paket (Type A) + + + + Firmware Package (Type B) + Firmware-paket (Type B) + + + + Game + Spel + + + + Game Update + Speluppdatering + + + + Game DLC + DLC för spel + + + + Delta Title + Deltatitel + + + + Select NCA Install Type... + Välj NCA-installationstyp... + + + + Please select the type of title you would like to install this NCA as: +(In most instances, the default 'Game' is fine.) + Välj vilken typ av titel du vill installera denna NCA som: +(I de flesta fall är standardinställningen ”Spel” tillräcklig.) + + + + Failed to Install + Misslyckades med att installera + + + + The title type you selected for the NCA is invalid. + Den titeltypen du valt för NCA är ogiltig. + + + + File not found + Filen hittades inte + + + + File "%1" not found + Filen "%1" hittades inte + + + + OK + Ok + + + + Function Disabled + Funktion inaktiverad + + + + Compatibility list reporting is currently disabled. Check back later! + Rapportering till kompatibilitetslistan är för närvarande inaktiverad. Kom tillbaka senare! + + + + Error opening URL + Fel vid öppning av URL + + + + Unable to open the URL "%1". + Det går inte att öppna URL:en ”%1”. + + + + TAS Recording + TAS-inspelning + + + + Overwrite file of player 1? + Skriv över fil för spelare 1? + + + + Invalid config detected + Ogiltig konfiguration upptäcktes + + + + Handheld controller can't be used on docked mode. Pro controller will be selected. + Handhållen kontroller kan inte användas i dockat läge. Pro-kontrollern kommer att väljas. + + + + + Amiibo + Amiibo + + + + + The current amiibo has been removed + Den aktuella amiibo har tagits bort. + + + + Error + Fel + + + + + The current game is not looking for amiibos + Det aktuella spelet letar inte efter amiibos + + + + Amiibo File (%1);; All Files (*.*) + Amiibo-fil (%1);; Alla filer (*.*) + + + + Load Amiibo + Läs in Amiibo + + + + Error loading Amiibo data + Fel vid läsning av Amiibo-data + + + + The selected file is not a valid amiibo + Den valda filen är inte en giltig amiibo. + + + + The selected file is already on use + Den valda filen används redan + + + + An unknown error occurred + Ett okänt fel uppstod + + + + + Keys not installed + Nycklar inte installerade + + + + + Install decryption keys and restart Eden before attempting to install firmware. + Installera avkrypteringsnycklar och starta om Eden innan du försöker installera firmware. + + + + Select Dumped Firmware Source Location + Välj plats för dumpad firmware-källa + + + + Select Dumped Firmware ZIP + Välj dumpad firmware-ZIP + + + + Zipped Archives (*.zip) + Zippade arkiv (*.zip) + + + + Firmware cleanup failed + Uppstädning av firmware misslyckades + + + + Failed to clean up extracted firmware cache. +Check write permissions in the system temp directory and try again. +OS reported error: %1 + Det gick inte att rensa den extraherade firmware-cachen. +Kontrollera skrivbehörigheten i systemets temporära katalog och försök igen. +OS rapporterade fel: %1 + + + + No firmware available + Ingen firmware tillgänglig + + + + Firmware Corrupted + Firmware är skadat + + + + Unknown applet + Okänd applet + + + + Applet doesn't map to a known value. + Appleten mappar inte till ett känt värde. + + + + Record not found + Posten hittades inte + + + + Applet not found. Please reinstall firmware. + Appleten hittades inte. Installera om fast programvara. + + + + Capture Screenshot + Ta skärmbild + + + + PNG Image (*.png) + PNG-bild (*.png) + + + + Update Available + Uppdatering tillgänglig + + + + Download %1? + Hämta %1? + + + + TAS state: Running %1/%2 + TAS-tillstånd: Kör %1/%2 + + + + TAS state: Recording %1 + TAS-tillstånd: Spelar in %1 + + + + TAS state: Idle %1/%2 + TAS-tillstånd: Overksam %1/%2 + + + + TAS State: Invalid + TAS-tillstånd: Ogiltig + + + + &Stop Running + &Stoppa körning + + + + Stop R&ecording + Stoppa i&nspelning + + + + Building: %n shader(s) + Bygger: %n shaderBygger: %n shaders + + + + Scale: %1x + %1 is the resolution scaling factor + Skala: %1x + + + + Speed: %1% / %2% + Hastighet: %1% / %2% + + + + Speed: %1% + Hastighet: %1% + + + + Game: %1 FPS + Spel: %1 bilder/s + + + + Frame: %1 ms + Bildruta: %1 ms + + + + + FSR + FSR + + + + NO AA + NO AA + + + + VOLUME: MUTE + VOLYM: TYST + + + + VOLUME: %1% + Volume percentage (e.g. 50%) + VOLYM: %1% + + + + Derivation Components Missing + Deriveringskomponenter saknas + + + + Decryption keys are missing. Install them now? + Avkrypteringsnycklar saknas. Installera dem nu? + + + + Wayland Detected! + Wayland upptäcktes! + + + + Wayland is known to have significant performance issues and mysterious bugs. +It's recommended to use X11 instead. + +Would you like to force it for future launches? + Wayland är känt för att ha betydande prestandaproblem och mystiska buggar. +Det rekommenderas att använda X11 istället. + +Vill du tvinga det för framtida starter? + + + + Use X11 + Använd X11 + + + + Continue with Wayland + Fortsätt med Wayland + + + + Don't show again + Visa inte igen + + + + Restart Required + Omstart krävs + + + + Restart Eden to apply the X11 backend. + Starta om Eden för att tillämpa X11-backend. + + + + Slow + Långsam + + + + Turbo + Turbo + + + + Unlocked + Upplåst + + + + Select RomFS Dump Target + Välj RomFS-dumpmål + + + + Please select which RomFS you would like to dump. + Välj vilken RomFS du vill dumpa. + + + + Are you sure you want to close Eden? + Är du säker på att du vill stänga Eden? + + + + + + Eden + Eden + + + + Are you sure you want to stop the emulation? Any unsaved progress will be lost. + Är du säker på att du vill stoppa emuleringen? Alla osparade framsteg kommer att gå förlorade. + + + + The currently running application has requested Eden to not exit. + +Would you like to bypass this and exit anyway? + Den aktuella applikationen har begärt att Eden inte ska stängas. + +Vill du kringgå detta och stänga ändå? + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Nearest + Närmaste + + + + Bilinear + Bilinjär + + + + Bicubic + Bikubisk + + + + Zero-Tangent + Zero-Tangent + + + + B-Spline + B-Spline + + + + Mitchell + Mitchell + + + + Spline-1 + Spline-1 + + + + Gaussian + Gaussian + + + + Lanczos + Lanczos + + + + ScaleForce + ScaleForce + + + + Area + Område + + + + MMPX + MMPX + + + + Docked + Dockad + + + + Handheld + Handhållen + + + + Fast + Snabb + + + + Balanced + Balanserad + + + + Accurate + Noggrann + + + + Vulkan + Vulkan + + + + OpenGL GLSL + OpenGL GLSL + + + + OpenGL SPIRV + OpenGL SPIRV + + + + OpenGL GLASM + OpenGL GLASM + + + + Null + Null MigrationWorker - - Data was migrated successfully. - - - - + Linking the old directory failed. You may need to re-run with administrative privileges on Windows. OS gave error: %1 - + Länkning av den gamla katalogen misslyckades. Du kan behöva köra om med administratörsbehörighet i Windows. +Operativsystemet gav fel: %1 - + + + +Note that your configuration and data will be shared with %1. +If this is not desirable, delete the following files: +%2 +%3 +%4 + + +Observera att din konfiguration och dina data kommer att delas med %1. +Om detta inte är önskvärt, ta bort följande filer: +%2 +%3 +%4 + + + If you wish to clean up the files which were left in the old data location, you can do so by deleting the following directory: %1 - + + +Om du vill rensa upp bland de filer som låg kvar på den gamla dataplatsen kan du göra det genom att radera följande katalog: +%1 + + + + Data was migrated successfully. + Datamigrering lyckades. + + + + ModSelectDialog + + + Dialog + Dialog + + + + The specified folder or archive contains the following mods. Select which ones to install. + Den angivna mappen eller arkivet innehåller följande mods. Välj vilka du vill installera. @@ -7942,87 +8334,88 @@ If you wish to clean up the files which were left in the old data location, you Moderation - + Moderering Ban List - + Avstängningslista - + Refreshing - + Uppdaterar Unban - + Ta bort avstängning + + + + Subject + Ämne - Subject - - - - Type - + Typ - + Forum Username - + Användarnamn för forum - + IP Address - + IP-adress - + Refresh - Ladda om + Uppdatera MultiplayerState - + Current connection status - + Aktuell anslutningsstatus - + Not Connected. Click here to find a room! - + Inte ansluten. Klicka här för att hitta ett rum! - + Not Connected - Nedkopplad + Inte ansluten - + Connected - Uppkopplad + Ansluten - + New Messages Received - + Nya meddelanden mottagna - + Error Fel - + Failed to update the room information. Please check your Internet connection and try hosting the room again. Debug Message: - + Misslyckades med att uppdatera rumsinformationen. Kontrollera din internetanslutning och försök att vara värd för rummet igen. +Felsökningsmeddelande: @@ -8030,40 +8423,163 @@ Debug Message: Game already running - + Spelet är redan igång Joining a room when the game is already running is discouraged and can cause the room feature not to work correctly. Proceed anyway? - + Att gå med i ett rum när spelet redan är igång avråds och kan leda till att rumsfunktionen inte fungerar korrekt. +Fortsätt ändå? Leave Room - Lämna Rum + Lämna rummet You are about to close the room. Any network connections will be closed. - Du är på väg att stänga detta rum. Alla nätverksuppkopplingar kommer att stängas. + Du är på väg att stänga rummet. Alla nätverksanslutningar kommer att stängas. Disconnect - Koppla ned + Koppla från You are about to leave the room. Any network connections will be closed. - Du är på väg att lämna detta rum. Alla nätverksuppkopplingar kommer att stängas. + Du är på väg att lämna rummet. Alla nätverksanslutningar kommer att stängas. - NetworkMessage::ErrorManager + NewUserDialog - Error - Fel + + + New User + Ny användare + + + + Change Avatar + Byt avatar + + + + Set Image + Ställ in bild + + + + UUID + UUID + + + + Eden + Eden + + + + Username + Användarnamn + + + + UUID must be 32 hex characters (0-9, A-F) + UUID måste vara 32 hexadecimala tecken (0-9, A-F) + + + + Generate + Generera + + + + Select User Image + Välj användarbild + + + + Image Formats (*.jpg *.jpeg *.png *.bmp) + Bildformat (*.jpg *.jpeg *.png *.bmp) + + + + No firmware available + Ingen fast programvara tillgänglig + + + + Please install the firmware to use firmware avatars. + Installera den fasta programvaran för att använda avatarer från den. + + + + + Error loading archive + Fel vid inläsning av arkiv + + + + Archive is not available. Please install/reinstall firmware. + Arkivet är inte tillgängligt. Installera/installera om fast programvara. + + + + Could not locate RomFS. Your file or decryption keys may be corrupted. + Kunde inte hitta RomFS. Din fil eller avkrypteringsnycklar kan vara skadade. + + + + Error extracting archive + Fel vid extrahering av arkiv + + + + Could not extract RomFS. Your file or decryption keys may be corrupted. + Kunde inte extrahera RomFS. Din fil eller avkrypteringsnycklar kan vara skadade. + + + + Error finding image directory + Kunde inte hitta bildkatalog + + + + Failed to find image directory in the archive. + Misslyckades med att hitta bildkatalogen i arkivet. + + + + No images found + Inga bilder hittades + + + + No avatar images were found in the archive. + Inga avatarbilder hittades i arkivet. + + + + + All Good + Tooltip + Allt är bra + + + + Must be 32 hex characters (0-9, a-f) + Tooltip + Måste vara 32 hexadecimala tecken (0-9, a-f) + + + + Must be between 1 and 32 characters + Tooltip + Måste vara mellan 1 och 32 tecken @@ -8090,88 +8606,208 @@ Proceed anyway? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> + + + + PerformanceOverlay + + + Form + Form + + + + Frametime + Bildtid + + + + 0 ms + 0 ms + + + + + Min: 0 + Min: 0 + + + + + Max: 0 + Max: 0 + + + + + Avg: 0 + Genoms: 0 + + + + FPS + Bilder/s + + + + 0 fps + 0 bilder/s + + + + %1 fps + %1 bilder/s + + + + + Avg: %1 + Genoms: %1 + + + + + Min: %1 + Min: %1 + + + + + Max: %1 + Max: %1 + + + + %1 ms + %1 ms PlayerControlPreview - + START/PAUSE - START/PAUSE + START/PAUS + + + + ProfileAvatarDialog + + + Select + Välj + + + + Cancel + Avbryt + + + + Background Color + Bakgrundsfärg + + + + Select Firmware Avatar + Välj avatar från fast programvara QObject - - %1 is not playing a game - %1 spelar inte något spel + + + + Migration + Migrering - - %1 is playing %2 - %1 spelar %2 + + Clear Shader Cache + Töm shader-cache - - Not playing a game - Spelar inte något spel + + Keep Old Data + Behåll gammal data - - Installed SD Titles - Installerade SD-titlar + + Clear Old Data + Töm gammal data - - Installed NAND Titles - Installerade NAND-titlar + + Link Old Directory + Länka gammal katalog - - System Titles - Systemtitlar + + + + + + + - - Add New Game Directory - Lägg till ny spelkatalog + + + No + Nej - - Favorites - Favoriter + + You can manually re-trigger this prompt by deleting the new config directory: +%1 + Du kan manuellt återaktivera denna prompt genom att radera den nya konfigurationsmappen: +%1 + + + + Migrating + Migrering + + + + Migrating, this may take a while... + Migrerar, det kan ta ett tag... - - + + Shift - Shift + Skift - - + + Ctrl Ctrl - - + + Alt Alt - - - - + + + + [not set] [inte inställd] @@ -8181,15 +8817,15 @@ p, li { white-space: pre-wrap; } Hatt %1 %2 - - - - - - - - + + + + + + + + Axis %1%2 Axel %1%2 @@ -8199,359 +8835,383 @@ p, li { white-space: pre-wrap; } Knapp %1 - - - - - - + + + + + + [unknown] [okänd] - - - + + + Left Vänster - - - + + + Right Höger - - - + + + Down Ner - - - + + + Up Upp - - + + Z Z - - + + R R - - + + L L - - + + A A - - + + B B - - + + X X - - + + Y Y - - + + Start - Start + Starta - - + + L1 L1 - - + + L2 L2 - - + + L3 L3 - - + + R1 R1 - - + + R2 R2 - - + + R3 R3 - - + + Circle Cirkel - - + + Cross Kors - - + + Square Fyrkant - - + + Triangle Triangel - - + + Share Dela - - + + Options - Val + Alternativ - - + + [undefined] - [odefinerad] + [odefinierad] - + %1%2 %1%2 - - + + [invalid] - [felaktig] + [ogiltig] - - + + %1%2Hat %3 %1%2Hatt %3 - - - + + + %1%2Axis %3 %1%2Axel %3 - - + + %1%2Axis %3,%4,%5 - %1%2Axel %3,%4%5 + %1%2Axel %3,%4,%5 - - + + %1%2Motion %3 - %1%2Rörelse %3 + %1%2Motion %3 - - + + %1%2Button %3 %1%2Knapp %3 - - + + [unused] [oanvänd] - + ZR ZR - + ZL ZL - + SR SR - + SL SL - + Stick L - + Spak L - + Stick R - + Spak R - + Plus - Pluss + Plus - + Minus Minus - - + + Home Hem - + Capture Fånga - + Touch Touch - + Wheel Indicates the mouse wheel Hjul - + Backward Bakåt - + Forward Framåt - + Task - Åtgärd + Uppgift - + Extra Extra - + %1%2%3%4 - + %1%2%3%4 - - + + %1%2%3Hat %4 - + %1%2%3Hatt %4 - - + + %1%2%3Axis %4 - + %1%2%3Axis %4 - - + + %1%2%3Button %4 - + %1%2%3Knapp %4 - - - - Migration - + + Not playing a game + Spelar inget spel - - - - - + + %1 is not playing a game + %1 spelar inte ett spel - - - No - + + %1 is playing %2 + %1 spelar %2 - - You can manually re-trigger this prompt by deleting the new config directory: -%1 - + + Play Time: %1 + Speltid: %1 - - Migrating - + + Never Played + Aldrig spelat - - Migrating, this may take a while... - + + Version: %1 + Version: %1 + + + + Version: 1.0.0 + Version: 1.0.0 + + + + Installed SD Titles + Installerade SD-titlar + + + + Installed NAND Titles + Installerade NAND-titlar + + + + System Titles + Systemtitlar + + + + Add New Game Directory + Lägg till ny spelkatalog + + + + Favorites + Favoriter @@ -8559,22 +9219,22 @@ p, li { white-space: pre-wrap; } Amiibo Settings - + Inställningar för Amiibo Amiibo Info - + Amiibo-information Series - + Serier Type - + Typ @@ -8584,52 +9244,52 @@ p, li { white-space: pre-wrap; } Amiibo Data - + Amiibo-data Custom Name - + Anpassat namn Owner - + Ägare Creation Date - + Skapat den dd/MM/yyyy - + dd/MM/åååå Modification Date - + Ändringsdatum dd/MM/yyyy - + dd/MM/åååå Game Data - + Speldata Game Id - + Spel-id Mount Amiibo - + Montera Amiibo @@ -8639,32 +9299,834 @@ p, li { white-space: pre-wrap; } File Path - + Filsökväg - + No game data present - - - - - The following amiibo data will be formatted: - + Inga speldata närvarande - The following game data will removed: - + The following amiibo data will be formatted: + Följande amiibo-data kommer att formateras: - Set nickname and owner: - + The following game data will removed: + Följande speldata kommer att tas bort: + Set nickname and owner: + Ange smeknamn och ägare: + + + Do you wish to restore this amiibo? - + Vill du återställa denna amiibo? + + + + QtCommon::Content + + + Game Requires Firmware + Spelet kräver firmware + + + + The game you are trying to launch requires firmware to boot or to get past the opening menu. Please <a href='https://yuzu-mirror.github.io/help/quickstart'>dump and install firmware</a>, or press "OK" to launch anyways. + Spelet som du försöker starta kräver firmware för att starta eller komma förbi startmenyn. <a href='https://yuzu-mirror.github.io/help/quickstart'>Dumpa och installera firmware</a> eller tryck på ”OK” för att starta ändå. + + + + Installing Firmware... + Installerar firmware... + + + + + + + + Cancel + Avbryt + + + + Firmware Install Failed + Installation av firmware misslyckades + + + + Firmware Install Succeeded + Installation av firmware lyckades + + + + Firmware integrity verification failed! + Verifieringen av firmwareintegriteten misslyckades! + + + + + Verification failed for the following files: + +%1 + Verifieringen misslyckades för följande filer: + +%1 + + + + + Verifying integrity... + Verifierar integritet... + + + + + Integrity verification succeeded! + Integritetsverifieringen lyckades! + + + + + The operation completed successfully. + Operationen slutfördes utan problem. + + + + + Integrity verification failed! + Integritetsverifieringen misslyckades! + + + + File contents may be corrupt or missing. + Filens innehåll kan vara skadat eller saknas. + + + + Integrity verification couldn't be performed + Integritetsverifiering kunde inte utföras + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity. + Firmwareinstallationen avbruten, firmware kan vara i dåligt skick eller skadad. Filens innehåll kunde inte kontrolleras för giltighet. + + + + Select Dumped Keys Location + Välj plats för dumpade nycklar + + + + Decryption Keys install succeeded + Installation av avkrypteringsnycklar lyckades + + + + Decryption Keys install failed + Installationen av avkrypteringsnycklar misslyckades + + + + Orphaned Profiles Detected! + Föräldralösa profiler upptäcktes! + + + + UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br> + OVÄNTADE PROBLEM KAN UPPSTÅ OM DU INTE LÄSER DETTA! <br>Eden har upptäckt följande sparningskataloger utan bifogade profiler:<br>%1<br><br>Följande profiler är giltiga:<br>%2<br><br>Klicka på ”OK” för att öppna din sparningsmapp och fixa dina profiler.<br>Tips: kopiera innehållet i den största eller senast ändrade mappen till en annan plats, ta bort alla övergivna profiler och flytta det kopierade innehållet till den giltiga profilen.<br><br>Fortfarande förvirrad? Se hjälpsidan<a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>.<br> + + + + Really clear data? + Verkligen tömma data? + + + + Important data may be lost! + Viktig data kan gå förlorad! + + + + Are you REALLY sure? + Är du VERKLIGEN säker? + + + + Once deleted, your data will NOT come back! +Only do this if you're 100% sure you want to delete this data. + När dina data har raderats kan de INTE återställas! +Gör detta endast om du är 100% säker på att du vill radera dessa data. + + + + Clearing... + Tömmer... + + + + Select Export Location + Välj exportplats + + + + %1.zip + %1.zip + + + + + Zipped Archives (*.zip) + Zippade arkiv (*.zip) + + + + Exporting data. This may take a while... + Exporterar data. Detta kan ta en stund... + + + + Exporting + Exporterar + + + + Exported Successfully + Exporten lyckades + + + + Data was exported successfully. + Data har exporterats. + + + + Export Cancelled + Exporten avbröts + + + + Export was cancelled by the user. + Exporten avbröts av användaren. + + + + Export Failed + Exporten misslyckades + + + + Ensure you have write permissions on the targeted directory and try again. + Kontrollera att du har skrivbehörighet till den aktuella katalogen och försök igen. + + + + Select Import Location + Välj importplats + + + + Import Warning + Importvarning + + + + All previous data in this directory will be deleted. Are you sure you wish to proceed? + Alla tidigare data i denna katalog kommer att raderas. Är du säker på att du vill fortsätta? + + + + Importing data. This may take a while... + Importerar data. Detta kan ta en stund... + + + + Importing + Importerar + + + + Imported Successfully + Importen lyckades + + + + Data was imported successfully. + Data har importerats. + + + + Import Cancelled + Importen avbröts + + + + Import was cancelled by the user. + Importen avbröts av användaren. + + + + Import Failed + Importen misslyckades + + + + Ensure you have read permissions on the targeted directory and try again. + Kontrollera att du har läsbehörighet till den aktuella katalogen och försök igen. + + + + QtCommon::FS + + + Linked Save Data + Länkat sparat data + + + + Save data has been linked. + Sparat data har länkats. + + + + Failed to link save data + Misslyckades med att länka sparat data + + + + Could not link directory: + %1 +To: + %2 + Kunde inte länka katalog: + %1 +Till: + %2 + + + + Already Linked + Redan länkad + + + + This title is already linked to Ryujinx. Would you like to unlink it? + Denna titel är redan länkad till Ryujinx. Vill du avlänka den? + + + + Failed to unlink old directory + Misslyckades med att avlänka gammal katalog + + + + + OS returned error: %1 + Operativsystemet returnerade fel: %1 + + + + Failed to copy save data + Misslyckades med att kopiera sparat data + + + + Unlink Successful + Avlänkning lyckades + + + + Successfully unlinked Ryujinx save data. Save data has been kept intact. + Sparat data i Ryujinx avlänkades. Sparat data har behållits intakt. + + + + Could not find Ryujinx installation + Kunde inte hitta Ryujinx-installationen + + + + Could not find a valid Ryujinx installation. This may typically occur if you are using Ryujinx in portable mode. + +Would you like to manually select a portable folder to use? + Det gick inte att hitta en giltig Ryujinx-installation. Detta kan vanligtvis inträffa om du använder Ryujinx i portabelt läge. + +Vill du manuellt välja en portabel mapp att använda? + + + + Ryujinx Portable Location + Plats för portabel Ryujinx + + + + Not a valid Ryujinx directory + Inte en giltig Ryujinx-katalog + + + + The specified directory does not contain valid Ryujinx data. + Den angivna katalogen innehåller inte giltig Ryujinx-data. + + + + + Could not find Ryujinx save data + Kunde inte hitta sparat Ryujinx-data + + + + QtCommon::Game + + + Error Removing Contents + Fel vid borttagning av innehåll + + + + Error Removing Update + Fel vid borttagning av uppdatering + + + + Error Removing DLC + Fel vid borttagning av DLC + + + + + + + + + Successfully Removed + Borttagning lyckades + + + + Successfully removed the installed base game. + Tog bort det installerade basspelet. + + + + The base game is not installed in the NAND and cannot be removed. + Basversionen av spelet är inte installerad i NAND och kan inte tas bort. + + + + Successfully removed the installed update. + Tog bort den installerade uppdateringen. + + + + There is no update installed for this title. + Det finns ingen uppdatering installerad för denna titel. + + + + There are no DLCs installed for this title. + Det finns inga DLC:er installerade för denna titel. + + + + Successfully removed %1 installed DLC. + Tog bort %1 installerat DLC. + + + + + Error Removing Transferable Shader Cache + Fel vid borttagning av överförbar shader-cache + + + + + A shader cache for this title does not exist. + Det finns ingen shader-cache för denna titel. + + + + Successfully removed the transferable shader cache. + Den överförbara shader-cachen har tagits bort. + + + + Failed to remove the transferable shader cache. + Det gick inte att ta bort den överförbara shader-cachen. + + + + Error Removing Vulkan Driver Pipeline Cache + Fel vid borttagning av Vulkan-drivrutinens pipeline-cache + + + + Failed to remove the driver pipeline cache. + Det gick inte att ta bort drivrutinens pipeline-cache. + + + + + Error Removing Transferable Shader Caches + Fel vid borttagning av överförbara shader-cacher + + + + Successfully removed the transferable shader caches. + De överförbara shader-cacherna har tagits bort. + + + + Failed to remove the transferable shader cache directory. + Det gick inte att ta bort den överförbara shader-cachekatalogen. + + + + + Error Removing Custom Configuration + Fel vid borttagning av anpassad konfiguration + + + + A custom configuration for this title does not exist. + Det finns ingen anpassad konfiguration för denna titel. + + + + Successfully removed the custom game configuration. + Den anpassade konfigurationen för spelet har tagits bort. + + + + Failed to remove the custom game configuration. + Det gick inte att ta bort den anpassade spelkonfigurationen. + + + + Reset Metadata Cache + Återställ metadata-cache + + + + The metadata cache is already empty. + Metadatacachen är redan tom. + + + + The operation completed successfully. + Operationen slutfördes utan problem. + + + + The metadata cache couldn't be deleted. It might be in use or non-existent. + Metadatacachen kunde inte tas bort. Den kan vara i bruk eller finns inte. + + + + Create Shortcut + Skapa genväg + + + + Do you want to launch the game in fullscreen? + Vill du starta spelet i helskärm? + + + + Shortcut Created + Genväg skapad + + + + Successfully created a shortcut to %1 + Skapade en genväg till %1 + + + + Shortcut may be Volatile! + Genvägen kan vara instabil! + + + + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? + Detta skapar en genväg till den aktuella AppImage. Detta kanske inte fungerar bra om du uppdaterar. Vill du fortsätta? + + + + Failed to Create Shortcut + Misslyckades med att skapa genväg + + + + Failed to create a shortcut to %1 + Misslyckades med att skapa en genväg till %1 + + + + Create Icon + Skapa ikon + + + + Cannot create icon file. Path "%1" does not exist and cannot be created. + Det går inte att skapa ikonfilen. Sökvägen ”%1” finns inte och kan inte skapas. + + + + No firmware available + Inget firmware tillgängligt + + + + Please install firmware to use the home menu. + Installera firmware för att använda hemmenyn. + + + + Home Menu Applet + Applet för hemmeny + + + + Home Menu is not available. Please reinstall firmware. + Hemmenyn är inte tillgänglig. Installera om firmware. + + + + QtCommon::Mod + + + Mod Name + Modnamn + + + + What should this mod be called? + Vad ska denna mod heta? + + + + RomFS + RomFS + + + + ExeFS/Patch + ExeFS/Patch + + + + Cheat + Fusk + + + + Mod Type + Modtyp + + + + Could not detect mod type automatically. Please manually specify the type of mod you downloaded. + +Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods. + Det gick inte att upptäcka modtypen automatiskt. Ange manuellt vilken typ av mod du har laddat ner. + +De flesta mods är RomFS-mods, men patchar (.pchtxt) är vanligtvis ExeFS-mods. + + + + + Mod Extract Failed + Mod-extrahering misslyckades + + + + Failed to create temporary directory %1 + Det gick inte att skapa den tillfälliga katalogen %1 + + + + Zip file %1 is empty + Zip-filen %1 är tom + + + + QtCommon::Path + + + Error Opening Shader Cache + Fel vid öppning av shader-cache + + + + Failed to create or open shader cache for this title, ensure your app data directory has write permissions. + Det gick inte att skapa eller öppna shader-cache för den här titeln. Kontrollera att din appdatakatalog har skrivbehörighet. + + + + QtCommon::StringLookup + + + Contains game save data. DO NOT REMOVE UNLESS YOU KNOW WHAT YOU'RE DOING! + Innehåller sparat speldata. TA INTE BORT DEN OM DU INTE VET VAD DU GÖR! + + + + Contains Vulkan and OpenGL pipeline caches. Generally safe to remove. + Innehåller Vulkan- och OpenGL-pipeline-cacher. Generellt sett säkert att ta bort. + + + + Contains updates and DLC for games. + Innehåller uppdateringar och DLC för spel. + + + + Contains firmware and applet data. + Innehåller firmware- och appletdata. + + + + Contains game mods, patches, and cheats. + Innehåller spelmoddar, patchar och fusk. + + + + Decryption Keys were successfully installed + Avkrypteringsnycklarna har installerats + + + + Unable to read key directory, aborting + Kunde inte läsa nyckelkatalogen, avbryter + + + + One or more keys failed to copy. + En eller flera nycklar misslyckades att kopieras. + + + + Verify your keys file has a .keys extension and try again. + Kontrollera att din nyckelfil har filändelsen .keys och försök igen. + + + + Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. + Avkrypteringsnycklarna kunde inte initialiseras. Kontrollera att dina dumpningsverktyg är uppdaterade och dumpa nycklarna igen. + + + + Successfully installed firmware version %1 + Firmware-version %1 har installerats. + + + + Unable to locate potential firmware NCA files + Det går inte att hitta potentiella NCA-filer för firmware. + + + + Failed to delete one or more firmware files. + Det gick inte att ta bort en eller flera firmware-filer. + + + + One or more firmware files failed to copy into NAND. + En eller flera firmware-filer kunde inte kopieras till NAND. + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. Restart Eden or re-install firmware. + Installationen av firmware avbröts, firmware kan vara i ett felaktigt tillstånd eller skadat. Starta om Eden eller installera om firmware. + + + + Firmware missing. Firmware is required to run certain games and use the Home Menu. + Firmware saknas. Firmware krävs för att köra vissa spel och använda hemmenyn. + + + + Firmware reported as present, but was unable to be read. Check for decryption keys and redump firmware if necessary. + Firmware rapporterades som närvarande, men kunde inte läsas. Kontrollera om det finns avkrypteringsnycklar och dumpa om firmware vid behov. + + + + Eden has detected user data for the following emulators: + Eden har upptäckt användardata för följande emulatorer: + + + + Would you like to migrate your data for use in Eden? +Select the corresponding button to migrate data from that emulator. +This may take a while. + Vill du migrera dina data för användning i Eden? +Välj motsvarande knapp för att migrera data från den emulatorn. +Detta kan ta en stund. + + + + Clearing shader cache is recommended for all users. +Do not uncheck unless you know what you're doing. + Det rekommenderas att alla användare rensar shader-cachen. +Avmarkera såvida inte du vet vad du gör. + + + + Keeps the old data directory. This is recommended if you aren't +space-constrained and want to keep separate data for the old emulator. + Behåller den gamla datakatalogen. Detta rekommenderas om du +inte har utrymmesbegränsningar och vill behålla separata data för den gamla emulatorn. + + + + Deletes the old data directory. +This is recommended on devices with space constraints. + Tar bort den gamla datakatalogen. +Detta rekommenderas på enheter med begränsat utrymme. + + + + Creates a filesystem link between the old directory and Eden directory. +This is recommended if you want to share data between emulators. + Skapar en filsystemslänk mellan den gamla katalogen och Eden-katalogen. +Detta rekommenderas om du vill dela data mellan emulatorer. + + + + Ryujinx title database does not exist. + Ryujinx titeldatabas finns inte. + + + + Invalid header on Ryujinx title database. + Ogiltigt huvud på Ryujinx titeldatabas. + + + + Invalid magic header on Ryujinx title database. + Ogiltig magic header på Ryujinx titeldatabas. + + + + Invalid byte alignment on Ryujinx title database. + Ogiltig byteordning på Ryujinx titeldatabas. + + + + No items found in Ryujinx title database. + Inga objekt hittades i Ryujinx titeldatabas. + + + + Title %1 not found in Ryujinx title database. + Titeln %1 hittades inte i Ruijinx titeldatabas. @@ -8672,12 +10134,12 @@ p, li { white-space: pre-wrap; } Controller Applet - Kontroll-Applet + Applet för kontroller Supported Controller Types: - Supporterade Kontrolltyper: + Kontrollertyper som stöds: @@ -8703,9 +10165,9 @@ p, li { white-space: pre-wrap; } - + Pro Controller - Prokontroller + Pro Controller @@ -8716,7 +10178,7 @@ p, li { white-space: pre-wrap; } - + Dual Joycons Dubbla Joycons @@ -8729,7 +10191,7 @@ p, li { white-space: pre-wrap; } - + Left Joycon Vänster Joycon @@ -8742,7 +10204,7 @@ p, li { white-space: pre-wrap; } - + Right Joycon Höger Joycon @@ -8756,7 +10218,7 @@ p, li { white-space: pre-wrap; } Use Current Config - Använd Nuvarande Konfiguration + Använd aktuell konfiguration @@ -8771,7 +10233,7 @@ p, li { white-space: pre-wrap; } - + Handheld Handhållen @@ -8864,7 +10326,7 @@ p, li { white-space: pre-wrap; } Connected - Kopplad + Ansluten @@ -8889,35 +10351,35 @@ p, li { white-space: pre-wrap; } Not enough controllers - + Inte tillräckligt med kontroller - + GameCube Controller - GameCube-kontroll + GameCube-kontroller - + Poke Ball Plus Poke Ball Plus - + NES Controller - NES-kontroll + NES-kontroller - + SNES Controller - SNES-kontroll + SNES-kontroller - + N64 Controller - N64-kontroll + N64-kontroller - + Sega Genesis Sega Genesis @@ -8925,28 +10387,28 @@ p, li { white-space: pre-wrap; } QtErrorDisplay - - - + + + Error Code: %1-%2 (0x%3) Felkod: %1-%2 (0x%3) - + An error has occurred. Please try again or contact the developer of the software. Ett fel har inträffat. -Vänligen försök igen eller kontakta utvecklaren av programvaran. +Försök igen eller kontakta utvecklaren av programvaran. - + An error occurred on %1 at %2. Please try again or contact the developer of the software. - Ett fel har inträffat på %1 vid %2. -Vänligen försök igen eller kontakta utvecklaren av programvaran. + Ett fel inträffade på %1 vid %2. +Försök igen eller kontakta programvarans utvecklare. - + An error has occurred. %1 @@ -8962,7 +10424,7 @@ Vänligen försök igen eller kontakta utvecklaren av programvaran. QtProfileSelectionDialog - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -8970,14 +10432,14 @@ Vänligen försök igen eller kontakta utvecklaren av programvaran. - + Users Användare Profile Creator - + Skapare av profil @@ -8988,57 +10450,57 @@ Vänligen försök igen eller kontakta utvecklaren av programvaran. Profile Icon Editor - + Redigerare för profilikoner Profile Nickname Editor - + Redigerare för profilens smeknamn Who will receive the points? - + Vem kommer att få poängen? Who is using Nintendo eShop? - + Vem använder Nintendo eShop? Who is making this purchase? - + Vem är det som gör detta inköp? Who is posting? - + Vem gör inlägget? Select a user to link to a Nintendo Account. - + Välj en användare som ska länkas till ett Nintendo-konto. Change settings for which user? - + Ändra inställningar för vilken användare? Format data for which user? - + Formatera data för vilken användare? Which user will be transferred to another console? - + Vilken användare kommer att överföras till en annan konsol? Send save data for which user? - + Skicka spara data för vilken användare? @@ -9051,180 +10513,114 @@ Vänligen försök igen eller kontakta utvecklaren av programvaran. Software Keyboard - Mjukvarutangentbord + Programvarutangentbord Enter Text - Mata in Text + Ange text <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - - + + OK OK - + Cancel Avbryt + + RyujinxDialog + + + Ryujinx Link + Länka Ryujinx + + + + Linking save data to Ryujinx lets both Ryujinx and Eden reference the same save files for your games. + +By selecting "From Eden", previous save data stored in Ryujinx will be deleted, and vice versa for "From Ryujinx". + Genom att länka sparade data till Ryujinx kan både Ryujinx och Eden referera till samma sparade filer för dina spel. + +Om du väljer ”Från Eden” tas tidigare sparade data bort som lagrats i Ryujinx, och vice versa för ”Från Ryujinx”. + + + + From Eden + Från Eden + + + + From Ryujinx + Från Ryujinx + + + + Cancel + Avbryt + + + + Failed to link save data + Misslyckades med att länka sparat data + + + + OS returned error: %1 + OS returnerade fel: %1 + + SequenceDialog Enter a hotkey - Välj en tangent + Ange en snabbtangent - WaitTreeCallstack + SetPlayTimeDialog - - Call stack - Samtal stack - - - - WaitTreeSynchronizationObject - - - [%1] %2 - + + Set Play Time Data + Ställ in data för speltid - - waited by no thread - Ej väntad av någon tråd - - - - WaitTreeThread - - - runnable - + + Hours: + Timmar: - - paused - pausad + + Minutes: + Minuter: - - sleeping - sovande + + Seconds: + Sekunder: - - waiting for IPC reply - väntar på IPC svar - - - - waiting for objects - väntar på föremål - - - - waiting for condition variable - väntar för skickvariabel - - - - waiting for address arbiter - väntar på adressbryter - - - - waiting for suspend resume - - - - - waiting - väntar - - - - initialized - initialiserad - - - - terminated - avslutad - - - - unknown - okänd - - - - PC = 0x%1 LR = 0x%2 - PC = 0x%1 LR = 0x%2 - - - - ideal - ideal - - - - core %1 - kärna %1 - - - - processor = %1 - processor = %1 - - - - affinity mask = %1 - affinitetsmask = %1 - - - - thread id = %1 - tråd-id = %1 - - - - priority = %1(current) / %2(normal) - prioritet = %1(nuvarande) / %2(normal) - - - - last running ticks = %1 - sista springande fästingar = %1 - - - - WaitTreeThreadList - - - waited by thread - väntade med tråd - - - - WaitTreeWidget - - - &Wait Tree - + + Total play time reached maximum. + Maximal total speltid uppnådd. diff --git a/dist/languages/tr_TR.ts b/dist/languages/tr_TR.ts index 939e88dea0..9edaac9303 100644 --- a/dist/languages/tr_TR.ts +++ b/dist/languages/tr_TR.ts @@ -1,25 +1,15 @@ - - - + AboutDialog - - About yuzu - Yuzu hakkında - - - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - - About eden - + About Eden + Eden Hakkında - <html><head/><body><p><span style=" font-size:28pt;">eden</span></p></body></html> - + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> @@ -34,70 +24,57 @@ p, li { white-space: pre-wrap; } hr { height: 1px; border-width: 0; } li.unchecked::marker { content: "\2610"; } li.checked::marker { content: "\2612"; } -</style></head><body style=" font-family:'Adwaita Sans'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> - +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css"> +p, li { white-space: pre-wrap; } +hr { height: 1px; border-width: 0; } +li.unchecked::marker { content: "\2610"; } +li.checked::marker { content: "\2612"; } +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden, Mart 2024'te geliştirmesi sonlandırılan yuzu emülatörünü temel alan, GPLv3.0+ lisansına sahip, Nintendo Switch için deneysel bir açık kaynaklı emülatördür. <br /><br />Bu yazılım, yasal yollarla edinmediğiniz oyunları oynamak için kullanılmamalıdır.</span></p></body></html> - <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">This software should not be used to play games you have not legally obtained.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Yuzu GPLv3.0+ ile lisanslanmış Nintendo Switch için açık kaynak bir deneysel emülatördür.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Bu yazılım yasal yollarla edinilmemiş oyunları çalıştırmak için kullanılmamalı.</span></p></body></html> - - - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a>|<a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Kaynak Kodu</span></a>|<a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Katkıda Bulunanlar</span></a>|<a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Lisans</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Web Sitesi</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Kaynak Kodu</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Katkıda Bulunanlar</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Lisans</span></a></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. eden is not affiliated with Nintendo in any way.</span></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; Nintendo'ya aittir. yuzu Nintendo'ya hiçbir şekilde bağlı değildir</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. Eden is not affiliated with Nintendo in any way.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot;, Nintendo'nun ticari bir markasıdır. Eden, Nintendo ile hiçbir şekilde bağlantılı değildir.</span></p></body></html> CalibrationConfigurationDialog - + Communicating with the server... Sunucuyla iletişim kuruluyor... - + Cancel İptal Et - + Touch the top left corner <br>of your touchpad. Touchpad'inizin sol üst köşesine<br> dokunun. - + Now touch the bottom right corner <br>of your touchpad. Şimdi touchpad'inizin sağ alt köşesine<br> dokunun. - + Configuration completed! Yapılandırma Tamamlandı! - + OK Tamam @@ -120,78 +97,78 @@ p, li { white-space: pre-wrap; } Mesaj Gönder - + Members Üyeler - + %1 has joined %1 katıldı - + %1 has left %1 ayrıldı - + %1 has been kicked %1 atıldı - + %1 has been banned %1 yasaklandı - + %1 has been unbanned %1'in yasağı kaldırıldı - + View Profile Profili Görüntüle - - + + Block Player Kullanıcıyı Engelle - + When you block a player, you will no longer receive chat messages from them.<br><br>Are you sure you would like to block %1? Bir kullanıcıyı engellediğinizde, ondan mesaj alamayacaksınız.<br><br> %1'i engellemek istediğinizden emin misiniz? - + Kick At - + Ban Yasakla - + Kick Player Kullanıcıyı At - + Are you sure you would like to <b>kick</b> %1? %1'i <b>atmak</b> istediğinizden emin misiniz? - + Ban Player Kullanıcıyı Yasakla - + Are you sure you would like to <b>kick and ban</b> %1? This would ban both their forum username and their IP address. @@ -226,17 +203,17 @@ Bu işlem onların hem forum kullanıcı adını hem de IP adresini banlar. ClientRoomWindow - + Connected Bağlandı - + Disconnected Bağlantı kesildi - + %1 - %2 (%3/%4 members) - connected %1 - %2 (%3/%4 oyuncu) - bağlanıldı @@ -259,14 +236,10 @@ Bu işlem onların hem forum kullanıcı adını hem de IP adresini banlar.Report Game Compatibility Oyun Uyumluluğu Bildir - - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of yuzu you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected yuzu account</li></ul></body></html> - <html><head/><body><p>Eğer<span style=" font-size:10pt;">Citra Uyumluluk Listesi'ne </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;"></span></a><span style=" font-size:10pt;">test çalışması göndermek isterseniz, belirtilen bilgiler toplanacak ve sitede gösterilecektir:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Donanım Bilgisi(CPU/GPU/İşletim Sistemi)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hangi Citra versiyonunun kullanıldığı</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Bağlı Citra hesabı</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">eden Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of eden you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected eden account</li></ul></body></html> - + <html><head/><body><p><span style=" font-size:10pt;">Eğer </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">Eden Uyumluluk Listesi</span></a><span style=" font-size:10pt;">'ne bir test durumu göndermeyi seçerseniz, aşağıdaki bilgiler toplanacak ve sitede görüntülenecektir:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Donanım Bilgileri (CPU / GPU / İşletim Sistemi)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Çalıştırdığınız eden sürümü</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Bağlı eden hesabı</li></ul></body></html> @@ -374,22 +347,22 @@ Bu işlem onların hem forum kullanıcı adını hem de IP adresini banlar.Bildirdiğiniz için teşekkür ederiz! - + Submitting Bildiriliyor - + Communication error Bağlantı hatası - + An error occurred while sending the Testcase Testcase gönderilirken bir hata oldu - + Next İleri @@ -397,1526 +370,1877 @@ Bu işlem onların hem forum kullanıcı adını hem de IP adresini banlar. ConfigurationShared - + % % - + Amiibo editor - + Amiibo editor - + Controller configuration - + Kontrolcü yapılandırması - + Data erase - + Veri silme - + Error Hata - + Net connect - + Ağ bağlantısı - + Player select - + Oyuncu seçimi - + Software keyboard - + Yazılımsal klavye - + Mii Edit - + Mii Düzenleme - + Online web - + Çevrim içi ağ - + Shop - + Mağaza - + Photo viewer - + Fotoğraf görüntüleyici - + Offline web - + Çevrim dışı ağ - + Login share - + Oturum paylaşımı - + Wifi web auth - + Wi-Fi web kimlik doğrulaması - + My page - + Sayfam - + + Enable Overlay Applet + Katman Applet'ini Etkinleştir + + + + Enables Horizon's built-in overlay applet. Press and hold the home button for 1 second to show it. + + + + Output Engine: Çıkış Motoru: - + Output Device: Çıkış Cihazı: - + Input Device: Giriş Cihazı: - + Mute audio Sesi kapat - + Volume: Ses: - + Mute audio when in background Arka plandayken sesi kapat - + Multicore CPU Emulation Çok Çekirdekli CPU Emülasyonu - - This option increases CPU emulation thread use from 1 to the Switch’s maximum of 4. -This is mainly a debug option and shouldn’t be disabled. - + + This option increases CPU emulation thread use from 1 to the maximum of 4. +This is mainly a debug option and shouldn't be disabled. + Bu seçenek, CPU emülasyon iş parçacığı kullanımını 1'den maksimum 4'e yükseltir. +Bu, temel olarak bir hata ayıklama seçeneğidir ve devre dışı bırakılmamalıdır. - + Memory Layout - + Bellek Düzeni - - Increases the amount of emulated RAM from the stock 4GB of the retail Switch to the developer kit's 8/6GB. -It’s doesn’t improve stability or performance and is intended to let big texture mods fit in emulated RAM. -Enabling it will increase memory use. It is not recommended to enable unless a specific game with a texture mod needs it. - + + Increases the amount of emulated RAM. +Doesn't affect performance/stability but may allow HD texture mods to load. + - + Limit Speed Percent Hız Yüzdesini Sınırlandır - - Controls the game's maximum rendering speed, but it’s up to each game if it runs faster or not. + + Controls the game's maximum rendering speed, but it's up to each game if it runs faster or not. 200% for a 30 FPS game is 60 FPS, and for a 60 FPS game it will be 120 FPS. Disabling it means unlocking the framerate to the maximum your PC can reach. - + Oyunun maksimum render hızını kontrol eder, ancak daha hızlı çalışıp çalışmayacağı oyundan oyuna bağlıdır. +30 FPS'lik bir oyun için %200, 60 FPS demektir; 60 FPS'lik bir oyun için ise 120 FPS olacaktır.. +Bunu devre dışı bırakmak, PC'nizin ulaşabileceği maksimum kare hızının kilidini açmak anlamına gelir. - + + Turbo Speed + Turbo Hız + + + + When the Turbo Speed hotkey is pressed, the speed will be limited to this percentage. + + + + + Slow Speed + + + + + When the Slow Speed hotkey is pressed, the speed will be limited to this percentage. + + + + Synchronize Core Speed - + Çekirdek Hızını Senkronize Et - - Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). -Compatibility varies by game; many (especially older ones) may not respond well. + + Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). Can help reduce stuttering at lower framerates. - + Oyun hızını (animasyonlar, fizik vb.) etkilemeden FPS'yi artırmak için CPU çekirdek hızını, oyunun maksimum render hızı ile senkronize eder. +Düşük kare hızlarında takılmaları azaltmaya yardımcı olabilir. - + Accuracy: Doğruluk: - - This setting controls the accuracy of the emulated CPU. -Don't change this unless you know what you are doing. - + + Change the accuracy of the emulated CPU (for debugging only). + Öykünülen, yani emüle edilen CPU'nun doğruluk seviyesini değiştirir (yalnızca hata ayıklama için). - - + + Backend: - + Arkayüz: - - Fast CPU Time - + + CPU Overclock + CPU Hız Aşırtma - + Overclocks the emulated CPU to remove some FPS limiters. Weaker CPUs may see reduced performance, and certain games may behave improperly. Use Boost (1700MHz) to run at the Switch's highest native clock, or Fast (2000MHz) to run at 2x clock. - + Bazı FPS sınırlayıcılarını kaldırmak için emüle edilen CPU'ya, yani işlemciye hız aşırtma yapar. Daha zayıf CPU'larda performans düşebilir ve bazı oyunlar düzgün çalışmayabilir. +Switch'in en yüksek yerel saat hızında çalıştırmak için Boost'u (1700MHz), ya da 2x saat hızında çalıştırmak için Fast'i (2000MHz) kullanın. - + + Custom CPU Ticks + Özel İşlemci Döngüleri + + + + Set a custom value of CPU ticks. Higher values can increase performance, but may cause deadlocks. A range of 77-21000 is recommended. + İşlemci/CPU tick hızı için özel bir değer belirleyin. Daha yüksek değerler performansı artırabilir, ancak kilitlenmelere de neden olabilir. 77-21000 aralığı tavsiye edilir. + + + + Enable Host MMU Emulation (fastmem) + Ana Bilgisayar MMU Emülasyonunu Etkinleştir (fastmem) + + + + This optimization speeds up memory accesses by the guest program. +Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU. +Disabling this forces all memory accesses to use Software MMU Emulation. + Bu optimizasyon, misafir programının bellek erişimlerini hızlandırır. +Bunu etkinleştirmek, misafir bellek okuma/yazma işlemlerinin doğrudan belleğe yapılmasını ve Ana Makine'nin MMU'sunu kullanmasını sağlar. +Bunu devre dışı bırakmak, tüm bellek erişimlerinin, Yazılımsal MMU Emülasyonu kullanmaya zorlamasına neden olur. + + + Unfuse FMA (improve performance on CPUs without FMA) FMA'yı Ayır (FMA olmayan CPU'larda performansı artırır) - + This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support. - + Bu seçenek, gömülü/yerel FMA desteği olmayan CPU'larda, FMA komutlarının doğruluğunu/hassasiyetini düşürerek hızı artırır. - + Faster FRSQRTE and FRECPE Daha hızlı FRSQRTE ve FRECPE - + This option improves the speed of some approximate floating-point functions by using less accurate native approximations. - + Bu seçenek, daha az doğru olan gömülü/yerel yaklaşıklıkları kullanarak, bazı yaklaşık floating-point işlevlerinin hızını artırır. - + Faster ASIMD instructions (32 bits only) Daha hızlı ASIMD komutları (yalnızca 32 bit) - + This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes. - + Bu seçenek, incorrect durumdaki rounding mode'ları ile çalıştırarak 32 bit ASIMD floating-point işlevlerinin hızını artırır. - + Inaccurate NaN handling Uygunsuz NaN kullanımı - + This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions. - + Bu seçenek, NaN denetimini kaldırarak hızı artırır. +Lütfen unutmayın, bu aynı zamanda bazı floating-point işlemlerinin doğruluğunu azaltır. - + Disable address space checks Adres boşluğu kontrolünü kapatır. - - This option improves speed by eliminating a safety check before every memory read/write in guest. -Disabling it may allow a game to read/write the emulator's memory. - + + This option improves speed by eliminating a safety check before every memory operation. +Disabling it may allow arbitrary code execution. + Bu seçenek, her bellek işleminden önce bir güvenlik kontrolünü kaldırarak hızı artırır. Devre dışı bırakılması, rastgele kod yürütülmesine izin verebilir. - + Ignore global monitor Global monitörü görmezden gel - + 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. - + Bu seçenek, özel erişim talimatlarının güvenliğini sağlamak için yalnızca cmpxchg semantiğine güvenerek hızı artırır. Lütfen bunun kilitlenmelere ve diğer yarış durumlarına neden olabileceğini unutmayın. - + API: API: - - Switches between the available graphics APIs. -Vulkan is recommended in most cases. - + + Changes the output graphics API. +Vulkan is recommended. + Çıkış grafik API'sini değiştirir. Vulkan önerilir. - + Device: Cihaz: - - This setting selects the GPU to use with the Vulkan backend. - + + This setting selects the GPU to use (Vulkan only). + Bu ayar, kullanılacak GPU'yu seçer (yalnızca Vulkan). - - Shader Backend: - Shader Backend: - - - - The shader backend to use for the OpenGL renderer. -GLSL is the fastest in performance and the best in rendering accuracy. -GLASM is a deprecated NVIDIA-only backend that offers much better shader building performance at the cost of FPS and rendering accuracy. -SPIR-V compiles the fastest, but yields poor results on most GPU drivers. - - - - + Resolution: Çözünürlük: - - Forces the game to render at a different resolution. -Higher resolutions require much more VRAM and bandwidth. -Options lower than 1X can cause rendering issues. - + + Forces to render at a different resolution. +Higher resolutions require more VRAM and bandwidth. +Options lower than 1X can cause artifacts. + Farklı bir çözünürlükte işleme yapmaya zorlar. Yüksek çözünürlükler daha fazla VRAM ve bant genişliği gerektirir. 1X'ten düşük seçenekler yapay bozulmalara neden olabilir. - + Window Adapting Filter: Pencereye Uyarlı Filtre: - + FSR Sharpness: FSR Keskinliği: - - Determines how sharpened the image will look while using FSR’s dynamic contrast. - + + Determines how sharpened the image will look using FSR's dynamic contrast. + FSR'ın dinamik kontrast teknolojisini kullanarak, görüntünün ne kadar keskinleştirileceğini belirler. - + Anti-Aliasing Method: Kenar Yumuşatma Yöntemi: - + The anti-aliasing method to use. SMAA offers the best quality. -FXAA has a lower performance impact and can produce a better and more stable picture under very low resolutions. - +FXAA can produce a more stable picture in lower resolutions. + Kullanılacak kenar yumuşatma yöntemi. SMAA en iyi kaliteyi sunar. FXAA, düşük çözünürlüklerde daha kararlı bir görüntü oluşturabilir. - + Fullscreen Mode: Tam Ekran Modu: - + The method used to render the window in fullscreen. Borderless offers the best compatibility with the on-screen keyboard that some games request for input. Exclusive fullscreen may offer better performance and better Freesync/Gsync support. - + Pencereyi tam ekranda işlemek için kullanılan yöntem. Sınırsız, bazı oyunların giriş için istediği ekran klavyesi ile en iyi uyumluluğu sunar. Özel tam ekran, daha iyi performans ve daha iyi Freesync/Gsync desteği sağlayabilir. - + Aspect Ratio: En-Boy Oranı: - - Stretches the game to fit the specified aspect ratio. -Switch games only support 16:9, so custom game mods are required to get other ratios. + + Stretches the renderer to fit the specified aspect ratio. +Most games only support 16:9, so modifications are required to get other ratios. Also controls the aspect ratio of captured screenshots. - + Render'layıcıyı, belirtilen en-boy oranına sığacak şekilde genişletir. +Çoğu oyun yalnızca 16:9'u destekler, bu yüzden diğer oranlar için değişiklik yapmak gerekir.. +Ayrıca, yakalanan ekran görüntülerinin en-boy oranını da kontrol eder. - - Use disk pipeline cache - Disk pipeline cache'ini kullan + + Use persistent pipeline cache + Kalıcı işlem hattı önbelleğini kullan - + Allows saving shaders to storage for faster loading on following game boots. Disabling it is only intended for debugging. - + Gölgelendiriclerin sonraki oyun açılışlarında daha hızlı yüklenmesi için depolama alanına kaydedilmesine olanak tanır. Devre dışı bırakılması yalnızca hata ayıklama amaçlıdır. - - Optimize SPIRV output shader - + + Optimize SPIRV output + SPIRV çıktısını optimize et - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. This feature is experimental. - + Oluşturulan SPIRV gölgelendiricileri üzerinde ek bir optimizasyon geçişi çalıştırır. Gölgelendirici derleme süresini artıracaktır. Performansı biraz iyileştirebilir. Bu özellik deneyseldir. - - Use asynchronous GPU emulation - Asenkronize GPU emülasyonu kullan - - - - Uses an extra CPU thread for rendering. -This option should always remain enabled. - - - - + NVDEC emulation: NVDEC emülasyonu: - + Specifies how videos should be decoded. It can either use the CPU or the GPU for decoding, or perform no decoding at all (black screen on videos). In most cases, GPU decoding provides the best performance. - + Videoların nasıl çözüleceğini belirtir. Kod çözme için CPU veya GPU kullanabilir veya hiç kod çözme işlemi yapmayabilir (videolarda siyah ekran). Çoğu durumda GPU ile kod çözme en iyi performansı sağlar. - + ASTC Decoding Method: - + ASTC Kod Çözme Yöntemi - + This option controls how ASTC textures should be decoded. -CPU: Use the CPU for decoding, slowest but safest method. -GPU: Use the GPU's compute shaders to decode ASTC textures, recommended for most games and users. -CPU Asynchronously: Use the CPU to decode ASTC textures as they arrive. Completely eliminates ASTC decoding -stuttering at the cost of rendering issues while the texture is being decoded. - +CPU: Use the CPU for decoding. +GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). +CPU Asynchronously: Use the CPU to decode ASTC textures on demand. EliminatesASTC decoding +stuttering but may present artifacts. + Bu seçenek ASTC dokularının nasıl çözüleceğini kontrol eder. CPU: Kod çözme için işlemciyi kullanır. GPU: ASTC dokularını çözmek için GPU'nun hesaplama gölgelendiricilerini kullanır (önerilir). CPU Asenkron: ASTC dokularını talep üzerine çözmek için işlemciyi kullanır. ASTC kod çözme kaynaklı takılmaları giderir ancak görsel bozulmalara neden olabilir. - + ASTC Recompression Method: - + ASTC Yeniden Sıkıştırma Yöntemi - - Almost all desktop and laptop dedicated GPUs lack support for ASTC textures, forcing the emulator to decompress to an intermediate format any card supports, RGBA8. -This option recompresses RGBA8 to either the BC1 or BC3 format, saving VRAM but negatively affecting image quality. - + + Most GPUs lack support for ASTC textures and must decompress to anintermediate format: RGBA8. +BC1/BC3: The intermediate format will be recompressed to BC1 or BC3 format, + saving VRAM but degrading image quality. + Çoğu GPU, ASTC dokuları için doğrudan desteğe sahip değildir ve bir ara formata (RGBA8) açılmalıdır. BC1/BC3: Ara format BC1 veya BC3 formatında yeniden sıkıştırılarak VRAM tasarrufu sağlar ancak görüntü kalitesini düşürür. - + + Frame Pacing Mode (Vulkan only) + + + + + Controls how the emulator manages frame pacing to reduce stuttering and make the frame rate smoother and more consistent. + + + + VRAM Usage Mode: - + VRAM Kullanım Modu - - Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. Has no effect on integrated graphics. Aggressive mode may severely impact the performance of other applications such as recording software. - + + Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. +Aggressive mode may impact performance of other applications such as recording software. + Emülatörün belleği korumayı mı yoksa performans için mevcut video belleğini maksimum düzeyde kullanmayı mı tercih edeceğini seçer. Agresif mod, kayıt yazılımları gibi diğer uygulamaların performansını etkileyebilir. - + + Skip CPU Inner Invalidation + CPU Geçersiz Kılma'yı Atla + + + + Skips certain cache invalidations during memory updates, reducing CPU usage and improving latency. This may cause soft-crashes. + Bellek güncellemeleri sırasında belirli önbellek geçersiz kılma işlemlerini atlayarak işlemci kullanımını azaltır ve gecikmeyi iyileştirir. Bu, hafif çökmelere neden olabilir. + + + VSync Mode: VSync Modu: - + FIFO (VSync) does not drop frames or exhibit tearing but is limited by the screen refresh rate. -FIFO Relaxed is similar to FIFO but allows tearing as it recovers from a slow down. +FIFO Relaxed 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. - +Immediate (no synchronization) presents whatever is available and can exhibit tearing. + FIFO (VSync) kare düşürmez veya yırtılma göstermez ancak ekran yenileme hızıyla sınırlıdır. FIFO Relaxed, yavaşlamadan toparlanırken yırtılmaya izin verir. Mailbox, FIFO'dan daha düşük gecikmeye sahip olabilir ve yırtılma yapmaz ancak kare düşürebilir. Immediate (senkronizasyon yok), mevcut olanı anında sunar ve yırtılmalara neden olabilir. - + + Sync Memory Operations + Bellek İşlemlerini Senkronize Et + + + + Ensures data consistency between compute and memory operations. +This option fixes issues in games, but may degrade performance. +Unreal Engine 4 games often see the most significant changes thereof. + Hesaplama ve bellek işlemleri arasında veri tutarlılığı sağlar. Bu seçenek oyunlardaki sorunları giderir ancak performansı düşürebilir. Unreal Engine 4 oyunları genellikle bundan en önemli ölçüde etkilenenlerdir. + + + Enable asynchronous presentation (Vulkan only) - + Asenkron sunumu etkinleştir (Yalnızca Vulkan) - + Slightly improves performance by moving presentation to a separate CPU thread. - + Sunum işlemini ayrı bir işlemci iş parçacığına taşıyarak performansı biraz artırır. - + Force maximum clocks (Vulkan only) En yüksek hızı zorla (Yalnızca Vulkan için) - + Runs work in the background while waiting for graphics commands to keep the GPU from lowering its clock speed. Grafik komutlarını beklerken GPU'nun hızının düşmesini engellemek için arka planda görev yürütür - + Anisotropic Filtering: Anisotropic Filtering: - + Controls the quality of texture rendering at oblique angles. -It’s a light setting and safe to set at 16x on most GPUs. - +Safe to set at 16x on most GPUs. + Eğik açılardaki doku oluşturma kalitesini kontrol eder. Çoğu grafik kartında 16x olarak ayarlanması güvenlidir. - - Accuracy Level: - Kesinlik Düzeyi: + + GPU Mode: + Grafik Kartı Modu - - GPU emulation accuracy. -Most games render fine with Normal, but High is still required for some. -Particles tend to only render correctly with High accuracy. -Extreme should only be used for debugging. -This option can be changed while playing. -Some games may require booting on high to render properly. - + + Controls the GPU emulation mode. +Most games render fine with Fast or Balanced modes, but Accurate is still required for some. +Particles tend to only render correctly with Accurate mode. + Grafik kartı emülasyon modunu kontrol eder. Çoğu oyun Hızlı veya Dengeli modlarda sorunsuz çalışır, ancak bazıları için hala Doğru modu gereklidir. Parçacıklar genellikle yalnızca Doğru modda düzgün görüntülenir. - - Use asynchronous shader building (Hack) - Asenkronize shader derlemesini kullan (Hack) + + DMA Accuracy: + DMA Doğruluğu: - - Enables asynchronous shader compilation, which may reduce shader stutter. -This feature is experimental. - + + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. + DMA'in hassasiyet doğruluğunu yönetir. Güvenli hassasiyet, bazı oyunlardaki sorunları giderir, fakat performansı düşürebilir. - Use Fast GPU Time (Hack) - Hızlı GPU Saati Kullan (Hack) + + Enable asynchronous shader compilation + Asenkron gölgelendirici derlemeyi etkinleştir - Enables Fast GPU Time. This option will force most games to run at their highest native resolution. - Hızlı GPU Saati'ni etkinleştir. Bu seçenek çoğu oyunu en yüksek gerçek çözünürlükte çalıştırır. + + May reduce shader stutter. + Gölgelendirici/shader takılmalarını azaltabilir. - + + Fast GPU Time + Hızlı Grafik Kartı Süresi + + + + Overclocks the emulated GPU to increase dynamic resolution and render distance. +Use 256 for maximal performance and 512 for maximal graphics fidelity. + Dinamik çözünürlüğü ve çizim mesafesini artırmak için emüle edilen grafik kartına hız aşırtma uygular. Maksimum performans için 256, maksimum grafik doğruluğu için 512 kullanın. + + + + GPU Unswizzle + + + + + Accelerates BCn 3D texture decoding using GPU compute. +Disable if experiencing crashes or graphical glitches. + + + + + GPU Unswizzle Max Texture Size + + + + + Sets the maximum size (MiB) for GPU-based texture unswizzling. +While the GPU is faster for medium and large textures, the CPU may be more efficient for very small ones. +Adjust this to find the balance between GPU acceleration and CPU overhead. + + + + + GPU Unswizzle Stream Size + + + + + Sets the maximum amount of texture data (in MiB) processed per frame. +Higher values can reduce stutter during texture loading but may impact frame consistency. + + + + + GPU Unswizzle Chunk Size + + + + + Determines the number of depth slices processed in a single dispatch. +Increasing this can improve throughput on high-end GPUs but may cause TDR or driver timeouts on weaker hardware. + + + + Use Vulkan pipeline cache Vulkan pipeline önbelleği kullan - + Enables GPU vendor-specific pipeline cache. This option can improve shader loading time significantly in cases where the Vulkan driver does not store pipeline cache files internally. - + Grafik kartı üreticisine özel işlem hattı önbelleğini etkinleştirir. Bu seçenek, Vulkan sürücüsünün işlem hattı önbellek dosyalarını dahili olarak saklamadığı durumlarda gölgelendirici yükleme süresini önemli ölçüde iyileştirebilir. - + Enable Compute Pipelines (Intel Vulkan Only) - + Hesaplama İşlem Hatlarını Etkinleştir (Yalnızca Intel Vulkan) - - Enable compute pipelines, required by some games. -This setting only exists for Intel proprietary drivers, and may crash if enabled. + + 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. - + Bazı oyunlar için gereklidir. Bu ayar yalnızca Intel'in tescilli sürücüleri için mevcuttur ve etkinleştirilirse çökmeye neden olabilir. Hesaplama işlem hatları diğer tüm sürücülerde her zaman etkindir. - + Enable Reactive Flushing - + Reaktif Temizlemeyi Etkinleştir - + Uses reactive flushing instead of predictive flushing, allowing more accurate memory syncing. - + Tahminli temizleme yerine reaktif temizleme kullanarak daha doğru bellek senkronizasyonu sağlar. - + Sync to framerate of video playback - + Video oynatma kare hızına senkronize et - + Run the game at normal speed during video playback, even when the framerate is unlocked. - + Kare hızı kilidi açık olsa bile video oynatımı sırasında oyunu normal hızda çalıştırır. - + Barrier feedback loops - + Bariyer geri besleme döngüleri - + Improves rendering of transparency effects in specific games. - + Belirli oyunlarda şeffaflık efektlerinin oluşturulmasını iyileştirir. - + + Enable buffer history + + + + + Enables access to previous buffer states. +This option may improve rendering quality and performance consistency in some games. + + + + + Fix bloom effects + + + + + Removes bloom in Burnout. + + + + + Enable Legacy Rescale Pass + + + + + May fix rescale issues in some games by relying on behavior from the previous implementation. +Legacy behavior workaround that fixes line artifacts on AMD and Intel GPUs, and grey texture flicker on Nvidia GPUs in Luigis Mansion 3. + + + + + Extended Dynamic State + Genişletilmiş Dinamik Durum + + + + Controls the number of features that can be used in Extended Dynamic State. +Higher states allow for more features and can increase performance, but may cause additional graphical issues. + Genişletilmiş Dinamik Durumda kullanılabilecek özelliklerin sayısını kontrol eder. Daha yüksek durumlar daha fazla özelliğe izin verir ve performansı artırabilir, ancak ek grafik sorunlarına neden olabilir. + + + + Vertex Input Dynamic State + Vertex Dinamik Durumu + + + + Enables vertex input dynamic state feature for better quality and performance. + Daha iyi kalite ve performans için Vertex dinamik durum özelliğini etkinleştirir. + + + + Sample Shading + Örnek Gölgelendirme + + + + Allows the fragment shader to execute per sample in a multi-sampled fragment instead of once per fragment. Improves graphics quality at the cost of performance. +Higher values improve quality but degrade performance. + Parça gölgelendiricinin, her parça için bir kez yerine çoklu örneklenmiş bir parçadaki her örnek için yürütülmesine olanak tanır. Performans pahasına grafik kalitesini artırır. Daha yüksek değerler kaliteyi artırır ancak performansı düşürür. + + + RNG Seed RNG çekirdeği - + Controls the seed of the random number generator. -Mainly used for speedrunning purposes. - +Mainly used for speedrunning. + Rastgele sayı üretecinin tohumunu kontrol eder. Esas olarak hızlı bitirme denemeleri için kullanılır. - + Device Name Cihaz İsmi - - The name of the emulated Switch. - + + The name of the console. + Konsolun adı - + Custom RTC Date: - + Özel RTC Tarihi - - This option allows to change the emulated clock of the Switch. + + This option allows to change the clock of the console. Can be used to manipulate time in games. - + Bu seçenek konsolun saatini değiştirmeye olanak tanır. Oyunlarda zamanı manipüle etmek için kullanılabilir. - + + The number of seconds from the current unix time + Mevcut unix zamanından itibaren saniye sayısı + + + Language: Dil: - - Note: this can be overridden when region setting is auto-select - Not: bu ayar bölge ayarı otomatiğe alındığında yok sayılabilir. + + This option can be overridden when region setting is auto-select + Bölge ayarı otomatik seçim olduğunda bu seçenek geçersiz kılınabilir. - + Region: Bölge: - - The region of the emulated Switch. - + + The region of the console. + Konsolun bölgesi - + Time Zone: Saat Dilimi: - - The time zone of the emulated Switch. - + + The time zone of the console. + Konsolun saat dilimi - + Sound Output Mode: Ses Çıkış Modu: - + Console Mode: Konsol Modu: - - Selects if the console is emulated in Docked or Handheld mode. + + Selects if the console is in Docked or Handheld mode. Games will change their resolution, details and supported controllers and depending on this setting. Setting to Handheld can help improve performance for low end systems. - + Konsolun Yerleşik veya El Modunda olup olmadığını seçer. Oyunlar bu ayara bağlı olarak çözünürlüklerini, detaylarını ve desteklenen kontrolcülerini değiştirecektir. El Moduna ayarlamak, düşük seviyeli sistemler için performansı artırmaya yardımcı olabilir. - - Prompt for user on game boot - Oyun başlatılırken kullanıcı verisi iste + + Unit Serial + - - Pause emulation when in background - Arka plana alındığında emülasyonu duraklat + + Battery Serial + - - Fast GPU Time (Hack) - + + Debug knobs + - - Overclocks the emulated GPU to increase dynamic resolution and render distance. -Use 128 for maximal performance and 512 for maximal graphics fidelity. - + + Prompt for user profile on boot + Açılışta kullanıcı profili için sor - - Extended Dynamic State - + + Useful if multiple people use the same PC. + Aynı bilgisayarı birden fazla kişi kullanıyorsa yararlıdır. - - Enables the VkExtendedDynamicState* extensions. -Higher dynamic states will generally improve performance, but may cause issues on certain games or devices. - + + Pause when not in focus + Odaklı değilken duraklat - - Provoking Vertex - + + Pauses emulation when focusing on other windows. + Diğer pencerelere odaklanıldığında emülasyonu duraklatır. - - Improves lighting and vertex handling in certain games. -Only Vulkan 1.0+ devices support this extension. - - - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - - Ask to select a user profile on each boot, useful if multiple people use eden on the same PC. - - - - - This setting pauses eden when focusing other windows. - - - - + Confirm before stopping emulation - + Emülasyonu durdurmadan önce onayla - - This setting overrides game prompts asking to confirm stopping the game. + + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - + Emülasyonu durdurma onayı isteklerini/istemlerini geçersiz kılar. +Etkinleştirildiğinde, bu tür istekleri/istemleri atlar ve emülasyonu doğrudan/dirket olarak kapatır. - + Hide mouse on inactivity Hareketsizlik durumunda imleci gizle - - This setting hides the mouse after 2.5s of inactivity. - + + Hides the mouse after 2.5s of inactivity. + 2,5 saniye hareketsizlikten sonra fareyi gizler. - + Disable controller applet - + Kontrolcü aplikasyonunu devre dışı bırak - - Forcibly disables the use of the controller applet by guests. -When a guest attempts to open the controller applet, it is immediately closed. - + + Forcibly disables the use of the controller applet in emulated programs. +When a program attempts to open the controller applet, it is immediately closed. + Emüle edilen programlarda kontrolcü aplikasyonunun kullanımını zorla devre dışı bırakır. Bir program kontrolcü aplikasyonunu açmaya çalıştığında, aplikasyon anında kapatılır. - + Check for updates - + Güncellemeleri Kontrol Et - + Whether or not to check for updates upon startup. - + Başlangıçta güncellemelerin kontrol edilip edilmeyeceği. - + Enable Gamemode - + Oyun Modunu/Gamemode Etkinleştir - + + Force X11 as Graphics Backend + Grafik arka ucu olarak X11'i zorla + + + Custom frontend - + Özel ön yüz - + Real applet - + Gerçek aplikasyon - + Never - + Asla - + On Load - + Yüklemede - + Always - + Her zaman - + CPU CPU - + GPU GPU - + CPU Asynchronous - + Asenkron CPU - + Uncompressed (Best quality) - + Sıkıştırılmamış (En iyi kalite) - + BC1 (Low quality) - + BC1 (Düşük kalite) - + BC3 (Medium quality) - + BC3 (Orta kalite) - - Conservative - - - - - Aggressive - - - - - OpenGL - OpenGL - - - - Vulkan - Vulkan - - - - Null - - - - - GLSL - - - - - GLASM (Assembly Shaders, NVIDIA Only) - GLASM (Assembly Shaderları, Yalnızca NVIDIA için) - - - - SPIR-V (Experimental, AMD/Mesa Only) - - - - - Normal - Normal - - - - High - Yüksek - - - - Extreme - Ekstrem - - - + + Auto Otomatik - + + 30 FPS + + + + + 60 FPS + + + + + 90 FPS + + + + + 120 FPS + + + + + Conservative + Muhafazakar + + + + Aggressive + Agresif + + + + Vulkan + Vulkan + + + + OpenGL GLSL + + + + + OpenGL GLASM (Assembly Shaders, NVIDIA Only) + + + + + OpenGL SPIR-V (Experimental, AMD/Mesa Only) + + + + + Null + Boş + + + + Fast + Hızlı + + + + Balanced + Dengeli + + + + Accurate Doğru - - Unsafe - Güvensiz - - - - Paranoid (disables most optimizations) - Paranoya (çoğu optimizasyonu kapatır) - - - - Dynarmic - Dinamik - - - - NCE - - - - - Borderless Windowed - Kenarlıksız Tam Ekran - - - - Exclusive Fullscreen - Ayrılmış Tam Ekran - - - - No Video Output - Video Çıkışı Yok - - - - CPU Video Decoding - CPU Video Decoding - - - - GPU Video Decoding (Default) - GPU Video Decoding (Varsayılan) - - - - 0.25X (180p/270p) [EXPERIMENTAL] - - - - - 0.5X (360p/540p) [EXPERIMENTAL] - 0.5X (360p/540p) [DENEYSEL] - - - - 0.75X (540p/810p) [EXPERIMENTAL] - 0.75X (540p/810p) [DENEYSEL] - - - - 1X (720p/1080p) - 1X (720p/1080p) - - - - 1.5X (1080p/1620p) [EXPERIMENTAL] - 1.5X (1080p/1620p) [DENEYSEL] - - - - 2X (1440p/2160p) - 2X (1440p/2160p) - - - - 3X (2160p/3240p) - 3X (2160p/3240p) - - - - 4X (2880p/4320p) - 4X (2880p/4320p) - - - - 5X (3600p/5400p) - 5X (3600p/5400p) - - - - 6X (4320p/6480p) - 6X (4320p/6480p) - - - - 7X (5040p/7560p) - 7X (5040p/7560p) - - - - 8X (5760p/8640p) - 8X (5760p/8640p) - - - - Nearest Neighbor - En Yakın Komşu Algoritması - - - - Bilinear - Bilinear - - - - Bicubic - Bicubic - - - - Gaussian - Gausyen - - - - ScaleForce - ScaleForce - - - - AMD FidelityFX™️ Super Resolution - AMD FidelityFX™️ Süper Çözünürlük - - - - Area - - - - - None - Yok - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Default (16:9) - Varsayılan (16:9) - - - - Force 4:3 - 4:3'e Zorla - - - - Force 21:9 - 21:9'a Zorla - - - - Force 16:10 - 16:10'a Zorla - - - - Stretch to Window - Ekrana Sığdır - - - - Automatic - Otomatik - - - + + Default Varsayılan - + + Unsafe (fast) + Güvenli Değil (hızlı) + + + + Safe (stable) + Güvenli (Stabil) + + + + Unsafe + Güvensiz + + + + Paranoid (disables most optimizations) + Paranoya (çoğu optimizasyonu kapatır) + + + + Debugging + Hata ayıklama + + + + Dynarmic + Dinamik + + + + NCE + NCE + + + + Borderless Windowed + Kenarlıksız Tam Ekran + + + + Exclusive Fullscreen + Ayrılmış Tam Ekran + + + + No Video Output + Video Çıkışı Yok + + + + CPU Video Decoding + CPU Video Decoding + + + + GPU Video Decoding (Default) + GPU Video Decoding (Varsayılan) + + + + 0.25X (180p/270p) [EXPERIMENTAL] + 0.25X (180p/270p) [DENEYSEL] + + + + 0.5X (360p/540p) [EXPERIMENTAL] + 0.5X (360p/540p) [DENEYSEL] + + + + 0.75X (540p/810p) [EXPERIMENTAL] + 0.75X (540p/810p) [DENEYSEL] + + + + 1X (720p/1080p) + 1X (720p/1080p) + + + + 1.25X (900p/1350p) [EXPERIMENTAL] + 1.25X (900p/1350p) [DENEYSEL] + + + + 1.5X (1080p/1620p) [EXPERIMENTAL] + 1.5X (1080p/1620p) [DENEYSEL] + + + + 2X (1440p/2160p) + 2X (1440p/2160p) + + + + 3X (2160p/3240p) + 3X (2160p/3240p) + + + + 4X (2880p/4320p) + 4X (2880p/4320p) + + + + 5X (3600p/5400p) + 5X (3600p/5400p) + + + + 6X (4320p/6480p) + 6X (4320p/6480p) + + + + 7X (5040p/7560p) + 7X (5040p/7560p) + + + + 8X (5760p/8640p) + 8X (5760p/8640p) + + + + Nearest Neighbor + En Yakın Komşu Algoritması + + + + Bilinear + Bilinear + + + + Bicubic + Bicubic + + + + Gaussian + Gausyen + + + + Lanczos + Lanczos + + + + ScaleForce + ScaleForce + + + + AMD FidelityFX Super Resolution + AMD FidelityFX Süper Çözünürlük + + + + Area + Area + + + + MMPX + MMPX + + + + Zero-Tangent + Zero-Tangent + + + + B-Spline + B-Spline + + + + Mitchell + Mitchell + + + + Spline-1 + Spline-1 + + + + + None + Yok + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Default (16:9) + Varsayılan (16:9) + + + + Force 4:3 + 4:3'e Zorla + + + + Force 21:9 + 21:9'a Zorla + + + + Force 16:10 + 16:10'a Zorla + + + + Stretch to Window + Ekrana Sığdır + + + + Automatic + Otomatik + + + 2x 2x - + 4x 4x - + 8x 8x - + 16x 16x - + + 32x + 32x + + + + 64x + 64x + + + Japanese (日本語) Japonca (日本語) - + American English Amerikan İngilizcesi - + French (français) Fransızca (français) - + German (Deutsch) Almanca (Deutsch) - + Italian (italiano) İtalyanca (italiano) - + Spanish (español) İspanyolca (español) - + Chinese Çince - + Korean (한국어) Korece (한국어) - + Dutch (Nederlands) Flemenkçe (Nederlands) - + Portuguese (português) Portekizce (português) - + Russian (Русский) Rusça (Русский) - + Taiwanese Tayvanca - + British English İngiliz İngilizcesi - + Canadian French Kanada Fransızcası - + Latin American Spanish Latin Amerika İspanyolcası - + Simplified Chinese Basitleştirilmiş Çince - + Traditional Chinese (正體中文) Geleneksel Çince (正體中文) - + Brazilian Portuguese (português do Brasil) Brezilya Portekizcesi (português do Brasil) - - + + Polish (polska) + + + + + Thai (แบบไทย) + + + + + Japan Japonya - + USA ABD - + Europe Avrupa - + Australia Avustralya - + China Çin - + Korea Kore - + Taiwan Tayvan - + Auto (%1) Auto select time zone Otomatik (%1) - + Default (%1) Default time zone Varsayılan (%1) - + CET CET - + CST6CDT CST6CDT - + Cuba Küba - + EET EET - + Egypt Mısır - + Eire İrlanda - + EST EST - + EST5EDT EST5EDT - + GB GB - + GB-Eire GB-İrlanda - + GMT GMT - + GMT+0 GMT+0 - + GMT-0 MT-0 - + GMT0 GMT0 - + Greenwich Greenwich - + Hongkong Hong Kong - + HST HST - + Iceland İzlanda - + Iran İran - + Israel İsrail - + Jamaica Jamaika - + Kwajalein Kwajalein - + Libya Libya - + MET MET - + MST MST - + MST7MDT MST7MDT - + Navajo Navaho - + NZ Yeni Zelanda - + NZ-CHAT Chatham Adaları - + Poland Polonya - + Portugal Portekiz - + PRC PRC - + PST8PDT PST8PDT - + ROC ROC - + ROK ROK - + Singapore Singapur - + Turkey Türkiye - + UCT UCT - + Universal Evrensel - + UTC UTC - + W-SU W-SU - + WET WET - + Zulu Zulu - + Mono Mono - + Stereo Stereo - + Surround Surround - + 4GB DRAM (Default) - + 4GB DRAM (Varsayılan) - + 6GB DRAM (Unsafe) - + 6GB DRAM (Güvenli Değil) - + 8GB DRAM - + 8GB DRAM - + 10GB DRAM (Unsafe) - + 10GB DRAM (Güvenli Değil) - + 12GB DRAM (Unsafe) - + 12GB DRAM (Güvenli Değil) - - Low (128) - - - - - Medium (256) - - - - - High (512) - - - - + Docked Dock Modu Aktif - + Handheld Taşınabilir - + + + Off + Kapalı + + + Boost (1700MHz) - + Takviye (1700MHz) - + Fast (2000MHz) - + Hızlı (2000MHz) - + Always ask (Default) Her zaman sor (Varsayılan) - + Only if game specifies not to stop - + Sadece oyun durdurulmamasını belirtirse - + Never ask Asla sorma + + + + Medium (256) + Orta (256) + + + + + High (512) + Yüksek (512) + + + + Very Small (16 MB) + + + + + Small (32 MB) + + + + + Normal (128 MB) + + + + + Large (256 MB) + + + + + Very Large (512 MB) + + + + + Very Low (4 MB) + + + + + Low (8 MB) + + + + + Normal (16 MB) + + + + + Medium (32 MB) + + + + + High (64 MB) + + + + + Very Low (32) + + + + + Low (64) + + + + + Normal (128) + + + + + Disabled + Devre Dışı + + + + ExtendedDynamicState 1 + Genişletilmiş Dinamik Durum 1 + + + + ExtendedDynamicState 2 + Genişletilmiş Dinamik Durum 2 + + + + ExtendedDynamicState 3 + Genişletilmiş Dinamik Durum 3 + + + + Tree View + + + + + Grid View + + ConfigureApplets @@ -1928,12 +2252,12 @@ When a guest attempts to open the controller applet, it is immediately closed. Applets - + Aplikasyonlar Applet mode preference - + Aplikasyon modu tercihi @@ -1988,7 +2312,7 @@ When a guest attempts to open the controller applet, it is immediately closed.Varsayılana Döndür - + Auto Otomatik @@ -2018,7 +2342,7 @@ When a guest attempts to open the controller applet, it is immediately closed. CPU Backend - + CPU Arkayüzü @@ -2174,7 +2498,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all memory accesses to use Software MMU Emulation.</div> @@ -2191,7 +2515,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up exclusive memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all exclusive memory accesses to use Software MMU Emulation.</div> @@ -2225,7 +2549,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up memory accesses by allowing invalid memory accesses to succeed.</div> - <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> + <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> <div style="white-space: nowrap">Bu optimizasyon, geçersiz hafıza erişim isteklerine izin vererek genel hafıza erişim hızını artırır.</div> @@ -2263,33 +2587,33 @@ When a guest attempts to open the controller applet, it is immediately closed. Logging - Kütük Tutma + Günlük Kaydı Tutma - - Open Log Location - Kütük Konumunu Aç - - - + Global Log Filter - Evrensel Kütük Filtresi + Evrensel Günlük Kaydı Filtresi - + When checked, the max size of the log increases from 100 MB to 1 GB Etkinleştirildiğinde log'un boyut sınırı 100 MB'tan 1 GB'a çıkar - + Enable Extended Logging** Uzatılmış Hata Kaydını Etkinleştir. - + Show Log in Console Konsolda Log'u Göster + + + Open Log Location + Günlük Kaydı Konumunu Aç + Homebrew @@ -2348,7 +2672,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Enable Renderdoc Hotkey - + Renderdoc Kısayol Tuşunu Etkinleştir @@ -2393,12 +2717,12 @@ When a guest attempts to open the controller applet, it is immediately closed. <html><head/><body><p>When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.</p></body></html> - + <html><head/><body><p>İşaretlendiğinde, yüklemelerin belirli çizimlerle ilişkilendirilmesine olanak tanıyan eşlenmiş bellek yüklemelerinin yeniden sıralanmasını devre dışı bırakır. Bazı durumlarda performansı düşürebilir.</p></body></html> Disable Buffer Reorder - + Arabellek Yeniden Sıralamayı Devre Dışı Bırak @@ -2426,18 +2750,9 @@ When a guest attempts to open the controller applet, it is immediately closed.Bütün Kontrolcü Türlerini Etkinleştir - - Censor username in logs - - - - - **This will be reset automatically when eden closes. - - - - Enable Auto-Stub** - Auto-Stub'ı Etkinleştir + + Enable Auto-Stub + Otomatik Taslağı Etkinleştir @@ -2446,8 +2761,8 @@ When a guest attempts to open the controller applet, it is immediately closed. - Enable CPU Debugging - CPU Hata Ayıklama Modu'nu Etkinleştir + Use dev.keys + @@ -2460,43 +2775,74 @@ When a guest attempts to open the controller applet, it is immediately closed.Hata ayıklama - - Flush log output on each line - + + Battery Serial: + Pil Seri Numarası: - - Enable FS Access Log - FS Erişim Kaydını Etkinleştir + + Bitmask for quick development toggles + Hızlı geliştirme geçişleri için bit maskesi - + + Set debug knobs (bitmask) + Hata ayıklama düğmelerini ayarla (bit maskesi) + + + + 16-bit debug knob set for quick development toggles + Hızlı geliştirme geçişleri için 16 bit hata ayıklama düğmesi seti + + + + (bitmask) + (bitmask) + + + + Debug Knobs: + Hata Ayıklama Düğmeleri: + + + + Unit Serial: + Ünite Seri Numarası: + + + Enable this to output the latest generated audio command list to the console. Only affects games using the audio renderer. Bu seçenek açıksa son oluşturulan ses komutları konsolda gösterilir. Sadece ses işleyicisi kullanan oyunları etkiler. - - Enable Auto-Stub - - - - + Dump Audio Commands To Console** Konsola Ses Komutlarını Aktar** - + + Flush log output on each line + Her satırda günlük çıktısını boşalt + + + + Enable FS Access Log + FS Erişim Kaydını Etkinleştir + + + Enable Verbose Reporting Services** Detaylı Raporlama Hizmetini Etkinleştir - **This will be reset automatically when yuzu closes. - **Bu yuzu kapandığında otomatik olarak eski haline dönecektir. + + Censor username in logs + Günlüklerde kullanıcı adını sansürle - - Web applet not compiled - Web uygulaması derlenmemiş + + **This will be reset automatically when Eden closes. + **Bu, Eden kapandığında otomatik olarak sıfırlanacaktır. @@ -2538,103 +2884,99 @@ When a guest attempts to open the controller applet, it is immediately closed. ConfigureDialog - - yuzu Configuration - yuzu Yapılandırması - - eden Configuration - + Eden Configuration + Eden Yapılandırması Some settings are only available when a game is not running. - + Bazı ayarlar yalnızca bir oyun çalışmadığında kullanılabilir. - + Applets - + Aplikasyonlar - - + + Audio Ses - - + + CPU CPU - + Debug Hata Ayıklama - + Filesystem Dosya sistemi - - + + General Genel - - + + Graphics Grafikler - + GraphicsAdvanced Gelişmiş Grafik Ayarları - - GraphicsExtensions - + + GraphicsExtra + Ek Grafikler - + Hotkeys Kısayollar - - + + Controls Kontroller - + Profiles Profiller - + Network - - + + System Sistem - + Game List Oyun Listesi - + Web Web @@ -2664,9 +3006,10 @@ When a guest attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2676,107 +3019,195 @@ When a guest attempts to open the controller applet, it is immediately closed.SD Kart - + + Save Data + Kayıt Verisi + + + Gamecard Oyun Kartuşu - + Path Konum - + Inserted Yerleştirilmiş - + Current Game Geçerli Oyun - + Patch Manager Yama Yöneticisi - + Dump Decompressed NSOs Çıkarılmış NSO'ları Dump Et - + Dump ExeFS Dump ExeFS - + Mod Load Root Mod Yükleme Konumu - + Dump Root Dump Konumu - + Caching Cacheleme - + Cache Game List Metadata Oyun Listesi Üstverisini Cache'le - - - - + Reset Metadata Cache Üstveri Cache'ini Sıfırla - + Select Emulated NAND Directory... NAND Konumunu Seç... - + Select Emulated SD Directory... Emüle Edilmiş SD Kart Konumunu Seç... - + + + Select Save Data Directory... + Kayıt Verisi Dizinini Seçin... + + + Select Gamecard Path... Oyun Kartuşu Konumunu Seç... - + Select Dump Directory... Dump Konumunu Seç... - + Select Mod Load Directory... Mod Yükleme Konumunu Seç... - - The metadata cache is already empty. - Metadata Cache'i zaten boş. + + Save Data Directory + Kayıt Verisi Dizini - - The operation completed successfully. - İşlem başarıyla tamamlandı. + + Choose an action for the save data directory: + Kayıt verisi dizini için bir işlem seçin: - - The metadata cache couldn't be deleted. It might be in use or non-existent. - Metadata Cache'i silinemedi. Kullanımda ya da oluşturulmamış olabilir. + + Set Custom Path + Özel Yol Ayarla + + + + Reset to NAND + NAND'a Sıfırla + + + + Save data exists in both the old and new locations. + +Old: %1 +New: %2 + +Would you like to migrate saves from the old location? +WARNING: This will overwrite any conflicting saves in the new location! + Kayıt verisi hem eski hem de yeni konumlarda mevcut. + +Eski: %1 +Yeni: %2 + +Kayıtları eski konumdan taşımak ister misiniz? +UYARI: Bu işlem, yeni konumdaki çakışan tüm kayıtların üzerine yazacaktır! + + + + Would you like to migrate your save data to the new location? + +From: %1 +To: %2 + Kayıt verilerinizi yeni konuma taşımak ister misiniz? + +Kaynak: %1 +Hedef: %2 + + + + Migrate Save Data + Kayıt Verilerini Taşı + + + + Migrating save data... + Kayıt verileri taşınıyor... + + + + Cancel + İptal + + + + + Migration Failed + Taşıma Başarısız + + + + Failed to create destination directory. + Hedef dizin oluşturulamadı. + + + + Failed to migrate save data: +%1 + Kayıt verileri taşınamadı: +%1 + + + + Migration Complete + Taşıma Tamamlandı + + + + Save data has been migrated successfully. + +Would you like to delete the old save data? + Kayıt verileri başarıyla taşındı. + +Eski kayıt verilerini silmek ister misiniz? @@ -2794,28 +3225,54 @@ When a guest attempts to open the controller applet, it is immediately closed. - Linux - Linux + External Content + - + + Add directories to scan for DLCs and Updates without installing to NAND + + + + + Add Directory + + + + + Remove Selected + + + + Reset All Settings Tüm Ayarları Sıfırla - yuzu - yuzu + + Eden + Eden - - eden - - - - + This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed? Bu seçenek tüm genel ve oyuna özgü ayarları silecektir. Oyun dizinleri, profiller ve giriş profilleri silinmeyecektir. Devam etmek istiyor musunuz? + + + Select External Content Directory... + + + + + Directory Already Added + + + + + This directory is already in the list. + + ConfigureGraphics @@ -2845,33 +3302,33 @@ When a guest attempts to open the controller applet, it is immediately closed.Arkaplan Rengi: - + % FSR sharpening percentage (e.g. 50%) % - + Off Kapalı - + VSync Off VSync Kapalı - + Recommended Önerilen - + On Açık - + VSync On Vsync Açık @@ -2889,7 +3346,7 @@ When a guest attempts to open the controller applet, it is immediately closed.Gelişmiş - + Advanced Graphics Settings Gelişmiş Grafik Ayarları: @@ -2899,24 +3356,38 @@ When a guest attempts to open the controller applet, it is immediately closed. Form - Form + Form - Extensions - + Extras + Extralar - - Vulkan Extension Settings - + + Hacks + Hileler - - While it's recommended to use state 3, some games may perform better on lower states. Setting to 0 (disabled) may also break games. -If your GPU is older (i.e. RX570/580 or older), it may not support these features. If this is the case, set the slider to 0 and uncheck all boxes. -These settings are experimental, and may cause black screens. If your games fail to boot or are stuck on a black screen, change these settings around. - + + Changing these options from their default may cause issues. Novitii cavete! + Bu seçenekleri varsayılandan değiştirmek sorunlara neden olabilir. Yeni başlayanlar dikkat etsin! + + + + Vulkan Extensions + Vulkan Uzantıları + + + + % + Sample Shading percentage (e.g. 50%) + % + + + + Extended Dynamic State is disabled on macOS due to MoltenVK compatibility issues that cause black screens. + Siyah ekranlara neden olan MoltenVK uyumluluk sorunları nedeniyle Genişletilmiş Dinamik Durum macOS üzerinde devre dışıdır. @@ -2947,75 +3418,75 @@ These settings are experimental, and may cause black screens. If your games fail Varsayılana Döndür - + Action İşlem - + Hotkey Kısayol - + Controller Hotkey Kontrolcü Kısayolu - - - + + + Conflicting Key Sequence Tutarsız Anahtar Dizisi - - + + The entered key sequence is already assigned to: %1 Girilen anahtar dizisi zaten %1'e atanmış. - + [waiting] [bekleniyor] - + Invalid Geçersiz - + Invalid hotkey settings - + Geçersiz kısayol tuşu ayarları - + An error occurred. Please report this issue on github. - + Bir hata oluştu. Lütfen bu sorunu github üzerinden bildirin. - + Restore Default Varsayılana Döndür - + Clear Temizle - + Conflicting Button Sequence Tutarsız Tuş Dizisi - + The default button sequence is already assigned to: %1 Varsayılan buton dizisi zaten %1'e atanmış. - + The default key sequence is already assigned to: %1 Varsayılan anahtar dizisi zaten %1'e atanmış. @@ -3335,12 +3806,8 @@ These settings are experimental, and may cause black screens. If your games fail - Requires restarting eden - - - - Requires restarting yuzu - Yuzu'yu yeniden başlatmayı gerektirir + Requires restarting Eden + Eden'in yeniden başlatılmasını gerektirir @@ -3370,12 +3837,12 @@ These settings are experimental, and may cause black screens. If your games fail Allows unlimited uses of the same Amiibo in games that would otherwise limit you to one use. - + Normalde sizi tek bir kullanımla sınırlandıracak oyunlarda aynı Amiibo'nun sınırsız kullanımına izin verir. Use random Amiibo ID - + Rastgele Amiibo kimliği kullan @@ -3490,30 +3957,19 @@ These settings are experimental, and may cause black screens. If your games fail - + Left Stick Sol Analog - - - - - - - Up - Yukarı - - - - - - - - - - Left - Sol + + + + + + + Down + Aşağı @@ -3527,14 +3983,25 @@ These settings are experimental, and may cause black screens. If your games fail Sağ - - - - - - - Down - Aşağı + + + + + + + + Left + Sol + + + + + + + + + Up + Yukarı @@ -3581,14 +4048,6 @@ These settings are experimental, and may cause black screens. If your games fail D-Pad D-Pad - - - - - - SL - SL - @@ -3598,59 +4057,55 @@ These settings are experimental, and may cause black screens. If your games fail SR - - - - L - L + + + + + SL + SL - + ZL ZL + + + + + L + L + Minus Eksi - - - - Capture - Kaydet - - + Plus Artı - - - Home - Home + + + + ZR + ZR - - + + R R - - - - - ZR - ZR - Motion 1 @@ -3661,6 +4116,18 @@ These settings are experimental, and may cause black screens. If your games fail Motion 2 Hareket 2 + + + + Capture + Kaydet + + + + + Home + Home + Face Buttons @@ -3673,10 +4140,10 @@ These settings are experimental, and may cause black screens. If your games fail X - - - Y - Y + + + B + B @@ -3685,21 +4152,21 @@ These settings are experimental, and may cause black screens. If your games fail A - - - B - B + + + Y + Y - + Right Stick Sağ Analog Mouse panning - + Fare kaydırma @@ -3707,242 +4174,242 @@ These settings are experimental, and may cause black screens. If your games fail Yapılandır - - - - + + + + Clear Temizle - - - - - + + + + + [not set] [belirlenmedi] - - - + + + Invert button Tuşları ters çevir - - + + Toggle button Tuşu Aç/Kapa - + Turbo button Turbo tuşu - - + + Invert axis Ekseni ters çevir - - - + + + Set threshold Alt sınır ayarla - - + + Choose a value between 0% and 100% %0 ve %100 arasında bir değer seçin - + Toggle axis Ekseni aç/kapa - + Set gyro threshold Gyro alt sınırı ayarla - + Calibrate sensor - + Sensörü kalibre et - + Map Analog Stick Analog Çubuğu Ayarla - + After pressing OK, first move your joystick horizontally, and then vertically. To invert the axes, first move your joystick vertically, and then horizontally. Tamama bastıktan sonra, joystikinizi önce yatay sonra dikey olarak hareket ettirin. Eksenleri ters çevirmek için, önce joystickinizi dikey sonra yatay olarak hareket ettirin. - + Center axis Ekseni merkezle - - + + Deadzone: %1% Ölü Bölge: %1% - - + + Modifier Range: %1% Düzenleyici Aralığı: %1% - - + + Pro Controller Pro Controller - + Dual Joycons İkili Joyconlar - + Left Joycon Sol Joycon - + Right Joycon Sağ Joycon - + Handheld Handheld - + GameCube Controller GameCube Kontrolcüsü - + Poke Ball Plus Poke Ball Plus - + NES Controller NES Kontrolcüsü - + SNES Controller SNES Kontrolcüsü - + N64 Controller N64 Kontrolcüsü - + Sega Genesis Sega Genesis - + Start / Pause Başlat / Duraklat - + Z Z - + Control Stick Kontrol Çubuğu - + C-Stick C-Çubuğu - + Shake! Salla! - + [waiting] [bekleniyor] - + New Profile Yeni Profil - + Enter a profile name: Bir profil ismi girin: - - + + Create Input Profile Kontrol Profili Oluştur - + The given profile name is not valid! Girilen profil ismi geçerli değil! - + Failed to create the input profile "%1" "%1" kontrol profili oluşturulamadı - + Delete Input Profile Kontrol Profilini Kaldır - + Failed to delete the input profile "%1" "%1" kontrol profili kaldırılamadı - + Load Input Profile Kontrol Profilini Yükle - + Failed to load the input profile "%1" "%1" kontrol profili yüklenemedi - + Save Input Profile Kontrol Profilini Kaydet - + Failed to save the input profile "%1" "%1" kontrol profili kaydedilemedi @@ -3965,15 +4432,6 @@ Eksenleri ters çevirmek için, önce joystickinizi dikey sonra yatay olarak har Varsayılanlar - - ConfigureLinuxTab - - - - Linux - Linux - - ConfigureMotionTouch @@ -3999,14 +4457,14 @@ Eksenleri ters çevirmek için, önce joystickinizi dikey sonra yatay olarak har - + Configure Yapılandır Touch from button profile: - + Düğme profilinden dokunma: @@ -4029,111 +4487,93 @@ Eksenleri ters çevirmek için, önce joystickinizi dikey sonra yatay olarak har Port: - - Learn More - Daha Fazla Bilgi Edinin - - - - + + Test Test - + Add Server Server Ekle - + Remove Server Server'ı Kaldır - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Daha Fazlası</span></a> - - - + %1:%2 %1:%2 - yuzu - yuzu + + + + + + + Eden + Eden - - <a href='https://eden-emulator.github.io/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - - - - + Port number has invalid characters Port numarasında geçersiz karakterler var - - - - - - - eden - - - - + Port has to be in range 0 and 65353 Port 0 ila 65353 aralığında olmalıdır - + IP address is not valid IP adresi geçerli değil - + This UDP server already exists Bu UDP sunucusu zaten var - + Unable to add more than 8 servers 8'den fazla server eklenemez - + Testing Test Ediliyor - + Configuring Yapılandırılıyor - + Test Successful Test Başarılı - + Successfully received data from the server. Bilgi başarıyla sunucudan kaldırıldı. - + Test Failed Test Başarısız - + Could not receive valid data from the server.<br>Please verify that the server is set up correctly and the address and port are correct. Serverdan geçerli veri alınamadı.<br>Lütfen sunucunun doğru ayarlandığını ya da adres ve portun doğru olduğunu kontrol edin. - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. UDP testi ya da yapılandırılması devrede.<br>Lütfen bitmesini bekleyin. @@ -4143,7 +4583,7 @@ Eksenleri ters çevirmek için, önce joystickinizi dikey sonra yatay olarak har Configure mouse panning - + Fare kaydırmayı yapılandır @@ -4153,7 +4593,7 @@ Eksenleri ters çevirmek için, önce joystickinizi dikey sonra yatay olarak har Can be toggled via a hotkey. Default hotkey is Ctrl + F9 - + Bir kısayol tuşuyla değiştirilebilir. Varsayılan kısayol Ctrl + F9'dur. @@ -4182,27 +4622,27 @@ Eksenleri ters çevirmek için, önce joystickinizi dikey sonra yatay olarak har Deadzone counterweight - + Ölü bölge denge ağırlığı Counteracts a game's built-in deadzone - + Oyunun yerleşik ölü bölgesine karşı koyar Deadzone - + Ölü Bölge Stick decay - + Çubuk aşınması Strength - + Güç @@ -4218,22 +4658,23 @@ Eksenleri ters çevirmek için, önce joystickinizi dikey sonra yatay olarak har Mouse panning works better with a deadzone of 0% and a range of 100%. Current values are %1% and %2% respectively. - + Fare kaydırma, %0 ölü bölge ve %100 aralık ile daha iyi çalışır. +Mevcut değerler sırasıyla %1 ve %2'dir. Emulated mouse is enabled. This is incompatible with mouse panning. - + Emüle edilen fare etkin. Bu özellik fare kaydırma ile uyumsuzdur. Emulated mouse is enabled - + Emüle edilen fare etkin Real mouse input and mouse panning are incompatible. Please disable the emulated mouse in input advanced settings to allow mouse panning. - + Gerçek fare girişi ve fare kaydırma uyumsuzdur. Fare kaydırmaya izin vermek için lütfen giriş gelişmiş ayarlarından emüle edilen fareyi devre dışı bırakın. @@ -4259,9 +4700,9 @@ Current values are %1% and %2% respectively. Ağ Arayüzü - - None - Hiçbiri + + Enable Airplane Mode + Uçak Modunu Etkinleştir @@ -4314,52 +4755,57 @@ Current values are %1% and %2% respectively. Some settings are only available when a game is not running. - + Bazı ayarlar yalnızca bir oyun çalışmadığında kullanılabilir. - + Add-Ons Eklentiler - + System Sistem - + CPU CPU - + Graphics Grafikler - + Adv. Graphics Gelişmiş Grafikler - - GPU Extensions - + + Ext. Graphics + Ek Grafikler - + Audio Ses - + Input Profiles Kontrol Profilleri - Linux - Linux + Network + + + + + Applets + @@ -4380,15 +4826,110 @@ Current values are %1% and %2% respectively. Eklentiler - + + Import Mod from ZIP + + + + + Import Mod from Folder + + + + Patch Name Yama Adı - + Version Versiyon + + + Mod Install Succeeded + Mod Başarıyla Kuruldu + + + + Successfully installed all mods. + Tüm modlar başarıyla kuruldu. + + + + Mod Install Failed + Mod Kurulumu Başarısız + + + + Failed to install the following mods: + %1 +Check the log for details. + + + + + Mod Folder + + + + + Zipped Mod Location + + + + + Zipped Archives (*.zip) + + + + + Invalid Selection + + + + + Only mods, cheats, and patches can be deleted. +To delete NAND-installed updates, right-click the game in the game list and click Remove -> Remove Installed Update. + + + + + You are about to delete the following installed mods: + + + + + + +Once deleted, these can NOT be recovered. Are you 100% sure you want to delete them? + + + + + Delete add-on(s)? + + + + + Successfully deleted + + + + + Successfully deleted all selected mods. + + + + + &Delete + + + + + &Open in File Manager + + ConfigureProfileManager @@ -4418,32 +4959,17 @@ Current values are %1% and %2% respectively. Kullanıcı Adı - - Set Image - Resim Belirle - - - + Add Ekle - - Rename - Yeniden Adlandır - - - - Remove - Kaldır - - - + Profile management is available only when game is not running. Profil ayarlarına sadece oyun çalışmıyorken erişilebilir. - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -4451,100 +4977,80 @@ Current values are %1% and %2% respectively. %2 - - Enter Username - Kullanıcı Adınızı girin - - - + Users Kullanıcılar - - Enter a username for the new user: - Yeni kullanıcı için yeni bir kullanıcı adı giriniz: - - - - Enter a new username: - Yeni bir kullanıcı adı giriniz: - - - - Select User Image - Kullanıcı Resmi Seçin - - - - JPEG Images (*.jpg *.jpeg) - JPEG Görüntüler (*.jpg *.jpeg) - - - + Error deleting image Resim silinirken hata oluştu - + Error occurred attempting to overwrite previous image at: %1. Eski resmin üzerine yazılmaya çalışırken hata oluştu: %1. - + Error deleting file Dosyayı silerken hata oluştu - + Unable to delete existing file: %1. Mevcut %1 dosyası silinemedi - + Error creating user image directory Kullanıcı görüntü klasörünü oluştururken hata - + Unable to create directory %1 for storing user images. Kullanıcı görüntülerini depolamak için %1 klasörü oluşturulamadı. - - Error copying user image - Kullanıcı görüntüsünü kopyalarken hata + + Error saving user image + Kullanıcı resmi kaydedilirken hata oluştu - - Unable to copy image from %1 to %2 - Görüntü %1'den %2'ye kopyalanamadı + + Unable to save image to file + Resim dosyaya kaydedilemiyor - - Error resizing user image - Kullanıcı görüntüsünü yeniden boyutlandırma hatası + + &Edit + - - Unable to resize image - Görüntü yeniden boyutlandırılamıyor + + &Delete + + + + + Edit User + ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. Kullanıcıyı silmek istediğinize emin misiniz? Kayıtlı oyun verileri de birlikte silinecek. - + Confirm Delete Silmeyi Onayla - + Name: %1 UUID: %2 İsim: %1 @@ -4561,7 +5067,7 @@ UUID: %2 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. - + @@ -4597,7 +5103,7 @@ UUID: %2 - + Enable @@ -4608,7 +5114,7 @@ UUID: %2 - + Not connected Bağlantı yok @@ -4618,63 +5124,63 @@ UUID: %2 Varsayılana Döndür - + Clear Temizle - + [not set] [belirlenmedi] - + Invert axis Ekseni ters çevir - - + + Deadzone: %1% Ölü Bölge: %1% - + Error enabling ring input Ring giriş hatası - + Direct Joycon driver is not enabled Direkt Joycon sürücüsü açık değil - + Configuring Yapılandırılıyor - + The current mapped device doesn't support the ring controller Atanmış cihaz ring kontrolünü desteklemiyor - + The current mapped device doesn't have a ring attached Atanmış cihaza ring takılı değil - + The current mapped device is not connected - + - + Unexpected driver result %1 Beklenmeyen sürücü sonucu %1 - + [waiting] [bekleniyor] @@ -4695,10 +5201,10 @@ UUID: %2 Core - + - + Warning: "%1" is not a valid language for region "%2" Hata: "%1" bölgesi için "%2" geçerli bir dil değil @@ -4710,14 +5216,10 @@ UUID: %2 TAS TAS - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the yuzu website.</p></body></html> - <html><head/><body><p> Kontrolcü girdilerini TAS-nx scriptleri ile aynı formatta okur. <br/>Daha detaylı bilgi için lütfen yuzu web sitesindeki <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;"> yardım sayfasına</span></a>bakınız.</p></body></html> - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the eden website.</p></body></html> - + <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the user handbook.</p></body></html> + @@ -4750,17 +5252,22 @@ UUID: %2 Yüklemeler sırasında yürütmeyi duraklat - + + Show recording dialog + + + + Script Directory Script Konumu - + Path Konum - + ... ... @@ -4768,12 +5275,12 @@ UUID: %2 ConfigureTasDialog - + TAS Configuration TAS Yapılandırması - + Select TAS Load Directory... Tas Yükleme Dizini Seçin @@ -4877,14 +5384,10 @@ Noktanın konumunu değiştirmek için sürükleyin ya da sayıların üstüne Configure Touchscreen Dokunmatik Ekranı Yapılandır - - Warning: The settings in this page affect the inner workings of yuzu's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - Uyarı: Bu sayfadaki ayarlar yuzu'nun emüle edilmiş dokunmatık ekranının işleyişini etkiler. Ayarları değiştirmek istenmeyen davranışlara yol açabilir, dokunmatik ekranın bir kısmının veya tamamının çalışmaması gibi. Bu kısmı sadece ne yaptığınızı biliyorsanız kullanın. - - Warning: The settings in this page affect the inner workings of eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - + Warning: The settings in this page affect the inner workings of Eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. + @@ -4915,64 +5418,43 @@ Noktanın konumunu değiştirmek için sürükleyin ya da sayıların üstüne ConfigureUI - - - + + None Hiçbiri - - - Small (32x32) - Küçük (32x32) - - Standard (64x64) - Standart (64x64) - - - - Large (128x128) - Büyük (128x128) - - - - Full Size (256x256) - Tam Boyut (256x256) - - - Small (24x24) Küçük (24x24) - + Standard (48x48) Standart (48x48) - + Large (72x72) Büyük (72x72) - + Filename Dosya adı - + Filetype Dosya türü - + Title ID Oyun ID - + Title Name Oyun Adı @@ -5037,78 +5519,73 @@ Noktanın konumunu değiştirmek için sürükleyin ya da sayıların üstüne Show Play Time Column - + - Game Icon Size: - Oyun Simge Boyutu: - - - Folder Icon Size: Dosya Simge Boyutu: - + Row 1 Text: 1. Sıra Yazısı: - + Row 2 Text: 2. Sıra Yazısı: - + Screenshots Ekran Görüntüleri - + Ask Where To Save Screenshots (Windows Only) Ekran Görüntülerinin Nereye Kaydedileceğini Belirle (Windows'a Özel) - + Screenshots Path: Ekran Görüntülerinin Konumu: - + ... ... - + TextLabel - + - + Resolution: Çözünürlük: - + Select Screenshots Path... Ekran Görüntülerinin Konumunu Seçin... - + <System> <System> - + English İngilizce - + Auto (%1 x %2, %3 x %4) Screenshot width value - + @@ -5203,170 +5680,178 @@ Noktanın konumunu değiştirmek için sürükleyin ya da sayıların üstüne Web Web - - yuzu Web Service - yuzu Web Servisi - - - By providing your username and token, you agree to allow yuzu to collect additional usage data, which may include user identifying information. - Kullanıcı adınızı ve tokeninizi sağlayarak Citra'nın ek kullanım verilerini toplamasına izin vermeyi kabul ediyorsunuz, bu kullanıcı tanımlayıcı bilgileri de içerebilir. - - eden Web Service - + Eden Web Service + - - By providing your username and token, you agree to allow eden to collect additional usage data, which may include user identifying information. - - - - - Verify - Doğrula - - - - Sign up - Kayıt Ol - - - + Token: Token: - + Username: Kullanıcı Adı: - - What is my token? - Tokenim nedir? + + Generate + - + Web Service configuration can only be changed when a public room isn't being hosted. Web Sunucu ayarları yalnızca halka açık bir oda sunulmuyorken değiştirilebilir. - Telemetry - Telemetri - - - Share anonymous usage data with the yuzu team - Yuzu ekibiyle anonim kullanım verilerini paylaş - - - Learn more - Daha fazla bilgi edinin - - - Telemetry ID: - Telemetri ID: - - - Regenerate - Yeniden Oluştur - - - + Discord Presence Discord Görünümü - + Show Current Game in your Discord Status Şu anda oynadığın oyunu Discord'da durum olarak göster - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Daha Fazlası</span></a> - - - - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Kayıt Ol</span></a> - - - - <a href='https://evilperson1337.notion.site/Hosting-a-Room-Inside-of-Eden-20457c2edaf680108abac6215a79acdb'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - - - - - Warning - - - + - Verification is currently nonfunctional, instead generate a random 48-character string with only lowercase a-z. - - - - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">Tokenim nedir?</span></a> - - - Telemetry ID: 0x%1 - Telemetri ID: 0x%1 - - - Unspecified - Belirlenmemiş - - - Token not verified - Token doğrulanmadı - - - Token was not verified. The change to your token has not been saved. - Token doğrulanmadı. Tokeninize yapılan değişiklik kaydedilmedi. - - - - Unverified, please click Verify before saving configuration + All Good Tooltip - Doğrulanmadı, lütfen konfigürasyonu kaydetmeden önce Doğrula tuşuna basın + Her Şey Yolunda - Verifying... - Doğrulanıyor... - - - Verified + + Must be between 4-20 characters Tooltip - Doğrulandı + 4-20 karakter arasında olmalıdır - Verification failed + + Must be 48 characters, and lowercase a-z Tooltip - Doğrulanma başarısız oldu - - - Verification failed - Doğrulanma başarısız oldu - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - Doğrulanma başarısız oldu. Kullanıcı adı ve tokeninizi doğru girdiğinizden ve internete bağlı olduğunuzdan. + 48 karakter olmalı ve a-z arası küçük harf içermelidir ControllerDialog - + Controller P1 Kontrolcü O1 - + &Controller P1 &Kontrolcü O1 + + DataDialog + + + Data Manager + Veri Yöneticisi + + + + Deleting ANY data is IRREVERSABLE! + HERHANGİ bir veriyi silmek GERİ DÖNDÜRÜLEMEZ! + + + + Shaders + Gölgelendiriciler + + + + UserNAND + Kullanıcı NAND + + + + SysNAND + SysNAND + + + + Mods + Modlar + + + + Saves + Kayıtlar + + + + DataWidget + + + Form + Form + + + + Tooltip + Araç ipucu + + + + Open with your system file manager + Sistem dosya yöneticinizle açın + + + + Delete all data in this directory. THIS IS 100% IRREVERSABLE! + Bu dizindeki tüm verileri silin. BU %100 GERİ DÖNDÜRÜLEMEZ! + + + + Export all data in this directory. This may take a while! + Bu dizindeki tüm verileri dışa aktarın. Bu biraz zaman alabilir! + + + + Import data for this directory. This may take a while, and will delete ALL EXISTING DATA! + Bu dizin için veri içe aktarın. Bu biraz zaman alabilir ve MEVCUT TÜM VERİLERİ silecek! + + + + Calculating... + Hesaplanıyor... + + + + DepsDialog + + + Eden Dependencies + Eden Bağımlılıkları + + + + <html><head/><body><p><span style=" font-size:28pt;">Eden Dependencies</span></p></body></html> + <html><head/><body><p><span style=" font-size:28pt;">Eden Bağımlılıkları</span></p></body></html> + + + + <html><head/><body><p>The projects that make Eden possible</p></body></html> + <html><head/><body><p>Eden'i mümkün kılan projeler + + + + Dependency + Bağımlılık + + + + Version + Versiyon + + DirectConnect @@ -5428,1497 +5913,152 @@ Noktanın konumunu değiştirmek için sürükleyin ya da sayıların üstüne Username is not valid. Must be 4 to 20 alphanumeric characters. - Kullanıcı adı geçersiz. 4 ile 20 alfasayısal karakter arasında olmalı. + Kullanıcı adı geçerli değil. 4 ila 20 alfanümerik karakterden oluşmalıdır. Room name is not valid. Must be 4 to 20 alphanumeric characters. - Oda adı geçersiz. 4 ile 20 alfasayısal karakter arasında olmalı. + Oda adı geçerli değil. 4 ila 20 alfanümerik karakterden oluşmalıdır. Username is already in use or not valid. Please choose another. - Kullanıcı adı halihazırda kullanılıyor. Lütfen başka bir kullanıcı adı seçin. + Kullanıcı adı zaten kullanımda veya geçerli değil. Lütfen başka bir tane seçin. IP is not a valid IPv4 address. - IP geçerli bir IPv4 adresi değil. + IP geçerli bir IPv4 adresi değil. Port must be a number between 0 to 65535. - Port 0 ile 65535 arasında bir numara olmalı. + Port 0 ile 65535 arasında bir sayı olmalıdır. You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - Bir oda açabilmeniz için bir Tercih Edilen Oyun seçmeniz gerekir. Eğer oyun listenizde hiçbir oyun yoksa, oyun listesindeki artı ikonuna basarak yeni bir oyun klasörü ekleyebilirsiniz. + Bir odaya sahiplik yapmak için Tercih Edilen bir Oyun seçmelisiniz. Oyun listenizde henüz hiç oyun yoksa, oyun listesindeki artı simgesine tıklayarak bir oyun klasörü ekleyin. Unable to find an internet connection. Check your internet settings. - İnternet bağlantısı bulunamadı. İnternet ayarlarınızı kontrol edin. + İnternet bağlantısı bulunamadı. İnternet ayarlarınızı kontrol edin. Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - Ana bilgisayara bağlanılamadı. Bağlantı ayarlarının doğru olduğundan emin olun. Hala bağlanamıyorsanız, ana bilgisayar yöneticisiyle iletişime geçip sunucunun doğru ayarlandığından ve dış portun yönlendirildiğinden emin olun. + Ana bilgisayara bağlanılamıyor. Bağlantı ayarlarının doğru olduğunu doğrulayın. Hala bağlanamıyorsanız, oda sahibiyle iletişime geçin ve ana bilgisayarın harici port yönlendirmesinin düzgün yapılandırıldığını doğrulayın. Unable to connect to the room because it is already full. - Oda halihazırda dolu olduğundan dolayı katılınamadı. + Oda zaten dolu olduğu için odaya bağlanılamıyor. - Creating a room failed. Please retry. Restarting eden might be necessary. - + Creating a room failed. Please retry. Restarting Eden might be necessary. + Oda oluşturma başarısız oldu. Lütfen tekrar deneyin. Eden'i yeniden başlatmak gerekebilir. The host of the room has banned you. Speak with the host to unban you or try a different room. - Oda yöneticisi sizi odadan yasakladı. Yasağı kaldırmak için yönetici ile konuşun ya da başka bir oda deneyin. + Oda sahibi sizi yasakladı. Yasağınızın kaldırılması için sahiple görüşün veya farklı bir oda deneyin. - Version mismatch! Please update to the latest version of eden. If the problem persists, contact the room host and ask them to update the server. - + Version mismatch! Please update to the latest version of Eden. If the problem persists, contact the room host and ask them to update the server. + Versiyon uyuşmazlığı! Lütfen Eden'in en son sürümüne güncelleyin. Sorun devam ederse oda sahibiyle iletişime geçin ve onlardan sunucuyu güncellemelerini isteyin. Incorrect password. - Yanlış şifre. + Hatalı şifre. An unknown error occurred. If this error continues to occur, please open an issue - Bilinmeyen bir hata oluştu. Eğer bu hata devam ederse, lütfen bir hata raporu açın. + Bilinmeyen bir hata oluştu. Eğer bu hata oluşmaya devam ederse, lütfen bir sorun kaydı açın Connection to room lost. Try to reconnect. - Odaya bağlantı kesildi. Yeniden bağlanmayı dene. + Oda bağlantısı kesildi. Yeniden bağlanmayı deneyin. You have been kicked by the room host. - Oda yöneticisi seni odadan çıkardı. + Oda sahibi tarafından kovuldunuz. IP address is already in use. Please choose another. - IP adresi halihazırda kullanılıyor. Lütfen başka bir IP adresi seçin. + IP adresi zaten kullanımda. Lütfen başka bir tane seçin. You do not have enough permission to perform this action. - Bu işlemi yapabilmek için yeterli yetkiye sahip değilsiniz. + Bu işlemi gerçekleştirmek için yeterli izniniz yok. The user you are trying to kick/ban could not be found. They may have left the room. - Kicklemeye/banlamaya çalıştığınız kullanıcı bulunamadı. -Odadan çıkmış olabilir. + Kovmaya/yasaklamaya çalıştığınız kullanıcı bulunamadı. Odadan ayrılmış olabilirler. No valid network interface is selected. Please go to Configure -> System -> Network and make a selection. - Geçerli bir ağ arayüzü seçilmedi. -Lütfen Yapılandır -> Sistem -> Ağ'a gidip bir seçim yapınız. + Error - Hata - - - - GMainWindow - - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Anonymous data is collected</a> to help improve yuzu. <br/><br/>Would you like to share your usage data with us? - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Yuzuyu geliştirmeye yardımcı olmak için </a> anonim veri toplandı. <br/><br/>Kullanım verinizi bizimle paylaşmak ister misiniz? - - - Telemetry - Telemetri - - - - Broken Vulkan Installation Detected - Bozuk Vulkan Kurulumu Algılandı - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - Açılışta Vulkan başlatılırken hata. Hata yardımını görüntülemek için <a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>buraya tıklayın</a>. - - - - Running a game - TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping - - - - - Loading Web Applet... - Web Uygulaması Yükleniyor... - - - - - Disable Web Applet - Web Uygulamasını Devre Dışı Bırak - - - - 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.) - 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) - - - - The amount of shaders currently being built - Şu anda derlenen shader miktarı - - - - The current selected resolution scaling multiplier. - Geçerli seçili çözünürlük ölçekleme çarpanı. - - - - Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. - Geçerli emülasyon hızı. %100'den yüksek veya düşük değerler emülasyonun bir Switch'den daha hızlı veya daha yavaş çalıştığını gösterir. - - - - How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. - Oyunun şuanda saniye başına kaç kare gösterdiği. Bu oyundan oyuna ve sahneden sahneye değişiklik gösterir. - - - - 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. - 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ı. - - - - Unmute - Sessizden çıkar - - - - Mute - Sessize al - - - - Reset Volume - - - - - &Clear Recent Files - &Son Dosyaları Temizle - - - - &Continue - &Devam Et - - - - &Pause - &Duraklat - - - - Warning Outdated Game Format - Uyarı, Eski Oyun Formatı - - - 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.<br><br>For an explanation of the various Switch formats yuzu supports, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - 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.<br><br>Yuzu'nun desteklediği çeşitli Switch formatları için<a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>Wiki'yi ziyaret edin</a>. Bu mesaj yeniden gösterilmeyecektir. - - - - - Error while loading ROM! - ROM yüklenirken hata oluştu! - - - - The ROM format is not supported. - Bu ROM biçimi desteklenmiyor. - - - - An error occurred initializing the video core. - Video çekirdeğini başlatılırken bir hata oluştu. - - - 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: <a href='https://yuzu-emu.org/help/reference/log-files/'>How to Upload the Log File</a>. - 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: <a href='https://yuzu-emu.org/help/reference/log-files/'>Log dosyası nasıl yüklenir</a>. - - - - Error while loading ROM! %1 - %1 signifies a numeric error code. - ROM yüklenirken hata oluştu! %1 - - - %1<br>Please follow <a href='https://yuzu-emu.org/help/quickstart/'>the yuzu quickstart guide</a> to redump your files.<br>You can refer to the yuzu wiki</a> or the yuzu Discord</a> for help. - %1 signifies an error string. - %1<br>Lütfen dosyalarınızı yeniden dump etmek için<a href='https://yuzu-emu.org/help/quickstart/'>yuzu hızlı başlangıç kılavuzu'nu</a> takip edin.<br> Yardım için yuzu wiki</a>veya yuzu Discord'una</a> bakabilirsiniz. - - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://eden-emulator.github.io/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - - - - - Game Updates Warning - - - - - The game you are trying to launch is known to have performance or booting issues when updates are applied. Please try increasing the memory layout to 6GB or 8GB if any issues occur.<br><br>Press "OK" to continue launching, or "Cancel" to cancel the launch. - - - - - Don't show again for this game - - - - - 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.<br><br>For an explanation of the various Switch formats eden supports, <a href='https://eden-emulator.github.io/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - - - - - eden 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: <a href='https://eden-emulator.github.io/help/reference/log-files/'>How to Upload the Log File</a>. - - - - - %1<br>Please redump your files or ask on Discord for help. - %1 signifies an error string. - - - - - An unknown error occurred. Please see the log for more details. - Bilinmeyen bir hata oluştu. Lütfen daha fazla detay için kütüğe göz atınız. - - - - (64-bit) - (64-bit) - - - - (32-bit) - (32-bit) - - - - %1 %2 - %1 is the title name. %2 indicates if the title is 64-bit or 32-bit - %1 %2 - - - - Closing software... - Yazılım kapatılıyor... - - - - Save Data - Kayıt Verisi - - - - Mod Data - Mod Verisi - - - - Error Opening %1 Folder - %1 klasörü açılırken hata - - - - - Folder does not exist! - Klasör mevcut değil! - - - - Error Opening Transferable Shader Cache - Transfer Edilebilir Shader Cache'ini Açarken Bir Hata Oluştu - - - - Failed to create the shader cache directory for this title. - Bu oyun için shader cache konumu oluşturulamadı. - - - - Error Removing Contents - İçerik Kaldırma Hatası - - - - Error Removing Update - Güncelleme Kaldırma hatası - - - - Error Removing DLC - DLC Kaldırma Hatası - - - - Remove Installed Game Contents? - Yüklenmiş Oyun İçeriğini Kaldırmak İstediğinize Emin Misiniz? - - - - Remove Installed Game Update? - Yüklenmiş Oyun Güncellemesini Kaldırmak İstediğinize Emin Misiniz? - - - - Remove Installed Game DLC? - Yüklenmiş DLC'yi Kaldırmak İstediğinize Emin Misiniz? - - - - Remove Entry - Girdiyi Kaldır - - - - - - - - - Successfully Removed - Başarıyla Kaldırıldı - - - - Successfully removed the installed base game. - Yüklenmiş oyun başarıyla kaldırıldı. - - - - The base game is not installed in the NAND and cannot be removed. - Asıl oyun NAND'de kurulu değil ve kaldırılamaz. - - - - Successfully removed the installed update. - Yüklenmiş güncelleme başarıyla kaldırıldı. - - - - There is no update installed for this title. - Bu oyun için yüklenmiş bir güncelleme yok. - - - - There are no DLC installed for this title. - Bu oyun için yüklenmiş bir DLC yok. - - - - Successfully removed %1 installed DLC. - %1 yüklenmiş DLC başarıyla kaldırıldı. - - - - Delete OpenGL Transferable Shader Cache? - OpenGL Transfer Edilebilir Shader Cache'ini Kaldırmak İstediğinize Emin Misiniz? - - - - Delete Vulkan Transferable Shader Cache? - Vulkan Transfer Edilebilir Shader Cache'ini Kaldırmak İstediğinize Emin Misiniz? - - - - Delete All Transferable Shader Caches? - Tüm Transfer Edilebilir Shader Cache'leri Kaldırmak İstediğinize Emin Misiniz? - - - - Remove Custom Game Configuration? - Oyuna Özel Yapılandırmayı Kaldırmak İstediğinize Emin Misiniz? - - - - Remove Cache Storage? - - - - - Remove File - Dosyayı Sil - - - - Remove Play Time Data - - - - - Reset play time? - - - - - - Error Removing Transferable Shader Cache - Transfer Edilebilir Shader Cache Kaldırılırken Bir Hata Oluştu - - - - - A shader cache for this title does not exist. - Bu oyun için oluşturulmuş bir shader cache yok. - - - - Successfully removed the transferable shader cache. - Transfer edilebilir shader cache başarıyla kaldırıldı. - - - - Failed to remove the transferable shader cache. - Transfer edilebilir shader cache kaldırılamadı. - - - - Error Removing Vulkan Driver Pipeline Cache - Vulkan Pipeline Önbelleği Kaldırılırken Hata - - - - Failed to remove the driver pipeline cache. - Sürücü pipeline önbelleği kaldırılamadı. - - - - - Error Removing Transferable Shader Caches - Transfer Edilebilir Shader Cache'ler Kaldırılırken Bir Hata Oluştu - - - - Successfully removed the transferable shader caches. - Transfer edilebilir shader cacheler başarıyla kaldırıldı. - - - - Failed to remove the transferable shader cache directory. - Transfer edilebilir shader cache konumu kaldırılamadı. - - - - - Error Removing Custom Configuration - Oyuna Özel Yapılandırma Kaldırılırken Bir Hata Oluştu. - - - - A custom configuration for this title does not exist. - Bu oyun için bir özel yapılandırma yok. - - - - Successfully removed the custom game configuration. - Oyuna özel yapılandırma başarıyla kaldırıldı. - - - - Failed to remove the custom game configuration. - Oyuna özel yapılandırma kaldırılamadı. - - - - - RomFS Extraction Failed! - RomFS Çıkartımı Başarısız! - - - - There was an error copying the RomFS files or the user cancelled the operation. - RomFS dosyaları kopyalanırken bir hata oluştu veya kullanıcı işlemi iptal etti. - - - - Full - Full - - - - Skeleton - Çerçeve - - - - Select RomFS Dump Mode - RomFS Dump Modunu Seçiniz - - - - Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. - Lütfen RomFS'in nasıl dump edilmesini istediğinizi seçin.<br>"Full" tüm dosyaları yeni bir klasöre kopyalarken <br>"skeleton" sadece klasör yapısını oluşturur. - - - - There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root - %1 konumunda RomFS çıkarmaya yetecek alan yok. Lütfen yer açın ya da Emülasyon > Yapılandırma > Sistem > Dosya Sistemi > Dump konumu kısmından farklı bir çıktı konumu belirleyin. - - - - Extracting RomFS... - RomFS çıkartılıyor... - - - - - - - - Cancel - İptal - - - - RomFS Extraction Succeeded! - RomFS Çıkartımı Başarılı! - - - - - - The operation completed successfully. - İşlem başarıyla tamamlandı. - - - - Integrity verification couldn't be performed! - - - - - File contents were not checked for validity. - - - - - - Verifying integrity... - - - - - - Integrity verification succeeded! - - - - - - Integrity verification failed! - - - - - File contents may be corrupt. - - - - - - - - Create Shortcut - Kısayol Oluştur - - - - Do you want to launch the game in fullscreen? - - - - - Successfully created a shortcut to %1 - %1 dizinine kısayol oluşturuldu - - - - This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - Bu seçenek, şu anki AppImage dosyasının kısayolunu oluşturacak. Uygulama güncellenirse kısayol çalışmayabilir. Devam edilsin mi? - - - - Failed to create a shortcut to %1 - - - - - Create Icon - Simge Oluştur - - - - Cannot create icon file. Path "%1" does not exist and cannot be created. - Simge dosyası oluşturulamadı. "%1" dizini yok ve oluşturulamıyor. - - - - Error Opening %1 - %1 Açılırken Bir Hata Oluştu - - - - Select Directory - Klasör Seç - - - - Properties - Özellikler - - - - The game properties could not be loaded. - Oyun özellikleri yüklenemedi. - - - - Switch Executable (%1);;All Files (*.*) - %1 is an identifier for the Switch executable file extensions. - Switch Çalıştırılabilir Dosyası (%1);;Tüm Dosyalar (*.*) - - - - Load File - Dosya Aç - - - - Open Extracted ROM Directory - Çıkartılmış ROM klasörünü aç - - - - Invalid Directory Selected - Geçersiz Klasör Seçildi - - - - The directory you have selected does not contain a 'main' file. - Seçtiğiniz klasör bir "main" dosyası içermiyor. - - - - Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - Yüklenilebilir Switch Dosyası (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submissions Package (*.nsp);;NX Cartridge Image (*.xci) - - - - Install Files - Dosya Kur - - - - %n file(s) remaining - - %n dosya kaldı - - - - - Installing file "%1"... - "%1" dosyası kuruluyor... - - - - - Install Results - Kurulum Sonuçları - - - - To avoid possible conflicts, we discourage users from installing base games to the NAND. -Please, only use this feature to install updates and DLC. - Olası çakışmaları önlemek için oyunları NAND'e yüklememenizi tavsiye ediyoruz. -Lütfen bu özelliği sadece güncelleme ve DLC yüklemek için kullanın. - - - - %n file(s) were newly installed - - - %n dosya güncel olarak yüklendi - - - - - - %n file(s) were overwritten - - - %n dosyanın üstüne yazıldı - - - - - - %n file(s) failed to install - - - %n dosya yüklenemedi - - - - - - System Application - Sistem Uygulaması - - - - System Archive - Sistem Arşivi - - - - System Application Update - Sistem Uygulama Güncellemesi - - - - Firmware Package (Type A) - Yazılım Paketi (Tür A) - - - - Firmware Package (Type B) - Yazılım Paketi (Tür B) - - - - Game - Oyun - - - - Game Update - Oyun Güncellemesi - - - - Game DLC - Oyun DLC'si - - - - Delta Title - Delta Başlık - - - - Select NCA Install Type... - NCA Kurulum Tipi Seçin... - - - - Please select the type of title you would like to install this NCA as: -(In most instances, the default 'Game' is fine.) - Lütfen bu NCA dosyası için belirlemek istediğiniz başlık türünü seçiniz: -(Çoğu durumda, varsayılan olan 'Oyun' kullanılabilir.) - - - - Failed to Install - Kurulum Başarısız Oldu - - - - The title type you selected for the NCA is invalid. - NCA için seçtiğiniz başlık türü geçersiz - - - - File not found - Dosya Bulunamadı - - - - File "%1" not found - Dosya "%1" Bulunamadı - - - - OK - Tamam - - - - - Hardware requirements not met - Donanım gereksinimleri karşılanmıyor - - - - - Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled. - Sisteminiz, önerilen donanım gereksinimlerini karşılamıyor. Uyumluluk raporlayıcı kapatıldı. - - - - Missing yuzu Account - Kayıp yuzu Hesabı - - - - In order to submit a game compatibility test case, you must link your eden account.<br><br/>To link your eden account, go to Emulation &gt; Configuration &gt; Web. - - - - - Install decryption keys and restart eden before attempting to install firmware. - - - - - Firmware installation cancelled, firmware may be in bad state, restart eden or re-install firmware. - - - - - Encryption keys are missing. - - - - - Are you sure you want to close eden? - - - - - - - eden - - - - - The currently running application has requested eden to not exit. - -Would you like to bypass this and exit anyway? - - - - In order to submit a game compatibility test case, you must link your yuzu account.<br><br/>To link your yuzu account, go to Emulation &gt; Configuration &gt; Web. - Oyun uyumluluk test çalışması göndermek için öncelikle yuzu hesabınla giriş yapmanız gerekiyor.<br><br/>Yuzu hesabınızla giriş yapmak için, Emülasyon &gt; Yapılandırma &gt; Web'e gidiniz. - - - - Error opening URL - URL açılırken bir hata oluştu - - - - Unable to open the URL "%1". - URL "%1" açılamıyor. - - - - TAS Recording - TAS kayıtta - - - - Overwrite file of player 1? - Oyuncu 1'in dosyasının üstüne yazılsın mı? - - - - Invalid config detected - Geçersiz yapılandırma tespit edildi - - - - Handheld controller can't be used on docked mode. Pro controller will be selected. - Handheld kontrolcü dock modunda kullanılamaz. Pro kontrolcü seçilecek. - - - - - Amiibo - Amiibo - - - - - The current amiibo has been removed - Amiibo kaldırıldı - - - - Error Hata - - - - The current game is not looking for amiibos - Aktif oyun amiibo beklemiyor - - - - Amiibo File (%1);; All Files (*.*) - Amiibo Dosyası (%1);; Tüm Dosyalar (*.*) - - - - Load Amiibo - Amiibo Yükle - - - - Error loading Amiibo data - Amiibo verisi yüklenirken hata - - - - The selected file is not a valid amiibo - Seçtiğiniz dosya geçerli bir amiibo değil - - - - The selected file is already on use - Seçtiğiniz dosya hali hazırda kullanılıyor - - - - An unknown error occurred - Bilinmeyen bir hata oluştu - - - - - Verification failed for the following files: - -%1 - - - - - Keys not installed - - - - - Select Dumped Firmware Source Location - - - - - Installing Firmware... - - - - - - - - Firmware install failed - - - - - Unable to locate potential firmware NCA files - - - - - Failed to delete one or more firmware file. - - - - - One or more firmware files failed to copy into NAND. - - - - - Firmware integrity verification failed! - - - - - Select Dumped Keys Location - - - - - - - Decryption Keys install failed - - - - - prod.keys is a required decryption key file. - - - - - One or more keys failed to copy. - - - - - Decryption Keys install succeeded - - - - - Decryption Keys were successfully installed - - - - - Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. - - - - - - - - - - - No firmware available - - - - - Please install the firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Controller Menu. - - - - - Controller Applet - Kontrolcü Uygulaması - - - - Controller Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Home Menu. - - - - - - Home Menu Applet - - - - - - Home Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use Starter. - - - - - Starter Applet - - - - - Starter is not available. Please reinstall firmware. - - - - - Please install firmware to use the home menu. - - - - - Capture Screenshot - Ekran Görüntüsü Al - - - - PNG Image (*.png) - PNG görüntüsü (*.png) - - - - Update Available - - - - - Update %1 for Eden is available. -Would you like to download it? - - - - - TAS state: Running %1/%2 - TAS durumu: %1%2 çalışıyor - - - - TAS state: Recording %1 - TAS durumu: %1 kaydediliyor - - - - TAS state: Idle %1/%2 - TAS durumu: %1%2 boşta - - - - TAS State: Invalid - TAS durumu: Geçersiz - - - - &Stop Running - &Çalıştırmayı durdur - - - - &Start - &Başlat - - - - Stop R&ecording - K&aydetmeyi Durdur - - - - R&ecord - K&aydet - - - - Building: %n shader(s) - - Oluşturuluyor: %n shader - - - - - Scale: %1x - %1 is the resolution scaling factor - Ölçek: %1x - - - - Speed: %1% / %2% - Hız %1% / %2% - - - - Speed: %1% - Hız: %1% - - - Game: %1 FPS (Unlocked) - Oyun: %1 FPS (Sınırsız) - - - - Game: %1 FPS - Oyun: %1 FPS - - - - Frame: %1 ms - Kare: %1 ms - - - - %1 %2 - %1 %2 - - - - - FSR - FSR - - - - NO AA - AA YOK - - - - VOLUME: MUTE - SES: KAPALI - - - - VOLUME: %1% - Volume percentage (e.g. 50%) - SES: %%1 - - - - Derivation Components Missing - Türeten Bileşenleri Kayıp - - - - Select RomFS Dump Target - RomFS Dump Hedefini Seçiniz - - - - Please select which RomFS you would like to dump. - Lütfen dump etmek istediğiniz RomFS'i seçiniz. - - - Are you sure you want to close yuzu? - yuzu'yu kapatmak istediğinizden emin misiniz? - - - yuzu - yuzu - - - - Are you sure you want to stop the emulation? Any unsaved progress will be lost. - Emülasyonu durdurmak istediğinizden emin misiniz? Kaydedilmemiş veriler kaybolur. - - - The currently running application has requested yuzu to not exit. - -Would you like to bypass this and exit anyway? - Şu an çalışan uygulamadan dolayı Yuzu kapatılamıyor. - -Görmezden gelip kapatmak ister misiniz? - - - - None - Yok - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Nearest - - - - - Bilinear - Bilinear - - - - Bicubic - Bicubic - - - - Gaussian - Gausyen - - - - ScaleForce - ScaleForce - - - - Area - - - - - Docked - Dock Modu Aktif - - - - Handheld - Taşınabilir - - - - Normal - Normal - - - - High - Yüksek - - - - Extreme - Ekstrem - - - - Vulkan - Vulkan - - - - OpenGL - OpenGL - - - - Null - - - - - GLSL - - - - - GLASM - - - - - SPIRV - - GRenderWindow - - + + OpenGL not available! OpenGL kullanıma uygun değil! - + OpenGL shared contexts are not supported. OpenGL paylaşılan bağlam desteklenmiyor. - yuzu has not been compiled with OpenGL support. - Yuzu OpenGL desteklememektedir. + + Eden has not been compiled with OpenGL support. + - - eden has not been compiled with OpenGL support. - - - - - + + Error while initializing OpenGL! OpenGl başlatılırken bir hata oluştu! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. GPU'nuz OpenGL desteklemiyor veya güncel bir grafik sürücüsüne sahip değilsiniz. - + Error while initializing OpenGL 4.6! OpenGl 4.6 başlatılırken bir hata oluştu! - + Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 GPU'nuz OpenGL 4.6'yı desteklemiyor veya güncel bir grafik sürücüsüne sahip değilsiniz.<br><br>GL Renderer:<br>%1 - + Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2 GPU'nuz gereken bir yada daha fazla OpenGL eklentisini desteklemiyor Lütfen güncel bir grafik sürücüsüne sahip olduğunuzdan emin olun.<br><br>GL Renderer:<br>%1<br><br> Desteklenmeyen Eklentiler:<br>%2 @@ -6926,255 +6066,271 @@ Görmezden gelip kapatmak ister misiniz? GameList - + + &Add New Game Directory + + + + Favorite Favori - + Start Game Oyunu Başlat - + Start Game without Custom Configuration Oyunu Özel Yapılandırma Olmadan Başlat - + Open Save Data Location Kayıt Dosyası Konumunu Aç - + Open Mod Data Location Mod Dosyası Konumunu Aç - + Open Transferable Pipeline Cache Transfer Edilebilir Pipeline Cache'ini Aç - + + Link to Ryujinx + + + + Remove Kaldır - + Remove Installed Update Yüklenmiş Güncellemeleri Kaldır - + Remove All Installed DLC Yüklenmiş DLC'leri Kaldır - + Remove Custom Configuration Oyuna Özel Yapılandırmayı Kaldır - - Remove Play Time Data - - - - + Remove Cache Storage - + - + Remove OpenGL Pipeline Cache OpenGL Pipeline Cache'ini Kaldır - + Remove Vulkan Pipeline Cache Vulkan Pipeline Cache'ini Kaldır - + Remove All Pipeline Caches Bütün Pipeline Cache'lerini Kaldır - + Remove All Installed Contents Tüm Yüklenmiş İçeriği Kaldır - - + + Manage Play Time + + + + + Edit Play Time Data + + + + + Remove Play Time Data + + + + + Dump RomFS RomFS Dump Et - + Dump RomFS to SDMC RomFS'i SDMC'ye çıkar. - + Verify Integrity - + - + Copy Title ID to Clipboard Title ID'yi Panoya Kopyala - + Navigate to GameDB entry GameDB sayfasına yönlendir - + Create Shortcut Kısayol Oluştur - + Add to Desktop Masaüstüne Ekle - + Add to Applications Menu Uygulamalar Menüsüne Ekl - + Configure Game - + - Properties - Özellikler - - - + Scan Subfolders Alt Klasörleri Tara - + Remove Game Directory Oyun Konumunu Kaldır - + ▲ Move Up ▲Yukarı Git - + ▼ Move Down ▼Aşağı Git - + Open Directory Location Oyun Dosyası Konumunu Aç - + Clear Temizle - + Name İsim - + Compatibility Uyumluluk - + Add-ons Eklentiler - + File type Dosya türü - + Size Boyut - + Play time - + GameListItemCompat - + Ingame Oyunda - + Game starts, but crashes or major glitches prevent it from being completed. Oyun başlatılabiliyor, fakat bariz hatalardan veya çökme sorunlarından dolayı bitirilemiyor. - + Perfect Mükemmel - + Game can be played without issues. Oyun sorunsuz bir şekilde oynanabiliyor. - + Playable Oynanabilir - + Game functions with minor graphical or audio glitches and is playable from start to finish. Oyun küçük grafik veya ses hatalarıyla çalışıyor ve baştan sona kadar oynanabilir. - + Intro/Menu İntro/Menü - + Game loads, but is unable to progress past the Start Screen. Oyun açılıyor, fakat ana menüden ileri gidilemiyor. - + Won't Boot Açılmıyor - + The game crashes when attempting to startup. Oyun açılmaya çalışıldığında çöküyor. - + Not Tested Test Edilmedi - + The game has not yet been tested. Bu oyun henüz test edilmedi. @@ -7182,7 +6338,7 @@ Görmezden gelip kapatmak ister misiniz? GameListPlaceholder - + Double-click to add a new folder to the game list Oyun listesine yeni bir klasör eklemek için çift tıklayın. @@ -7190,19 +6346,17 @@ Görmezden gelip kapatmak ister misiniz? GameListSearchField - + %1 of %n result(s) - - %n sonucun %1'i - + %n sonucun %1'i%n sonucun %1'i - + Filter: Filtre: - + Enter pattern to filter Filtrelemek için bir düzen giriniz @@ -7278,232 +6432,241 @@ Görmezden gelip kapatmak ister misiniz? HostRoomWindow - + Error Hata - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. + + Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid Eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. Debug Message: - - - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid yuzu account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. -Debug Message: - Oda herkese açık yapılamadı. Eğer odayı herkese açık yapmak istiyorsanız, geçerli bir yuzu hesabını Emülasyon -> Yapılandır -> Web'den ayarlamalısınız. Eğer odayı herkese açık yapmak istemiyorsanız, lütfen Gizli seçeneğini seçin. + Hotkeys - + Audio Mute/Unmute Sesi Sustur/Aç - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Main Window Ana Pencere - + Audio Volume Down Ses Kapa - + Audio Volume Up Ses Aç - + Capture Screenshot Ekran Görüntüsü Al - + Change Adapting Filter Uyarlanan Filtreyi Değiştir - + Change Docked Mode Takılı Modu Kullan - - Change GPU Accuracy - GPU Doğruluğunu Değiştir + + Change GPU Mode + - + Configure - Yapılandır + - + Configure Current Game - + - + Continue/Pause Emulation Sürdür/Emülasyonu duraklat - + Exit Fullscreen Tam Ekrandan Çık - Exit yuzu - Yuzu'dan çık + + Exit Eden + - - Exit eden - - - - + Fullscreen Tam Ekran - + Load File Dosya Aç - + Load/Remove Amiibo Amiibo Yükle/Kaldır - - Multiplayer Browse Public Game Lobby - + + Browse Public Game Lobby + - - Multiplayer Create Room - + + Create Room + - - Multiplayer Direct Connect to Room - + + Direct Connect to Room + - - Multiplayer Leave Room - + + Leave Room + - - Multiplayer Show Current Room - + + Show Current Room + - + Restart Emulation Emülasyonu Yeniden Başlat - + Stop Emulation Emülasyonu Durdur - + TAS Record TAS Kaydet - + TAS Reset TAS Sıfırla - + TAS Start/Stop TAS Başlat/Durdur - + Toggle Filter Bar Filtre Çubuğunu Aç/Kapa - + Toggle Framerate Limit FPS Limitini Aç/Kapa - + + Toggle Turbo Speed + + + + + Toggle Slow Speed + + + + Toggle Mouse Panning Mouse ile Kaydırmayı Aç/Kapa - + Toggle Renderdoc Capture - + - + Toggle Status Bar Durum Çubuğunu Aç/Kapa + + + Toggle Performance Overlay + + InstallDialog - + Please confirm these are the files you wish to install. Lütfen yüklemek istediğiniz dosyaların bu dosyalar olduğunu doğrulayın. - + Installing an Update or DLC will overwrite the previously installed one. Bir Güncelleme ya da DLC yüklemek daha önce yüklenmiş olanların üstüne yazacaktır. - + Install Kur - + Install Files to NAND NAND'e Dosya Kur @@ -7511,8 +6674,8 @@ Debug Message: LimitableInputDialog - - The text can't contain any of the following characters: + + The text can't contain any of the following characters: %1 Yazı bu karakterleri içeremez: %1 @@ -7536,22 +6699,22 @@ Debug Message: Tahmini Süre 5d 4s - + Loading... Yükleniyor... - + Loading Shaders %1 / %2 Shaderlar Yükleniyor %1 / %2 - + Launching... Başlatılıyor... - + Estimated Time %1 Tahmini Süre %1 @@ -7600,42 +6763,42 @@ Debug Message: Lobiyi Yenile - + Password Required to Join Katılmak için Gereken Şifre - + Password: Şifre: - + Players Oyuncular - + Room Name Oda Adı - + Preferred Game Tercih Edilen Oyun - + Host Ana bilgisayar - + Refreshing Yenileniyor - + Refresh List Listeyi Yenile @@ -7658,362 +6821,1424 @@ Debug Message: &Son kullanılan Dosyalar - + + Open &Eden Folders + + + + &Emulation &Emülasyon - + &View &Görünüm - + &Reset Window Size &Pencere Boyutunu Sıfırla - + &Debugging &Hata Ayıklama - + + &Game List Mode + + + + + Game &Icon Size + + + + Reset Window Size to &720p Pencere Boyutunu &720p'ye Sıfırla - + Reset Window Size to 720p Pencere Boyutunu 720p'ye Sıfırla - + Reset Window Size to &900p Pencere Boyutunu &900p'ye Sıfırla - + Reset Window Size to 900p Pencere Boyutunu 900p'ye Sıfırla - + Reset Window Size to &1080p Pencere Boyutunu &1080p'ye Sıfırla - + Reset Window Size to 1080p Pencere Boyutunu 1080p'ye Sıfırla - + &Multiplayer &Çok Oyunculu - + &Tools &Aletler - - &Amiibo - &Amiibo + + Am&iibo + - + + Launch &Applet + + + + &TAS &TAS - + &Create Home Menu Shortcut - + - + + Install &Firmware + + + + &Help &Yardım - + &Install Files to NAND... &NAND'e Dosya Kur... - + L&oad File... &Dosyayı Yükle... - + Load &Folder... &Klasörü Yükle... - + E&xit &Çıkış - + + &Pause &Duraklat - + &Stop Du&rdur - + &Verify Installed Contents - + &Kurulu İçerikleri Onayla - - &About eden - + + &About Eden + - - Open &eden Folder - - - - - Open Home Menu - - - - - &Discord - - - - - Open &Setup - - - - - &Desktop - - - - - &Application Menu - - - - &About yuzu - &Yuzu Hakkında - - - + Single &Window Mode &Tek Pencere Modu - + Con&figure... &Yapılandır... - + Ctrl+, - + - - Display D&ock Widget Headers - D&ock Widget Başlıkları'nı Göster + + Enable Overlay Display Applet + - + Show &Filter Bar &Filtre Çubuğu'nu Göster - + Show &Status Bar &Durum Çubuğu'nu Göster - + Show Status Bar Durum Çubuğunu Göster - + &Browse Public Game Lobby &Herkese Açık Oyun Lobilerine Göz At - + &Create Room &Oda Oluştur - + &Leave Room &Odadan Ayrıl - + &Direct Connect to Room &Odaya Direkt Bağlan - + &Show Current Room &Şu Anki Odayı Göster - + F&ullscreen &Tam Ekran - + &Restart &Yeniden Başlat - + Load/Remove &Amiibo... &Amiibo Yükle/Kaldır - + &Report Compatibility &Uyumluluk Bildir - + Open &Mods Page &Mod Sayfasını Aç - + Open &Quickstart Guide &Hızlı Başlangıç Kılavuzunu Aç - + &FAQ &SSS - Open &yuzu Folder - &yuzu Klasörünü Aç - - - + &Capture Screenshot &Ekran Görüntüsü Al - - Open &Album - + + &Album + - + &Set Nickname and Owner - + - + &Delete Game Data - + - + &Restore Amiibo - + - + &Format Amiibo - + - - Open &Mii Editor - + + &Mii Editor + - + &Configure TAS... &TAS'i Ayarla... - + Configure C&urrent Game... &Geçerli Oyunu Yapılandır... - + + &Start B&aşlat - + &Reset &Sıfırla - + + R&ecord K&aydet - + Open &Controller Menu - + - - Install Firmware - + + Install Decryption &Keys + - - Install Decryption Keys - + + &Home Menu + - - - MicroProfileDialog - - &MicroProfile - &MicroProfile + + &Desktop + + + + + &Application Menu + + + + + &Root Data Folder + + + + + &NAND Folder + + + + + &SDMC Folder + + + + + &Mod Folder + + + + + &Log Folder + + + + + From Folder + + + + + From ZIP + + + + + &Eden Dependencies + + + + + &Data Manager + + + + + &Tree View + + + + + &Grid View + + + + + Game Icon Size + + + + + + + None + + + + + Show Game &Name + + + + + Show &Performance Overlay + + + + + Small (32x32) + + + + + Standard (64x64) + + + + + Large (128x128) + + + + + Full Size (256x256) + + + + + Broken Vulkan Installation Detected + Bozuk Vulkan Kurulumu Algılandı + + + + Vulkan initialization failed during boot. + Açılış sırasında Vulkan başlatma işlemi başarısız oldu. + + + + Running a game + TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping + Bir oyun çalıştırılıyor + + + + Loading Web Applet... + Web Uygulaması Yükleniyor... + + + + + Disable Web Applet + Web Uygulamasını Devre Dışı Bırak + + + + 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.) + + + + + The amount of shaders currently being built + + + + + The current selected resolution scaling multiplier. + + + + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. + + + + + How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. + + + + + 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. + + + + + Unmute + Sesi aç + + + + Mute + Sessize al + + + + Reset Volume + Sesi Sıfırla + + + + &Clear Recent Files + &Son Dosyaları Temizle + + + + &Continue + + + + + Warning: Outdated Game Format + + + + + 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.<br>For an explanation of the various Switch formats Eden supports, out our user handbook. This message will not be shown again. + + + + + + Error while loading ROM! + + + + + The ROM format is not supported. + + + + + An error occurred initializing the video core. + + + + + Eden 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: <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>How to Upload the Log File</a>. + + + + + Error while loading ROM! %1 + %1 signifies a numeric error code. + + + + + %1<br>Please redump your files or ask on Discord/Stoat for help. + %1 signifies an error string. + + + + + An unknown error occurred. Please see the log for more details. + + + + + (64-bit) + + + + + (32-bit) + + + + + %1 %2 + %1 is the title name. %2 indicates if the title is 64-bit or 32-bit + + + + + Closing software... + + + + + Save Data + + + + + Mod Data + + + + + Error Opening %1 Folder + + + + + + Folder does not exist! + + + + + Remove Installed Game Contents? + + + + + Remove Installed Game Update? + + + + + Remove Installed Game DLC? + + + + + Remove Entry + + + + + Delete OpenGL Transferable Shader Cache? + + + + + Delete Vulkan Transferable Shader Cache? + + + + + Delete All Transferable Shader Caches? + + + + + Remove Custom Game Configuration? + + + + + Remove Cache Storage? + + + + + Remove File + + + + + Remove Play Time Data + + + + + Reset play time? + + + + + + RomFS Extraction Failed! + + + + + There was an error copying the RomFS files or the user cancelled the operation. + + + + + Full + + + + + Skeleton + + + + + Select RomFS Dump Mode + + + + + Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. + + + + + There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root + + + + + Extracting RomFS... + + + + + + Cancel + + + + + RomFS Extraction Succeeded! + + + + + The operation completed successfully. + + + + + Error Opening %1 + + + + + Select Directory + + + + + Properties + + + + + The game properties could not be loaded. + + + + + Switch Executable (%1);;All Files (*.*) + %1 is an identifier for the Switch executable file extensions. + + + + + Load File + + + + + Open Extracted ROM Directory + + + + + Invalid Directory Selected + + + + + The directory you have selected does not contain a 'main' file. + + + + + Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) + + + + + Install Files + + + + + %n file(s) remaining + + + + + Installing file "%1"... + + + + + + Install Results + + + + + To avoid possible conflicts, we discourage users from installing base games to the NAND. +Please, only use this feature to install updates and DLC. + + + + + %n file(s) were newly installed + + + + + + %n file(s) were overwritten + + + + + + %n file(s) failed to install + + + + + + System Application + + + + + System Archive + + + + + System Application Update + + + + + Firmware Package (Type A) + + + + + Firmware Package (Type B) + + + + + Game + + + + + Game Update + + + + + Game DLC + + + + + Delta Title + + + + + Select NCA Install Type... + + + + + Please select the type of title you would like to install this NCA as: +(In most instances, the default 'Game' is fine.) + + + + + Failed to Install + + + + + The title type you selected for the NCA is invalid. + + + + + File not found + + + + + File "%1" not found + + + + + OK + + + + + Function Disabled + + + + + Compatibility list reporting is currently disabled. Check back later! + + + + + Error opening URL + URL açılırken hata oluştu + + + + Unable to open the URL "%1". + + + + + TAS Recording + TAS İşlemi Kaydı + + + + Overwrite file of player 1? + + + + + Invalid config detected + + + + + Handheld controller can't be used on docked mode. Pro controller will be selected. + + + + + + Amiibo + Amiibo + + + + + The current amiibo has been removed + Mevcut Amiibo kaldırıldı + + + + Error + + + + + + The current game is not looking for amiibos + + + + + Amiibo File (%1);; All Files (*.*) + + + + + Load Amiibo + + + + + Error loading Amiibo data + + + + + The selected file is not a valid amiibo + + + + + The selected file is already on use + + + + + An unknown error occurred + + + + + + Keys not installed + + + + + + Install decryption keys and restart Eden before attempting to install firmware. + + + + + Select Dumped Firmware Source Location + + + + + Select Dumped Firmware ZIP + + + + + Zipped Archives (*.zip) + + + + + Firmware cleanup failed + + + + + Failed to clean up extracted firmware cache. +Check write permissions in the system temp directory and try again. +OS reported error: %1 + + + + + No firmware available + + + + + Firmware Corrupted + Donanım Yazılımı/Firmware Bozuk + + + + Unknown applet + + + + + Applet doesn't map to a known value. + + + + + Record not found + + + + + Applet not found. Please reinstall firmware. + + + + + Capture Screenshot + + + + + PNG Image (*.png) + + + + + Update Available + Güncelleme Mevcut + + + + Download %1? + + + + + TAS state: Running %1/%2 + TAS durumu: %1/%2 Çalışıyor + + + + TAS state: Recording %1 + + + + + TAS state: Idle %1/%2 + + + + + TAS State: Invalid + + + + + &Stop Running + + + + + Stop R&ecording + + + + + Building: %n shader(s) + + + + + Scale: %1x + %1 is the resolution scaling factor + Ölçek: %1x + + + + Speed: %1% / %2% + + + + + Speed: %1% + + + + + Game: %1 FPS + + + + + Frame: %1 ms + + + + + + FSR + + + + + NO AA + + + + + VOLUME: MUTE + + + + + VOLUME: %1% + Volume percentage (e.g. 50%) + + + + + Derivation Components Missing + + + + + Decryption keys are missing. Install them now? + + + + + Wayland Detected! + + + + + Wayland is known to have significant performance issues and mysterious bugs. +It's recommended to use X11 instead. + +Would you like to force it for future launches? + + + + + Use X11 + + + + + Continue with Wayland + + + + + Don't show again + + + + + Restart Required + + + + + Restart Eden to apply the X11 backend. + + + + + Slow + + + + + Turbo + + + + + Unlocked + + + + + Select RomFS Dump Target + + + + + Please select which RomFS you would like to dump. + + + + + Are you sure you want to close Eden? + + + + + + + Eden + + + + + Are you sure you want to stop the emulation? Any unsaved progress will be lost. + + + + + The currently running application has requested Eden to not exit. + +Would you like to bypass this and exit anyway? + + + + + FXAA + + + + + SMAA + + + + + Nearest + + + + + Bilinear + + + + + Bicubic + + + + + Zero-Tangent + + + + + B-Spline + + + + + Mitchell + + + + + Spline-1 + + + + + Gaussian + + + + + Lanczos + + + + + ScaleForce + + + + + Area + + + + + MMPX + + + + + Docked + + + + + Handheld + + + + + Fast + + + + + Balanced + + + + + Accurate + + + + + Vulkan + + + + + OpenGL GLSL + + + + + OpenGL SPIRV + + + + + OpenGL GLASM + + + + + Null + MigrationWorker - - Data was migrated successfully. - - - - + Linking the old directory failed. You may need to re-run with administrative privileges on Windows. OS gave error: %1 - + - + + + +Note that your configuration and data will be shared with %1. +If this is not desirable, delete the following files: +%2 +%3 +%4 + + + + If you wish to clean up the files which were left in the old data location, you can do so by deleting the following directory: %1 - + + + + + Data was migrated successfully. + + + + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + @@ -8030,7 +8255,7 @@ If you wish to clean up the files which were left in the old data location, you - + Refreshing Yenileniyor @@ -8040,27 +8265,27 @@ If you wish to clean up the files which were left in the old data location, you Yasağı kaldır - + Subject Konu - + Type Tip - + Forum Username Forum Kullanıcı Adı - + IP Address IP Adresi - + Refresh Yenile @@ -8068,37 +8293,37 @@ If you wish to clean up the files which were left in the old data location, you MultiplayerState - + Current connection status Anlık bağlantı durumu - + Not Connected. Click here to find a room! Bağlantı Yok. Oda bulmak için buraya basın! - + Not Connected Bağlantı Yok - + Connected Bağlandı - + New Messages Received Yeni Mesaj Alındı - + Error Hata - + Failed to update the room information. Please check your Internet connection and try hosting the room again. Debug Message: Oda bilgisi güncellenemedi. Lütfen İnternet bağlantınızı kontrol edin ve yeniden bir oda açmayı deneyin. @@ -8107,90 +8332,6 @@ Debug Bilgisi: NetworkMessage - - Username is not valid. Must be 4 to 20 alphanumeric characters. - Kullanıcı adı geçersiz. 4 ile 20 alfasayısal karakter arasında olmalı. - - - Room name is not valid. Must be 4 to 20 alphanumeric characters. - Oda adı geçersiz. 4 ile 20 alfasayısal karakter arasında olmalı. - - - Username is already in use or not valid. Please choose another. - Kullanıcı adı halihazırda kullanılıyor. Lütfen başka bir kullanıcı adı seçin. - - - IP is not a valid IPv4 address. - IP geçerli bir IPv4 adresi değil. - - - Port must be a number between 0 to 65535. - Port 0 ile 65535 arasında bir numara olmalı. - - - You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - Bir oda açabilmeniz için bir Tercih Edilen Oyun seçmeniz gerekir. Eğer oyun listenizde hiçbir oyun yoksa, oyun listesindeki artı ikonuna basarak yeni bir oyun klasörü ekleyebilirsiniz. - - - Unable to find an internet connection. Check your internet settings. - İnternet bağlantısı bulunamadı. İnternet ayarlarınızı kontrol edin. - - - Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - Ana bilgisayara bağlanılamadı. Bağlantı ayarlarının doğru olduğundan emin olun. Hala bağlanamıyorsanız, ana bilgisayar yöneticisiyle iletişime geçip sunucunun doğru ayarlandığından ve dış portun yönlendirildiğinden emin olun. - - - Unable to connect to the room because it is already full. - Oda halihazırda dolu olduğundan dolayı katılınamadı. - - - Creating a room failed. Please retry. Restarting yuzu might be necessary. - Odayı oluşturma başarısız oldu. Lütfen tekrar deneyin. Yuzu'yu yeniden başlatmak gerekebilir. - - - The host of the room has banned you. Speak with the host to unban you or try a different room. - Oda yöneticisi sizi odadan yasakladı. Yasağı kaldırmak için yönetici ile konuşun ya da başka bir oda deneyin. - - - Version mismatch! Please update to the latest version of yuzu. If the problem persists, contact the room host and ask them to update the server. - Sürümler uyuşmuyor! Lütfen yuzu'yu son sürüme güncelleyin. Eğer sorun devam ediyorsa, oda yöneticisine ulaşın ve sunucuyu güncellemelerini isteyin. - - - Incorrect password. - Yanlış şifre. - - - An unknown error occurred. If this error continues to occur, please open an issue - Bilinmeyen bir hata oluştu. Eğer bu hata devam ederse, lütfen bir hata raporu açın. - - - Connection to room lost. Try to reconnect. - Odaya bağlantı kesildi. Yeniden bağlanmayı dene. - - - You have been kicked by the room host. - Oda yöneticisi seni odadan çıkardı. - - - IP address is already in use. Please choose another. - IP adresi halihazırda kullanılıyor. Lütfen başka bir IP adresi seçin. - - - You do not have enough permission to perform this action. - Bu işlemi yapabilmek için yeterli yetkiye sahip değilsiniz. - - - The user you are trying to kick/ban could not be found. -They may have left the room. - Kicklemeye/banlamaya çalıştığınız kullanıcı bulunamadı. -Odadan çıkmış olabilir. - - - No valid network interface is selected. -Please go to Configure -> System -> Network and make a selection. - Geçerli bir ağ arayüzü seçilmedi. -Lütfen Yapılandır -> Sistem -> Ağ'a gidip bir seçim yapınız. - Game already running @@ -8225,10 +8366,132 @@ Devam etmek istiyor musunuz? - NetworkMessage::ErrorManager + NewUserDialog - Error - Hata + + + New User + + + + + Change Avatar + + + + + Set Image + + + + + UUID + + + + + Eden + + + + + Username + + + + + UUID must be 32 hex characters (0-9, A-F) + + + + + Generate + + + + + Select User Image + + + + + Image Formats (*.jpg *.jpeg *.png *.bmp) + + + + + No firmware available + + + + + Please install the firmware to use firmware avatars. + + + + + + Error loading archive + + + + + Archive is not available. Please install/reinstall firmware. + + + + + Could not locate RomFS. Your file or decryption keys may be corrupted. + + + + + Error extracting archive + + + + + Could not extract RomFS. Your file or decryption keys may be corrupted. + + + + + Error finding image directory + + + + + Failed to find image directory in the archive. + + + + + No images found + + + + + No avatar images were found in the archive. + + + + + + All Good + Tooltip + + + + + Must be 32 hex characters (0-9, a-f) + Tooltip + + + + + Must be between 1 and 32 characters + Tooltip + @@ -8255,7 +8518,7 @@ Devam etmek istiyor musunuz? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -8264,83 +8527,196 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> + + PerformanceOverlay + + + Form + + + + + Frametime + + + + + 0 ms + + + + + + Min: 0 + + + + + + Max: 0 + + + + + + Avg: 0 + + + + + FPS + + + + + 0 fps + + + + + %1 fps + + + + + + Avg: %1 + + + + + + Min: %1 + + + + + + Max: %1 + + + + + %1 ms + + + PlayerControlPreview - + START/PAUSE BAŞLAT/DURAKLAT + + ProfileAvatarDialog + + + Select + + + + + Cancel + + + + + Background Color + + + + + Select Firmware Avatar + + + QObject - - %1 is not playing a game - %1 şu anda oyun oynamıyor + + + + Migration + - - %1 is playing %2 - %1 %2'yi oynuyor + + Clear Shader Cache + - - Not playing a game - Şu anda oyun oynamıyor + + Keep Old Data + - - Installed SD Titles - Yüklenmiş SD Oyunları + + Clear Old Data + - - Installed NAND Titles - Yüklenmiş NAND Oyunları + + Link Old Directory + - - System Titles - Sistemde Yüklü Oyunlar + + + + + - - Add New Game Directory - Yeni Oyun Konumu Ekle + + + No + - - Favorites - Favoriler + + You can manually re-trigger this prompt by deleting the new config directory: +%1 + + + + + Migrating + + + + + Migrating, this may take a while... + - - + + Shift Shift - - + + Ctrl Ctrl - - + + Alt Alt - - - - + + + + [not set] [belirlenmedi] @@ -8350,15 +8726,15 @@ p, li { white-space: pre-wrap; } Hat %1 %2 - - - - - - - - + + + + + + + + Axis %1%2 Eksen %1%2 @@ -8368,359 +8744,383 @@ p, li { white-space: pre-wrap; } Tuş %1 - - - - - - + + + + + + [unknown] [bilinmeyen] - - - + + + Left Sol - - - + + + Right Sağ - - - + + + Down Aşağı - - - + + + Up Yukarı - - + + Z Z - - + + R R - - + + L L - - + + A A - - + + B B - - + + X X - - + + Y Y - - + + Start Start - - + + L1 L1 - - + + L2 L2 - - + + L3 L3 - - + + R1 R1 - - + + R2 R2 - - + + R3 R3 - - + + Circle Yuvarlak - - + + Cross Çarpı - - + + Square Kare - - + + Triangle Üçgen - - + + Share Share - - + + Options Options - - + + [undefined] [belirsiz] - + %1%2 %1%2 - - + + [invalid] [geçersiz] - - + + %1%2Hat %3 %1%2Hat %3 - - - + + + %1%2Axis %3 %1%2Eksen %3 - - + + %1%2Axis %3,%4,%5 %1%2Eksen %3,%4,%5 - - + + %1%2Motion %3 %1%2Hareket %3 - - + + %1%2Button %3 %1%2Tuş %3 - - + + [unused] [kullanılmayan] - + ZR ZR - + ZL ZL - + SR SR - + SL SL - + Stick L L Çubuğu - + Stick R R Çubuğu - + Plus Artı - + Minus Eksi - - + + Home Home - + Capture Kaydet - + Touch Dokunmatik - + Wheel Indicates the mouse wheel Fare Tekerleği - + Backward Geri - + Forward İleri - + Task Görev - + Extra Ekstra - + %1%2%3%4 %1%2%3%4 - - + + %1%2%3Hat %4 %1%2%3Hat %4 - - + + %1%2%3Axis %4 - + - - + + %1%2%3Button %4 %1%2%3Tuş %4 - - - - Migration - + + Not playing a game + Şu anda oyun oynamıyor - - - - - + + %1 is not playing a game + %1 şu anda oyun oynamıyor - - - No - + + %1 is playing %2 + %1 %2'yi oynuyor - - You can manually re-trigger this prompt by deleting the new config directory: -%1 - + + Play Time: %1 + - - Migrating - + + Never Played + - - Migrating, this may take a while... - + + Version: %1 + + + + + Version: 1.0.0 + + + + + Installed SD Titles + Yüklenmiş SD Oyunları + + + + Installed NAND Titles + Yüklenmiş NAND Oyunları + + + + System Titles + Sistemde Yüklü Oyunlar + + + + Add New Game Directory + Yeni Oyun Konumu Ekle + + + + Favorites + Favoriler @@ -8811,31 +9211,817 @@ p, li { white-space: pre-wrap; } Dosya Adresi - + No game data present Oyun verisi yok - + The following amiibo data will be formatted: Şu amiibo verisi biçimlendirilecek: - + The following game data will removed: Şu oyun verisi kaldırılacak: - + Set nickname and owner: Kullanıcı adı ve sahip ayarla: - + Do you wish to restore this amiibo? Bu amiibo'yu geri yüklemek istediğinize emin misiniz? + + QtCommon::Content + + + Game Requires Firmware + + + + + The game you are trying to launch requires firmware to boot or to get past the opening menu. Please <a href='https://yuzu-mirror.github.io/help/quickstart'>dump and install firmware</a>, or press "OK" to launch anyways. + + + + + Installing Firmware... + + + + + + + + + Cancel + + + + + Firmware Install Failed + + + + + Firmware Install Succeeded + + + + + Firmware integrity verification failed! + + + + + + Verification failed for the following files: + +%1 + + + + + + Verifying integrity... + + + + + + Integrity verification succeeded! + + + + + + The operation completed successfully. + + + + + + Integrity verification failed! + + + + + File contents may be corrupt or missing. + + + + + Integrity verification couldn't be performed + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity. + + + + + Select Dumped Keys Location + + + + + Decryption Keys install succeeded + + + + + Decryption Keys install failed + + + + + Orphaned Profiles Detected! + + + + + UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br> + + + + + Really clear data? + + + + + Important data may be lost! + + + + + Are you REALLY sure? + + + + + Once deleted, your data will NOT come back! +Only do this if you're 100% sure you want to delete this data. + + + + + Clearing... + + + + + Select Export Location + + + + + %1.zip + + + + + + Zipped Archives (*.zip) + + + + + Exporting data. This may take a while... + + + + + Exporting + + + + + Exported Successfully + + + + + Data was exported successfully. + + + + + Export Cancelled + + + + + Export was cancelled by the user. + + + + + Export Failed + + + + + Ensure you have write permissions on the targeted directory and try again. + + + + + Select Import Location + + + + + Import Warning + + + + + All previous data in this directory will be deleted. Are you sure you wish to proceed? + + + + + Importing data. This may take a while... + + + + + Importing + + + + + Imported Successfully + + + + + Data was imported successfully. + + + + + Import Cancelled + + + + + Import was cancelled by the user. + + + + + Import Failed + + + + + Ensure you have read permissions on the targeted directory and try again. + + + + + QtCommon::FS + + + Linked Save Data + + + + + Save data has been linked. + + + + + Failed to link save data + + + + + Could not link directory: + %1 +To: + %2 + + + + + Already Linked + + + + + This title is already linked to Ryujinx. Would you like to unlink it? + + + + + Failed to unlink old directory + + + + + + OS returned error: %1 + + + + + Failed to copy save data + + + + + Unlink Successful + + + + + Successfully unlinked Ryujinx save data. Save data has been kept intact. + + + + + Could not find Ryujinx installation + + + + + Could not find a valid Ryujinx installation. This may typically occur if you are using Ryujinx in portable mode. + +Would you like to manually select a portable folder to use? + + + + + Ryujinx Portable Location + + + + + Not a valid Ryujinx directory + + + + + The specified directory does not contain valid Ryujinx data. + + + + + + Could not find Ryujinx save data + + + + + QtCommon::Game + + + Error Removing Contents + + + + + Error Removing Update + + + + + Error Removing DLC + + + + + + + + + + Successfully Removed + + + + + Successfully removed the installed base game. + + + + + The base game is not installed in the NAND and cannot be removed. + + + + + Successfully removed the installed update. + + + + + There is no update installed for this title. + + + + + There are no DLCs installed for this title. + + + + + Successfully removed %1 installed DLC. + + + + + + Error Removing Transferable Shader Cache + + + + + + A shader cache for this title does not exist. + + + + + Successfully removed the transferable shader cache. + + + + + Failed to remove the transferable shader cache. + + + + + Error Removing Vulkan Driver Pipeline Cache + + + + + Failed to remove the driver pipeline cache. + + + + + + Error Removing Transferable Shader Caches + + + + + Successfully removed the transferable shader caches. + + + + + Failed to remove the transferable shader cache directory. + + + + + + Error Removing Custom Configuration + + + + + A custom configuration for this title does not exist. + + + + + Successfully removed the custom game configuration. + + + + + Failed to remove the custom game configuration. + + + + + Reset Metadata Cache + + + + + The metadata cache is already empty. + + + + + The operation completed successfully. + + + + + The metadata cache couldn't be deleted. It might be in use or non-existent. + + + + + Create Shortcut + + + + + Do you want to launch the game in fullscreen? + + + + + Shortcut Created + + + + + Successfully created a shortcut to %1 + + + + + Shortcut may be Volatile! + + + + + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? + + + + + Failed to Create Shortcut + + + + + Failed to create a shortcut to %1 + + + + + Create Icon + + + + + Cannot create icon file. Path "%1" does not exist and cannot be created. + + + + + No firmware available + + + + + Please install firmware to use the home menu. + + + + + Home Menu Applet + + + + + Home Menu is not available. Please reinstall firmware. + + + + + QtCommon::Mod + + + Mod Name + + + + + What should this mod be called? + + + + + RomFS + + + + + ExeFS/Patch + + + + + Cheat + + + + + Mod Type + + + + + Could not detect mod type automatically. Please manually specify the type of mod you downloaded. + +Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods. + + + + + + Mod Extract Failed + + + + + Failed to create temporary directory %1 + + + + + Zip file %1 is empty + + + + + QtCommon::Path + + + Error Opening Shader Cache + + + + + Failed to create or open shader cache for this title, ensure your app data directory has write permissions. + + + + + QtCommon::StringLookup + + + Contains game save data. DO NOT REMOVE UNLESS YOU KNOW WHAT YOU'RE DOING! + + + + + Contains Vulkan and OpenGL pipeline caches. Generally safe to remove. + + + + + Contains updates and DLC for games. + + + + + Contains firmware and applet data. + + + + + Contains game mods, patches, and cheats. + + + + + Decryption Keys were successfully installed + + + + + Unable to read key directory, aborting + + + + + One or more keys failed to copy. + + + + + Verify your keys file has a .keys extension and try again. + + + + + Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. + + + + + Successfully installed firmware version %1 + + + + + Unable to locate potential firmware NCA files + + + + + Failed to delete one or more firmware files. + + + + + One or more firmware files failed to copy into NAND. + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. Restart Eden or re-install firmware. + + + + + Firmware missing. Firmware is required to run certain games and use the Home Menu. + + + + + Firmware reported as present, but was unable to be read. Check for decryption keys and redump firmware if necessary. + + + + + Eden has detected user data for the following emulators: + + + + + Would you like to migrate your data for use in Eden? +Select the corresponding button to migrate data from that emulator. +This may take a while. + + + + + Clearing shader cache is recommended for all users. +Do not uncheck unless you know what you're doing. + + + + + Keeps the old data directory. This is recommended if you aren't +space-constrained and want to keep separate data for the old emulator. + + + + + Deletes the old data directory. +This is recommended on devices with space constraints. + + + + + Creates a filesystem link between the old directory and Eden directory. +This is recommended if you want to share data between emulators. + + + + + Ryujinx title database does not exist. + + + + + Invalid header on Ryujinx title database. + + + + + Invalid magic header on Ryujinx title database. + + + + + Invalid byte alignment on Ryujinx title database. + + + + + No items found in Ryujinx title database. + + + + + Title %1 not found in Ryujinx title database. + + + QtControllerSelectorDialog @@ -8872,7 +10058,7 @@ p, li { white-space: pre-wrap; } - + Pro Controller Pro Controller @@ -8885,7 +10071,7 @@ p, li { white-space: pre-wrap; } - + Dual Joycons İkili Joyconlar @@ -8898,7 +10084,7 @@ p, li { white-space: pre-wrap; } - + Left Joycon Sol Joycon @@ -8911,7 +10097,7 @@ p, li { white-space: pre-wrap; } - + Right Joycon Sağ Joycon @@ -8940,7 +10126,7 @@ p, li { white-space: pre-wrap; } - + Handheld Handheld @@ -9058,35 +10244,35 @@ p, li { white-space: pre-wrap; } Not enough controllers - + - + GameCube Controller GameCube Kontrolcüsü - + Poke Ball Plus Poke Ball Plus - + NES Controller NES Kontrolcüsü - + SNES Controller SNES Kontrolcüsü - + N64 Controller N64 Kontrolcüsü - + Sega Genesis Sega Genesis @@ -9094,28 +10280,28 @@ p, li { white-space: pre-wrap; } QtErrorDisplay - - - + + + Error Code: %1-%2 (0x%3) Hata Kodu: %1-%2 (0x%3) - + An error has occurred. Please try again or contact the developer of the software. Bir hata oluştu. Lütfen tekrar deneyin ya da yazılımın geliştiricisiyle iletişime geçin. - + An error occurred on %1 at %2. Please try again or contact the developer of the software. %1 %2'de bir hata oluştu. Lütfen tekrar deneyin ya da yazılımın geliştiricisiyle iletişime geçin. - + An error has occurred. %1 @@ -9131,7 +10317,7 @@ Lütfen tekrar deneyin ya da yazılımın geliştiricisiyle iletişime geçin. QtProfileSelectionDialog - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -9139,7 +10325,7 @@ Lütfen tekrar deneyin ya da yazılımın geliştiricisiyle iletişime geçin. - + Users Kullanıcılar @@ -9232,7 +10418,7 @@ Lütfen tekrar deneyin ya da yazılımın geliştiricisiyle iletişime geçin.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -9241,17 +10427,57 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - - + + OK Tamam - + Cancel İptal + + RyujinxDialog + + + Ryujinx Link + + + + + Linking save data to Ryujinx lets both Ryujinx and Eden reference the same save files for your games. + +By selecting "From Eden", previous save data stored in Ryujinx will be deleted, and vice versa for "From Ryujinx". + + + + + From Eden + + + + + From Ryujinx + + + + + Cancel + + + + + Failed to link save data + + + + + OS returned error: %1 + + + SequenceDialog @@ -9261,143 +10487,31 @@ p, li { white-space: pre-wrap; } - WaitTreeCallstack + SetPlayTimeDialog - - Call stack - Çağrı yığını - - - - WaitTreeSynchronizationObject - - - [%1] %2 - [%1] %2 + + Set Play Time Data + - - waited by no thread - hiçbir thread beklemedi - - - - WaitTreeThread - - - runnable - çalışabilir + + Hours: + - - paused - duraklatıldı + + Minutes: + - - sleeping - uyuyor + + Seconds: + - - waiting for IPC reply - IPC cevabı bekleniyor - - - - waiting for objects - objeler bekleniyor - - - - waiting for condition variable - koşul değişkeni bekleniyor - - - - waiting for address arbiter - adres belirleyici bekleniyor - - - - waiting for suspend resume - askıdaki işlemin sürdürülmesi bekleniyor - - - - waiting - bekleniyor - - - - initialized - başlatıldı - - - - terminated - sonlandırıldı - - - - unknown - bilinmeyen - - - - PC = 0x%1 LR = 0x%2 - PC = 0x%1 LR = 0x%2 - - - - ideal - ideal - - - - core %1 - çekirdek %1 - - - - processor = %1 - işlemci = %1 - - - - affinity mask = %1 - affinity mask = %1 - - - - thread id = %1 - izlek id: %1 - - - - priority = %1(current) / %2(normal) - öncelik = %1(geçerli) / %2(normal) - - - - last running ticks = %1 - son çalışan tickler = %1 - - - - WaitTreeThreadList - - - waited by thread - izlek bekledi - - - - WaitTreeWidget - - - &Wait Tree - &Wait Tree + + Total play time reached maximum. + diff --git a/dist/languages/uk.ts b/dist/languages/uk.ts index 528d191c5f..ecc023ea8b 100644 --- a/dist/languages/uk.ts +++ b/dist/languages/uk.ts @@ -1,25 +1,15 @@ - - - + AboutDialog - - About yuzu - Про yuzu - - - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - - About eden - + About Eden + Про Eden - <html><head/><body><p><span style=" font-size:28pt;">eden</span></p></body></html> - + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> @@ -34,72 +24,59 @@ p, li { white-space: pre-wrap; } hr { height: 1px; border-width: 0; } li.unchecked::marker { content: "\2610"; } li.checked::marker { content: "\2612"; } -</style></head><body style=" font-family:'Adwaita Sans'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> - +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css"> +p, li { white-space: pre-wrap; } +hr { height: 1px; border-width: 0; } +li.unchecked::marker { content: "\2610"; } +li.checked::marker { content: "\2612"; } +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden — експериментальний емулятор із відкритим вихідним кодом для Nintendo Switch під ліцензією GPLv3.0+, який базується на емуляторі yuzu, розробка якого припинилася в березні 2024 року. <br /><br />Цією програмою не слід користуватися, щоб грати в ігри, які не були отримані легально.</span></p></body></html> - <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">This software should not be used to play games you have not legally obtained.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu є експериментальним емулятором Nintendo Switch з відкритим кодом ліцензований під GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Це програмне забезпечення не слід використовувати для ігор, які ви отримали незаконним шляхом.</span></p></body></html> - - - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Веб-сайт</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Першокод</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Вкладники</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Ліцензія</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Вебсайт</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Вихідний код</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Автори</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Ліцензія</span></a></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. eden is not affiliated with Nintendo in any way.</span></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; є торговою маркою Nintendo. yuzu не пов'язаний з Nintendo у будь-якому вигляді.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. Eden is not affiliated with Nintendo in any way.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; є торговою маркою Nintendo. Eden жодним чином не пов’язаний із Nintendo.</span></p></body></html> CalibrationConfigurationDialog - + Communicating with the server... - Зв'язок із сервером... + Зв’язок із сервером... - + Cancel Скасувати - + Touch the top left corner <br>of your touchpad. - Торкніться верхнього лівого кута <br> вашого тачпаду. + Торкніться лівого верхнього кута <br> своєї сенсорної панелі. - + Now touch the bottom right corner <br>of your touchpad. - Тепер торкніться правого нижнього кута <br> вашого тачпаду. + Тепер торкніться правого нижнього кута <br> своєї сенсорної панелі. - + Configuration completed! Налаштування завершено! - + OK - ОК + Гаразд @@ -120,84 +97,84 @@ p, li { white-space: pre-wrap; } Надіслати повідомлення - + Members - Члени + Учасники - + %1 has joined - %1 приєднався + Гравець «%1» приєднався - + %1 has left - %1 вийшов + Гравець «%1» вийшов - + %1 has been kicked - %1 вигнано + Гравця «%1» вигнано - + %1 has been banned - %1 заблоковано + Гравця «%1» заблоковано - + %1 has been unbanned - %1 розблоковано + Гравця «%1» розблоковано - + View Profile Переглянути профіль - - + + Block Player Заблокувати гравця - + When you block a player, you will no longer receive chat messages from them.<br><br>Are you sure you would like to block %1? - Коли ви блокуєте гравця, ви більше не отримуватиме від нього повідомлення у чаті. <br><br>Ви впевнені що бажаєте заблокувати %1? + Після блокування гравця ви більше не отримуватимете від нього повідомлення в чаті. <br><br>Ви впевнені, що хочете заблокувати гравця «%1»? - + Kick Вигнати - + Ban Заблокувати - + Kick Player Вигнати гравця - + Are you sure you would like to <b>kick</b> %1? - Ви впевнені що бажаєте <b>вигнати</b> %1? + Ви впевнені, що хочете <b>вигнати</b> гравця «%1»? - + Ban Player Заблокувати гравця - + Are you sure you would like to <b>kick and ban</b> %1? This would ban both their forum username and their IP address. - Ви впевнені що бажаєте <b>вигнати і заблокувати</b> %1? + Ви впевнені, що хочете <b>вигнати та заблокувати</b> гравця «%1»? -Ця дія заблокує ім'я користувача на форумі та їх IP-адресу. +Таким чином ви заблокуєте його на форумі за ім’ям користувача та IP-адресою. @@ -220,25 +197,25 @@ This would ban both their forum username and their IP address. Leave Room - Залишити кімнату + Покинути кімнату ClientRoomWindow - + Connected - З'єднано + Під’єднано - + Disconnected - Роз'єднано + Від’єднано - + %1 - %2 (%3/%4 members) - connected - %1 - %2 (%3/%4 члени) - з'єднано + %1 — %2 (учасники: %3/%4) — під’єднано @@ -259,14 +236,10 @@ This would ban both their forum username and their IP address. Report Game Compatibility Повідомити про сумісність гри - - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of yuzu you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected yuzu account</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Якщо ви бажаєте надіслати звіт до </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">списку сумісності yuzu</span></a><span style=" font-size:10pt;">, наступна інформація буде зібрана та відображена на сайті:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Інформація про залізо (ЦП / ГП / Операційна система)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Версія yuzu</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Підключений акаунт yuzu</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">eden Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of eden you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected eden account</li></ul></body></html> - + <html><head/><body><p><span style=" font-size:10pt;">Якщо ви вирішили додати результат власного тестування до</span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">переліку сумісності eden</span></a><span style=" font-size:10pt;">, на сайті буде зібрано й показано таку інформацію:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">інформація про обладнання (ЦП / ГП / операційна система)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Яка версія eden використовувалася</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Під’єднаний обліковий запис eden</li></ul></body></html> @@ -276,52 +249,52 @@ This would ban both their forum username and their IP address. Yes The game starts to output video or audio - Так Гра починає виводити відео або аудіо + Так Гра починає виводити відео або звук No The game doesn't get past the "Launching..." screen - Ні Гра не проходить далі екрана "Запуск..." + Ні Гра не проходить далі екрана «Запуск...» Yes The game gets past the intro/menu and into gameplay - Так Гра переходить від вступу/меню до геймплею + Так Гра переходить від вступу/меню до ігрового процесу No The game crashes or freezes while loading or using the menu - Ні Гра вилітає або зависає під час завантаження або використання меню + Ні Гра зависає або відбувається збій під час завантаження або використання меню <html><head/><body><p>Does the game reach gameplay?</p></body></html> - <html><head/><body><p>Чи дотягує гра до геймплею?</p></body></html> + <html><head/><body><p>Чи вдається перейти до ігрового процесу?</p></body></html> Yes The game works without crashes - Так Гра працює без вильотів + Так Гра працює без збоїв No The game crashes or freezes during gameplay - Ні Гра крашится або зависає під час геймплею + Ні Гра зависає або відбувається збій під час ігрового процесу <html><head/><body><p>Does the game work without crashing, freezing or locking up during gameplay?</p></body></html> - <html><head/><body><p>Чи працює гра без вильотів, фризів або повного зависання під час ігрового процесу?</p></body></html> + <html><head/><body><p>Чи працює гра без зависань, збоїв або неможливості продовжити ігровий процес?</p></body></html> Yes The game can be finished without any workarounds - Так Гра може бути завершена без будь-яких обхідних шляхів + Так Гру можна пройти без будь-яких сторонніх рішень No The game can't progress past a certain area - Ні Гру неможливо пройти далі певної області + Ні Гру неможливо пройти далі певного місця @@ -336,7 +309,7 @@ This would ban both their forum username and their IP address. Minor The game has minor graphical errors - Невеликі У грі є невеликі проблеми з графікою + Незначні У грі є незначні проблеми з графікою @@ -346,17 +319,17 @@ This would ban both their forum username and their IP address. <html><head/><body><p>Does the game have any graphical glitches?</p></body></html> - <html><head/><body><p>Чи є в грі проблеми з графікою?</p></body></html> + <html><head/><body><p>Чи є в гри проблеми з графікою?</p></body></html> Major The game has major audio errors - Серйозні У грі є серйозні проблеми з звуком + Серйозні У грі є серйозні проблеми зі звуком Minor The game has minor audio errors - Невеликі У грі є невеликі проблеми з звуком + Незначні У грі є незначні проблеми зі звуком @@ -366,7 +339,7 @@ This would ban both their forum username and their IP address. <html><head/><body><p>Does the game have any audio glitches / missing effects?</p></body></html> - <html><head/><body><p>Чи є в грі якісь проблеми зі звуком / відсутні ефекти?</p></body></html> + <html><head/><body><p>Чи є в гри проблеми зі звуком / відсутністю ефектів?</p></body></html> @@ -374,22 +347,22 @@ This would ban both their forum username and their IP address. Дякуємо за ваш звіт! - + Submitting Надсилання - + Communication error - Помилка з'єднання + Помилка з’єднання - + An error occurred while sending the Testcase Сталася помилка під час надсилання звіту - + Next Далі @@ -397,1528 +370,1923 @@ This would ban both their forum username and their IP address. ConfigurationShared - + % % - + Amiibo editor - + Редактор amiibo - + Controller configuration - + Налаштування контролера - + Data erase - + Стирання даних - + Error Помилка - + Net connect - + Мережеве з’єднання - + Player select - + Вибір гравця - + Software keyboard - + Програмна клавіатура - + Mii Edit - + Редагування Mii - + Online web - + Онлайн-мережа - + Shop - + Крамниця - + Photo viewer - + Переглядач фото - + Offline web - + Офлайн-мережа - + Login share - + Спільний вхід - + Wifi web auth - + Wifi-автентифікація - + My page - + Моя сторінка - + + Enable Overlay Applet + Увімкнути аплет оверлея + + + + Enables Horizon's built-in overlay applet. Press and hold the home button for 1 second to show it. + Вмикає вбудований аплет-оверлей Horizon. Натисніть і утримуйте 1 секунду кнопку «Домівка», щоб показати його. + + + Output Engine: - Рушій виводу: + Рушій виведення: - + Output Device: - Пристрій відтворення: + Пристрій виведення: - + Input Device: - Пристрій вводу: + Пристрій введення: - + Mute audio - + Вимкнути звук - + Volume: - Гучність + Гучність: - + Mute audio when in background - Приглушити звук у фоновому режимі + Вимикати звук у фоновому режимі - + Multicore CPU Emulation Багатоядерна емуляція ЦП - - This option increases CPU emulation thread use from 1 to the Switch’s maximum of 4. -This is mainly a debug option and shouldn’t be disabled. - + + This option increases CPU emulation thread use from 1 to the maximum of 4. +This is mainly a debug option and shouldn't be disabled. + Це налаштування збільшує потоки емуляції ЦП з 1 до максимальних 4. +Це налаштування в основному для зневадження й не повинно бути вимкненим. - + Memory Layout - + Розкладка пам’яті - - Increases the amount of emulated RAM from the stock 4GB of the retail Switch to the developer kit's 8/6GB. -It’s doesn’t improve stability or performance and is intended to let big texture mods fit in emulated RAM. -Enabling it will increase memory use. It is not recommended to enable unless a specific game with a texture mod needs it. - + + Increases the amount of emulated RAM. +Doesn't affect performance/stability but may allow HD texture mods to load. + Збільшує обсяг емульованої оперативної пам’яті/ +Не впливає на продуктивність/стабільність, але може дозволити завантажувати модифіковані текстури вищої роздільності. - + Limit Speed Percent - Обмеження відсотка швидкості + Відсоток обмеження швидкості - - Controls the game's maximum rendering speed, but it’s up to each game if it runs faster or not. + + Controls the game's maximum rendering speed, but it's up to each game if it runs faster or not. 200% for a 30 FPS game is 60 FPS, and for a 60 FPS game it will be 120 FPS. Disabling it means unlocking the framerate to the maximum your PC can reach. - + Керує максимальною швидкістю візуалізації гри. Деякі ігри можуть працювати з неправильною швидкістю. +200% для гри з 30 к/с — це 60 к/с, а для гри з 60 к/с — 120 к/с. +Вимкнення розблокує частоту кадрів до максимальної, на яку здатен здатен ваш комп’ютер. - + + Turbo Speed + Прискорення + + + + When the Turbo Speed hotkey is pressed, the speed will be limited to this percentage. + Коли натиснуто сполучення кнопок для «Прискорення», швидкість буде обмежено до цього відсотка. + + + + Slow Speed + Сповільнення + + + + When the Slow Speed hotkey is pressed, the speed will be limited to this percentage. + Коли натиснуто сполучення кнопок для «Сповільнення», швидкість буде обмежено до цього відсотка. + + + Synchronize Core Speed - + Синхронізувати швидкість ядер - - Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). -Compatibility varies by game; many (especially older ones) may not respond well. + + Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). Can help reduce stuttering at lower framerates. - + Синхронізує швидкість ядер ЦП з максимальною швидкістю візуалізації гри, щоб збільшити частоту кадрів, при цьому не впливаючи на швидкість гри (анімації, фізика тощо). +Може зменшити затримки при низькій частоті кадрів. - + Accuracy: Точність: - - This setting controls the accuracy of the emulated CPU. -Don't change this unless you know what you are doing. - + + Change the accuracy of the emulated CPU (for debugging only). + Змінює точність емульованого ЦП (лише для зневадження) - - + + Backend: - + Бекенд: - - Fast CPU Time - + + CPU Overclock + Розгін ЦП - + Overclocks the emulated CPU to remove some FPS limiters. Weaker CPUs may see reduced performance, and certain games may behave improperly. Use Boost (1700MHz) to run at the Switch's highest native clock, or Fast (2000MHz) to run at 2x clock. - + Розгін емульованого ЦП, щоб прибрати деякі обмеження частоти кадрів. Слабші ЦП можуть зіткнутися зі зменшеною продуктивністю, а деякі ігри можуть працювати некоректно. +Використовуйте «Підвищення (1700 МГц)», щоб емулювати максимальну тактову частоту справжнього Switch, або «Швидко (2000 МГц)», щоб подвоїти частоту. - + + Custom CPU Ticks + Користувацькі такти ЦП + + + + Set a custom value of CPU ticks. Higher values can increase performance, but may cause deadlocks. A range of 77-21000 is recommended. + Налаштування власного значення тактів ЦП. Більші значення можуть збільшити продуктивність, але також можуть спричинити блокування. Рекомендовані значення в діапазоні 77–21000. + + + + Enable Host MMU Emulation (fastmem) + Увімкнути емуляцію MMU хоста (fastmem) + + + + This optimization speeds up memory accesses by the guest program. +Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU. +Disabling this forces all memory accesses to use Software MMU Emulation. + Ця оптимізація пришвидшує доступ до пам’яті для гостьової програми. +Увімкнення дозволяє читати/записувати гостьову пам’ять напряму із застосуванням MMU хоста. +Вимкнення змушує використовувати для доступу до пам’яті програмну емуляцію MMU. + + + Unfuse FMA (improve performance on CPUs without FMA) Не використовувати FMA (покращує продуктивність на ЦП без FMA) - + This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support. - + Це налаштування покращує швидкість завдяки зменшенню точності виконання операцій множення й складання з окрегленням на ЦП без вбудованої підтримки FMA. - + Faster FRSQRTE and FRECPE - Прискорені FRSQRTE та FRECPE + Швидші FRSQRTE та FRECPE - + This option improves the speed of some approximate floating-point functions by using less accurate native approximations. - + Це налаштування покращує швидкість виконання деяких приблизних функцій із рухомою комою завдяки використанню менш точних вбудованих приближеннях. - + Faster ASIMD instructions (32 bits only) - Швидші інструкції ASIMD (лише 32 біт) + Швидші інструкції ASIMD (лише 32 біти) - + This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes. - + Це налаштування покращує швидкість виконання 32 бітових функцій ASIMD із рухомою комою завдяки використанню неправильних режиміс округлення. - + Inaccurate NaN handling - Неправильна обробка NaN + Неточна обробка NaN - + This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions. - + Це налаштування покращує швидкість завдяки вилученню перевірки NaN. +Зверніть увагу, що також це зменшує точність виконання певних інструкцій із рухомою комою. - + Disable address space checks - Вимкнути перевірку адресного простору + Вимкнути перевірки адресного простору - - This option improves speed by eliminating a safety check before every memory read/write in guest. -Disabling it may allow a game to read/write the emulator's memory. - + + This option improves speed by eliminating a safety check before every memory operation. +Disabling it may allow arbitrary code execution. + Це налаштування покращує швидкість завдяки вимкненню перевірок безпеки перед операціями з пам’яттю. +Вимкнення може дозволити грі виконувати довільний код. - + Ignore global monitor Ігнорувати глобальний моніторинг - + 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. - + Це налаштування покращує швидкість завдяки покладанню лише на семантику cmpxchg, щоб забезпечити безпеку інструкцій ексклюзивного доступу. +Зверніть увагу, що це може спричинити взаємне блокування або інші умови змагання даних. - + API: API: - - Switches between the available graphics APIs. -Vulkan is recommended in most cases. - + + Changes the output graphics API. +Vulkan is recommended. + Змінює API виведення графіки. +Рекомендовано використовувати Vulkan. - + Device: Пристрій: - - This setting selects the GPU to use with the Vulkan backend. - + + This setting selects the GPU to use (Vulkan only). + Це налаштування вибирає ГП для використання (лише Vulkan). - - Shader Backend: - Бекенд шейдерів: - - - - The shader backend to use for the OpenGL renderer. -GLSL is the fastest in performance and the best in rendering accuracy. -GLASM is a deprecated NVIDIA-only backend that offers much better shader building performance at the cost of FPS and rendering accuracy. -SPIR-V compiles the fastest, but yields poor results on most GPU drivers. - - - - + Resolution: - Роздільна здатність: + Роздільність: - - Forces the game to render at a different resolution. -Higher resolutions require much more VRAM and bandwidth. -Options lower than 1X can cause rendering issues. - + + Forces to render at a different resolution. +Higher resolutions require more VRAM and bandwidth. +Options lower than 1X can cause artifacts. + Примушує візуалізовуватися з іншою роздільністю. +Вищі роздільності потребують більше відеопам’яті й пропускної здатності. +Варіанти нище ніж 1X можуть спричинити проблеми з візуалізацією. - + Window Adapting Filter: Фільтр адаптації вікна: - + FSR Sharpness: Різкість FSR: - - Determines how sharpened the image will look while using FSR’s dynamic contrast. - + + Determines how sharpened the image will look using FSR's dynamic contrast. + Визначає, наскільки різким буде виглядати зображення при використанні динамічного контрасту FSR. - + Anti-Aliasing Method: Метод згладжування: - + The anti-aliasing method to use. SMAA offers the best quality. -FXAA has a lower performance impact and can produce a better and more stable picture under very low resolutions. - +FXAA can produce a more stable picture in lower resolutions. + Метод згладжування. +SMAA забезпечує найкращу якість. +FXAA може створювати стабільніше зображення при низьких роздільностях. - + Fullscreen Mode: Повноекранний режим: - + The method used to render the window in fullscreen. Borderless offers the best compatibility with the on-screen keyboard that some games request for input. Exclusive fullscreen may offer better performance and better Freesync/Gsync support. - + Метод, який використовується для візуалізації вікна на весь екран. +«Безрамкове вікно» забезпечує найкращу сумісність з наекранними клавіатурами, яка може бути потрібна для введення в деяких іграх. +«Ексклюзивний повноекранний» може надати кращі продуктивність і підтримку Freesync/Gsync. - + Aspect Ratio: Співвідношення сторін: - - Stretches the game to fit the specified aspect ratio. -Switch games only support 16:9, so custom game mods are required to get other ratios. + + Stretches the renderer to fit the specified aspect ratio. +Most games only support 16:9, so modifications are required to get other ratios. Also controls the aspect ratio of captured screenshots. - + Розтягує візуалізацію, щоб вона вписувалася у вказане співвідношення сторін. +Більшість ігор підтримують лише 16:9, тому для інших співвідношень будуть потрібні спеціальні ігрові модифікації. +Також керує співвідношеням сторін знімків екрана. - - Use disk pipeline cache - Використовувати кеш конвеєра на диску + + Use persistent pipeline cache + Використовувати стійкий кеш конвеєра - + Allows saving shaders to storage for faster loading on following game boots. Disabling it is only intended for debugging. - + Дозволяє зберігати шейдери на накопичувачі для швидшого завантаження під час наступних запусків гри. +Вимкнення цього налаштування задумане лише для зневадження. - - Optimize SPIRV output shader - + + Optimize SPIRV output + Оптимізовувати виведення SPIRV - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. This feature is experimental. - + Запускає додатковий цикл оптимізації для шейдерів, згенерованих SPIRV. +Це збільшить час компіляції шейдерів. +Може трохи покращити продуктивність. +Ця функція є експериментальною. - - Use asynchronous GPU emulation - Використовувати асинхронну емуляцію ГП - - - - Uses an extra CPU thread for rendering. -This option should always remain enabled. - - - - + NVDEC emulation: Емуляція NVDEC: - + Specifies how videos should be decoded. It can either use the CPU or the GPU for decoding, or perform no decoding at all (black screen on videos). In most cases, GPU decoding provides the best performance. - + Визначає, як повинні декодуватися відео. +Для декодування може використовуватися як ЦП, так і ГП, або ж декодування може взагалі не виконуватися (чорний екран під час відео). +У більшості випадків декодування за допомогою ГП забезпечує найкращу продуктивність. - + ASTC Decoding Method: - + Метод декодування ASTC: - + This option controls how ASTC textures should be decoded. -CPU: Use the CPU for decoding, slowest but safest method. -GPU: Use the GPU's compute shaders to decode ASTC textures, recommended for most games and users. -CPU Asynchronously: Use the CPU to decode ASTC textures as they arrive. Completely eliminates ASTC decoding -stuttering at the cost of rendering issues while the texture is being decoded. - +CPU: Use the CPU for decoding. +GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). +CPU Asynchronously: Use the CPU to decode ASTC textures on demand. EliminatesASTC decoding +stuttering but may present artifacts. + Це налаштування керує тим, як повинні декодуватися ASTC-текстури. +ЦП: Використання ЦП для декодування. +ГП: Використання обчислення шейдерів ГП для декодування ASTC-текстур (рекомендовано). +Асинхронно ЦП: Використання ЦП для декодування ASTC-текстур по мірі їх викликів. Повністю усуває затримки декодування ASTC ціною проблем з візуалізацією, поки текстури декодуються. - + ASTC Recompression Method: - + Метод перестиснення ASTC: - - Almost all desktop and laptop dedicated GPUs lack support for ASTC textures, forcing the emulator to decompress to an intermediate format any card supports, RGBA8. -This option recompresses RGBA8 to either the BC1 or BC3 format, saving VRAM but negatively affecting image quality. - + + Most GPUs lack support for ASTC textures and must decompress to anintermediate format: RGBA8. +BC1/BC3: The intermediate format will be recompressed to BC1 or BC3 format, + saving VRAM but degrading image quality. + Більшість ГП не підтримують ASTC-текстури, тому їх потрібно перепаковувати у проміжний формат — RGBA8. +BC1/BC3: Проміжний формат буде перепаковано у формат BC1 або BC3 для збереження відеопам’яті, але це негатривно вплине на якість зображення. - + + Frame Pacing Mode (Vulkan only) + Режим виведення кадрів (лише Vulkan) + + + + Controls how the emulator manages frame pacing to reduce stuttering and make the frame rate smoother and more consistent. + Керує тим, як емулятор виконує виведення кадрів, щоб зменшити затримки й забезпечити плавнішу й стабільнішу частоту кадрів. + + + VRAM Usage Mode: - + Режим використання відеопам’яті: - - Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. Has no effect on integrated graphics. Aggressive mode may severely impact the performance of other applications such as recording software. - + + Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. +Aggressive mode may impact performance of other applications such as recording software. + Це налаштування вибирає, чи повинен емулятор надавати перевагу заощадженню пам’яті, чи по максимуму використовувати доступну відеопам’ять задля продуктивності. +Режим «Агресивно» може вплинути на продуктивність інших застосунків, як-от засоби запису. - + + Skip CPU Inner Invalidation + Пропускати внутрішнє анулювання ЦП + + + + Skips certain cache invalidations during memory updates, reducing CPU usage and improving latency. This may cause soft-crashes. + Пропускає деякі анулювання кешу під час оновлень пам’яті, зменшуючи використання ЦП й виправляючи затримки. Це може спричинити збої. + + + VSync Mode: - Режим верт. синхронізації: + Режим вертикальної синхронізації: - + FIFO (VSync) does not drop frames or exhibit tearing but is limited by the screen refresh rate. -FIFO Relaxed is similar to FIFO but allows tearing as it recovers from a slow down. +FIFO Relaxed 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. - FIFO (VSync) не пропускає кадри і не має розривів, але обмежений частотою оновлення екрана. -FIFO Relaxed схожий на FIFO, але може мати розриви під час відновлення після просідань. +Immediate (no synchronization) presents whatever is available and can exhibit tearing. + FIFO (вертикальна синхронізація) не пропускає кадри і не створює розриви, але обмежений частотою оновлення екрана. +FIFO Relaxed допускає розриви під час відновлення після сповільнень. Mailbox може мати меншу затримку, ніж FIFO, і не має розривів, але може пропускати кадри. -Моментальний (без синхронізації) просто показує всі кадри і може мати розриви. +Immediate (без синхронізації) показує всі кадри й може створювати розриви. - + + Sync Memory Operations + Синхронізувати операції з пам’яттю + + + + Ensures data consistency between compute and memory operations. +This option fixes issues in games, but may degrade performance. +Unreal Engine 4 games often see the most significant changes thereof. + Забезпечує узгодженість даних між операціями з пам’яттю та обчисленнями. +Це налаштування виправляє проблеми в іграх, але погіршує продуктивність. +Ігри на Unreal Engine 4 часто зазнають найзначніших змін. + + + Enable asynchronous presentation (Vulkan only) - Увімкнути асинхронну презентацію (Vulkan) + Увімкнути асинхронне подання (лише Vulkan) - + Slightly improves performance by moving presentation to a separate CPU thread. - + Трохи покращує продуктивність завдяки переміщенню подання на окремий потік ЦП. - + Force maximum clocks (Vulkan only) - Примусово змусити максимальну тактову частоту (тільки для Vulkan) + Примусово максимальна тактова частота (лише Vulkan) - + Runs work in the background while waiting for graphics commands to keep the GPU from lowering its clock speed. Виконує роботу у фоновому режимі в очікуванні графічних команд, не даючи змоги ГП знижувати тактову частоту. - + Anisotropic Filtering: Анізотропна фільтрація: - + Controls the quality of texture rendering at oblique angles. -It’s a light setting and safe to set at 16x on most GPUs. - +Safe to set at 16x on most GPUs. + Керує якістю візуалізації текстур під непрямими кутами. +Для більшості ГП можна вільно вибирати 16x. - - Accuracy Level: - Рівень точності: + + GPU Mode: + Режим ГП: - - GPU emulation accuracy. -Most games render fine with Normal, but High is still required for some. -Particles tend to only render correctly with High accuracy. -Extreme should only be used for debugging. -This option can be changed while playing. -Some games may require booting on high to render properly. - + + Controls the GPU emulation mode. +Most games render fine with Fast or Balanced modes, but Accurate is still required for some. +Particles tend to only render correctly with Accurate mode. + Керує режимом емуляції ГП. +Більшість ігор добре візуалізуються з режимами «Швидко» або «Збалансовано», але деякі ігри можуть потребувати режиму «Точно». +Частинки зазвичай правильно візуалізуються лише з режимом «Точно». - - Use asynchronous shader building (Hack) - Використовувати асинхронну побудову шейдерів (хак) + + DMA Accuracy: + Точність DMA: - - Enables asynchronous shader compilation, which may reduce shader stutter. -This feature is experimental. - + + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. + Керує точністю DMA. Вища точність виправляє проблеми з деякими іграми, але може погіршити продуктивність. - Use Fast GPU Time (Hack) - Увімкнути Fast GPU Time (хак) + + Enable asynchronous shader compilation + Увімкнути асинхронну компіляцію шейдерів - Enables Fast GPU Time. This option will force most games to run at their highest native resolution. - Вмикає функцію Fast GPU Time. Цей параметр змусить більшість ігор працювати в максимальній рідній роздільній здатності. + + May reduce shader stutter. + Може зменшити шейдерні затримки. - + + Fast GPU Time + Швидкий час роботи ГП + + + + Overclocks the emulated GPU to increase dynamic resolution and render distance. +Use 256 for maximal performance and 512 for maximal graphics fidelity. + Розганяє емульований ГП для збільшення динамічної роздільності та відстані візуалізації. +Використовуйте 256 для максимальної продуктивності та 512 для максимальної точності графіки. + + + + GPU Unswizzle + Розпакування за допомогою ГП + + + + Accelerates BCn 3D texture decoding using GPU compute. +Disable if experiencing crashes or graphical glitches. + Прискорює декодування 3D-текстур BCn застосовуючи обчислення за допомогою ГП. +Вимкніть у разі збоїв або проблем із графікою. + + + + GPU Unswizzle Max Texture Size + Максимальний розмір текстур для розпакування за допомогою ГП + + + + Sets the maximum size (MiB) for GPU-based texture unswizzling. +While the GPU is faster for medium and large textures, the CPU may be more efficient for very small ones. +Adjust this to find the balance between GPU acceleration and CPU overhead. + Встановлює максимальний розмір (МіБ) для розпакування текстур за допомогою ГП. +ГП швидше справляється з текстурами середніх і великих розмірів, а ЦП ефективніший для дуже маленьких. +Налаштуйте, щоб збалансувати ГП-прискоренням і навантаженням на ЦП. + + + + GPU Unswizzle Stream Size + Розмір потоку розпакування за допомогою ГП + + + + Sets the maximum amount of texture data (in MiB) processed per frame. +Higher values can reduce stutter during texture loading but may impact frame consistency. + Встановлює максимальний обсяг даних текстур (у МіБ) для обробки на кадр. +Вищі значення здатні зменшити затримки під час завантаження текстур, але можуть вплинути на стабільність кадрів. + + + + GPU Unswizzle Chunk Size + Розмір блоків розпакування за допомогою ГП + + + + Determines the number of depth slices processed in a single dispatch. +Increasing this can improve throughput on high-end GPUs but may cause TDR or driver timeouts on weaker hardware. + Визначає кількість зрізів глибини, оброблених за одне відправлення. +Збільшення здатне покращити пропускну здатність на потужних ГП, але може призвести до TDR або затримок драйвера зі слабшим устаткуванням. + + + Use Vulkan pipeline cache - Використовувати конвеєрний кеш Vulkan + Використовувати кеш конвеєра Vulkan - + Enables GPU vendor-specific pipeline cache. This option can improve shader loading time significantly in cases where the Vulkan driver does not store pipeline cache files internally. - + Вмикає особливий для різних виробників ГП кеш конвеєра. +Це налаштування може значно зменшити час завантаження шейдерів у випадках, коли драйвер Vulkan не зберігає власний кеш конвеєра. - + Enable Compute Pipelines (Intel Vulkan Only) - + Увімкнути обчислювальні конвеєри (лише Intel Vulkan) - - Enable compute pipelines, required by some games. -This setting only exists for Intel proprietary drivers, and may crash if enabled. + + 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. - + Необхідно для деяких ігор. +Це налаштування лише для власних драйверів Intel і може спричинити збої. +Обчислювальні конвеєри завжди увімкнені у всіх інших драйверах. - + Enable Reactive Flushing Увімкнути реактивне очищення - + Uses reactive flushing instead of predictive flushing, allowing more accurate memory syncing. - + Використовує реактивне очищення замість прогнозованого, забезпечуючи точнішу синхронізацію пам’яті. - + Sync to framerate of video playback - + Синхронізувати частоту кадрів з відтворенням відео - + Run the game at normal speed during video playback, even when the framerate is unlocked. - + Відтворювати гру з нормальною швидкістю під час відтворення відео навіть при розблокованій частоті кадрів. - + Barrier feedback loops - + Бар’єрні цикли відгуку - + Improves rendering of transparency effects in specific games. - + Покращує візуалізацію ефектів прозорості в деяких іграх. - + + Enable buffer history + Увімкнути історію буфера + + + + Enables access to previous buffer states. +This option may improve rendering quality and performance consistency in some games. + Вмикає доступ до попередніх станів буфера. +Цей параметр може покращити якість візуалізації та стабільну продуктивність у деяких іграх. + + + + Fix bloom effects + Виправити ефекти світіння + + + + Removes bloom in Burnout. + Прибирає світіння в Burnout. + + + + Enable Legacy Rescale Pass + Увімкнути застаріле масштабування + + + + May fix rescale issues in some games by relying on behavior from the previous implementation. +Legacy behavior workaround that fixes line artifacts on AMD and Intel GPUs, and grey texture flicker on Nvidia GPUs in Luigis Mansion 3. + Може виправити проблеми з масштабуванням в іграх, покладаючись на поведінку з попередньої імплементації. +Застаріле масштабування виправляє артефакти з лініями на ГП від AMD та Intel, а також сіре блимання текстур на ГП від Nvidia в Luigis Mansion 3. + + + + Extended Dynamic State + Розширений динамічний стан + + + + Controls the number of features that can be used in Extended Dynamic State. +Higher states allow for more features and can increase performance, but may cause additional graphical issues. + Керує кількістю функцій, які можна використовувати в «Розширеному динамічному стані». +Вищі значення допускають більше функцій і можуть збільшити продуктивність, але можуть спричинити додаткові проблеми з графікою. + + + + Vertex Input Dynamic State + Динамічний стан введення вершин + + + + Enables vertex input dynamic state feature for better quality and performance. + Вмикає можливість динамічного стану введення вершин для кращих якості й продуктивності. + + + + Sample Shading + Шейдинг зразків + + + + Allows the fragment shader to execute per sample in a multi-sampled fragment instead of once per fragment. Improves graphics quality at the cost of performance. +Higher values improve quality but degrade performance. + Дозволяє виконувати фрагмент шейдера для кожного зразка в багатозразковому фрагменті замість одного разу для кожного фрагмента. Покращує якість графікі ціною втрати продуктивності. +Вищі значення покращують якість, але погіршують продуктивність. + + + RNG Seed - Сід RNG + Початкове значення RNG - + Controls the seed of the random number generator. -Mainly used for speedrunning purposes. - +Mainly used for speedrunning. + Керує початковим значення генератора випадкових чисел. +Зазвичай використовується в спідранах. - + Device Name Назва пристрою - - The name of the emulated Switch. - + + The name of the console. + Назва консолі. - + Custom RTC Date: - + Користувацька дата RTC: - - This option allows to change the emulated clock of the Switch. + + This option allows to change the clock of the console. Can be used to manipulate time in games. - + Це налаштування дозволяє змінити час годинника консолі. +Можна використовувати для маніпуляцій із часом в іграх. - + + The number of seconds from the current unix time + Кількість секунд від поточного unix-часу. + + + Language: - + Мова: - - Note: this can be overridden when region setting is auto-select - Примітка: може бути перезаписано якщо регіон вибирається автоматично + + This option can be overridden when region setting is auto-select + Це налаштування може перевизначитися, якщо налаштування регіону вибирається автоматично - + Region: Регіон: - - The region of the emulated Switch. - + + The region of the console. + Регіон консолі. - + Time Zone: Часовий пояс: - - The time zone of the emulated Switch. - + + The time zone of the console. + Часовий пояс консолі. - + Sound Output Mode: - Режим відстворення звуку: + Режим виведення звуку: - + Console Mode: - + Режим консолі: - - Selects if the console is emulated in Docked or Handheld mode. + + Selects if the console is in Docked or Handheld mode. Games will change their resolution, details and supported controllers and depending on this setting. Setting to Handheld can help improve performance for low end systems. - + Це налаштування вибирає режим консолі між «У докстанції» та «Портативний». +Залежно від цього налаштування ігри змінюватимуть свою роздільність, деякі налаштування та підтримувані контролери. +Налаштування «Портативний» може покращити продуктивність на слабких системах. - - Prompt for user on game boot - Запитувати користувача під час запуску гри + + Unit Serial + Серійний номер пристрою - - Pause emulation when in background - Призупиняти емуляцію у фоновому режимі + + Battery Serial + Серійний номер акумулятора - - Fast GPU Time (Hack) - + + Debug knobs + Зневаджувальні регулятори - - Overclocks the emulated GPU to increase dynamic resolution and render distance. -Use 128 for maximal performance and 512 for maximal graphics fidelity. - + + Prompt for user profile on boot + Запитувати профіль користувача під час запуску - - Extended Dynamic State - + + Useful if multiple people use the same PC. + Корисно, якщо одним комп’ютером користуються кілька користувачів. - - Enables the VkExtendedDynamicState* extensions. -Higher dynamic states will generally improve performance, but may cause issues on certain games or devices. - + + Pause when not in focus + Призупиняти, якщо не у фокусі - - Provoking Vertex - + + Pauses emulation when focusing on other windows. + Призупиняє емуляцію при фокусування на інших вікнах. - - Improves lighting and vertex handling in certain games. -Only Vulkan 1.0+ devices support this extension. - - - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - - Ask to select a user profile on each boot, useful if multiple people use eden on the same PC. - - - - - This setting pauses eden when focusing other windows. - - - - + Confirm before stopping emulation - + Підтверджувати зупинку емуляції - - This setting overrides game prompts asking to confirm stopping the game. + + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - + Перевизначає запити на підтвердження зупинки емуляції. +Увімкнення обходить такі запити й одразу зупиняє емуляцію. - + Hide mouse on inactivity - Приховування миші при бездіяльності + Приховувати курсор миші при бездіяльності - - This setting hides the mouse after 2.5s of inactivity. - + + Hides the mouse after 2.5s of inactivity. + Приховує курсор миші після 2,5 с її бездіяльності. - + Disable controller applet - + Вимкнути аплет контролера - - Forcibly disables the use of the controller applet by guests. -When a guest attempts to open the controller applet, it is immediately closed. - + + Forcibly disables the use of the controller applet in emulated programs. +When a program attempts to open the controller applet, it is immediately closed. + Примусово вимикає використання в емульованих програмах аплета контролера. +Якщо програма спробує відкрити аплет контролера, він одразу закриється. - + Check for updates - + Перевіряти оновлення - + Whether or not to check for updates upon startup. - + Чи перевіряти оновлення при запуску. - + Enable Gamemode - + Увімкнути ігровий режим - + + Force X11 as Graphics Backend + Примусово використовувати X11 як графічний бекенд + + + Custom frontend - + Користувацький фронтенд - + Real applet - + Справжній аплет - + Never - + Ніколи - + On Load - + При завантаженні - + Always - + Завжди - + CPU ЦП - + GPU - + ГП - + CPU Asynchronous - + Асинхронно ЦП - + Uncompressed (Best quality) Без стиснення (Найкраща якість) - + BC1 (Low quality) ВС1 (Низька якість) - + BC3 (Medium quality) ВС3 (Середня якість) - + + + Auto + Автоматично + + + + 30 FPS + 30 к/с + + + + 60 FPS + 60 к/с + + + + 90 FPS + 90 к/с + + + + 120 FPS + 120 к/с + + + Conservative - + Заощадження - + Aggressive - + Агресивно - - OpenGL - OpenGL - - - + Vulkan Vulkan - + + OpenGL GLSL + OpenGL GLSL + + + + OpenGL GLASM (Assembly Shaders, NVIDIA Only) + OpenGL GLASM (асемблерні шейдери, лише NVIDIA) + + + + OpenGL SPIR-V (Experimental, AMD/Mesa Only) + OpenGL SPIR-V (експериментально, лише AMD/Mesa) + + + Null - Null + Нічого - - GLSL - GLSL + + Fast + Швидко - - GLASM (Assembly Shaders, NVIDIA Only) - GLASM (асемблерні шейдери, лише для NVIDIA) + + Balanced + Збалансовано - - SPIR-V (Experimental, AMD/Mesa Only) - - - - - Normal - Нормальна - - - - High - Висока - - - - Extreme - Екстрим - - - - Auto - Авто - - - + + Accurate Точно - + + + Default + Стандартно + + + + Unsafe (fast) + Небезпечно (швидко) + + + + Safe (stable) + Безпечно (стабільно) + + + Unsafe Небезпечно - + Paranoid (disables most optimizations) - Параноїк (відключає більшість оптимізацій) + Параноїк (вимикає більшість оптимізацій) - + + Debugging + Зневадження + + + Dynarmic - + Динамічно - + NCE - + NCE - + Borderless Windowed - Вікно без рамок + Безрамкове вікно - + Exclusive Fullscreen Ексклюзивний повноекранний - + No Video Output - Відсутність відеовиходу + Виведення відео відсутнє - + CPU Video Decoding Декодування відео на ЦП - + GPU Video Decoding (Default) - Декодування відео на ГП (за замовчуванням) + Декодування відео на ГП (стандатно) - + 0.25X (180p/270p) [EXPERIMENTAL] - + 0.25X (180p/270p) [ЕКСПЕРИМЕНТАЛЬНО] - + 0.5X (360p/540p) [EXPERIMENTAL] - + 0.5X (360p/540p) [ЕКСПЕРИМЕНТАЛЬНО] - + 0.75X (540p/810p) [EXPERIMENTAL] - 0.75X (540p/810p) [ЕКСПЕРИМЕНТАЛЬНЕ] + 0.75X (540p/810p) [ЕКСПЕРИМЕНТАЛЬНО] - + 1X (720p/1080p) 1X (720p/1080p) - + + 1.25X (900p/1350p) [EXPERIMENTAL] + 1.25X (900p/1350p) [ЕКСПЕРИМЕНТАЛЬНО] + + + 1.5X (1080p/1620p) [EXPERIMENTAL] 1.5X (1080p/1620p) [ЕКСПЕРИМЕНТАЛЬНО] - + 2X (1440p/2160p) 2X (1440p/2160p) - + 3X (2160p/3240p) 3X (2160p/3240p) - + 4X (2880p/4320p) 4X (2880p/4320p) - + 5X (3600p/5400p) 5X (3600p/5400p) - + 6X (4320p/6480p) 6X (4320p/6480p) - + 7X (5040p/7560p) 7X (5040p/7560p) - + 8X (5760p/8640p) 8X (5760p/8640p) - + Nearest Neighbor Найближчий сусід - + Bilinear - Білінійне + Білінійний - + Bicubic - Бікубічне + Бікубічний - + Gaussian - Гауса + Ґаусса - + + Lanczos + Ланцоша + + + ScaleForce ScaleForce - - AMD FidelityFX™️ Super Resolution - AMD FidelityFX™️ Super Resolution + + AMD FidelityFX Super Resolution + AMD FidelityFX Super Resolution - + Area - + Області - + + MMPX + MMPX + + + + Zero-Tangent + Нульовий тангенс + + + + B-Spline + B-Spline + + + + Mitchell + Мітчелла + + + + Spline-1 + Spline-1 + + + + None - Вимкнено + Немає - + FXAA FXAA - + SMAA SMAA - + Default (16:9) - За замовчуванням (16:9) + Стандартно (16:9) - + Force 4:3 - Змусити 4:3 + Примусово 4:3 - + Force 21:9 - Змусити 21:9 + Примусово 21:9 - + Force 16:10 - Змусити 16:10 + Примусово 16:10 - + Stretch to Window Розтягнути до вікна - + Automatic Автоматично - - Default - За замовчуванням - - - + 2x 2x - + 4x 4x - + 8x 8x - + 16x 16x - + + 32x + 32x + + + + 64x + 64x + + + Japanese (日本語) Японська (日本語) - + American English Американська англійська - + French (français) Французька (français) - + German (Deutsch) Німецька (Deutsch) - + Italian (italiano) Італійська (italiano) - + Spanish (español) Іспанська (español) - + Chinese Китайська - + Korean (한국어) Корейська (한국어) - + Dutch (Nederlands) - Голландська (Nederlands) + Нідерландська (Nederlands) - + Portuguese (português) Португальська (português) - + Russian (Русский) Російська (Русский) - + Taiwanese Тайванська - + British English Британська англійська - + Canadian French Канадська французька - + Latin American Spanish Латиноамериканська іспанська - + Simplified Chinese Спрощена китайська - + Traditional Chinese (正體中文) Традиційна китайська (正體中文) - + Brazilian Portuguese (português do Brasil) Бразильська португальська (português do Brasil) - - + + Polish (polska) + Польська (polska) + + + + Thai (แบบไทย) + Тайська (แบบไทย) + + + + Japan Японія - + USA США - + Europe Європа - + Australia Австралія - + China Китай - + Korea Корея - + Taiwan Тайвань - + Auto (%1) Auto select time zone - Авто (%1) + Автоматично (%1) - + Default (%1) Default time zone - За замовчуванням (%1) + Стандартно (%1) - + CET CET - + CST6CDT CST6CDT - + Cuba Куба - + EET EET - + Egypt Єгипет - + Eire Ейре - + EST EST - + EST5EDT EST5EDT - + GB GB - + GB-Eire - GB-Ейре + GB-Eire - + GMT GMT - + GMT+0 GMT+0 - + GMT-0 GMT-0 - + GMT0 GMT0 - + Greenwich Гринвіч - + Hongkong Гонконг - + HST HST - + Iceland Ісландія - + Iran Іран - + Israel Ізраїль - + Jamaica Ямайка - + Kwajalein Кваджалейн - + Libya Лівія - + MET MET - + MST MST - + MST7MDT MST7MDT - + Navajo Навахо - + NZ NZ - + NZ-CHAT NZ-CHAT - + Poland Польща - + Portugal Португалія - + PRC PRC - + PST8PDT PST8PDT - + ROC ROC - + ROK ROK - + Singapore Сінгапур - + Turkey Туреччина - + UCT UCT - + Universal Універсальний - + UTC UTC - + W-SU W-SU - + WET WET - + Zulu - Зулуси + Зулу - + Mono Моно - + Stereo Стерео - + Surround - Об'ємний звук + Об’ємний - + 4GB DRAM (Default) - + 4GB DRAM (стандартно) - + 6GB DRAM (Unsafe) - + 6GB DRAM (небезпечно) - + 8GB DRAM - + 8GB DRAM - + 10GB DRAM (Unsafe) - + 10GB DRAM (небезпечно) - + 12GB DRAM (Unsafe) - + 12GB DRAM (небезпечно) - - Low (128) - - - - - Medium (256) - - - - - High (512) - - - - + Docked - У док-станції + У докстанції - + Handheld Портативний - + + + Off + Вимкнено + + + Boost (1700MHz) - + Підвищення (1700 МГц) - + Fast (2000MHz) - + Швидко (2000 МГц) - + Always ask (Default) - + Завжди запитувати (стандартно) - + Only if game specifies not to stop - + Лише якщо гра вказує не зупиняти - + Never ask - + Ніколи не запитувати + + + + + Medium (256) + Середньо (256) + + + + + High (512) + Високо (512) + + + + Very Small (16 MB) + Дуже малий (16 МБ) + + + + Small (32 MB) + Малий (32 МБ) + + + + Normal (128 MB) + Нормальний (128 МБ) + + + + Large (256 MB) + Великий (256 МБ) + + + + Very Large (512 MB) + Дуже великий (512 МБ) + + + + Very Low (4 MB) + Дуже низький (4 МБ) + + + + Low (8 MB) + Низький (8 МБ) + + + + Normal (16 MB) + Нормальний (16 МБ) + + + + Medium (32 MB) + Середній (32 МБ) + + + + High (64 MB) + Високий (64 МБ) + + + + Very Low (32) + Дуже низький (32) + + + + Low (64) + Низький (64) + + + + Normal (128) + Нормальний (128) + + + + Disabled + Вимкнено + + + + ExtendedDynamicState 1 + Розширений динамічний стан 1 + + + + ExtendedDynamicState 2 + Розширений динамічний стан 2 + + + + ExtendedDynamicState 3 + Розширений динамічний стан 3 + + + + Tree View + Дерево вибору + + + + Grid View + Таблиця @@ -1931,12 +2299,12 @@ When a guest attempts to open the controller applet, it is immediately closed. Applets - + Аплети Applet mode preference - + Вибір режимів аплетів @@ -1945,7 +2313,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Audio - Аудіо + Звук @@ -1968,7 +2336,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Input device: - Пристрій вводу: + Пристрій введення: @@ -1978,7 +2346,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Resolution: 320*240 - Роздільна здатність: 320*240 + Роздільність: 320*240 @@ -1988,12 +2356,12 @@ When a guest attempts to open the controller applet, it is immediately closed. Restore Defaults - Значення за замовчуванням + Відновити стандартні - + Auto - Авто + Автоматично @@ -2016,12 +2384,12 @@ When a guest attempts to open the controller applet, it is immediately closed. We recommend setting accuracy to "Auto". - Ми рекомендуємо встановити точність на "Авто". + Радимо встановити точність на «Автоматично». CPU Backend - + Бекенд ЦП @@ -2031,7 +2399,7 @@ When a guest attempts to open the controller applet, it is immediately closed. These settings reduce accuracy for speed. - Ці налаштування зменшують точність заради швидкості. + Ці налаштування зменшують точність задля швидкості. @@ -2049,12 +2417,12 @@ When a guest attempts to open the controller applet, it is immediately closed. Toggle CPU Optimizations - Увімкнути оптимізації ЦП + Перемикання оптимізацій ЦП <html><head/><body><p><span style=" font-weight:600;">For debugging only.</span><br/>If you're not sure what these do, keep all of these enabled. <br/>These settings, when disabled, only take effect when CPU Debugging is enabled. </p></body></html> - <html><head/><body><p><span style=" font-weight:600;">Тільки для налагодження.</span><br/>Якщо ви не впевнені в тому, що вони роблять, залиште всі ці параметри увімкненими. <br/>Коли їх вимкнено, ці параметри набувають чинності лише за ввімкненого налагодження ЦП. </p></body></html> + <html><head/><body><p><span style=" font-weight:600;">Лише для зневадження.</span><br/>Якщо ви не впевнені, що саме роблять ці налаштування, залиште їх увімкненими. <br/>Якщо вимкнені, ці налаштування набувають чинності лише при увімкненому зневадженню ЦП. </p></body></html> @@ -2064,9 +2432,9 @@ When a guest attempts to open the controller applet, it is immediately closed. - <div style="white-space: nowrap">Ця оптимізація прискорює доступ гостьової програми до пам'яті.</div> - <div style="white-space: nowrap">Увімкнення цієї оптимізації вбудовує доступ до покажчиків PageTable::pointers в емульований код.</div> - <div style="white-space: nowrap">Вимкнення цієї функції змушує всі звернення до пам'яті проходити через функції Memory::Read/Memory::Write.</div> + <div style="white-space: nowrap">Ця оптимізація прискорює доступ гостьової програми до пам’яті.</div> + <div style="white-space: nowrap">Її увімкнення вбудовує доступ до PageTable::pointers до створюваного коду.</div> + <div style="white-space: nowrap">Її вимкнення примушує всі доступи до пам’яті проходити через функції Memory::Read/Memory::Write.</div> @@ -2080,13 +2448,13 @@ When a guest attempts to open the controller applet, it is immediately closed. - <div>Ця опція дозволяє уникнути запитів диспетчера, дозволяючи випущеним базовим блокам переходити безпосередньо до інших базових блоків, якщо призначений ПК є статичним.</div> + <div>Ця оптимізація уникає запитів диспетчера, дозволяючи створеним базовим блокам переходити безпосередньо до інших базових блоків, якщо цільовий комп’ютер статичний.</div> Enable block linking - Увімкнути зв'язування блоків + Увімкнути пов’язування блоків @@ -2094,7 +2462,7 @@ When a guest attempts to open the controller applet, it is immediately closed. - <div>Ця опція дозволяє уникнути запитів диспетчера шляхом відстеження потенційних адрес повернення інструкцій BL. Це приблизно те, що відбувається з буфером стека повернення на реальному ЦП. </div> + <div>Ця оптимізація уникає запитів диспетчера завдяки відстеженню потенційних адрес повернення інструкцій BL. Це майже те саме, що відбувається зі стековим буфером повернення на реальному ЦП. </div> @@ -2108,13 +2476,13 @@ When a guest attempts to open the controller applet, it is immediately closed. - <div>Увімкнути дворівневу систему диспетчеризації. Швидший диспетчер, написаний на асемблері, має невеликий MRU-кеш, який використовується першим. Якщо це не вдається, система диспетчеризації повертається до повільнішого диспетчера C++.</div> + <div>Вмикає дворівневу систему диспетчеризації. Швидший диспетчер, написаний на асемблері, має невеликий MRU-кеш, який використовується першим. У разі збоїв система диспетчеризації повернеться до повільнішого диспетчера C++.</div> Enable fast dispatcher - Увімкнути швидшу систему диспетчеризації + Увімкнути швидкий диспетчер @@ -2128,7 +2496,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Enable context elimination - Увімкнути вилучення контексту ЦП + Увімкнути вилучення контексту @@ -2136,13 +2504,13 @@ When a guest attempts to open the controller applet, it is immediately closed. - <div>Вмикає IR-оптимізацію, яка включає поширення констант.</div> + <div>Вмикає IR-оптимізацію, яка задіює поширення констант.</div> Enable constant propagation - Увімкнути постійне поширення + Увімкнути поширення констант @@ -2150,13 +2518,13 @@ When a guest attempts to open the controller applet, it is immediately closed. - <div>Вмикає різні IR оптимізації.</div> + <div>Вмикає додаткові IR-оптимізації.</div> Enable miscellaneous optimizations - Увімкнути різні оптимізації + Увімкнути додаткові оптимізації @@ -2165,50 +2533,50 @@ When a guest attempts to open the controller applet, it is immediately closed. - <div style="white-space: nowrap">Якщо ввімкнено, зміщення запускається лише тоді, коли доступ перетинає межу сторінки.</div> - <div style="white-space: nowrap">Якщо вимкнено, зміщення запускається для всіх невирівняних доступів.</div> + <div style="white-space: nowrap">Якщо увімкнено, невирівняність спрацьовує, лише якщо доступ перетинає межу сторінки.</div> + <div style="white-space: nowrap">Якщо вимкнено, невирівняність спрацьовує для всіх невирівняних доступів.</div> Enable misalignment check reduction - Увімкнути зменшення перевірки зміщення + Увімкнути скорочення перевірок невирівняності <div style="white-space: nowrap">This optimization speeds up memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all memory accesses to use Software MMU Emulation.</div> - <div style="white-space: nowrap">Ця оптимізація прискорює доступ гостьової програми до пам'яті.</div> - <div style="white-space: nowrap"> Увімкнення цієї оптимізації призводить до того, що читання/запис гостьової пам'яті проводиться безпосередньо в пам'ять і використовує MMU хоста.</div> - <div style="white-space: nowrap">Вимкнення цієї функції змушує всі звернення до пам'яті використовувати програмну емуляцію MMU.</div> + <div style="white-space: nowrap">Ця оптимізація пришвидшує доступ до пам’яті для гостьової програми.</div> + <div style="white-space: nowrap">Увімкнення дозволяє читати/записувати гостьову пам’ять напряму із застосуванням MMU хоста.</div> + <div style="white-space: nowrap">Вимкнення змушує використовувати для доступу до пам’яті програмну емуляцію MMU.</div> Enable Host MMU Emulation (general memory instructions) - Увімкнути емуляцію MMU хоста (інструкції загальної пам'яті) + Увімкнути емуляцію MMU хоста (інструкції загальної пам’яті) <div style="white-space: nowrap">This optimization speeds up exclusive memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all exclusive memory accesses to use Software MMU Emulation.</div> - <div style="white-space: nowrap">Ця оптимізація прискорює доступ гостьової програми до ексклюзивної пам'яті.</div> - <div style="white-space: nowrap">Увімкнення цієї оптимізації призводить до того, що читання/запис в ексклюзивну пам'ять гостя виконується безпосередньо в пам'ять і використовує MMU хоста.</div> - <div style="white-space: nowrap"> Вимкнення цієї функції змушує всі ексклюзивні доступи до пам'яті використовувати емуляцію програмного MMU.</div> + <div style="white-space: nowrap">Ця оптимізація пришвидшує доступ до ексклюзивної пам’яті для гостьової програми.</div> + <div style="white-space: nowrap">Увімкнення дозволяє читати/записувати гостьову ексклюзивну пам’ять напряму із застосуванням MMU хоста.</div> + <div style="white-space: nowrap">Вимкнення змушує використовувати для доступу до ексклюзивної пам’яті програмну емуляцію MMU.</div> Enable Host MMU Emulation (exclusive memory instructions) - Увімкнути емуляцію MMU хоста (інструкції виняткової пам'яті) + Увімкнути емуляцію MMU хоста (інструкції ексклюзивної пам’яті) @@ -2217,35 +2585,35 @@ When a guest attempts to open the controller applet, it is immediately closed. - <div style="white-space: nowrap">Ця оптимізація прискорює звернення гостьової програми до виняткової пам'яті.</div> - <div style="white-space: nowrap">Її ввімкнення знижує накладні витрати, пов'язані з відмовою fastmem під час доступу до виняткової пам'яті.</div> + <div style="white-space: nowrap">Ця оптимізація пришвидшує доступ гостьової програми до ексклюзивної пам’яті.</div> + <div style="white-space: nowrap">Її увімкнення знижує надлишкові помилки fastmem під час доступу до ексклюзивної пам’яті.</div> Enable recompilation of exclusive memory instructions - Дозволити перекомпіляцію інструкцій виняткової пам'яті + Дозволити перекомпіляцію інструкцій ексклюзивної пам’яті <div style="white-space: nowrap">This optimization speeds up memory accesses by allowing invalid memory accesses to succeed.</div> - <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> + <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> - <div style="white-space: nowrap">Ця оптимізація прискорює звернення до пам'яті, дозволяючи успішне звернення до неприпустимої пам'яті.</div> - <div style="white-space: nowrap">Увімкнення цієї оптимізації знижує накладні витрати на всі звернення до пам'яті та не впливає на програми, які не звертаються до неприпустимої пам'яті.</div> + <div style="white-space: nowrap">Ця оптимізація пришвидшує доступ до пам’яті, дозволяючи доступ до неправильної пам’яті.</div> + <div style="white-space: nowrap">Її увімкнення знижує надлишок усіх доступів до пам’яті та не впливає на програми, які не звертаються до неправильної пам'яті.</div> Enable fallbacks for invalid memory accesses - Увімкнути запасні варіанти для неприпустимих звернень до пам'яті + Увімкнути резервні варіанти для доступів до неправильної пам’яті CPU settings are available only when game is not running. - Налаштування ЦП доступні тільки тоді, коли гру не запущено. + Налаштування ЦП доступні, лише якщо не запущено гру. @@ -2253,7 +2621,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Debugger - Налагоджувач + Зневаджувач @@ -2271,29 +2639,29 @@ When a guest attempts to open the controller applet, it is immediately closed.Журналювання - - Open Log Location - Відкрити папку для журналів - - - + Global Log Filter - Глобальний фільтр журналів + Глобальний фільтр журналу - + When checked, the max size of the log increases from 100 MB to 1 GB - Якщо увімкнено, максимальний розмір журналу збільшується зі 100 МБ до 1 ГБ + Якщо увімкнено, максимальний розмір журналу збільшується зі 100 МБ до 1 ГБ. + + + + Enable Extended Logging** + Увімкнути розширене журналювання** - Enable Extended Logging** - Увімкнути розширене ведення журналу** + Show Log in Console + Показувати журнал у консолі - Show Log in Console - Показувати журнал у консолі + Open Log Location + Відкрити розташування журналу @@ -2313,27 +2681,27 @@ When a guest attempts to open the controller applet, it is immediately closed. When checked, it executes shaders without loop logic changes - Якщо увімкнено, шейдери виконуються без зміни логіки циклу + Якщо увімкнено, шейдери виконуються без змін логіки циклів. Disable Loop safety checks - Вимкнути перевірку безпеки циклу + Вимкнути перевірки безпеки циклів When checked, it will dump all the macro programs of the GPU - Якщо ввімкнено, буде дампити всі макропрограми ГП + Якщо увімкнено, виводитимуться всі макропрограми ГП. Dump Maxwell Macros - Дамп макросов Maxwell + Виводити макроси Maxwell When checked, it enables Nsight Aftermath crash dumps - Якщо ввімкнено, вмикає дампи крашів Nsight Aftermath + Якщо увімкнено, вмикає виведення збоїв Nsight Aftermath. @@ -2343,22 +2711,22 @@ When a guest attempts to open the controller applet, it is immediately closed. When checked, it will dump all the original assembler shaders from the disk shader cache or game as found - Якщо ввімкнено, буде дампити всі оригінальні шейдери асемблера з кешу шейдерів на диску або гри як знайдені + Якщо увімкнено, при виявленні зберігатимуться всі оригінальні шейдери асемблера з кешу шейдерів накопичувача або гри. Dump Game Shaders - Дамп ігрових шейдерів + Зберігати шейдери ігор Enable Renderdoc Hotkey - + Увімкнути сполучення клавіш Renderdoc When checked, it disables the macro Just In Time compiler. Enabling this makes games run slower - Якщо ввімкнено, вимикає компілятор макросу Just In Time. Увімкнення цього параметра уповільнює роботу ігор + Якщо увімкнено, вимикає макрокомпілятор Just In Time. Увімкнення цього налаштування cповільнює роботу ігор. @@ -2368,7 +2736,7 @@ When a guest attempts to open the controller applet, it is immediately closed. When checked, it disables the macro HLE functions. Enabling this makes games run slower - Якщо прапорець встановлено, він вимикає функції макроса HLE. Увімкнення цього параметра уповільнює роботу ігор + Якщо увімкнено, вимикає макрофункції HLE. Увімкнення цього налаштування сповільнює роботу ігор. @@ -2378,42 +2746,42 @@ When a guest attempts to open the controller applet, it is immediately closed. When checked, the graphics API enters a slower debugging mode - Якщо увімкнено, графічний API переходить у повільніший режим налагодження + Якщо увімкнено, графічний API переходить у повільніший режим зневадження. Enable Graphics Debugging - Увімкнути налагодження графіки + Увімкнути зневадження графіки When checked, yuzu will log statistics about the compiled pipeline cache - Якщо увімкнено, yuzu записуватиме статистику про скомпільований кеш конвеєра + Якщо увімкнено, yuzu записуватиме статистику щодо скомпільованого кешу конвеєра. Enable Shader Feedback - Увімкнути зворотний зв'язок про шейдери + Увімкнути відгук шейдерів <html><head/><body><p>When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.</p></body></html> - + <html><head/><body><p>Якщо увімкнено, вимикає перевпорядкування призначених відвантажень пам’яті, що дозволяє пов’язувати відвантаження з певними відмальовуваннями. У деяких випадках може зменшити продуктивність.</p></body></html> Disable Buffer Reorder - + Вимкнути перевпорядкування буфера Advanced - Розширені + Додаткові 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. - Дозволяє yuzu перевіряти наявність робочого середовища Vulkan під час запуску програми. Вимкніть цю опцію, якщо це викликає проблеми з тим, що зовнішні програми бачать yuzu. + Дозволяє yuzu перевіряти наявність робочого середовища Vulkan під час запуску програми. Вимкніть це налаштування, якщо це спричиняє проблеми з баченням yuzu зовнішніми програмами. @@ -2423,7 +2791,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Disable Web Applet - Вимкнути веб-аплет + Вимкнути вебаплет @@ -2431,77 +2799,99 @@ When a guest attempts to open the controller applet, it is immediately closed.Увімкнути всі типи контролерів - - Censor username in logs - - - - - **This will be reset automatically when eden closes. - - - - Enable Auto-Stub** - Увімкнути автопідставку** + + Enable Auto-Stub + Увімкнути автоматичні заглушки Kiosk (Quest) Mode - Режим кіоску (Квест) + Режим кіоску (Quest) - Enable CPU Debugging - Увімкнути налагодження ЦП + Use dev.keys + Використовувати dev.keys Enable Debug Asserts - Увімкнути налагоджувальні припущення + Увімкнути зневаджувальні перевірки Debugging - Налагодження + Зневадження - - Flush log output on each line - + + Battery Serial: + Серійний номер акумулятора: - - Enable FS Access Log - Увімкнути журнал доступу до ФС + + Bitmask for quick development toggles + Бітова маска для швидких перемикань під час розробки - + + Set debug knobs (bitmask) + Встановити зневаджувальні регулятори (бітові маски) + + + + 16-bit debug knob set for quick development toggles + 16-бітовий зневаджувальний регулятор для швидких перемикань під час розробки + + + + (bitmask) + (бітова маска) + + + + Debug Knobs: + Зневаджувальні регулятори: + + + + Unit Serial: + Серійний номер пристрою: + + + Enable this to output the latest generated audio command list to the console. Only affects games using the audio renderer. - Увімкніть це щоб виводити останній згенерирований список аудіо команд в консоль. Впливає лише на ігри, які використовують аудіо рендерер. + Увімкніть, щоб виводити до консолі перелік останніх згенерированих аудіокоманд. Впливає лише на ігри, які використовують аудіорендерер. - - Enable Auto-Stub - - - - + Dump Audio Commands To Console** - Вивантажувати аудіо команди в консоль** + Виводити аудіокоманди до консолі** - + + Flush log output on each line + Скидати журнал виведення з кожним рядком + + + + Enable FS Access Log + Увімкнути журнал доступу до файлової системи + + + Enable Verbose Reporting Services** - Увімкнути службу звітів у розгорнутому вигляді** + Увімкнути служби докладних звітів** - **This will be reset automatically when yuzu closes. - **Це буде автоматично скинуто після закриття yuzu. + + Censor username in logs + Приховувати ім’я користувача в журналі - - Web applet not compiled - Веб-аплет не скомпільовано + + **This will be reset automatically when Eden closes. + **Це налаштування автоматично скинеться після закриття Eden. @@ -2509,7 +2899,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Configure Debug Controller - Налаштування налагоджувального контролера + Налаштування контролера зневадження @@ -2519,7 +2909,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Defaults - За замовчуванням + Стандартні @@ -2533,7 +2923,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Debug - Налагодження + Зневадження @@ -2543,103 +2933,99 @@ When a guest attempts to open the controller applet, it is immediately closed. ConfigureDialog - - yuzu Configuration - Налаштування yuzu - - eden Configuration - + Eden Configuration + Налаштування Eden Some settings are only available when a game is not running. - Деякі налаштування доступні тільки тоді, коли гру не запущено. + Деякі налаштування доступні лише тоді, коли гру не запущено. - + Applets - + Аплети - - + + Audio - Аудіо + Звук - - + + CPU ЦП - + Debug - Налагодження + Зневадження - + Filesystem Файлова система - - + + General Загальні - - + + Graphics Графіка - - - GraphicsAdvanced - ГрафікаРозширені - - - - GraphicsExtensions - - - - - Hotkeys - Гарячі клавіші - - + GraphicsAdvanced + ГрафікаДодаткові + + + + GraphicsExtra + Графіка (дод.) + + + + Hotkeys + Сполучення клавіш + + + + Controls Керування - + Profiles Профілі - + Network Мережа - - + + System Система - + Game List - Список ігор + Перелік ігор - + Web Мережа @@ -2659,7 +3045,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Storage Directories - Каталоги зберігання + Теки @@ -2669,119 +3055,208 @@ When a guest attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... SD Card - SD карта + SD-картка - + + Save Data + Дані збережень + + + Gamecard - Картридж + Ігрова картка - + Path Шлях - + Inserted - Вставлений + Вставлено - + Current Game Поточна гра - + Patch Manager Керування патчами - + Dump Decompressed NSOs - Дамп розпакованих NSO + Створити дамп розпакованих NSO - + Dump ExeFS - Дамп ExeFS + Створити дамп ExeFS - + Mod Load Root - Папка з модами + Коренева тека модів - + Dump Root - Корінь дампу + Коренева тека дампів - + Caching Кешування - + Cache Game List Metadata - Кешувати метадані списку ігор + Кешувати метадані переліку ігор - - - - + Reset Metadata Cache Скинути кеш метаданих - - - Select Emulated NAND Directory... - Виберіть папку для емульованого NAND... - - - - Select Emulated SD Directory... - Виберіть папку для емульованого SD... - - - - Select Gamecard Path... - Оберіть папку для картриджів... - - - - Select Dump Directory... - Оберіть папку для дампів... - + Select Emulated NAND Directory... + Виберіть теку для емульованої NAND-пам’яті... + + + + Select Emulated SD Directory... + Виберіть теку для емульованої SD-картки... + + + + + Select Save Data Directory... + Виберіть теку для даних збережень... + + + + Select Gamecard Path... + Виберіть теку для ігрових карток... + + + + Select Dump Directory... + Виберіть теку для дампів... + + + Select Mod Load Directory... - Оберіть папку для модів... + Виберіть теку для завантаження модів... - - The metadata cache is already empty. - Кеш метаданих вже порожній. + + Save Data Directory + Тека даних збережень - - The operation completed successfully. - Операція завершилася успішно. + + Choose an action for the save data directory: + Виберіть дію для теки даних збережень: - - The metadata cache couldn't be deleted. It might be in use or non-existent. - Кеш метаданих не можна видалити. Можливо, він використовується або відсутній. + + Set Custom Path + Встановити користувацький шлях + + + + Reset to NAND + Скинути до NAND + + + + Save data exists in both the old and new locations. + +Old: %1 +New: %2 + +Would you like to migrate saves from the old location? +WARNING: This will overwrite any conflicting saves in the new location! + Дані збережень наявні як за старим, так і за новим розташуванням. + +Старе розташування: %1 +Нове розташування: %2 + +Хочете перенести збереження зі старого розташування? +УВАГА: Ця дія перезапише всі конфліктні збереження за новим розташуванням. + + + + Would you like to migrate your save data to the new location? + +From: %1 +To: %2 + Хочете перенести дані збережень до нового розташування? + +З: %1 +До: %2 + + + + Migrate Save Data + Перенести дані збережень + + + + Migrating save data... + Перенесення даних збережень... + + + + Cancel + Скасувати + + + + + Migration Failed + Не вдалося перенести + + + + Failed to create destination directory. + Не вдалося створити цільову теку. + + + + Failed to migrate save data: +%1 + Не вдалося перенести дані збережень: +%1 + + + + Migration Complete + Перенесення завершено + + + + Save data has been migrated successfully. + +Would you like to delete the old save data? + Дані збережень успішно перенесено. + +Хочете видалити старі дані збережень? @@ -2799,28 +3274,54 @@ When a guest attempts to open the controller applet, it is immediately closed. - Linux - + External Content + Зовнішній вміст - + + Add directories to scan for DLCs and Updates without installing to NAND + Додайте теки для сканування на наявність доповнень і оновлень, не встановлюючи їх у NAND + + + + Add Directory + Додати теку + + + + Remove Selected + Вилучити вибране + + + Reset All Settings Скинути всі налаштування - yuzu - yuzu + + Eden + Eden - - eden - - - - + This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed? Це скине всі налаштування і видалить усі конфігурації під окремі ігри. При цьому не будуть видалені шляхи до ігор, профілів або профілів вводу. Продовжити? + + + Select External Content Directory... + Виберіть теку для зовнішнього вмісту... + + + + Directory Already Added + Теку вже додано + + + + This directory is already in the list. + Ця тека вже в переліку. + ConfigureGraphics @@ -2847,38 +3348,38 @@ When a guest attempts to open the controller applet, it is immediately closed. Background Color: - Фоновий колір: + Колір тла: - + % FSR sharpening percentage (e.g. 50%) % - + Off Вимкнено - + VSync Off - Верт. синхронізацію вимкнено + Вертикальну синхронізацію вимкнено - + Recommended Рекомендовано - + On Увімкнено - + VSync On - Верт. синхронізація увімкнена + Вертикальну синхронізацію увімкнено @@ -2891,12 +3392,12 @@ When a guest attempts to open the controller applet, it is immediately closed. Advanced - Розширені + Додаткові - + Advanced Graphics Settings - Розширені налаштування графіки + Додаткові налаштування графіки @@ -2904,24 +3405,38 @@ When a guest attempts to open the controller applet, it is immediately closed. Form - Форма + Форма - Extensions - + Extras + Додатково - - Vulkan Extension Settings - + + Hacks + Обхідні рішення - - While it's recommended to use state 3, some games may perform better on lower states. Setting to 0 (disabled) may also break games. -If your GPU is older (i.e. RX570/580 or older), it may not support these features. If this is the case, set the slider to 0 and uncheck all boxes. -These settings are experimental, and may cause black screens. If your games fail to boot or are stuck on a black screen, change these settings around. - + + Changing these options from their default may cause issues. Novitii cavete! + Зміна цих параметрів з їхніх стандартних значень може спричинити проблеми. Noviti cavete! + + + + Vulkan Extensions + Розширення Vulkan + + + + % + Sample Shading percentage (e.g. 50%) + % + + + + Extended Dynamic State is disabled on macOS due to MoltenVK compatibility issues that cause black screens. + Розширений динамічний стан вимкнений для macOS, осткільки проблеми із сумісністю MoltenVK спричиняють чорні екрани. @@ -2929,17 +3444,17 @@ These settings are experimental, and may cause black screens. If your games fail Hotkey Settings - Налаштування гарячих клавіш + Налаштування сполучень клавіш Hotkeys - Гарячі клавіші + Сполучення клавіш Double-click on a binding to change it. - Натисніть двічі на прив'язці, щоб змінити її. + Натисніть двічі по призначенню, щоб змінити його. @@ -2949,80 +3464,80 @@ These settings are experimental, and may cause black screens. If your games fail Restore Defaults - Відновити значення за замовчуванням. + Відновити стандартні - + Action Дія - + Hotkey - Гаряча клавіша + Сполучення клавіш - + Controller Hotkey - Гаряча клавіша контролера + Сполучення кнопок контролера - - - + + + Conflicting Key Sequence - Конфліктуюча комбінація клавіш + Конфліктна послідовність кнопок - - + + The entered key sequence is already assigned to: %1 Введена комбінація вже призначена до: %1 - + [waiting] [очікування] - + Invalid - Неприпустимо + Неправильно - + Invalid hotkey settings - + Неправильні налаштування сполучення клавіш - + An error occurred. Please report this issue on github. - + Сталася помилка. Будь ласка, повідомте про цю проблему на GitHub. - + Restore Default - Відновити значення за замовчуванням + Відновити стандартне - + Clear Очистити - + Conflicting Button Sequence - Конфліктуюче поєднання кнопок + Конфліктна послідовність кнопок - + The default button sequence is already assigned to: %1 - Типова комбінація кнопок вже призначена до: %1 + Стандартна послідовність кнопок уже призначена для: %1 - + The default key sequence is already assigned to: %1 - Типова комбінація клавіш вже призначена до: %1 + Стандартна послідовність кнопок уже призначена для: %1 @@ -3084,7 +3599,7 @@ These settings are experimental, and may cause black screens. If your games fail Advanced - Розширені + Додаткові @@ -3094,7 +3609,7 @@ These settings are experimental, and may cause black screens. If your games fail Docked - У док-станції + У докстанції @@ -3165,12 +3680,12 @@ These settings are experimental, and may cause black screens. If your games fail Connected - З'єднано + Під’єднано Defaults - За замовчуванням + Стандартні @@ -3301,12 +3816,12 @@ These settings are experimental, and may cause black screens. If your games fail Advanced - Розширені + Додаткові Debug Controller - Налагоджувальний контролер + Зневаджувальний контролер @@ -3334,33 +3849,29 @@ These settings are experimental, and may cause black screens. If your games fail Emulate Analog with Keyboard Input - Емуляція аналогового вводу з клавіатури + Емулювати аналогове введення з клавіатури - Requires restarting eden - - - - Requires restarting yuzu - Потребує перезапуску yuzu + Requires restarting Eden + Потребує перезапуску Eden Enable XInput 8 player support (disables web applet) - Увімкнути підтримку 8-ми гравців на XInput (відключає веб-аплет) + Увімкнути підтримку 8-ми гравців на XInput (вимикає вебаплет) Enable UDP controllers (not needed for motion) - Увімкнути UDP контролери (не обов'язково для руху) + Увімкнути UDP-контролери (не потрібно для руху) Controller navigation - Навігація контролера + Навігація контролером @@ -3370,17 +3881,17 @@ These settings are experimental, and may cause black screens. If your games fail Enable direct Pro Controller driver [EXPERIMENTAL] - Увімкнути прямий драйвер Pro Controller [ЕКСПЕРЕМИНТАЛЬНО] + Увімкнути прямий драйвер контролера Pro [ЕКСПЕРЕМИНТАЛЬНО] Allows unlimited uses of the same Amiibo in games that would otherwise limit you to one use. - Дозволяє необмежено використовувати один і той самий Amiibo в іграх, які зазвичай дозволяють тільки одне використання. + Дозволяє необмежене використання одного й того ж amiibo в іграх, які обмежують кількість використань. Use random Amiibo ID - Використовувати випадкове Amiibo ID + Використовувати випадковий amiibo ID @@ -3408,47 +3919,47 @@ These settings are experimental, and may cause black screens. If your games fail Player 1 Profile - Профіль 1 гравця + Профіль гравця 1 Player 2 Profile - Профіль 2 гравця + Профіль гравця 2 Player 3 Profile - Профіль 3 гравця + Профіль гравця 3 Player 4 Profile - Профіль 4 гравця + Профіль гравця 4 Player 5 Profile - Профіль 5 гравця + Профіль гравця 5 Player 6 Profile - Профіль 6 гравця + Профіль гравця 6 Player 7 Profile - Профіль 7 гравця + Профіль гравця 7 Player 8 Profile - Профіль 8 гравця + Профіль гравця 8 Use global input configuration - Використовувати глобальну конфігурацію вводу + Використовувати глобальне налаштування введення @@ -3461,17 +3972,17 @@ These settings are experimental, and may cause black screens. If your games fail Configure Input - Налаштування вводу + Налаштування введення Connect Controller - Підключити контролер + Під’єднати контролер Input Device - Пристрій вводу + Пристрій введення @@ -3495,30 +4006,19 @@ These settings are experimental, and may cause black screens. If your games fail - + Left Stick - Лівий міні-джойстик + Лівий джойстик - - - - - - - Up - Вгору - - - - - - - - - - Left - Вліво + + + + + + + Down + Униз @@ -3529,17 +4029,28 @@ These settings are experimental, and may cause black screens. If your games fail Right - Вправо + Праворуч - - - - - - - Down - Вниз + + + + + + + + Left + Ліворуч + + + + + + + + + Up + Догори @@ -3547,7 +4058,7 @@ These settings are experimental, and may cause black screens. If your games fail Pressed - Натиснення + Натиснено @@ -3584,15 +4095,7 @@ These settings are experimental, and may cause black screens. If your games fail D-Pad - Кнопки напрямків - - - - - - - SL - SL + Хрестовина @@ -3603,59 +4106,55 @@ These settings are experimental, and may cause black screens. If your games fail SR - - - - L - L + + + + + SL + SL - + ZL ZL + + + + + L + L + Minus Мінус - - - - Capture - Захоплення - - + Plus Плюс - - - Home - Home + + + + ZR + ZR - - + + R R - - - - - ZR - ZR - Motion 1 @@ -3666,6 +4165,18 @@ These settings are experimental, and may cause black screens. If your games fail Motion 2 Рух 2 + + + + Capture + Захоплення + + + + + Home + Домівка + Face Buttons @@ -3678,10 +4189,10 @@ These settings are experimental, and may cause black screens. If your games fail X - - - Y - Y + + + B + B @@ -3690,21 +4201,21 @@ These settings are experimental, and may cause black screens. If your games fail A - - - B - B + + + Y + Y - + Right Stick - Правий міні-джойстик + Правий джойстик Mouse panning - Панорамування миші + Панорамування мишею @@ -3712,244 +4223,244 @@ These settings are experimental, and may cause black screens. If your games fail Налаштувати - - - - + + + + Clear Очистити - - - - - + + + + + [not set] [не задано] - - - + + + Invert button Інвертувати кнопку - - + + Toggle button - Переключити кнопку + Перемкнути кнопку - + Turbo button - Турбо кнопка + Turbo-кнопка - - + + Invert axis - Інвертувати осі + Інвертувати вісь - - - + + + Set threshold Встановити поріг - - + + Choose a value between 0% and 100% - Оберіть значення між 0% і 100% + Виберіть значення між 0% і 100% - + Toggle axis - Переключити осі + Перемкнути вісь - + Set gyro threshold Встановити поріг гіроскопа - + Calibrate sensor Калібрувати сенсор - + Map Analog Stick - Задати аналоговий міні-джойстик + Призначити аналоговий джойстик - + After pressing OK, first move your joystick horizontally, and then vertically. To invert the axes, first move your joystick vertically, and then horizontally. - Після натискання на ОК, рухайте ваш міні-джойстик горизонтально, а потім вертикально. -Щоб інвертувати осі, спочатку рухайте ваш міні-джойстик вертикально, а потім горизонтально. + Після натискання на «ОК» рухайте джойстик горизонтально, а потім вертикально. +Щоб інвертувати осі, спочатку рухайте джойстик вертикально, а потім горизонтально. - + Center axis - Центрувати осі + Центрувати вісь - - + + Deadzone: %1% Мертва зона: %1% - - + + Modifier Range: %1% Діапазон модифікатора: %1% - - + + Pro Controller Контролер Pro - + Dual Joycons - Подвійні Joy-Con'и + Два Joy-Con’и - + Left Joycon Лівий Joy-Con - + Right Joycon Правий Joy-Con - + Handheld Портативний - + GameCube Controller Контролер GameCube - + Poke Ball Plus Poke Ball Plus - + NES Controller Контролер NES - + SNES Controller Контролер SNES - + N64 Controller Контролер N64 - + Sega Genesis Sega Genesis - + Start / Pause - Старт / Пауза + Запустити / Призупинити - + Z Z - + Control Stick - Міні-джойстик керування + Джойстик Control - + C-Stick C-Джойстик - + Shake! Потрусіть! - + [waiting] [очікування] - + New Profile Новий профіль - + Enter a profile name: - Введіть ім'я профілю: + Введіть назву профілю: + + + + + Create Input Profile + Створити профіль введення - - Create Input Profile - Створити профіль контролю - - - The given profile name is not valid! - Задане ім'я профілю недійсне! + Задана назва профілю неправильна! - + Failed to create the input profile "%1" - Не вдалося створити профіль контролю "%1" + Не вдалося створити профіль введення «%1» + + + + Delete Input Profile + Видалити профіль введення - Delete Input Profile - Видалити профіль контролю + Failed to delete the input profile "%1" + Не вдалося видалити профіль введення «%1» - - Failed to delete the input profile "%1" - Не вдалося видалити профіль контролю "%1" + + Load Input Profile + Завантажити профіль введення - Load Input Profile - Завантажити профіль контролю + Failed to load the input profile "%1" + Не вдалося завантажити профіль введення «%1» - - Failed to load the input profile "%1" - Не вдалося завантажити профіль контролю "%1" + + Save Input Profile + Зберегти профіль введення - Save Input Profile - Зберегти профіль контролю - - - Failed to save the input profile "%1" - Не вдалося зберегти профіль контролю "%1" + Не вдалося зберегти профіль введення «%1» @@ -3957,7 +4468,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Create Input Profile - Створити профіль контролю + Створити профіль введення @@ -3967,16 +4478,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Defaults - За замовчуванням - - - - ConfigureLinuxTab - - - - Linux - + Стандартні @@ -3994,7 +4496,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< UDP Calibration: - Калібрація UDP: + Калібрування UDP: @@ -4004,14 +4506,14 @@ To invert the axes, first move your joystick vertically, and then horizontally.< - + Configure Налаштувати Touch from button profile: - Торкніться з профілю кнопки: + Сенсор кнопковим профілем: @@ -4021,7 +4523,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< You may use any Cemuhook compatible UDP input source to provide motion and touch input. - Ви можете використовувати будь-яке сумісне з Cemuhook джерело UDP сигналу для руху і сенсора. + Ви можете використовувати будь-яке сумісне з Cemuhook джерело сигналу UDP для руху та сенсора. @@ -4034,113 +4536,95 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Порт: - - Learn More - Дізнатися більше - - - - + + Test Тест - + Add Server Додати сервер - + Remove Server - Видалити сервер + Вилучити сервер - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Дізнатися більше</span></a> - - - + %1:%2 %1:%2 - yuzu - yuzu + + + + + + + Eden + Eden - - <a href='https://eden-emulator.github.io/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - - - - + Port number has invalid characters - Номер порту містить неприпустимі символи + Номер порту містить неправильні символи - - - - - - - eden - - - - + Port has to be in range 0 and 65353 - Порт повинен бути в районі від 0 до 65353 + Порт повинен бути в дівпазоні 0–65353 + + + + IP address is not valid + Неправильна IP-адреса - IP address is not valid - IP-адреса недійсна + This UDP server already exists + Цей UDP-сервер уже існує - This UDP server already exists - Цей UDP сервер уже існує - - - Unable to add more than 8 servers Неможливо додати більше 8 серверів - + Testing Тестування - + Configuring Налаштування - + Test Successful Тест успішний - + Successfully received data from the server. Успішно отримано інформацію із сервера - + Test Failed Тест провалено - + Could not receive valid data from the server.<br>Please verify that the server is set up correctly and the address and port are correct. - Не вдалося отримати дійсні дані з сервера.<br>Переконайтеся, що сервер правильно налаштований, а також перевірте адресу та порт. + Не вдалося отримати правильні дані з сервера.<br>Переконайтеся, що сервер правильно налаштований і вказані правильні адреса й порт. - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. - Тест UDP або калібрація в процесі.<br>Будь ласка, зачекайте завершення. + Відбувається налаштування калібрування або тестування UDP.<br>Дочекайтеся завершення. @@ -4148,17 +4632,17 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Configure mouse panning - Налаштувати панорамування миші + Налаштування панорамування мишею Enable mouse panning - Увімкнути панорамування миші + Увімкнути панорамування мишею Can be toggled via a hotkey. Default hotkey is Ctrl + F9 - Можна перемикати гарячою клавішею. Гаряча клавіша за замовчуванням - Ctrl + F9 + Можна перемикати сполученням клавіш. Стандартне — Ctrl + F9 @@ -4187,12 +4671,12 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Deadzone counterweight - Противага мертвої зони + Противага мертвим зонам Counteracts a game's built-in deadzone - Протидія вбудованим в ігри мертвим зонам + Протидія внутрішнім мертвим зонам ігор. @@ -4202,7 +4686,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Stick decay - Повернення стіка + Ослаблення джойстика @@ -4217,7 +4701,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Default - За замовчуванням + Стандартно @@ -4229,17 +4713,17 @@ Current values are %1% and %2% respectively. Emulated mouse is enabled. This is incompatible with mouse panning. - Емуляцію миші ввімкнено. Це несумісно з панорамуванням миші. + Увімкнено емульовану мишу. Несумісно з панорамуванням мишею. Emulated mouse is enabled - Емульована мишка увімкнена + Увімкнено емульовану мишу Real mouse input and mouse panning are incompatible. Please disable the emulated mouse in input advanced settings to allow mouse panning. - Введення реальної миші та панорамування мишею несумісні. Будь ласка, вимкніть емульовану мишу в розширених налаштуваннях введення, щоб дозволити панорамування мишею. + Введення реальною мишею несумісне з панорамуванням мишею. Вимкніть емульовану мишу в додаткових налаштуваннях введення, щоб дозволити панорамування мишею. @@ -4262,12 +4746,12 @@ Current values are %1% and %2% respectively. Network Interface - Інтерфейс мережі + Мережевий інтерфейс - - None - Нічого + + Enable Airplane Mode + Увімкнути режим «У літаку» @@ -4290,12 +4774,12 @@ Current values are %1% and %2% respectively. Title ID - Ідентифікатор гри + ID проєкту Filename - Ім'я файлу + Назва файлу @@ -4320,52 +4804,57 @@ Current values are %1% and %2% respectively. Some settings are only available when a game is not running. - Деякі налаштування доступні тільки тоді, коли гру не запущено. + Деякі налаштування доступні лише коли гра не запущена. - + Add-Ons - Доповнення + Додатки - + System Система - + CPU ЦП - + Graphics Графіка - + Adv. Graphics - Розш. Графіка + Графіка (дод.) - - GPU Extensions - + + Ext. Graphics + Графіка (дод.) - + Audio - Аудіо + Звук - + Input Profiles - Профілі вводу + Профілі введення - Linux - + Network + Мережа + + + + Applets + Аплети @@ -4383,18 +4872,118 @@ Current values are %1% and %2% respectively. Add-Ons - Доповнення + Додатки - + + Import Mod from ZIP + Імпортувати мод із ZIP + + + + Import Mod from Folder + Імпортувати мод із теки + + + Patch Name Назва патчу - + Version Версія + + + Mod Install Succeeded + Мод успішно встановлено + + + + Successfully installed all mods. + Усі моди успішно встановлено. + + + + Mod Install Failed + Не вдалося встановити мод + + + + Failed to install the following mods: + %1 +Check the log for details. + Не вдалося встановити такі моди: + %1 +Перевірте журнал, щоб переглянути подробиці. + + + + Mod Folder + Тека модів + + + + Zipped Mod Location + Розташування модів у zip-архівах + + + + Zipped Archives (*.zip) + Zip-архіви (*.zip) + + + + Invalid Selection + Неправильний вибір + + + + Only mods, cheats, and patches can be deleted. +To delete NAND-installed updates, right-click the game in the game list and click Remove -> Remove Installed Update. + Будуть видалені лише моди, чити й патчі. +Щоб видалити оновлення, встановлені до NAND, натисніть правою кнопкою миші на гру в переліку ігор та виберіть «Вилучити» → «Вилучити встановлене оновлення». + + + + You are about to delete the following installed mods: + + Ви збираєтеся видалити такі встановлені моди: + + + + + +Once deleted, these can NOT be recovered. Are you 100% sure you want to delete them? + +Після видалення їхнє відновлення НЕ буде можливим. Ви на 100% впевнені, що хочете їх видалити? + + + + Delete add-on(s)? + Видалити доповнення? + + + + Successfully deleted + Успішно видалено + + + + Successfully deleted all selected mods. + Усі вибрані моди успішно видалено. + + + + &Delete + [&D] Видалити + + + + &Open in File Manager + [&O] Відкрити у файловому менеджері + ConfigureProfileManager @@ -4421,35 +5010,20 @@ Current values are %1% and %2% respectively. Username - Ім'я користувача + Ім’я користувача - - Set Image - Обрати зображення - - - + Add Додати - - Rename - Перейменувати - - - - Remove - Видалити - - - + Profile management is available only when game is not running. - Керування профілями недоступне, поки запущена гра. + Керування профілями доступне лише коли гра не запущена. - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -4457,103 +5031,83 @@ Current values are %1% and %2% respectively. %2 - - Enter Username - Введіть ім'я користувача - - - + Users Користувачі - - Enter a username for the new user: - Введіть ім'я користувача для нового профілю: - - - - Enter a new username: - Введіть нове ім'я користувача: - - - - Select User Image - Оберіть зображення користувача - - - - JPEG Images (*.jpg *.jpeg) - Зображення JPEG (*.jpg *.jpeg) - - - + Error deleting image Помилка під час видалення зображення - + Error occurred attempting to overwrite previous image at: %1. - Помилка під час спроби перезапису попереднього зображення в: %1. + Сталася помилка під час спроби перезапису попереднього зображення в: %1. - + Error deleting file Помилка під час видалення файлу - + Unable to delete existing file: %1. - Не вдалося видалити наявний файл: %1. + Неможливо видалити наявний файл: %1. - + Error creating user image directory - Помилка під час створення папки користувацьких зображень + Помилка під час створення теки користувацьких зображень - + Unable to create directory %1 for storing user images. - Не вийшло створити папку %1 для зберігання зображень користувача. + Неможливо створити теку «%1» для зберігання користувацьких зображень. - - Error copying user image - Помилка під час копіювання зображення користувача + + Error saving user image + Помилка під час збереження зображення користувача - - Unable to copy image from %1 to %2 - Не вийшло скопіювати зображення з %1 у %2 + + Unable to save image to file + Неможливо зберегти зображення до файлу - - Error resizing user image - Помилка під час зміни розміру зображення користувача + + &Edit + [&E] Редагувати - - Unable to resize image - Неможливо змінити розмір зображення + + &Delete + [&D] Видалити + + + + Edit User + Редагувати користувача ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. - Видалити цього користувача? Усі збережені дані користувача буде видалено. + Видалити цього користувача? Усі дані збережень цього користувача будуть видалені. - + Confirm Delete - Підтвердити видалення + Підтвердження видалення - + Name: %1 UUID: %2 - Ім'я: %1 + Ім’я: %1 UUID: %2 @@ -4567,24 +5121,24 @@ UUID: %2 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. - Щоб використовувати контролер Ring, налаштуйте гравця 1 як правий Joy-Con (як фізичний, так і емульований), а гравця 2 - як лівий Joy-Con (лівий фізичний і подвійний емульований) перед початком гри. + Щоб використовувати контролер Ring, перед початком гри налаштуйте гравця 1 як правий Joy-Con (фізичний і емульований), а гравця 2 - як лівий Joy-Con (лівий фізичний і обидва емульовані). Virtual Ring Sensor Parameters - Параметри датчика віртуального Ring + Параметри сенсора віртуального Ring Pull - Потягнути + Тягнути Push - Натиснути + Тиснути @@ -4603,84 +5157,84 @@ UUID: %2 - + Enable Увімкнути Ring Sensor Value - Значення датчика Ring + Значення сенсора Ring - + Not connected - Не під'єднано + Не під’єднано Restore Defaults - За замовчуванням + Відновити стандартні - + Clear Очистити - + [not set] [не задано] - + Invert axis - Інвертувати осі + Інвертувати вісь - - + + Deadzone: %1% Мертва зона: %1% - + Error enabling ring input - Помилка під час увімкнення введення кільця + Помилка під час увімкнення введення Ring - + Direct Joycon driver is not enabled - Прямий драйвер Joycon не активний + Прямий драйвер Joycon не увімкнено - + Configuring Налаштування - + The current mapped device doesn't support the ring controller - Поточний вибраний пристрій не підтримує контролер Ring - - - - The current mapped device doesn't have a ring attached - До поточного пристрою не прикріплено кільце + Поточний призначений пристрій не підтримує контролер Ring + The current mapped device doesn't have a ring attached + До поточного призначеного пристрою не додано Ring + + + The current mapped device is not connected - Поточний пристрій не під'єднано + Поточний призначений пристрій не під’єднано - + Unexpected driver result %1 - Несподіваний результат драйвера %1 + Неочікуваний результат драйвера %1 - + [waiting] [очікування] @@ -4704,9 +5258,9 @@ UUID: %2 Ядро - + Warning: "%1" is not a valid language for region "%2" - Увага: мова "%1" не підходить для регіону "%2" + Увага: мова «%1» не підходить для регіону «%2» @@ -4716,24 +5270,20 @@ UUID: %2 TAS TAS - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the yuzu website.</p></body></html> - <html><head/><body><p>Зчитує вхідні дані контролера зі скриптів у тому ж форматі, що і скрипти TAS-nx.<br/>Для більш детального пояснення зверніться до <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">сторінки допомоги</span></a> на сайті yuzu.</p></body></html> - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the eden website.</p></body></html> - + <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the user handbook.</p></body></html> + <html><head/><body><p>Зчитує введення контролера зі скриптів у однаковому з TAS-nx скриптами форматі.<br/>Для подробиць ознайомтеся з посібником користувача.</p></body></html> To check which hotkeys control the playback/recording, please refer to the Hotkey settings (Configure -> General -> Hotkeys). - Щоб перевірити, які гарячі клавіші керують відтворенням/записом, зверніться до налаштувань гарячих клавіш (Налаштування - Загальні -> Гарячі клавіші). + Щоб перевірити, які сполучення клавіш керують відтворенням/записуванням, перегляньте налаштування сполучень клавіш (Налаштування → Загальні → Сполучення клавіш). WARNING: This is an experimental feature.<br/>It will not play back scripts frame perfectly with the current, imperfect syncing method. - ПОПЕРЕДЖЕННЯ: Це експериментальна функція.<br/>Вона не буде ідеально відтворювати кадри сценаріїв за поточного недосконалого методу синхронізації. + УВАГА: Це експериментальна функція.<br/>Вона не буде запускати скрипти ідеально вчасно за поточного недосконалого методу синхронізації. @@ -4756,17 +5306,22 @@ UUID: %2 Призупинити виконання під час завантаження - - Script Directory - Папка для скриптів + + Show recording dialog + Показати діалог запису - + + Script Directory + Тека скриптів + + + Path Шлях - + ... ... @@ -4774,14 +5329,14 @@ UUID: %2 ConfigureTasDialog - + TAS Configuration Налаштування TAS - + Select TAS Load Directory... - Обрати папку завантаження TAS... + Виберіть теку завантаження TAS... @@ -4789,17 +5344,17 @@ UUID: %2 Configure Touchscreen Mappings - Налаштування відображення сенсорного екрана + Налаштування призначень сенсорного екрана Mapping: - Прив'язки: + Призначення: New - Новий + Нове @@ -4815,8 +5370,8 @@ UUID: %2 Click the bottom area to add a point, then press a button to bind. Drag points to change position, or double-click table cells to edit values. - Натисніть на нижній області, щоб додати точку, після чого натисніть кнопку для прив'язки. -Перетягніть точки, щоб змінити позицію, або натисніть двічі на комірки таблиці для зміни значень. + Натисніть на нижню область, щоб додати точку, а потім натисніть кнопку для призначення. +Перетягуйте точки, щоб змінювати позицію, або двічі натискайте на комірки таблиці, щоб змінювати значення. @@ -4848,7 +5403,7 @@ Drag points to change position, or double-click table cells to edit values. Enter the name for the new profile. - Введіть ім'я вашого нового профілю. + Введіть назву нового профілю. @@ -4883,14 +5438,10 @@ Drag points to change position, or double-click table cells to edit values.Configure Touchscreen Налаштування сенсорного екрана - - Warning: The settings in this page affect the inner workings of yuzu's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - Увага: Налаштування на цій сторінці впливають на внутрішню роботу емульованого сенсорного екрана yuzu. Їх зміна може призвести до небажаної поведінки, як часткова або повна непрацездатність сенсорного екрана. Використовуйте цю сторінку лише якщо ви знаєте, що робите. - - Warning: The settings in this page affect the inner workings of eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - + Warning: The settings in this page affect the inner workings of Eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. + Увага: Налаштування на цій сторінці впливають на внутрішню роботу емульованого сенсорного екрана Eden. Їхня зміна може спричинити небажану поведінку, як-от частково або повністю неробочий сенсорний екран. Користуйтеся цією сторінкою, лише якщо впевнені у своїх діях. @@ -4915,70 +5466,49 @@ Drag points to change position, or double-click table cells to edit values. Restore Defaults - За замовчуванням + Відновити стандартні ConfigureUI - - - + + None Нічого - - - Small (32x32) - Маленький (32х32) - - Standard (64x64) - Стандартний (64х64) - - - - Large (128x128) - Великий (128х128) - - - - Full Size (256x256) - Повнорозмірний (256х256) - - - Small (24x24) Маленький (24х24) - + Standard (48x48) Стандартний (48х48) - + Large (72x72) Великий (72х72) - + Filename - Ім'я файлу + Назва файлу - + Filetype Тип файлу - + Title ID - Ідентифікатор гри + ID проєкту - + Title Name Назва гри @@ -5003,7 +5533,7 @@ Drag points to change position, or double-click table cells to edit values. Note: Changing language will apply your configuration. - Примітка: Зміна мови призведе до застосування налаштувань. + Примітка: Змінивши мову, ви застосуєте налаштування. @@ -5018,103 +5548,98 @@ Drag points to change position, or double-click table cells to edit values. Game List - Список ігор + Перелік ігор Show Compatibility List - Показувати список сумісності + Показувати стовпчик «Сумісність» Show Add-Ons Column - Показувати стовпець доповнень + Показувати стовпчик «Додатки» Show Size Column - Показувати стовпець розміру + Показувати стовпчик «Розмір» Show File Types Column - Показувати стовпець типу файлів + Показувати стовпчик «Тип файлу» Show Play Time Column - + Показувати стовпчик «Награний час» - Game Icon Size: - Розмір іконки гри: + Folder Icon Size: + Розмір значка теки: - Folder Icon Size: - Розмір іконки папки: + Row 1 Text: + Текст 1-го рядка: - Row 1 Text: - Текст 1-го рядку: - - - Row 2 Text: - Текст 2-го рядку: + Текст 2-го рядка: - + Screenshots - Знімки екрану + Знімки екрана - + Ask Where To Save Screenshots (Windows Only) - Запитувати куди зберігати знімки екрану (Тільки для Windows) + Запитувати про місце для збереження знімка екрана (лише Windows) - + Screenshots Path: - Папка для знімків екрану: + Тека знімків екрана: - + ... ... - + TextLabel - + TextLabel - + Resolution: - Роздільна здатність: + Роздільність: - + Select Screenshots Path... - Виберіть папку для знімків екрану... + Виберіть теку знімків екрана... - + <System> <System> - + English - Українська + English - + Auto (%1 x %2, %3 x %4) Screenshot width value - + Автоматично (%1 x %2, %3 x %4) @@ -5209,176 +5734,184 @@ Drag points to change position, or double-click table cells to edit values.Web Мережа - - yuzu Web Service - Веб-сервіс yuzu - - - By providing your username and token, you agree to allow yuzu to collect additional usage data, which may include user identifying information. - Надаючи своє ім'я користувача і токен, ви погоджуєтеся дозволити yuzu збирати додаткові дані про використання, які можуть включати інформацію, що ідентифікує користувача. - - eden Web Service - + Eden Web Service + Вебслужба Eden - - By providing your username and token, you agree to allow eden to collect additional usage data, which may include user identifying information. - - - - - Verify - Підтвердити - - - - Sign up - Реєстрація - - - + Token: Токен: - + Username: - Ім'я користувача: + Ім’я користувача: - - What is my token? - Що таке токен і де його знайти? + + Generate + Згенерувати - + Web Service configuration can only be changed when a public room isn't being hosted. - Налаштування веб-служби можуть бути змінені тільки в тому випадку, коли не хоститься публічна кімната. + Налаштування вебслужби можна змінити, лише якщо не створено публічну кімнату. - Telemetry - Телеметрія - - - Share anonymous usage data with the yuzu team - Ділитися анонімною інформацією про використання з командою yuzu - - - Learn more - Дізнатися більше - - - Telemetry ID: - Ідентифікатор телеметрії: - - - Regenerate - Перегенерувати - - - + Discord Presence - Discord Presence + Присутність у Discord - + Show Current Game in your Discord Status Показувати поточну гру у вашому статусі Discord - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Дізнатися більше</span></a> - - - - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Реєстрація</span></a> - - - - <a href='https://evilperson1337.notion.site/Hosting-a-Room-Inside-of-Eden-20457c2edaf680108abac6215a79acdb'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - - - - - Warning - - - + - Verification is currently nonfunctional, instead generate a random 48-character string with only lowercase a-z. - - - - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">Що таке токен і де його знайти?</span></a> - - - Telemetry ID: 0x%1 - Ідентифікатор телеметрії: 0x%1 - - - Unspecified - Відсутній - - - Token not verified - Токен не підтверджено - - - Token was not verified. The change to your token has not been saved. - Токен не було підтверджено. Зміну вашого токена не було збережено. - - - - Unverified, please click Verify before saving configuration + All Good Tooltip - Не підтверджено, будь ласка, натисніть кнопку Підтвердити, перш ніж зберігати конфігурацію. + Усе добре - Verifying... - Підтверждення... - - - Verified + + Must be between 4-20 characters Tooltip - Підтверджено + Повинно бути в межах 4–20 символів - Verification failed + + Must be 48 characters, and lowercase a-z Tooltip - Підтверждення не було успішним - - - Verification failed - Підтверждення не було успішним - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - Підтверждення не було успішним. Переконайтеся, що ви правильно ввели свій токен і що ваше інтернет-з'єднання працює. + Повинно бути 48 символів a–z нижнього регістру ControllerDialog - + Controller P1 Контролер P1 - + &Controller P1 [&C] Контролер P1 + + DataDialog + + + Data Manager + Керування даними + + + + Deleting ANY data is IRREVERSABLE! + Видалення БУДЬ-ЯКИХ даних НЕЗВОРОТНЕ! + + + + Shaders + Шейдери + + + + UserNAND + Користувацька NAND + + + + SysNAND + Системна NAND + + + + Mods + Моди + + + + Saves + Збереження + + + + DataWidget + + + Form + Форма + + + + Tooltip + Підказка + + + + Open with your system file manager + Відкрити системним файловим менеджером + + + + Delete all data in this directory. THIS IS 100% IRREVERSABLE! + Видалити всі дані з цієї теки. ЦЕ АБСОЛЮТНО НЕЗВОРОТНО. + + + + Export all data in this directory. This may take a while! + Експортувати всі дані з цієї теки. Це може тривати певний час! + + + + Import data for this directory. This may take a while, and will delete ALL EXISTING DATA! + Імпортувати дані до цієї теки. Це може тривати певний час і видалить УСІ НАЯВНІ ДАНІ! + + + + Calculating... + Обчислення... + + + + DepsDialog + + + Eden Dependencies + Залежності Eden + + + + <html><head/><body><p><span style=" font-size:28pt;">Eden Dependencies</span></p></body></html> + <html><head/><body><p><span style=" font-size:28pt;">Залежності Eden</span></p></body></html> + + + + <html><head/><body><p>The projects that make Eden possible</p></body></html> + <html><head/><body><p>Завдяки цим проєктам став можливим Eden</p></body></html> + + + + Dependency + Залежність + + + + Version + Версія + + DirectConnect Direct Connect - Пряме підключення + Пряме з’єднання @@ -5413,7 +5946,7 @@ Drag points to change position, or double-click table cells to edit values. Connect - Підключитися + Під’єднати @@ -5421,12 +5954,12 @@ Drag points to change position, or double-click table cells to edit values. Connecting - Підключення + З’єднання Connect - Підключитися + Під’єднати @@ -5434,1801 +5967,454 @@ Drag points to change position, or double-click table cells to edit values. Username is not valid. Must be 4 to 20 alphanumeric characters. - Ім'я користувача неприпустиме. Має бути від 4 до 20 буквено-цифрових символів. + Неправильне ім’я користувача. Повинно бути від 4 до 20 альфанумеричних символів. Room name is not valid. Must be 4 to 20 alphanumeric characters. - Назва кімнати неприпустима. Має бути від 4 до 20 буквено-цифрових символів. + Неправильна назва кімнати. Повинно бути від 4 до 20 альфанумеричних символів. Username is already in use or not valid. Please choose another. - Ім'я користувача вже використовується або недійсне. Будь ласка, виберіть інше. + Ім’я користувача неправильне або вже використовується. Виберіть інше. IP is not a valid IPv4 address. - IP-адреса не є дійсною адресою IPv4. + IP не є правильною IPv4-адресою. Port must be a number between 0 to 65535. - Порт повинен бути числом від 0 до 65535. + Порт повинен бути числом в діапазоні 0–65535. You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - Ви повинні вибрати бажану гру, щоб хостити кімнату. Якщо у вашому списку ігор ще немає жодної гри, додайте папку з грою, натиснувши на значок плюса у списку ігор. + Щоб створити кімнату, потрібно вибрати бажану гру. Якщо у вашому переліку ігор порожньо, додайте теку з іграми, натиснувши мишею по значку з плюсом на екрані переліку ігор. Unable to find an internet connection. Check your internet settings. - Неможливо знайти підключення до Інтернету. Перевірте налаштування інтернету. + Не вдалося виявити з’єднання з інтернетом. Перевірте налаштування інтернету. Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - Неможливо підключитися до хоста. Перевірте правильність налаштувань підключення. Якщо під'єднання, як і раніше, неможливе, зв'яжіться з хостом кімнати та переконайтеся, що хост правильно налаштований із прокинутим зовнішнім портом. + Неможливо під’єднатися до хоста. Переконайтеся, що налаштування з’єднання правильні. Якщо однаково не вдається під’єднатися, зверніться до власника кімнати й запевніться, що зовнішній порт налаштовано правильно. Unable to connect to the room because it is already full. - Неможливо підключитися до кімнати, оскільки вона вже заповнена. + Неможливо під’єднатися до кімнати, оскільки вона заповнена. - Creating a room failed. Please retry. Restarting eden might be necessary. - + Creating a room failed. Please retry. Restarting Eden might be necessary. + Не вдалося створити кімнату. Можливо, необхілно перезапустити Eden. The host of the room has banned you. Speak with the host to unban you or try a different room. - Хост кімнати заблокував вас. Поговоріть із хостом, щоб він розблокував вас, або спробуйте іншу кімнату. + Власник кімнати вас заблокував. Зверніться до власника, щоб він вас розблокував, або спробуйте іншу кімнату. - Version mismatch! Please update to the latest version of eden. If the problem persists, contact the room host and ask them to update the server. - + Version mismatch! Please update to the latest version of Eden. If the problem persists, contact the room host and ask them to update the server. + Невідповідність версій! Оновіть Eden до останньої версії. Якщо проблема не зникне, зверніться до власника кімнати й попросіть його оновити сервер. Incorrect password. - Невірний пароль. + Неправильний пароль. An unknown error occurred. If this error continues to occur, please open an issue - Сталася невідома помилка. Якщо ця помилка продовжує виникати, будь ласка, відкрийте проблему + Сталася невідома помилка. Якщо помилка продовжить виникати, будь ласка, створіть заявку про проблему Connection to room lost. Try to reconnect. - З'єднання з кімнатою втрачено. Спробуйте підключитися знову. + Втрачено з’єднання з кімнатою. Спробуйте перепід’єднатися. You have been kicked by the room host. - Вас вигнав хост кімнати. + Вас вигнав власник кімнати. IP address is already in use. Please choose another. - IP-адреса вже використовується. Будь ласка, виберіть іншу. + IP-адреса вже використовується. Виберіть іншу. You do not have enough permission to perform this action. - У вас немає достатніх дозволів для виконання цієї дії. + У вас недостатньо прав для виконання цієї дії. The user you are trying to kick/ban could not be found. They may have left the room. - Користувача, якого ви намагаєтеся вигнати/заблокувати, не знайдено. -Можливо, вони покинули кімнату. + Не вдалося знайти користувача, якого ви намагаєтеся вигнати/заблокувати. +Можливо, користувач покинув кімнату. No valid network interface is selected. Please go to Configure -> System -> Network and make a selection. - Не вибрано припустимий інтерфейс мережі. -Будь ласка, перейдіть у Налаштування -> Система -> Мережа та зробіть вибір. + Не вибрано правильний мережевий інтерфейс. +Щоб його вибрати, перейдіть до: «Налаштувати» → «Система» → «Мережа». Error - Помилка - - - - GMainWindow - - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Anonymous data is collected</a> to help improve yuzu. <br/><br/>Would you like to share your usage data with us? - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Анонімні дані збираються для того,</a> щоб допомогти поліпшити роботу yuzu. <br/><br/>Хотіли б ви ділитися даними про використання з нами? - - - Telemetry - Телеметрія - - - - Broken Vulkan Installation Detected - Виявлено пошкоджену інсталяцію Vulkan - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - Не вдалося виконати ініціалізацію Vulkan під час завантаження.<br><br>Натисніть <a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>тут для отримання інструкцій щодо усунення проблеми</a>. - - - - Running a game - TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping - Запущено гру - - - - Loading Web Applet... - Завантаження веб-аплета... - - - - - Disable Web Applet - Вимкнути веб-аплет - - - - 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.) - Вимкнення веб-апплета може призвести до несподіваної поведінки, і його слід вимикати лише заради Super Mario 3D All-Stars. Ви впевнені, що хочете вимкнути веб-апплет? -(Його можна знову ввімкнути в налаштуваннях налагодження.) - - - - The amount of shaders currently being built - Кількість створюваних шейдерів на цей момент - - - - The current selected resolution scaling multiplier. - Поточний обраний множник масштабування роздільної здатності. - - - - Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. - Поточна швидкість емуляції. Значення вище або нижче 100% вказують на те, що емуляція йде швидше або повільніше, ніж на Switch. - - - - How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. - Кількість кадрів на секунду в цей момент. Значення буде змінюватися між іграми та сценами. - - - - 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. - Час, який потрібен для емуляції 1 кадру Switch, не беручи до уваги обмеження FPS або вертикальну синхронізацію. Для емуляції в повній швидкості значення має бути не більше 16,67 мс. - - - - Unmute - Увімкнути звук - - - - Mute - Вимкнути звук - - - - Reset Volume - Скинути гучність - - - - &Clear Recent Files - [&C] Очистити нещодавні файли - - - - &Continue - [&C] Продовжити - - - - &Pause - [&P] Пауза - - - - Warning Outdated Game Format - Попередження застарілий формат гри - - - 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.<br><br>For an explanation of the various Switch formats yuzu supports, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - Для цієї гри ви використовуєте розархівований формат ROM'а, який є застарілим і був замінений іншими, такими як NCA, NAX, XCI або NSP. У розархівованих каталогах ROM'а відсутні іконки, метадані та підтримка оновлень. <br><br>Для отримання інформації про різні формати Switch, підтримувані yuzu, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>перегляньте нашу вікі</a>. Це повідомлення більше не буде відображатися. - - - - - Error while loading ROM! - Помилка під час завантаження ROM! - - - - The ROM format is not supported. - Формат ROM'а не підтримується. - - - - An error occurred initializing the video core. - Сталася помилка під час ініціалізації відеоядра. - - - 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: <a href='https://yuzu-emu.org/help/reference/log-files/'>How to Upload the Log File</a>. - yuzu зіткнувся з помилкою під час запуску відеоядра. Зазвичай це спричинено застарілими драйверами ГП, включно з інтегрованими. Перевірте журнал для отримання більш детальної інформації. Додаткову інформацію про доступ до журналу дивіться на наступній сторінці: <a href='https://yuzu-emu.org/help/reference/log-files/'>Як завантажити файл журналу</a>. - - - - Error while loading ROM! %1 - %1 signifies a numeric error code. - Помилка під час завантаження ROM'а! %1 - - - %1<br>Please follow <a href='https://yuzu-emu.org/help/quickstart/'>the yuzu quickstart guide</a> to redump your files.<br>You can refer to the yuzu wiki</a> or the yuzu Discord</a> for help. - %1 signifies an error string. - %1<br>Будь ласка, дотримуйтесь <a href='https://yuzu-emu.org/help/quickstart/'>короткого керівництва користувача yuzu</a> щоб пере-дампити ваші файли<br>Ви можете звернутися до вікі yuzu</a> або Discord yuzu</a> для допомоги - - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://eden-emulator.github.io/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - - - - - Game Updates Warning - - - - - The game you are trying to launch is known to have performance or booting issues when updates are applied. Please try increasing the memory layout to 6GB or 8GB if any issues occur.<br><br>Press "OK" to continue launching, or "Cancel" to cancel the launch. - - - - - Don't show again for this game - - - - - 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.<br><br>For an explanation of the various Switch formats eden supports, <a href='https://eden-emulator.github.io/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - - - - - eden 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: <a href='https://eden-emulator.github.io/help/reference/log-files/'>How to Upload the Log File</a>. - - - - - %1<br>Please redump your files or ask on Discord for help. - %1 signifies an error string. - - - - - An unknown error occurred. Please see the log for more details. - Сталася невідома помилка. Будь ласка, перевірте журнал для подробиць. - - - - (64-bit) - (64-бітний) - - - - (32-bit) - (32-бітний) - - - - %1 %2 - %1 is the title name. %2 indicates if the title is 64-bit or 32-bit - %1 %2 - - - - Closing software... - Закриваємо програму... - - - - Save Data - Збереження - - - - Mod Data - Дані модів - - - - Error Opening %1 Folder - Помилка під час відкриття папки %1 - - - - - Folder does not exist! - Папка не існує! - - - - Error Opening Transferable Shader Cache - Помилка під час відкриття переносного кешу шейдерів - - - - Failed to create the shader cache directory for this title. - Не вдалося створити папку кешу шейдерів для цієї гри. - - - - Error Removing Contents - Помилка під час видалення вмісту - - - - Error Removing Update - Помилка під час видалення оновлень - - - - Error Removing DLC - Помилка під час видалення DLC - - - - Remove Installed Game Contents? - Видалити встановлений вміст ігор? - - - - Remove Installed Game Update? - Видалити встановлені оновлення гри? - - - - Remove Installed Game DLC? - Видалити встановлені DLC гри? - - - - Remove Entry - Видалити запис - - - - - - - - - Successfully Removed - Успішно видалено - - - - Successfully removed the installed base game. - Встановлену гру успішно видалено. - - - - The base game is not installed in the NAND and cannot be removed. - Гру не встановлено в NAND і не може буде видалено. - - - - Successfully removed the installed update. - Встановлене оновлення успішно видалено. - - - - There is no update installed for this title. - Для цієї гри не було встановлено оновлення. - - - - There are no DLC installed for this title. - Для цієї гри не було встановлено DLC. - - - - Successfully removed %1 installed DLC. - Встановлений DLC %1 було успішно видалено - - - - Delete OpenGL Transferable Shader Cache? - Видалити переносний кеш шейдерів OpenGL? - - - - Delete Vulkan Transferable Shader Cache? - Видалити переносний кеш шейдерів Vulkan? - - - - Delete All Transferable Shader Caches? - Видалити весь переносний кеш шейдерів? - - - - Remove Custom Game Configuration? - Видалити користувацьке налаштування гри? - - - - Remove Cache Storage? - Видалити кеш-сховище? - - - - Remove File - Видалити файл - - - - Remove Play Time Data - - - - - Reset play time? - - - - - - Error Removing Transferable Shader Cache - Помилка під час видалення переносного кешу шейдерів - - - - - A shader cache for this title does not exist. - Кеш шейдерів для цієї гри не існує. - - - - Successfully removed the transferable shader cache. - Переносний кеш шейдерів успішно видалено. - - - - Failed to remove the transferable shader cache. - Не вдалося видалити переносний кеш шейдерів. - - - - Error Removing Vulkan Driver Pipeline Cache - Помилка під час видалення конвеєрного кешу Vulkan - - - - Failed to remove the driver pipeline cache. - Не вдалося видалити конвеєрний кеш шейдерів. - - - - - Error Removing Transferable Shader Caches - Помилка під час видалення переносного кешу шейдерів - - - - Successfully removed the transferable shader caches. - Переносний кеш шейдерів успішно видалено. - - - - Failed to remove the transferable shader cache directory. - Помилка під час видалення папки переносного кешу шейдерів. - - - - - Error Removing Custom Configuration - Помилка під час видалення користувацького налаштування - - - - A custom configuration for this title does not exist. - Користувацьких налаштувань для цієї гри не існує. - - - - Successfully removed the custom game configuration. - Користувацьке налаштування гри успішно видалено. - - - - Failed to remove the custom game configuration. - Не вдалося видалити користувацьке налаштування гри. - - - - - RomFS Extraction Failed! - Не вдалося вилучити RomFS! - - - - There was an error copying the RomFS files or the user cancelled the operation. - Сталася помилка під час копіювання файлів RomFS або користувач скасував операцію. - - - - Full - Повний - - - - Skeleton - Скелет - - - - Select RomFS Dump Mode - Виберіть режим дампа RomFS - - - - Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. - Будь ласка, виберіть, як ви хочете виконати дамп RomFS <br>Повний скопіює всі файли в нову папку, тоді як <br>скелет створить лише структуру папок. - - - - There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root - В %1 недостатньо вільного місця для вилучення RomFS. Будь ласка, звільніть місце або виберіть іншу папку для дампа в Емуляція > Налаштування > Система > Файлова система > Корінь дампа - - - - Extracting RomFS... - Вилучення RomFS... - - - - - - - - Cancel - Скасувати - - - - RomFS Extraction Succeeded! - Вилучення RomFS пройшло успішно! - - - - - - The operation completed successfully. - Операція завершилася успішно. - - - - Integrity verification couldn't be performed! - - - - - File contents were not checked for validity. - - - - - - Verifying integrity... - - - - - - Integrity verification succeeded! - - - - - - Integrity verification failed! - - - - - File contents may be corrupt. - - - - - - - - Create Shortcut - Створити ярлик - - - - Do you want to launch the game in fullscreen? - - - - - Successfully created a shortcut to %1 - Успішно створено ярлик у %1 - - - - This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - Це створить ярлик для поточного AppImage. Він може не працювати після оновлень. Продовжити? - - - - Failed to create a shortcut to %1 - - - - - Create Icon - Створити іконку - - - - Cannot create icon file. Path "%1" does not exist and cannot be created. - Неможливо створити файл іконки. Шлях "%1" не існує і не може бути створений. - - - - Error Opening %1 - Помилка відкриття %1 - - - - Select Directory - Обрати папку - - - - Properties - Властивості - - - - The game properties could not be loaded. - Не вдалося завантажити властивості гри. - - - - Switch Executable (%1);;All Files (*.*) - %1 is an identifier for the Switch executable file extensions. - Виконуваний файл Switch (%1);;Усі файли (*.*) - - - - Load File - Завантажити файл - - - - Open Extracted ROM Directory - Відкрити папку вилученого ROM'а - - - - Invalid Directory Selected - Вибрано неприпустиму папку - - - - The directory you have selected does not contain a 'main' file. - Папка, яку ви вибрали, не містить файлу 'main'. - - - - Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - Встановлюваний файл Switch (*.nca, *.nsp, *.xci);;Архів контенту Nintendo (*.nca);;Пакет подачі Nintendo (*.nsp);;Образ картриджа NX (*.xci) - - - - Install Files - Встановити файли - - - - %n file(s) remaining - - Залишився %n файл - Залишилося %n файл(ів) - Залишилося %n файл(ів) - - - - - Installing file "%1"... - Встановлення файлу "%1"... - - - - - Install Results - Результати встановлення - - - - To avoid possible conflicts, we discourage users from installing base games to the NAND. -Please, only use this feature to install updates and DLC. - Щоб уникнути можливих конфліктів, ми не рекомендуємо користувачам встановлювати ігри в NAND. -Будь ласка, використовуйте цю функцію тільки для встановлення оновлень і завантажуваного контенту. - - - - %n file(s) were newly installed - - - %n файл було нещодавно встановлено - - %n файл(ів) було нещодавно встановлено - - %n файл(ів) було нещодавно встановлено - - - - - - %n file(s) were overwritten - - - %n файл було перезаписано - - %n файл(ів) було перезаписано - - %n файл(ів) було перезаписано - - - - - - %n file(s) failed to install - - - %n файл не вдалося встановити - - %n файл(ів) не вдалося встановити - - %n файл(ів) не вдалося встановити - - - - - - System Application - Системний додаток - - - - System Archive - Системний архів - - - - System Application Update - Оновлення системного додатку - - - - Firmware Package (Type A) - Пакет прошивки (Тип А) - - - - Firmware Package (Type B) - Пакет прошивки (Тип Б) - - - - Game - Гра - - - - Game Update - Оновлення гри - - - - Game DLC - DLC до гри - - - - Delta Title - Дельта-титул - - - - Select NCA Install Type... - Виберіть тип установки NCA... - - - - Please select the type of title you would like to install this NCA as: -(In most instances, the default 'Game' is fine.) - Будь ласка, виберіть тип додатку, який ви хочете встановити для цього NCA: -(У більшості випадків, підходить стандартний вибір "Гра".) - - - - Failed to Install - Помилка встановлення - - - - The title type you selected for the NCA is invalid. - Тип додатку, який ви вибрали для NCA, недійсний. - - - - File not found - Файл не знайдено - - - - File "%1" not found - Файл "%1" не знайдено - - - - OK - ОК - - - - - Hardware requirements not met - Не задоволені системні вимоги - - - - - Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled. - Ваша система не відповідає рекомендованим системним вимогам. Звіти про сумісність було вимкнено. - - - - Missing yuzu Account - Відсутній обліковий запис yuzu - - - - In order to submit a game compatibility test case, you must link your eden account.<br><br/>To link your eden account, go to Emulation &gt; Configuration &gt; Web. - - - - - Install decryption keys and restart eden before attempting to install firmware. - - - - - Firmware installation cancelled, firmware may be in bad state, restart eden or re-install firmware. - - - - - Encryption keys are missing. - - - - - Are you sure you want to close eden? - - - - - - - eden - - - - - The currently running application has requested eden to not exit. - -Would you like to bypass this and exit anyway? - - - - In order to submit a game compatibility test case, you must link your yuzu account.<br><br/>To link your yuzu account, go to Emulation &gt; Configuration &gt; Web. - Щоб надіслати звіт про сумісність гри, необхідно прив'язати свій обліковий запис yuzu. <br><br/>Щоб прив'язати свій обліковий запис yuzu, перейдіть у розділ Емуляція &gt; Параметри &gt; Мережа. - - - - Error opening URL - Помилка під час відкриття URL - - - - Unable to open the URL "%1". - Не вдалося відкрити URL: "%1". - - - - TAS Recording - Запис TAS - - - - Overwrite file of player 1? - Перезаписати файл гравця 1? - - - - Invalid config detected - Виявлено неприпустиму конфігурацію - - - - Handheld controller can't be used on docked mode. Pro controller will be selected. - Портативний контролер не може бути використаний у режимі док-станції. Буде обрано контролер Pro. - - - - - Amiibo - Amiibo - - - - - The current amiibo has been removed - Поточний amiibo було прибрано - - - - Error Помилка - - - - The current game is not looking for amiibos - Поточна гра не шукає amiibo - - - - Amiibo File (%1);; All Files (*.*) - Файл Amiibo (%1);; Всі Файли (*.*) - - - - Load Amiibo - Завантажити Amiibo - - - - Error loading Amiibo data - Помилка під час завантаження даних Amiibo - - - - The selected file is not a valid amiibo - Обраний файл не є допустимим amiibo - - - - The selected file is already on use - Обраний файл уже використовується - - - - An unknown error occurred - Виникла невідома помилка - - - - - Verification failed for the following files: - -%1 - - - - - Keys not installed - - - - - Select Dumped Firmware Source Location - - - - - Installing Firmware... - - - - - - - - Firmware install failed - - - - - Unable to locate potential firmware NCA files - - - - - Failed to delete one or more firmware file. - - - - - One or more firmware files failed to copy into NAND. - - - - - Firmware integrity verification failed! - - - - - Select Dumped Keys Location - - - - - - - Decryption Keys install failed - - - - - prod.keys is a required decryption key file. - - - - - One or more keys failed to copy. - - - - - Decryption Keys install succeeded - - - - - Decryption Keys were successfully installed - - - - - Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. - - - - - - - - - - - No firmware available - - - - - Please install the firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Controller Menu. - - - - - Controller Applet - Аплет контролера - - - - Controller Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Home Menu. - - - - - - Home Menu Applet - - - - - - Home Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use Starter. - - - - - Starter Applet - - - - - Starter is not available. Please reinstall firmware. - - - - - Please install firmware to use the home menu. - - - - - Capture Screenshot - Зробити знімок екрану - - - - PNG Image (*.png) - Зображення PNG (*.png) - - - - Update Available - - - - - Update %1 for Eden is available. -Would you like to download it? - - - - - TAS state: Running %1/%2 - Стан TAS: Виконується %1/%2 - - - - TAS state: Recording %1 - Стан TAS: Записується %1 - - - - TAS state: Idle %1/%2 - Стан TAS: Простий %1/%2 - - - - TAS State: Invalid - Стан TAS: Неприпустимий - - - - &Stop Running - [&S] Зупинка - - - - &Start - [&S] Почати - - - - Stop R&ecording - [&E] Закінчити запис - - - - R&ecord - [&E] Запис - - - - Building: %n shader(s) - - Побудова: %n шейдер - Побудова: %n шейдер(ів) - Побудова: %n шейдер(ів) - - - - - Scale: %1x - %1 is the resolution scaling factor - Масштаб: %1x - - - - Speed: %1% / %2% - Швидкість: %1% / %2% - - - - Speed: %1% - Швидкість: %1% - - - Game: %1 FPS (Unlocked) - Гра: %1 FPS (Необмежено) - - - - Game: %1 FPS - Гра: %1 FPS - - - - Frame: %1 ms - Кадр: %1 мс - - - - %1 %2 - %1 %2 - - - - - FSR - FSR - - - - NO AA - БЕЗ ЗГЛАДЖУВАННЯ - - - - VOLUME: MUTE - ГУЧНІСТЬ: ЗАГЛУШЕНА - - - - VOLUME: %1% - Volume percentage (e.g. 50%) - ГУЧНІСТЬ: %1% - - - - Derivation Components Missing - Компоненти розрахунку відсутні - - - - Select RomFS Dump Target - Оберіть ціль для дампа RomFS - - - - Please select which RomFS you would like to dump. - Будь ласка, виберіть, який RomFS ви хочете здампити. - - - Are you sure you want to close yuzu? - Ви впевнені, що хочете закрити yuzu? - - - yuzu - yuzu - - - - Are you sure you want to stop the emulation? Any unsaved progress will be lost. - Ви впевнені, що хочете зупинити емуляцію? Будь-який незбережений прогрес буде втрачено. - - - The currently running application has requested yuzu to not exit. - -Would you like to bypass this and exit anyway? - Запущений на даний момент додаток просить yuzu не завершувати роботу. - -Чи хочете ви обійти це і вийти в будь-якому випадку? - - - - None - Вимкнено - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Nearest - Найближчий - - - - Bilinear - Білінійне - - - - Bicubic - Бікубічне - - - - Gaussian - Гауса - - - - ScaleForce - ScaleForce - - - - Area - - - - - Docked - У док-станції - - - - Handheld - Портативний - - - - Normal - Нормальна - - - - High - Висока - - - - Extreme - Екстрим - - - - Vulkan - Vulkan - - - - OpenGL - OpenGL - - - - Null - Null - - - - GLSL - GLSL - - - - GLASM - GLASM - - - - SPIRV - SPIRV - GRenderWindow - - + + OpenGL not available! OpenGL недоступний! - + OpenGL shared contexts are not supported. - Загальні контексти OpenGL не підтримуються. + Спільні контексти OpenGL не підтримуються. - yuzu has not been compiled with OpenGL support. - yuzu не було зібрано з підтримкою OpenGL. + + Eden has not been compiled with OpenGL support. + Eden не скомпільовано з підтримкою OpenGL. - - eden has not been compiled with OpenGL support. - - - - - + + Error while initializing OpenGL! Помилка під час ініціалізації OpenGL! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. - Ваш ГП може не підтримувати OpenGL, або у вас встановлено застарілий графічний драйвер. + Ваш ГП може не підтримувати OpenGL або у вас встановлено застарілий графічний драйвер. - + Error while initializing OpenGL 4.6! Помилка під час ініціалізації OpenGL 4.6! - + Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 - Ваш ГП може не підтримувати OpenGL 4.6, або у вас встановлено застарілий графічний драйвер.<br><br>Рендерер GL:<br>%1 + Ваш ГП може не підтримувати OpenGL 4.6 або у вас встановлено застарілий графічний драйвер.<br><br>Візуалізатор GL:<br>%1 - + Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2 - Ваш ГП може не підтримувати одне або кілька необхідних розширень OpenGL. Будь ласка, переконайтеся в тому, що у вас встановлено останній графічний драйвер.<br><br>Рендерер GL:<br>%1<br><br>Розширення, що не підтримуються:<br>%2 + Ваш ГП може не підтримувати одне або кілька розширень, необхідних для OpenGL. Переконайтеся, що у вас встановлено останній графічний драйвер.<br><br>Візуалізатор GL:<br>%1<br><br>Непідтримувані розширення:<br>%2 GameList - + + &Add New Game Directory + [&A] Додати нову теку з іграми + + + Favorite Улюблені - + Start Game Запустити гру - + Start Game without Custom Configuration Запустити гру без користувацького налаштування - + Open Save Data Location - Відкрити папку для збережень + Відкрити теку з даними збережень - + Open Mod Data Location - Відкрити папку для модів + Відкрити теку модів - + Open Transferable Pipeline Cache - Відкрити переносний кеш конвеєра + Відкрити переміщуваний кеш конвеєра - + + Link to Ryujinx + Під’єднати до Ryujinx + + + Remove - Видалити + Вилучити - + Remove Installed Update - Видалити встановлене оновлення + Вилучити встановлене оновлення - + Remove All Installed DLC - Видалити усі DLC + Вилучити всі доповнення - + Remove Custom Configuration - Видалити користувацьке налаштування + Вилучити користувацьке налаштування - - Remove Play Time Data - - - - + Remove Cache Storage - Видалити кеш-сховище + Вилучити сховище кешу - + Remove OpenGL Pipeline Cache - Видалити кеш конвеєра OpenGL + Вилучити кеш конвеєра OpenGL - + Remove Vulkan Pipeline Cache - Видалити кеш конвеєра Vulkan + Вилучити кеш конвеєра Vulkan - + Remove All Pipeline Caches - Видалити весь кеш конвеєра + Вилучити всі кеші конвеєра - + Remove All Installed Contents - Видалити весь встановлений вміст + Вилучити весь встановлений вміст - - + + Manage Play Time + Керувати награним часом + + + + Edit Play Time Data + Редагувати награний час + + + + Remove Play Time Data + Вилучити дані награного часу + + + + Dump RomFS - Дамп RomFS + Створити дамп RomFS - + Dump RomFS to SDMC - Здампити RomFS у SDMC + Створити дамп RomFS у SDMC - + Verify Integrity - + Перевірити цілісність - + Copy Title ID to Clipboard - Скопіювати ідентифікатор додатку в буфер обміну + Скопіювати ID проєкту до буфера обміну - + Navigate to GameDB entry - Перейти до сторінки GameDB + Перейти до запису GameDB - + Create Shortcut Створити ярлик - + Add to Desktop - Додати на Робочий стіл + Додати до стільниці - + Add to Applications Menu Додати до меню застосунків - + Configure Game - + Налаштувати гру - Properties - Властивості - - - + Scan Subfolders - Сканувати підпапки + Сканувати підтеки - + Remove Game Directory - Видалити директорію гри + Вилучити теку гри - + ▲ Move Up ▲ Перемістити вверх - + ▼ Move Down ▼ Перемістити вниз - + Open Directory Location - Відкрити розташування папки + Відкрити розташування теки - + Clear Очистити - + Name Назва - + Compatibility Сумісність - + Add-ons - Доповнення + Додатки - + File type Тип файлу - + Size Розмір - + Play time - + Награний час GameListItemCompat - + Ingame Запускається - + Game starts, but crashes or major glitches prevent it from being completed. - Гра запускається, але вильоти або серйозні баги не дають змоги її завершити. + Гра запускається, але збої або серйозні баги перешкоджають її успішному проходженню. - + Perfect Ідеально - + Game can be played without issues. У гру можна грати без проблем. - + Playable - Придатно до гри + Придатна до гри - + Game functions with minor graphical or audio glitches and is playable from start to finish. - Гра працює з незначними графічними та/або звуковими помилками і прохідна від початку до кінця. + Гра має незначні графічні або звукові проблеми, але її можна пройти від початку до кінця. - + Intro/Menu - Вступ/Меню + Вступ/меню - + Game loads, but is unable to progress past the Start Screen. - Гра завантажується, але не проходить далі стартового екрана. + Гра завантажується, але не може просунутися далі стартового екрана. - + Won't Boot Не запускається - + The game crashes when attempting to startup. - Гра вилітає під час запуску. + Під час спроби запуску гри відбувається збій. - + Not Tested - Не перевірено + Не протестовано - + The game has not yet been tested. - Гру ще не перевіряли на сумісність. + Гру ще не протестовано. GameListPlaceholder - + Double-click to add a new folder to the game list - Натисніть двічі, щоб додати нову папку до списку ігор + Натисніть двічі, щоб додати нову теку до переліку ігор GameListSearchField - + %1 of %n result(s) - - %1 із %n результат(ів) - %1 із %n результат(ів) - %1 із %n результат(ів) - + %1 із %n результату%1 із %n результатів%1 із %n результатів%1 із %n результатів - + Filter: - Пошук: + Фільтр: - + Enter pattern to filter - Введіть текст для пошуку + Введіть шаблон для фільтрування @@ -7246,7 +6432,7 @@ Would you like to bypass this and exit anyway? Preferred Game - Переважна гра + Бажана гра @@ -7256,7 +6442,7 @@ Would you like to bypass this and exit anyway? Username - Ім'я користувача + Ім’я користувача @@ -7281,7 +6467,7 @@ Would you like to bypass this and exit anyway? Load Previous Ban List - Завантажити попередній список заблокованих + Завантажити попередній список заблокованих користувачів @@ -7302,244 +6488,253 @@ Would you like to bypass this and exit anyway? HostRoomWindow - + Error Помилка - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. + + Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid Eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. Debug Message: - - - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid yuzu account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. -Debug Message: - Не вдалося оголосити кімнату в публічному фойє. Щоб хостити публічну кімнату, у вас має бути діючий обліковий запис yuzu, налаштований в Емуляція -> Налаштування -> Мережа. Якщо ви не хочете оголошувати кімнату в публічному лобі, виберіть замість цього прихований тип. -Повідомлення налагодження: + Не вдалося анонсувати кімнату в публічному лобі. Щоб створити лобі публічно, вам потрібно правильно налаштувати обліковий запис Eden у: «Емуляція» → «Налаштувати» → «Мережа». Виберіть «Прихована», якщо ви не хочете публікувати кімнату в публічному лобі. +Повідомлення для зневадження: Hotkeys - + Audio Mute/Unmute - Увімкнення/вимкнення звуку + Увімкнути/вимкнути звук - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Main Window Основне вікно - + Audio Volume Down - Зменшити гучність звуку + Зменшити гучність - + Audio Volume Up - Підвищити гучність звуку + Збільшити гучність - + Capture Screenshot - Зробити знімок екрану + Зробити знімок екрана - + Change Adapting Filter - Змінити адаптуючий фільтр + Змінити фільтр адаптації - + Change Docked Mode Змінити режим консолі - - Change GPU Accuracy - Змінити точність ГП + + Change GPU Mode + Змінити режим ГП - + Configure - Налаштувати + Налаштувати - + Configure Current Game - + Налаштувати поточну гру - + Continue/Pause Emulation - Продовження/Пауза емуляції + Продовжити/призупинити емуляцію - + Exit Fullscreen Вийти з повноекранного режиму - Exit yuzu - Вийти з yuzu + + Exit Eden + Вийти з Eden - - Exit eden - - - - + Fullscreen - Повний екран + Повноекранний режим - + Load File Завантажити файл - + Load/Remove Amiibo - Завантажити/видалити Amiibo + Завантажити/вилучити amiibo - - Multiplayer Browse Public Game Lobby - + + Browse Public Game Lobby + Переглянути публічні ігрові лобі - - Multiplayer Create Room - + + Create Room + Створити кімнату - - Multiplayer Direct Connect to Room - + + Direct Connect to Room + Пряме з’єднання з кімнатою - - Multiplayer Leave Room - + + Leave Room + Покинути кімнату - - Multiplayer Show Current Room - + + Show Current Room + Показати поточну кімнату - + Restart Emulation Перезапустити емуляцію - + Stop Emulation Зупинити емуляцію - + TAS Record Запис TAS - + TAS Reset - Скидання TAS + Скинути TAS - + TAS Start/Stop - Старт/Стоп TAS + Запустити/призупинити TAS - + Toggle Filter Bar - Переключити панель пошуку + Перемкнути панель фільтру - + Toggle Framerate Limit - Переключити обмеження частоти кадрів + Перемкнути обмеження частоти кадрів - + + Toggle Turbo Speed + Перемкнути «Прискорення» + + + + Toggle Slow Speed + Перемкнути «Сповільнення» + + + Toggle Mouse Panning - Переключити панорамування миші + Перемкнути панорамування мишею - + Toggle Renderdoc Capture - + Перемкнути захоплення Renderdoc - + Toggle Status Bar - Переключити панель стану + Перемкнути панель стану + + + + Toggle Performance Overlay + Перемкнути оверлей продуктивності InstallDialog - - - Please confirm these are the files you wish to install. - Будь ласка, переконайтеся, що це ті файли, які ви хочете встановити. - - Installing an Update or DLC will overwrite the previously installed one. - Встановлення оновлення або завантажуваного контенту перезапише раніше встановлене. + Please confirm these are the files you wish to install. + Підтвердьте, що це ті файли, які ви хочете встановити. - + + Installing an Update or DLC will overwrite the previously installed one. + Встановлення оновлення або доповнення перезапише те, що було встановлено раніше. + + + Install Встановити - + Install Files to NAND - Встановити файли в NAND + Встановити файли до NAND LimitableInputDialog - - The text can't contain any of the following characters: + + The text can't contain any of the following characters: %1 - У тексті неприпустимі такі символи: + Текст не може містити будь-які з таких символів: %1 @@ -7548,35 +6743,35 @@ Debug Message: Loading Shaders 387 / 1628 - Завантаження шейдерів 387 / 1628 + Завантаження шейдерів: 387 / 1628 Loading Shaders %v out of %m - Завантаження шейдерів %v із %m + Завантаження шейдерів: %v із %m Estimated Time 5m 4s - Залишилося приблизно 5м 4с + Залишилося приблизно 5 хв 4 с - + Loading... Завантаження... - + Loading Shaders %1 / %2 - Завантаження шейдерів %1 / %2 + Завантаження шейдерів: %1 / %2 - + Launching... Запуск... - + Estimated Time %1 Залишилося приблизно %1 @@ -7586,7 +6781,7 @@ Debug Message: Public Room Browser - Браузер публічних кімнат + Перегляд публічних кімнат @@ -7607,7 +6802,7 @@ Debug Message: Games I Own - Ігри, якими я володію + Мої ігри @@ -7622,47 +6817,47 @@ Debug Message: Refresh Lobby - Оновити фойє + Оновити лобі - + Password Required to Join - Для входу необхідний пароль + Для входу потрібен пароль - + Password: Пароль: - + Players Гравці - + Room Name Назва кімнати - + Preferred Game - Переважна гра + Бажана гра - + Host - Хост + Власник - + Refreshing Оновлення - + Refresh List - Оновити список + Оновити перелік @@ -7683,362 +6878,1456 @@ Debug Message: [&R] Нещодавні файли - + + Open &Eden Folders + [&E] Відкрити теки Eden + + + &Emulation [&E] Емуляція - + &View [&V] Вигляд - + &Reset Window Size [&R] Скинути розмір вікна - + &Debugging - [&D] Налагодження + [&D] Зневадження - + + &Game List Mode + [&G] Режим переліку ігор + + + + Game &Icon Size + [&I] Розмір значків ігор + + + Reset Window Size to &720p - Скинути розмір вікна до &720p + [&7] Скинути розмір вікна до 720p - + Reset Window Size to 720p Скинути розмір вікна до 720p - + Reset Window Size to &900p - Скинути розмір вікна до &900p + [&9] Скинути розмір вікна до 900p - + Reset Window Size to 900p Скинути розмір вікна до 900p - + Reset Window Size to &1080p - Скинути розмір вікна до &1080p + [&1] Скинути розмір вікна до 1080p - + Reset Window Size to 1080p Скинути розмір вікна до 1080p - + &Multiplayer - [&M] Мультиплеєр + [&M] Багатоосібна гра - + &Tools [&T] Інструменти - - &Amiibo - + + Am&iibo + [&I] Amiibo - + + Launch &Applet + [&A] Запустити аплет + + + &TAS [&T] TAS - + &Create Home Menu Shortcut - + [&C] Створити ярлик меню-домівки - + + Install &Firmware + [&F] Встановити прошивку + + + &Help [&H] Допомога - + &Install Files to NAND... - [&I] Встановити файли в NAND... + [&I] Встановити файли до NAND... - + L&oad File... [&O] Завантажити файл... - - - Load &Folder... - [&F] Завантажити папку... - - - - E&xit - [&X] Вихід - - - - &Pause - [&P] Пауза - - - - &Stop - [&S] Стоп - - - - &Verify Installed Contents - - - - - &About eden - - - - - Open &eden Folder - - - - - Open Home Menu - - - - - &Discord - - - - - Open &Setup - - - - - &Desktop - - - - - &Application Menu - - - - &About yuzu - [&A] Про yuzu - - Single &Window Mode - [&W] Режим одного вікна + Load &Folder... + [&F] Завантажити теку... + E&xit + [&X] Вийти + + + + + &Pause + [&P] Призупинити + + + + &Stop + [&S] Зупинити + + + + &Verify Installed Contents + [&V] Перевірити встановлений вміст + + + + &About Eden + [&A] Про Eden + + + + Single &Window Mode + [&W] Одновіконний режим + + + Con&figure... - [&F] Налаштування... + [&F] Налаштувати... - + Ctrl+, - + Ctrl+, - - Display D&ock Widget Headers - [&O] Відображати заголовки віджетів дока + + Enable Overlay Display Applet + Увімкнути аплет показу оверлея - + Show &Filter Bar - [&F] Показати панель пошуку + [&F] Показати панель фільтрування - + Show &Status Bar - [&S] Показати панель статусу + [&S] Показати панель стану - + Show Status Bar - Показати панель статусу + Показати панель стану - + &Browse Public Game Lobby - [&B] Переглянути публічні ігрові фойє + [&B] Переглянути публічні ігрові лобі - + &Create Room [&C] Створити кімнату - + &Leave Room - [&L] Залишити кімнату + [&L] Покинути кімнату - + &Direct Connect to Room - [&D] Пряме під'єднання до кімнати + [&D] Пряме з’єднання з кімнатою - + &Show Current Room [&S] Показати поточну кімнату - + F&ullscreen [&U] Повноекранний - + &Restart [&R] Перезапустити - + Load/Remove &Amiibo... - [&A] Завантажити/Видалити Amiibo... + [&A] Завантажити/вилучити amiibo... - + &Report Compatibility [&R] Повідомити про сумісність - + Open &Mods Page [&M] Відкрити сторінку модів - + Open &Quickstart Guide [&Q] Відкрити посібник користувача - + &FAQ - [&F] ЧАП + [&F] ЧаПи - Open &yuzu Folder - [&Y] Відкрити папку yuzu - - - + &Capture Screenshot - [&C] Зробити знімок екрану + [&C] Зробити знімок екрана - - Open &Album - + + &Album + [&A] Альбом - + &Set Nickname and Owner - + [&S] Указати псевдонім і власника - + &Delete Game Data - + [&D] Видалити дані гри - + &Restore Amiibo - + [&R] Відновити amiibo - + &Format Amiibo - + [&F] Форматувати amiibo - - Open &Mii Editor - + + &Mii Editor + [&M] Редактор Mii - + &Configure TAS... - [&C] Налаштування TAS... + [&C] Налаштувати TAS... - + Configure C&urrent Game... [&U] Налаштувати поточну гру... - + + &Start - [&S] Почати + [&S] Запустити - + &Reset [&S] Скинути - + + R&ecord [&E] Запис - + Open &Controller Menu - + [&C] Відкрити меню контролерів - - Install Firmware - + + Install Decryption &Keys + [&K] Встановити ключі дешифрування - - Install Decryption Keys - + + &Home Menu + [&H] Меню-домівка - - - MicroProfileDialog - - &MicroProfile - [&M] MicroProfile + + &Desktop + [&D] Стільниця + + + + &Application Menu + [&A] Меню застосунків + + + + &Root Data Folder + [&R] Коренева тека даних + + + + &NAND Folder + [&N] Тека NAND + + + + &SDMC Folder + [&S] Тека SDMC + + + + &Mod Folder + [&M] Тека модів + + + + &Log Folder + [&L] Тека журналу + + + + From Folder + З теки + + + + From ZIP + Із ZIP + + + + &Eden Dependencies + [&E] Залежності Eden + + + + &Data Manager + [&D] Керування даними + + + + &Tree View + [&T] Дерево вибору + + + + &Grid View + [&G] Таблиця + + + + Game Icon Size + Розмір значків ігор + + + + + + None + Жодного + + + + Show Game &Name + [&N] Показати назву гри + + + + Show &Performance Overlay + [&P] Показати оверлей продуктивності + + + + Small (32x32) + Маленький (32х32) + + + + Standard (64x64) + Стандартний (64х64) + + + + Large (128x128) + Великий (128х128) + + + + Full Size (256x256) + Повнорозмірний (256х256) + + + + Broken Vulkan Installation Detected + Виявлено пошкоджене встановлення Vulkan + + + + Vulkan initialization failed during boot. + Не вдалося ініціалізувати Vulkan під час запуску. + + + + Running a game + TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping + Запущено гру + + + + Loading Web Applet... + Завантаження вебаплета... + + + + + Disable Web Applet + Вимкнути вебаплет + + + + 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.) + Вимкнення вебапплета може призвести до несподіваної поведінки, і це слід робити лише для Super Mario 3D All-Stars. Ви впевнені, що хочете вимкнути вебапплет? +(Його можна знову увімкнути в налаштуваннях зневадження.) + + + + The amount of shaders currently being built + Кількість наразі створених шейдерів + + + + The current selected resolution scaling multiplier. + Наразі вибраний множник масштабування роздільності. + + + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. + Поточна швидкість емуляції. Значення вище або нижче 100% вказують на те, що емуляція йде швидше або повільніше, ніж на Switch. + + + + How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. + Частота кадрів, яку наразі показує гра. Значення змінюватиметься залежно від гри та з кожною сценою. + + + + 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. + Час, потрібний для емуляції 1 кадру Switch, не враховуючи обмеження частоти кадрів або вертикальну синхронізацію. Для повношвидкісної емуляції значення повинно бути не вище 16,67 мс. + + + + Unmute + Увімкнути звук + + + + Mute + Вимкнути звук + + + + Reset Volume + Скинути гучність + + + + &Clear Recent Files + [&C] Очистити нещодавні файли + + + + &Continue + [&C] Продовжити + + + + Warning: Outdated Game Format + Увага: Застарілий формат гри + + + + 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.<br>For an explanation of the various Switch formats Eden supports, out our user handbook. This message will not be shown again. + Для цієї гри ви використовуєте формат теки з деконструйованим ROM, який є застарілим форматом, заміненим на інші, як-от NCA, NAX, XCI, або NSP. У тек із деконструйованими ROM немає значків, метаданих, а також вони не підтримують оновлення.<br>Для подробиць стосовно різноманітних форматів Switch, які підтримує Eden, ознайомтеся з нашим посібником користувача. Це повідомлення не буде показано знову. + + + + + Error while loading ROM! + Помилка під час завантаження ROM! + + + + The ROM format is not supported. + Непідтримуваний формат ROM. + + + + An error occurred initializing the video core. + Сталася помилка під час ініціалізації відеоядра. + + + + Eden 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: <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>How to Upload the Log File</a>. + В Eden сталася помилка під час роботи відеоядра. Зазвичай це відбувається через застарілі драйвери ГП, зокрема інтегрованих. Для подробиць перегляньте журнал. Для додаткової інформації стосовно доступу до журналу перегляньте таку сторінку: <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>Як відвантажити файл журналу</a>. + + + + Error while loading ROM! %1 + %1 signifies a numeric error code. + Помилка під час завантаження ROM! %1 + + + + %1<br>Please redump your files or ask on Discord/Stoat for help. + %1 signifies an error string. + %1<br>Створіть новий дамп файлів або зверніться по допомогу в Discord/Stoat. + + + + An unknown error occurred. Please see the log for more details. + Сталася невідома помилка. Ознайомтеся з журналом, щоб дізнатися подробиці. + + + + (64-bit) + (64-бітовий) + + + + (32-bit) + (32-бітовий) + + + + %1 %2 + %1 is the title name. %2 indicates if the title is 64-bit or 32-bit + %1 %2 + + + + Closing software... + Закриття програмного засобу... + + + + Save Data + Дані збережень + + + + Mod Data + Дані модів + + + + Error Opening %1 Folder + Помилка під час відкриття теки «%1» + + + + + Folder does not exist! + Теки не існує! + + + + Remove Installed Game Contents? + Вилучити встановлений вміст гри? + + + + Remove Installed Game Update? + Вилучити встановлені оновлення гри? + + + + Remove Installed Game DLC? + Вилучити встановлені доповнення гри? + + + + Remove Entry + Вилучити запис + + + + Delete OpenGL Transferable Shader Cache? + Видалити переміщуваний кеш шейдерів OpenGL? + + + + Delete Vulkan Transferable Shader Cache? + Видалити переміщуваний кеш шейдерів Vulkan? + + + + Delete All Transferable Shader Caches? + Видалити весь переміщуваний кеш шейдерів? + + + + Remove Custom Game Configuration? + Вилучити користувацькі налаштування гри? + + + + Remove Cache Storage? + Вилучити сховище кешу? + + + + Remove File + Вилучити файл + + + + Remove Play Time Data + Вилучити дані награного часу + + + + Reset play time? + Скинути награний час? + + + + + RomFS Extraction Failed! + Не вдалося видобути RomFS! + + + + There was an error copying the RomFS files or the user cancelled the operation. + Під час копіювання файлів RomFS сталася помилка або користувач скасував операцію. + + + + Full + Повний + + + + Skeleton + Скелет + + + + Select RomFS Dump Mode + Виберіть режим створення дампу RomFS + + + + Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. + Виберіть, як ви хочете виконати дамп RomFS <br>Повний скопіює всі файли до нової теки, тоді як <br>скелет створить лише структуру тек. + + + + There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root + За адресою «%1» недостатньо вільного місця для видобування RomFS. Звільніть місце або виберіть іншу теку для створення дампу в «Емуляція» → «Налаштувати» → «Система» → «Файлова система» → «Коренева тека дампів». + + + + Extracting RomFS... + Видобування RomFS... + + + + + Cancel + Скасувати + + + + RomFS Extraction Succeeded! + RomFS видобуто успішно! + + + + The operation completed successfully. + Операцію успішно виконано. + + + + Error Opening %1 + Помилка під час відкриття «%1» + + + + Select Directory + Вибрати теку + + + + Properties + Властивості + + + + The game properties could not be loaded. + Неможливо завантажити властивості гри. + + + + Switch Executable (%1);;All Files (*.*) + %1 is an identifier for the Switch executable file extensions. + Виконуваний файл Switch (%1);;Усі файли (*.*) + + + + Load File + Завантажити файл + + + + Open Extracted ROM Directory + Відкрити теку видобутого ROM + + + + Invalid Directory Selected + Вибрано неправильну теку + + + + The directory you have selected does not contain a 'main' file. + Вибрана тека не містить файлу «main». + + + + Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) + Встановлюваний файл Switch (*.nca, *.nsp, *.xci);;Архів вмісту Nintendo (*.nca);;Пакет подання Nintendo (*.nsp);;Образ картриджа NX (*.xci) + + + + Install Files + Встановити файли + + + + %n file(s) remaining + Лишився 1 файлЛишилося %n файлиЛишилося %n файлівЛишилося %n файлів + + + + Installing file "%1"... + Встановлення файлу «%1»... + + + + + Install Results + Результати встановлення + + + + To avoid possible conflicts, we discourage users from installing base games to the NAND. +Please, only use this feature to install updates and DLC. + Щоб уникнути можливих конфліктів, ми не радимо користувачам встановлювати ігри в NAND. +Користуйтеся цією функцією лише для встановлення оновлень і доповнень. + + + + %n file(s) were newly installed + + Щойно встановлено %n файл +Щойно встановлено %n файли +Щойно встановлено %n файлів +Щойно встановлено %n файлів + + + + + %n file(s) were overwritten + + Перезаписано %n файл +Перезаписано %n файли +Перезаписано %n файлів +Перезаписано %n файлів + + + + + %n file(s) failed to install + + Не вдалося встановити %n файл +Не вдалося встановити %n файли +Не вдалося встановити %n файлів +Не вдалося встановити %n файлів + + + + + System Application + Системний застосунок + + + + System Archive + Системний архів + + + + System Application Update + Оновлення системного застосунку + + + + Firmware Package (Type A) + Пакет прошивки (Тип А) + + + + Firmware Package (Type B) + Пакет прошивки (Тип Б) + + + + Game + Гра + + + + Game Update + Оновлення гри + + + + Game DLC + Доповнення гри + + + + Delta Title + Проєкт «Дельта» + + + + Select NCA Install Type... + Виберіть тип встановлення NCA... + + + + Please select the type of title you would like to install this NCA as: +(In most instances, the default 'Game' is fine.) + Виберіть тип проєкту, який ви хочете встановити для цього NCA: +(У більшості випадків підходить стандартний вибір «Гра».) + + + + Failed to Install + Не вдалося встановити + + + + The title type you selected for the NCA is invalid. + Тип проєкту, який ви вибрали для NCA, неправильний. + + + + File not found + Файл не виявлено + + + + File "%1" not found + Файл «%1» не виявлено + + + + OK + Гаразд + + + + Function Disabled + Функцію вимкнену + + + + Compatibility list reporting is currently disabled. Check back later! + Звітування для переліку сумісності наразі вимкнено. Зазирніть пізніше! + + + + Error opening URL + Помилка під час відкриття URL + + + + Unable to open the URL "%1". + Не вдалося відкрити URL: «%1». + + + + TAS Recording + Записування TAS + + + + Overwrite file of player 1? + Перезаписати файл гравця 1? + + + + Invalid config detected + Виявлено неправильне налаштування + + + + Handheld controller can't be used on docked mode. Pro controller will be selected. + Портативний контролер неможливо використовувати в режимі докстанції. Буде вибрано контролер Pro. + + + + + Amiibo + Amiibo + + + + + The current amiibo has been removed + Поточний amiibo вилучено + + + + Error + Помилка + + + + + The current game is not looking for amiibos + Поточна гра не очікує amiibo + + + + Amiibo File (%1);; All Files (*.*) + Файл amiibo (%1);; Усі файли (*.*) + + + + Load Amiibo + Завантажити amiibo + + + + Error loading Amiibo data + Помилка під час завантаження даних amiibo + + + + The selected file is not a valid amiibo + Вибраний файл не є дійсним amiibo + + + + The selected file is already on use + Вибраний файл уже використовується + + + + An unknown error occurred + Сталася невідома помилка + + + + + Keys not installed + Ключі не встановлено + + + + + Install decryption keys and restart Eden before attempting to install firmware. + Встановіть ключі дешифрування та перезапустіть Eden, перш ніж спробувати встановити прошивку. + + + + Select Dumped Firmware Source Location + Виберіть розташування дампу прошивки + + + + Select Dumped Firmware ZIP + Виберіть ZIP із дампом прошивки + + + + Zipped Archives (*.zip) + Zip-архіви (*.zip) + + + + Firmware cleanup failed + Не вдалося очистити прошивку + + + + Failed to clean up extracted firmware cache. +Check write permissions in the system temp directory and try again. +OS reported error: %1 + Не вдалося очистити видобутий кеш прошивки. +Перевірте дозволи на запис у системної теки temp і спробуйте знову. +Помилка зі звіту від ОС: %1 + + + + No firmware available + Немає доступних прошивок + + + + Firmware Corrupted + Прошивка пошкоджена + + + + Unknown applet + Невідомий аплет + + + + Applet doesn't map to a known value. + Аплет не призначено до відомого значення. + + + + Record not found + Запис не виявлено + + + + Applet not found. Please reinstall firmware. + Аплет не виявлено. Перевстановіть прошивку. + + + + Capture Screenshot + Зробити знімок екрана + + + + PNG Image (*.png) + Зображення PNG (*.png) + + + + Update Available + Доступне оновлення + + + + Download %1? + Завантажити %1? + + + + TAS state: Running %1/%2 + Стан TAS: Працює %1/%2 + + + + TAS state: Recording %1 + Стан TAS: Триває запис %1 + + + + TAS state: Idle %1/%2 + Стан TAS: Бездіяльність %1/%2 + + + + TAS State: Invalid + Стан TAS: Неправильний + + + + &Stop Running + [&S] Зупинити + + + + Stop R&ecording + [&E] Зупинити запис + + + + Building: %n shader(s) + Компіляція: %n шейдерКомпіляція: %n шейдериКомпіляція: %n шейдерівКомпіляція: %n шейдерів + + + + Scale: %1x + %1 is the resolution scaling factor + Масштаб: %1x + + + + Speed: %1% / %2% + Швидкість: %1% / %2% + + + + Speed: %1% + Швидкість: %1% + + + + Game: %1 FPS + Гра: %1 к/с + + + + Frame: %1 ms + Кадр: %1 мс + + + + + FSR + FSR + + + + NO AA + БЕЗ ЗГЛАДЖУВАННЯ + + + + VOLUME: MUTE + ГУЧНІСТЬ: ВИМКНЕНО + + + + VOLUME: %1% + Volume percentage (e.g. 50%) + ГУЧНІСТЬ: %1% + + + + Derivation Components Missing + Відсутні компоненти виведення + + + + Decryption keys are missing. Install them now? + Відсутні ключі шифрування. Встановити їх зараз? + + + + Wayland Detected! + Виявлено Wayland! + + + + Wayland is known to have significant performance issues and mysterious bugs. +It's recommended to use X11 instead. + +Would you like to force it for future launches? + Wayland відомий тим, що має значні проблеми з продуктивністю й загадкові баги. +Натомість рекомендовано використовувати X11. + +Хочете примусово увімкнути його для наступних запусків? + + + + Use X11 + Використовувати X11 + + + + Continue with Wayland + Продовжити з Wayland + + + + Don't show again + Не показувати знову + + + + Restart Required + Потрібен перезапуск + + + + Restart Eden to apply the X11 backend. + Перезапуск Eden для застосування бекенду X11. + + + + Slow + Сповільнення + + + + Turbo + Прискорення + + + + Unlocked + Розблоковано + + + + Select RomFS Dump Target + Виберіть розташування для створення дампу RomFS + + + + Please select which RomFS you would like to dump. + Виберіть, який дамп RomFS ви хочете створити. + + + + Are you sure you want to close Eden? + Ви впевнені, що хочете закрити Eden? + + + + + + Eden + Eden + + + + Are you sure you want to stop the emulation? Any unsaved progress will be lost. + Ви впевнені, що хочете зупинити емуляцію? Увесь незбережений поступ буде втрачено. + + + + The currently running application has requested Eden to not exit. + +Would you like to bypass this and exit anyway? + Застосунок, який наразі працює, має запит до Eden не завершувати роботу. + +Обійти цей запит і однаково закрити його? + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Nearest + Найближчий + + + + Bilinear + Білінійний + + + + Bicubic + Бікубічний + + + + Zero-Tangent + Нульовий тангенс + + + + B-Spline + B-Spline + + + + Mitchell + Мітчелла + + + + Spline-1 + Spline-1 + + + + Gaussian + Ґаусса + + + + Lanczos + Ланцоша + + + + ScaleForce + ScaleForce + + + + Area + Області + + + + MMPX + MMPX + + + + Docked + У докстанції + + + + Handheld + Портативний + + + + Fast + Швидко + + + + Balanced + Збалансовано + + + + Accurate + Точно + + + + Vulkan + Vulkan + + + + OpenGL GLSL + OpenGL GLSL + + + + OpenGL SPIRV + OpenGL SPIRV + + + + OpenGL GLASM + OpenGL GLASM + + + + Null + Нічого MigrationWorker - - Data was migrated successfully. - - - - + Linking the old directory failed. You may need to re-run with administrative privileges on Windows. OS gave error: %1 - + Не вдалося під’єднати стару теку. Можливо, вам доведеться перезапустити застосунок із правами адміністратора у Windows. +ОС надала помилку: %1 - + + + +Note that your configuration and data will be shared with %1. +If this is not desirable, delete the following files: +%2 +%3 +%4 + + +Зверніть увагу, що ваші налаштування й дані будуть поділятися з: %1. +Якщо це небажано, видаліть такі файли: +%2 +%3 +%4 + + + If you wish to clean up the files which were left in the old data location, you can do so by deleting the following directory: %1 - + + +Якщо ви хочете очистити файли, які лишилися за розташуванням старих даних, видаліть таку теку: +%1 + + + + Data was migrated successfully. + Дані перенесено успішно. + + + + ModSelectDialog + + + Dialog + Діалог + + + + The specified folder or archive contains the following mods. Select which ones to install. + Указана тека або архів містить такі моди. Виберіть, які з них потрібно встановити. @@ -8051,11 +8340,11 @@ If you wish to clean up the files which were left in the old data location, you Ban List - Список заблокованих + Перелік заблокованих гравців - + Refreshing Оновлення @@ -8065,27 +8354,27 @@ If you wish to clean up the files which were left in the old data location, you Розблокувати - + Subject - Суб'єкт + Тема - + Type Тип - + Forum Username - Ім'я користувача на форумі + Ім’я користувача на форумі - + IP Address IP-адреса - + Refresh Оновити @@ -8093,129 +8382,45 @@ If you wish to clean up the files which were left in the old data location, you MultiplayerState - + Current connection status - Поточний стан з'єднання + Поточний стан з’єднання - + Not Connected. Click here to find a room! - Не з'єднано. Натисніть тут, щоб знайти кімнату! + Не під’єднано. Натисніть тут, щоб знайти кімнату! - + Not Connected - Не з'єднано + Не під’єднано - + Connected - З'єднано + Під’єднано - + New Messages Received Отримано нові повідомлення - + Error Помилка - + Failed to update the room information. Please check your Internet connection and try hosting the room again. Debug Message: - Не вдалося оновити інформацію про кімнату. Будь ласка, перевірте підключення до Інтернету та спробуйте знову зайти в кімнату. -Повідомлення налагодження: + Не вдалося оновити інформацію про кімнату. Перевірте з’єднання з Інтернетом і повторно спробуйте зайти в кімнату. +Зневаджувальне повідомлення: NetworkMessage - - Username is not valid. Must be 4 to 20 alphanumeric characters. - Ім'я користувача неприпустиме. Має бути від 4 до 20 буквено-цифрових символів. - - - Room name is not valid. Must be 4 to 20 alphanumeric characters. - Назва кімнати неприпустима. Має бути від 4 до 20 буквено-цифрових символів. - - - Username is already in use or not valid. Please choose another. - Ім'я користувача вже використовується або недійсне. Будь ласка, виберіть інше. - - - IP is not a valid IPv4 address. - IP-адреса не є дійсною адресою IPv4. - - - Port must be a number between 0 to 65535. - Порт повинен бути числом від 0 до 65535. - - - You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - Ви повинні вибрати бажану гру, щоб хостити кімнату. Якщо у вашому списку ігор ще немає жодної гри, додайте папку з грою, натиснувши на значок плюса у списку ігор. - - - Unable to find an internet connection. Check your internet settings. - Неможливо знайти підключення до Інтернету. Перевірте налаштування інтернету. - - - Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - Неможливо підключитися до хоста. Перевірте правильність налаштувань підключення. Якщо під'єднання, як і раніше, неможливе, зв'яжіться з хостом кімнати та переконайтеся, що хост правильно налаштований із прокинутим зовнішнім портом. - - - Unable to connect to the room because it is already full. - Неможливо підключитися до кімнати, оскільки вона вже заповнена. - - - Creating a room failed. Please retry. Restarting yuzu might be necessary. - Створення кімнати не вдалося. Будь ласка, повторіть спробу. Можливо, потрібно перезапустити yuzu. - - - The host of the room has banned you. Speak with the host to unban you or try a different room. - Хост кімнати заблокував вас. Поговоріть із хостом, щоб він розблокував вас, або спробуйте іншу кімнату. - - - Version mismatch! Please update to the latest version of yuzu. If the problem persists, contact the room host and ask them to update the server. - Невідповідність версій! Будь ласка, оновіть yuzu до останньої версії. Якщо проблема не зникне, зверніться до хосту кімнати і попросіть його оновити сервер. - - - Incorrect password. - Невірний пароль. - - - An unknown error occurred. If this error continues to occur, please open an issue - Сталася невідома помилка. Якщо ця помилка продовжує виникати, будь ласка, відкрийте проблему - - - Connection to room lost. Try to reconnect. - З'єднання з кімнатою втрачено. Спробуйте підключитися знову. - - - You have been kicked by the room host. - Вас вигнав хост кімнати. - - - IP address is already in use. Please choose another. - IP-адреса вже використовується. Будь ласка, виберіть іншу. - - - You do not have enough permission to perform this action. - У вас немає достатніх дозволів для виконання цієї дії. - - - The user you are trying to kick/ban could not be found. -They may have left the room. - Користувача, якого ви намагаєтеся вигнати/заблокувати, не знайдено. -Можливо, вони покинули кімнату. - - - No valid network interface is selected. -Please go to Configure -> System -> Network and make a selection. - Не вибрано припустимий інтерфейс мережі. -Будь ласка, перейдіть у Налаштування -> Система -> Мережа та зробіть вибір. - Game already running @@ -8231,7 +8436,7 @@ Proceed anyway? Leave Room - Залишити кімнату + Покинути кімнату @@ -8241,7 +8446,7 @@ Proceed anyway? Disconnect - Від'єднатися + Від’єднатися @@ -8250,10 +8455,132 @@ Proceed anyway? - NetworkMessage::ErrorManager + NewUserDialog - Error - Помилка + + + New User + Новий користувач + + + + Change Avatar + Змінити аватар + + + + Set Image + Вибрати зображення + + + + UUID + UUID + + + + Eden + Eden + + + + Username + Ім’я користувача + + + + UUID must be 32 hex characters (0-9, A-F) + UUID повинен містити 32 hex-символів (0-9, A-F) + + + + Generate + Згенерувати + + + + Select User Image + Виберіть зображення користувача + + + + Image Formats (*.jpg *.jpeg *.png *.bmp) + Формати зображень (*.jpg *.jpeg *.png *.bmp) + + + + No firmware available + Немає доступних прошивок + + + + Please install the firmware to use firmware avatars. + Встановість прошивку, щоб користуватися аватарами прошивки. + + + + + Error loading archive + Помилка під час завантаження архіву + + + + Archive is not available. Please install/reinstall firmware. + Архів недоступний. Встановіть/перевстановіть прошивку. + + + + Could not locate RomFS. Your file or decryption keys may be corrupted. + Не вдалося знайти RomFS. Файл або ключі дешифрування можуть бути пошкоджені. + + + + Error extracting archive + Помилка під час видобування архіву + + + + Could not extract RomFS. Your file or decryption keys may be corrupted. + Не вдалося видобути RomFS. Файл або ключі дешифрування можуть бути пошкоджені. + + + + Error finding image directory + Помилка під час виявлення теки зображень + + + + Failed to find image directory in the archive. + Не вдалося виявити теку зображень в архіві. + + + + No images found + Зображення не виявлено + + + + No avatar images were found in the archive. + Зображення аватарів не виявлено в архіві. + + + + + All Good + Tooltip + Усе добре + + + + Must be 32 hex characters (0-9, a-f) + Tooltip + Повинен містити 32 hex-символів (0-9, a-f) + + + + Must be between 1 and 32 characters + Tooltip + Повинно бути від 1 до 32 символів @@ -8273,14 +8600,14 @@ Proceed anyway? OK - ОК + Гаразд <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -8289,83 +8616,199 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> + + PerformanceOverlay + + + Form + Форма + + + + Frametime + Час кадру + + + + 0 ms + 0 мс + + + + + Min: 0 + Мінімальне: 0 + + + + + Max: 0 + Максимальне: 0 + + + + + Avg: 0 + Середнє: 0 + + + + FPS + К/с + + + + 0 fps + 0 к/с + + + + %1 fps + %1 к/с + + + + + Avg: %1 + Середнє: %1 + + + + + Min: %1 + Мінімальне: %1 + + + + + Max: %1 + Максимальне: %1 + + + + %1 ms + %1 мс + + PlayerControlPreview - + START/PAUSE - СТАРТ/ПАУЗА + ЗАПУСТИТИ/ПРИЗУПИНИТИ + + + + ProfileAvatarDialog + + + Select + Вибрати + + + + Cancel + Скасувати + + + + Background Color + Колір тла + + + + Select Firmware Avatar + Виберіть аватар прошивки QObject - - %1 is not playing a game - %1 не грає у гру + + + + Migration + Перенесення - - %1 is playing %2 - %1 грає в %2 + + Clear Shader Cache + Очистити кеш шейдерів - - Not playing a game - Не грає в гру + + Keep Old Data + Лишити старі дані - - Installed SD Titles - Встановлені SD ігри + + Clear Old Data + Очистити старі дані - - Installed NAND Titles - Встановлені NAND ігри + + Link Old Directory + Під’єднати стару теку - - System Titles - Системні ігри + + + + + + + - - Add New Game Directory - Додати нову папку з іграми + + + No + Ні - - Favorites - Улюблені + + You can manually re-trigger this prompt by deleting the new config directory: +%1 + Ви можете вручну викликати це повідомлення, видаливши нову теку налаштувань: +%1 + + + + Migrating + Перенесення + + + + Migrating, this may take a while... + Перенесення. Це може тривати певний час... - - + + Shift Shift - - + + Ctrl Ctrl - - + + Alt Alt - - - - + + + + [not set] [не задано] @@ -8375,17 +8818,17 @@ p, li { white-space: pre-wrap; } Напр. %1 %2 - - - - - - - - + + + + + + + + Axis %1%2 - Ось %1%2 + Вісь %1%2 @@ -8393,359 +8836,383 @@ p, li { white-space: pre-wrap; } Кнопка %1 - - - - - - + + + + + + [unknown] [невідомо] - - - + + + Left - Вліво + Ліворуч - - - + + + Right - Вправо + Праворуч - - - + + + Down - Вниз + Униз - - - + + + Up - Вгору + Угору - - + + Z Z - - + + R R - - + + L L - - + + A A - - + + B B - - + + X X - - + + Y Y - - + + Start Start - - + + L1 L1 - - + + L2 L2 - - + + L3 L3 - - + + R1 R1 - - + + R2 R2 - - + + R3 R3 - - + + Circle - Кружечок + Коло - - + + Cross - Хрестик + Хрест - - + + Square - Квадратик + Квадрат - - + + Triangle - Трикутничок + Трикутник - - + + Share - Share + Створити - - + + Options - Options + Параметри - - + + [undefined] [невизначено] - + %1%2 %1%2 - - + + [invalid] - [неприпустимо] + [неправильно] - - + + %1%2Hat %3 %1%2Напр. %3 - - - + + + %1%2Axis %3 - %1%2Ось %3 + %1%2Вісь %3 - - + + %1%2Axis %3,%4,%5 - %1%2Ось %3,%4,%5 + %1%2Вісь %3,%4,%5 - - + + %1%2Motion %3 %1%2Рух %3 - - + + %1%2Button %3 %1%2Кнопка %3 - - + + [unused] - [не використаний] + [не використано] - + ZR ZR - + ZL ZL - + SR SR - + SL SL - + Stick L - Лівий стік + Джойстик L - + Stick R - Правий стік + Джойстик R - + Plus Плюс - + Minus Мінус - - + + Home - Home + Домівка - + Capture Захоплення - + Touch Сенсор - + Wheel Indicates the mouse wheel Коліщатко - + Backward Назад - + Forward - Вперед + Уперед - + Task Задача - + Extra Додаткова - + %1%2%3%4 %1%2%3%4 - - + + %1%2%3Hat %4 %1%2%3Напр. %4 - - + + %1%2%3Axis %4 %1%2%3Вісь %4 - - + + %1%2%3Button %4 %1%2%3Кнопка %4 - - - - Migration - + + Not playing a game + Не грає в гру - - - - - + + %1 is not playing a game + %1 не грає в гру - - - No - + + %1 is playing %2 + %1 грає в %2 - - You can manually re-trigger this prompt by deleting the new config directory: -%1 - + + Play Time: %1 + Награний час: %1 - - Migrating - + + Never Played + Ще не зіграно - - Migrating, this may take a while... - + + Version: %1 + Версія: %1 + + + + Version: 1.0.0 + Версія: 1.0.0 + + + + Installed SD Titles + Проєкти, встановлені до SD + + + + Installed NAND Titles + Проєкти, встановлені до NAND + + + + System Titles + Системні проєкти + + + + Add New Game Directory + Додати нову теку з іграми + + + + Favorites + Улюблені @@ -8753,12 +9220,12 @@ p, li { white-space: pre-wrap; } Amiibo Settings - Налаштування Amiibo + Налаштування amiibo Amiibo Info - Інформація щодо Amiibo + Інформація щодо amiibo @@ -8778,12 +9245,12 @@ p, li { white-space: pre-wrap; } Amiibo Data - Дані Amiibo + Дані amiibo Custom Name - Користувацьке ім'я + Користувацьке ім’я @@ -8798,7 +9265,7 @@ p, li { white-space: pre-wrap; } dd/MM/yyyy - dd/MM/yyyy + дд/ММ/рррр @@ -8808,7 +9275,7 @@ p, li { white-space: pre-wrap; } dd/MM/yyyy - dd/MM/yyyy + дд/ММ/рррр @@ -8823,7 +9290,7 @@ p, li { white-space: pre-wrap; } Mount Amiibo - Змонтувати Amiibo + Змонтувати amiibo @@ -8836,31 +9303,832 @@ p, li { white-space: pre-wrap; } Шлях до файлу - + No game data present Дані гри відсутні - + The following amiibo data will be formatted: Наступні дані amiibo буде відформатовано: - + The following game data will removed: Наступні дані гри буде видалено: - + Set nickname and owner: - Встановіть псевдонім і власника: + Указати псевдонім і власника: - + Do you wish to restore this amiibo? Чи хочете ви відновити цю amiibo? + + QtCommon::Content + + + Game Requires Firmware + Гра потребує прошивку + + + + The game you are trying to launch requires firmware to boot or to get past the opening menu. Please <a href='https://yuzu-mirror.github.io/help/quickstart'>dump and install firmware</a>, or press "OK" to launch anyways. + Гра, яку ви намагаєтеся запустити, потребує прошивку, щоб запуститися або пройти меню запуску. <a href='https://yuzu-mirror.github.io/help/quickstart'>Створіть дамп і встановіть прошивку</a> або натисніть «Гаразд», щоб однаково запустити. + + + + Installing Firmware... + Встановлення прошивки... + + + + + + + + Cancel + Скасувати + + + + Firmware Install Failed + Не вдалося встановити прошивку + + + + Firmware Install Succeeded + Прошивку успішно встановлено + + + + Firmware integrity verification failed! + Не вдалося перевірити цілісність прошивки! + + + + + Verification failed for the following files: + +%1 + Перевірка не вдалася для таких файлів: + +%1 + + + + + Verifying integrity... + Перевірка цілісності... + + + + + Integrity verification succeeded! + Перевірка цілісності успішна! + + + + + The operation completed successfully. + Операцію успішно завершено. + + + + + Integrity verification failed! + Не вдалося перевірити цілісність! + + + + File contents may be corrupt or missing. + Файли вмісту можуть бути пошкоджені або відсутні. + + + + Integrity verification couldn't be performed + Неможливо виконати перевірку цілісності + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity. + Встановлення прошивки скасовано. Можливо, прошивка в поганому стані або пошкоджена. Неможливо перевірити на дійсність файли вмісту. + + + + Select Dumped Keys Location + Виберіть розатшування дампу ключів + + + + Decryption Keys install succeeded + Ключі дешифрування успішно встановлено + + + + Decryption Keys install failed + Не вдалося встановити ключі дешифрування + + + + Orphaned Profiles Detected! + Виявлено покинуті профілі! + + + + UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br> + ЯКЩО ВИ ЦЕ НЕ ПРОЧИТАЄТЕ, МОЖУТЬ СТАТИСЯ НЕОЧІКУВАНІ ПОГАНІ РЕЧІ!<br>Eden виявив такі теки збережень без прикріпленого профілю:<br>%1<br><br>Є такі дійсні профілі:<br>%2<br><br>Натисніть «ОК», щоб відкрити теку збережень і полагодити свої профілі.<br>Порада: скопіюйте у будь-яке інше місце вміст найбільшої теки, у якій нещодавно були зміни, видаліть профілі, що лишилися та перемістіть скопійований вміст до провильного профілю.<br><br>Досі не розумієте, що робити? Перегляньте <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>сторінку допомоги</a>.<br> + + + + Really clear data? + Дійсно очистити дані? + + + + Important data may be lost! + Може бути втрачено важливі дані! + + + + Are you REALLY sure? + Ви ДІЙСНО впевнені? + + + + Once deleted, your data will NOT come back! +Only do this if you're 100% sure you want to delete this data. + Після видалення ваші дані буде НЕМОЖЛИВО повернути! +Виконуйте цю дію, лише якщо ви на 100% упевнені, що хочете видалити ці дані. + + + + Clearing... + Очищення... + + + + Select Export Location + Виберіть розташування для експортування + + + + %1.zip + %1.zip + + + + + Zipped Archives (*.zip) + Zip-архіви (*.zip) + + + + Exporting data. This may take a while... + Експортування даних. Це може тривати певний час... + + + + Exporting + Експортування + + + + Exported Successfully + Успішно експортовано + + + + Data was exported successfully. + Дані успішно експортовано. + + + + Export Cancelled + Експортування скасовано + + + + Export was cancelled by the user. + Експортування скасовано користувачем. + + + + Export Failed + Не вдалося експортувати + + + + Ensure you have write permissions on the targeted directory and try again. + Запевніться, що у вас є дозволи на записування до вказаної теки й спробуйте знову. + + + + Select Import Location + Виберіть розташування для імпортування + + + + Import Warning + Попередження щодо імпортування + + + + All previous data in this directory will be deleted. Are you sure you wish to proceed? + Усі попередні в цій теці будуть видалені. Ви впевнені, що хочете продовжити? + + + + Importing data. This may take a while... + Імпортування даних. Це може тривати певний час... + + + + Importing + Імпортування + + + + Imported Successfully + Успішно імпортовано + + + + Data was imported successfully. + Дані успішно імпортовано. + + + + Import Cancelled + Імпортування скасовано + + + + Import was cancelled by the user. + Імпортування скасовано користувачем. + + + + Import Failed + Не вдалося імпортувати + + + + Ensure you have read permissions on the targeted directory and try again. + Запевніться, що у вас є дозволи на читання зі вказаної теки й спробуйте знову. + + + + QtCommon::FS + + + Linked Save Data + Під’єднані дані збережень + + + + Save data has been linked. + Дані збережень під’єднано. + + + + Failed to link save data + Не вдалося під’єднати дані збережень. + + + + Could not link directory: + %1 +To: + %2 + Не вдалося під’єднати теку: + %1 +До: + %2 + + + + Already Linked + Уже під’єднано + + + + This title is already linked to Ryujinx. Would you like to unlink it? + Цей проєкт уже під’єднано до Ryujinx. Хочете його від’єднати? + + + + Failed to unlink old directory + Не вдалося від’єднати стару теку + + + + + OS returned error: %1 + ОС повернула помилку: %1 + + + + Failed to copy save data + Не вдалося скопіювати дані збережень + + + + Unlink Successful + Успішно від’єднано + + + + Successfully unlinked Ryujinx save data. Save data has been kept intact. + Успішно від’єднано дані збережень Ryujinx. Дані лишилися незмінними. + + + + Could not find Ryujinx installation + Не вдалося виявити встановлення Ryujinx + + + + Could not find a valid Ryujinx installation. This may typically occur if you are using Ryujinx in portable mode. + +Would you like to manually select a portable folder to use? + Не вдалося виявити правильне встановлення Ryujinx. Зазвичай таке відбувається, якщо Ryujinx використовується в портативному режимі. + +Хочете власноруч вибрати портативну теку для використання? + + + + Ryujinx Portable Location + Розташування портативного Ryujinx + + + + Not a valid Ryujinx directory + Неправильна тека Ryujinx + + + + The specified directory does not contain valid Ryujinx data. + Указана тека не містить правильних даних Ryujinx + + + + + Could not find Ryujinx save data + Не вдалося виявити дані збережень Ryujinx + + + + QtCommon::Game + + + Error Removing Contents + Помилка під час вилучення вмісту + + + + Error Removing Update + Помилка під час вилучення оновлення + + + + Error Removing DLC + Помилка під час вилучення доповнення + + + + + + + + + Successfully Removed + Успішно вилучено + + + + Successfully removed the installed base game. + Успішно вилучено встановлену базову гру. + + + + The base game is not installed in the NAND and cannot be removed. + Основну гру не встановлено в NAND і її неможливо вилучити. + + + + Successfully removed the installed update. + Успішно вилучено встановлене оновлення. + + + + There is no update installed for this title. + Для цього проєкту не встановлено оновлення. + + + + There are no DLCs installed for this title. + Для цього проєкту не встановлено доповнень. + + + + Successfully removed %1 installed DLC. + Успішно вилучено встановлене доповнення «%1». + + + + + Error Removing Transferable Shader Cache + Помилка під час вилучення переміщуваного кешу шейдерів + + + + + A shader cache for this title does not exist. + Для цього проєкту не існує кешу шейдерів. + + + + Successfully removed the transferable shader cache. + Успішно вилучено переміщуваний кеш шейдерів. + + + + Failed to remove the transferable shader cache. + Не вдалося вилучити переміщуваний кеш шейдерів. + + + + Error Removing Vulkan Driver Pipeline Cache + Помилка під час вилучення кешу конвеєра драйвера Vulkan + + + + Failed to remove the driver pipeline cache. + Не вдалося вилучити кеш конвеєра драйвера + + + + + Error Removing Transferable Shader Caches + Помилка під час вилучення переміщуваних кешів шейдерів + + + + Successfully removed the transferable shader caches. + Усіпшно вилучено переміщувані кеші шейдерів. + + + + Failed to remove the transferable shader cache directory. + Не вдалося вилучити теку переміщуваного кешу шейдерів. + + + + + Error Removing Custom Configuration + Помилка під час вилучення користувацього налаштування + + + + A custom configuration for this title does not exist. + Для цього проєкту не існує користувацького налаштування. + + + + Successfully removed the custom game configuration. + Успішно вилучено користувацьке налаштування гри. + + + + Failed to remove the custom game configuration. + Не вдалося вилучити користувацьке налаштування гри. + + + + Reset Metadata Cache + Скинути кеш метаданих + + + + The metadata cache is already empty. + Кеш метаданих уже порожній. + + + + The operation completed successfully. + Операцію успішно виконано. + + + + The metadata cache couldn't be deleted. It might be in use or non-existent. + Неможливо видалити кеш метаданих. Можливо, він використовується або не існує. + + + + Create Shortcut + Створити ярлик + + + + Do you want to launch the game in fullscreen? + Ви хочете запустити гру в повноеранному режимі? + + + + Shortcut Created + Ярлик створено + + + + Successfully created a shortcut to %1 + Успішно створено ярлик для: %1 + + + + Shortcut may be Volatile! + Ярлик може бути нестабільним! + + + + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? + Це створить ярлик для поточного AppImage. Можливо, він не буде належно працювати після оновлення. Продовжити? + + + + Failed to Create Shortcut + Не вдалося створити ярлик + + + + Failed to create a shortcut to %1 + Не вдалося створити ярлик для: %1 + + + + Create Icon + Створити значок + + + + Cannot create icon file. Path "%1" does not exist and cannot be created. + Неможливо створити файл значка. Шлях «%1» не існує або не може бути створений. + + + + No firmware available + Немає доступних прошивок + + + + Please install firmware to use the home menu. + Встановіть прошивку, щоб користуватися меню-домівкою. + + + + Home Menu Applet + Аплет меню-домівки + + + + Home Menu is not available. Please reinstall firmware. + Меню-домівка недоступна. Перевстановіть прошивку. + + + + QtCommon::Mod + + + Mod Name + Назва мода + + + + What should this mod be called? + Як повинен називатися цей мод? + + + + RomFS + RomFS + + + + ExeFS/Patch + ExeFS/патч + + + + Cheat + Чит + + + + Mod Type + Тип мода + + + + Could not detect mod type automatically. Please manually specify the type of mod you downloaded. + +Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods. + Не вдалося автоматично виявити тип мода. Укажіть вручну тип мода, який ви завантажили. + +Більшість модів є RomFS-модами, але патчі (.pchtxt) зазвичай є ExeFS-модами. + + + + + Mod Extract Failed + Не вдалося видобути мод + + + + Failed to create temporary directory %1 + Не вдалося створити тимчасову теку %1 + + + + Zip file %1 is empty + Zip-файл %1 порожній + + + + QtCommon::Path + + + Error Opening Shader Cache + Помилка під час відкривання кешу шейдерів + + + + Failed to create or open shader cache for this title, ensure your app data directory has write permissions. + Не вдалося створити або відкрити кеш шейдерів для цього проєкту. Запевніться, що у вашої теки AppData є дозвіл на записування. + + + + QtCommon::StringLookup + + + Contains game save data. DO NOT REMOVE UNLESS YOU KNOW WHAT YOU'RE DOING! + Містить дані збережень гри. НЕ ВИЛУЧАЙТЕ, ЯКЩО НЕ ВПЕВНЕНІ У СВОЇХ ДІЯЇ! + + + + Contains Vulkan and OpenGL pipeline caches. Generally safe to remove. + Містить кеші конвеєрів Vulkan і OpenGL. Зазвичай їх можна вільно вилучати. + + + + Contains updates and DLC for games. + Містить оновлення і доповнення для ігор. + + + + Contains firmware and applet data. + Містить прошивку і дані аплетів. + + + + Contains game mods, patches, and cheats. + Містить ігрові моди, патчі та чити. + + + + Decryption Keys were successfully installed + Ключі дешифрування було успішно встановлено + + + + Unable to read key directory, aborting + Неможливо зчитати теку ключів, скасування + + + + One or more keys failed to copy. + Не вдалося скопіювати один або більше ключів. + + + + Verify your keys file has a .keys extension and try again. + Перевірте, чи мають ваші ключі розширення .keys, і спробуйте ще раз. + + + + Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. + Не вдалося ініціалізувати ключі дешифрування. Переконайтеся, що ваші інструменти для створення дампів оновлені, і створіть новий дамп ключів. + + + + Successfully installed firmware version %1 + Прошивку версії %1 успішно встановлено + + + + Unable to locate potential firmware NCA files + Неможливо виявити файли потенційної прошивки NCA + + + + Failed to delete one or more firmware files. + Не вдалося видалити один або більше файлів прошивки. + + + + One or more firmware files failed to copy into NAND. + Не вдалояс скопіювати до NAND один або більше файлів прошивки. + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. Restart Eden or re-install firmware. + Встановлення прошивки скасовано. Прошивка може бути в поганому стані або в пошкоджена. Перезапустіть Eden або перевстановіть прошивку. + + + + Firmware missing. Firmware is required to run certain games and use the Home Menu. + Відсутня прошивка. Прошивка необхідна для запуску певних ігор і використання меню-домівки. + + + + Firmware reported as present, but was unable to be read. Check for decryption keys and redump firmware if necessary. + Зазначено, що прошивка наявна, але її неможливо зчитати. Перевірте ключі дешифрування й за необхідності створіть новий дамп прошивки. + + + + Eden has detected user data for the following emulators: + Eden виявив користувацькі дані для таких емуляторів: + + + + Would you like to migrate your data for use in Eden? +Select the corresponding button to migrate data from that emulator. +This may take a while. + Чи хочете ви перенести свої дані для використання в Eden? +Натисніть кнопку відповідного емулятора, щоб перенести його дані. +Це може тривати певний час. + + + + Clearing shader cache is recommended for all users. +Do not uncheck unless you know what you're doing. + Очищення кешу шейдерів рекомендовано для всіх користувачів. +Не скасовуйте, якщо не впевнені у своїх діях. + + + + Keeps the old data directory. This is recommended if you aren't +space-constrained and want to keep separate data for the old emulator. + Зберігає стару теку з даними. Рекомендовано, якщо у вас немає обмежень пам’яті й ви хочете окремо зберегти дані старого емулятора. + + + + Deletes the old data directory. +This is recommended on devices with space constraints. + Видаляє стару теку з даними. +Рекомендовано для пристроїв з обмеженнями пам’яті. + + + + Creates a filesystem link between the old directory and Eden directory. +This is recommended if you want to share data between emulators. + Створює посилання у файловій системі між старою текою і текою Eden. +Рекомендовано, якщо ви хочете поширювати дані між емуляторами. + + + + Ryujinx title database does not exist. + База даних проєктів Ryujinx не існує. + + + + Invalid header on Ryujinx title database. + Неправильний заголовок бази даних проєктів Ryujinx. + + + + Invalid magic header on Ryujinx title database. + Неправильний магічний заголовок бази даних проєктів Ryujinx. + + + + Invalid byte alignment on Ryujinx title database. + Неправильне впорядкування байтів у базі даних проєктів Ryujinx. + + + + No items found in Ryujinx title database. + Не виявлено жодних елементів у базі даних проєктів Ryujinx. + + + + Title %1 not found in Ryujinx title database. + Не виявлено «%1» у базі даних проєктів Ryujinx. + + QtControllerSelectorDialog @@ -8897,7 +10165,7 @@ p, li { white-space: pre-wrap; } - + Pro Controller Контролер Pro @@ -8910,7 +10178,7 @@ p, li { white-space: pre-wrap; } - + Dual Joycons Подвійні Joy-Con'и @@ -8923,7 +10191,7 @@ p, li { white-space: pre-wrap; } - + Left Joycon Лівий Joy-Con @@ -8936,7 +10204,7 @@ p, li { white-space: pre-wrap; } - + Right Joycon Правий Joy-Con @@ -8965,7 +10233,7 @@ p, li { white-space: pre-wrap; } - + Handheld Портативний @@ -9002,7 +10270,7 @@ p, li { white-space: pre-wrap; } Docked - У док-станції + У докстанції @@ -9083,35 +10351,35 @@ p, li { white-space: pre-wrap; } Not enough controllers - + Недостатньо контролерів - + GameCube Controller Контролер GameCube - + Poke Ball Plus Poke Ball Plus - + NES Controller Контролер NES - + SNES Controller Контролер SNES - + N64 Controller Контролер N64 - + Sega Genesis Sega Genesis @@ -9119,28 +10387,28 @@ p, li { white-space: pre-wrap; } QtErrorDisplay - - - + + + Error Code: %1-%2 (0x%3) Код помилки: %1-%2 (0x%3) - + An error has occurred. Please try again or contact the developer of the software. Сталася помилка. Будь ласка, спробуйте ще раз або зв'яжіться з розробником ПЗ. - + An error occurred on %1 at %2. Please try again or contact the developer of the software. Сталася помилка на %1 у %2. Будь ласка, спробуйте ще раз або зв'яжіться з розробником ПЗ. - + An error has occurred. %1 @@ -9156,7 +10424,7 @@ Please try again or contact the developer of the software. QtProfileSelectionDialog - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -9164,7 +10432,7 @@ Please try again or contact the developer of the software. %2 - + Users Користувачі @@ -9232,7 +10500,7 @@ Please try again or contact the developer of the software. Send save data for which user? - Надіслати збереження якому користувачеві? + Якому користувачу надіслати дані збережень? @@ -9257,7 +10525,7 @@ Please try again or contact the developer of the software. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -9266,163 +10534,93 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - - + + OK - ОК + Гаразд - + Cancel Скасувати + + RyujinxDialog + + + Ryujinx Link + Під’єднати Ryujinx + + + + Linking save data to Ryujinx lets both Ryujinx and Eden reference the same save files for your games. + +By selecting "From Eden", previous save data stored in Ryujinx will be deleted, and vice versa for "From Ryujinx". + Під’єднання даних збережень до Ryujinx дозволить звертатися до ваших файлів збережень як Ryujinx, так і Eden. + +Вибравши «З Eden», попередні дані збережень, що є в Ryujinx, будуть видалені, і так само для «З Ryujinx». + + + + From Eden + З Eden + + + + From Ryujinx + З Ryujinx + + + + Cancel + Скасувати + + + + Failed to link save data + Не вдалося під’єднати дані збережень. + + + + OS returned error: %1 + ОС повернула помилку: %1 + + SequenceDialog Enter a hotkey - Введіть комбінацію + Введіть сполучення клавіш - WaitTreeCallstack + SetPlayTimeDialog - - Call stack - Стек викликів - - - - WaitTreeSynchronizationObject - - - [%1] %2 - [%1] %2 + + Set Play Time Data + Встановити награний час - - waited by no thread - не очікується жодним потоком - - - - WaitTreeThread - - - runnable - runnable + + Hours: + Години: - - paused - paused + + Minutes: + Хвилини: - - sleeping - sleeping + + Seconds: + Секунди: - - waiting for IPC reply - очікування відповіді IPC - - - - waiting for objects - очікування об'єктів - - - - waiting for condition variable - waiting for condition variable - - - - waiting for address arbiter - waiting for address arbiter - - - - waiting for suspend resume - waiting for suspend resume - - - - waiting - waiting - - - - initialized - initialized - - - - terminated - terminated - - - - unknown - невідомо - - - - PC = 0x%1 LR = 0x%2 - PC = 0x%1 LR = 0x%2 - - - - ideal - ideal - - - - core %1 - ядро %1 - - - - processor = %1 - процесор = %1 - - - - affinity mask = %1 - маска подібності = %1 - - - - thread id = %1 - ідентифікатор потоку = %1 - - - - priority = %1(current) / %2(normal) - пріоритет = %1(поточний) / %2(звичайний) - - - - last running ticks = %1 - last running ticks = %1 - - - - WaitTreeThreadList - - - waited by thread - очікується потоком - - - - WaitTreeWidget - - - &Wait Tree - [&W] Дерево очікування + + Total play time reached maximum. + Загальний награний час досягнув максимуму. diff --git a/dist/languages/vi.ts b/dist/languages/vi.ts index 17d8e62327..aeef3f2908 100644 --- a/dist/languages/vi.ts +++ b/dist/languages/vi.ts @@ -1,25 +1,15 @@ - - - + AboutDialog - - About yuzu - Thông tin về yuzu - - - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - - About eden - + About Eden + - <html><head/><body><p><span style=" font-size:28pt;">eden</span></p></body></html> - + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> + @@ -34,70 +24,50 @@ p, li { white-space: pre-wrap; } hr { height: 1px; border-width: 0; } li.unchecked::marker { content: "\2610"; } li.checked::marker { content: "\2612"; } -</style></head><body style=" font-family:'Adwaita Sans'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> - +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> + - <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">This software should not be used to play games you have not legally obtained.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu là một phần mềm giả lập thử nghiệm mã nguồn mở cho máy Nintendo Switch, được cấp phép theo giấy phép GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Bạn không được phép sử dụng phần mềm này cho để chơi game mà bạn kiếm được một cách bất hợp pháp.</span></p></body></html> - - - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Trang web</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Mã nguồn</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Người đóng góp</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Giấy phép</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. eden is not affiliated with Nintendo in any way.</span></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; là thương hiệu của Nintendo. yuzu không hề có quan hệ với Nintendo dưới bất kỳ hình thức nào.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. Eden is not affiliated with Nintendo in any way.</span></p></body></html> + CalibrationConfigurationDialog - + Communicating with the server... Đang giao tiếp với máy chủ... - + Cancel Hủy bỏ - + Touch the top left corner <br>of your touchpad. Hãy chạm vào góc trên cùng<br>bên trái trên touchpad của bạn. - + Now touch the bottom right corner <br>of your touchpad. Giờ hãy chạm vào góc dưới cùng<br>bên phải trên touchpad của bạn. - + Configuration completed! Đã hoàn thành quá trình cấu hình! - + OK OK @@ -120,78 +90,78 @@ p, li { white-space: pre-wrap; } Gửi tin nhắn - + Members Thành viên - + %1 has joined %1 đã tham gia - + %1 has left %1 đã thoát - + %1 has been kicked %1 đã bị kick - + %1 has been banned %1 đã bị ban - + %1 has been unbanned %1 đã được unban - + View Profile Xem hồ sơ - - + + Block Player Chặn người chơi - + When you block a player, you will no longer receive chat messages from them.<br><br>Are you sure you would like to block %1? Khi bạn chặn một người chơi, bạn sẽ không còn nhận được tin nhắn từ người chơi đó nữa.<br><br>Bạn có chắc muốn chặn %1? - + Kick Kick - + Ban Ban - + Kick Player Kick người chơi - + Are you sure you would like to <b>kick</b> %1? Bạn có chắc là bạn muốn <b>kick</b> %1? - + Ban Player Ban người chơi - + Are you sure you would like to <b>kick and ban</b> %1? This would ban both their forum username and their IP address. @@ -226,17 +196,17 @@ Việc này sẽ ban tên người dùng trên diễn đàn và IP của họ lu ClientRoomWindow - + Connected Đã kết nối - + Disconnected Đã ngắt kết nối - + %1 - %2 (%3/%4 members) - connected %1 - %2 (%3/%4 thành viên) - đã kết nối @@ -259,14 +229,10 @@ Việc này sẽ ban tên người dùng trên diễn đàn và IP của họ lu Report Game Compatibility Báo cáo về độ tương thích của game - - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of yuzu you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected yuzu account</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Nếu bạn chọn gửi bản kiểm tra vào </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">danh sách tương thích yuzu</span></a><span style=" font-size:10pt;">, Thông tin sau sẽ được thu thập và hiển thị lên trang web:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Thông tin phần cứng (CPU / GPU / Hệ điều hành)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Phiên bản yuzu bạn đang chạy</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Tài khoản yuzu đang kết nối</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">eden Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of eden you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected eden account</li></ul></body></html> - + @@ -374,22 +340,22 @@ Việc này sẽ ban tên người dùng trên diễn đàn và IP của họ lu Cảm ơn bạn đã gửi đến cho chúng tôi! - + Submitting Đang gửi - + Communication error Đã xảy ra lỗi giao tiếp với máy chủ - + An error occurred while sending the Testcase Lỗi khi gửi Testcase - + Next Tiếp theo @@ -397,1528 +363,1865 @@ Việc này sẽ ban tên người dùng trên diễn đàn và IP của họ lu ConfigurationShared - + % % - + Amiibo editor - + - + Controller configuration - + - + Data erase - + - + Error Lỗi - + Net connect - + - + Player select - + - + Software keyboard Bàn phím mềm - + Mii Edit - + - + Online web - + - + Shop - + - + Photo viewer - + - + Offline web - + - + Login share - + - + Wifi web auth - + - + My page - + - + + Enable Overlay Applet + + + + + Enables Horizon's built-in overlay applet. Press and hold the home button for 1 second to show it. + + + + Output Engine: Hệ thống xuất: - + Output Device: Thiết bị đầu ra: - + Input Device: Thiết bị đầu vào: - + Mute audio - + - + Volume: Âm lượng: - + Mute audio when in background Tắt tiếng khi chạy nền - + Multicore CPU Emulation Giả lập CPU đa nhân - - This option increases CPU emulation thread use from 1 to the Switch’s maximum of 4. -This is mainly a debug option and shouldn’t be disabled. - + + This option increases CPU emulation thread use from 1 to the maximum of 4. +This is mainly a debug option and shouldn't be disabled. + - + Memory Layout - + - - Increases the amount of emulated RAM from the stock 4GB of the retail Switch to the developer kit's 8/6GB. -It’s doesn’t improve stability or performance and is intended to let big texture mods fit in emulated RAM. -Enabling it will increase memory use. It is not recommended to enable unless a specific game with a texture mod needs it. - + + Increases the amount of emulated RAM. +Doesn't affect performance/stability but may allow HD texture mods to load. + - + Limit Speed Percent Giới hạn phần trăm tốc độ - - Controls the game's maximum rendering speed, but it’s up to each game if it runs faster or not. + + Controls the game's maximum rendering speed, but it's up to each game if it runs faster or not. 200% for a 30 FPS game is 60 FPS, and for a 60 FPS game it will be 120 FPS. Disabling it means unlocking the framerate to the maximum your PC can reach. - + - + + Turbo Speed + + + + + When the Turbo Speed hotkey is pressed, the speed will be limited to this percentage. + + + + + Slow Speed + + + + + When the Slow Speed hotkey is pressed, the speed will be limited to this percentage. + + + + Synchronize Core Speed - + - - Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). -Compatibility varies by game; many (especially older ones) may not respond well. + + Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). Can help reduce stuttering at lower framerates. - + - + Accuracy: Độ chính xác: - - This setting controls the accuracy of the emulated CPU. -Don't change this unless you know what you are doing. - + + Change the accuracy of the emulated CPU (for debugging only). + - - + + Backend: - + - - Fast CPU Time - + + CPU Overclock + - + Overclocks the emulated CPU to remove some FPS limiters. Weaker CPUs may see reduced performance, and certain games may behave improperly. Use Boost (1700MHz) to run at the Switch's highest native clock, or Fast (2000MHz) to run at 2x clock. - + - + + Custom CPU Ticks + + + + + Set a custom value of CPU ticks. Higher values can increase performance, but may cause deadlocks. A range of 77-21000 is recommended. + + + + + Enable Host MMU Emulation (fastmem) + + + + + This optimization speeds up memory accesses by the guest program. +Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU. +Disabling this forces all memory accesses to use Software MMU Emulation. + + + + Unfuse FMA (improve performance on CPUs without FMA) Không dùng FMA (tăng hiệu suất cho các dòng CPU không hỗ trợ FMA) - + This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support. - + - + Faster FRSQRTE and FRECPE FRSQRTE và FRECPE nhanh hơn - + This option improves the speed of some approximate floating-point functions by using less accurate native approximations. - + - + Faster ASIMD instructions (32 bits only) Các chỉ thị ASIMD nhanh hơn (chỉ cho 32 bit) - + This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes. - + - + Inaccurate NaN handling Xử lí NaN không chính xác - + This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions. - + - + Disable address space checks Tắt kiểm tra không gian địa chỉ - - This option improves speed by eliminating a safety check before every memory read/write in guest. -Disabling it may allow a game to read/write the emulator's memory. - + + This option improves speed by eliminating a safety check before every memory operation. +Disabling it may allow arbitrary code execution. + - + Ignore global monitor Bỏ qua màn hình chung - + 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. - + - + API: API: - - Switches between the available graphics APIs. -Vulkan is recommended in most cases. - + + Changes the output graphics API. +Vulkan is recommended. + - + Device: Thiết bị: - - This setting selects the GPU to use with the Vulkan backend. - + + This setting selects the GPU to use (Vulkan only). + - - Shader Backend: - Backend shader: - - - - The shader backend to use for the OpenGL renderer. -GLSL is the fastest in performance and the best in rendering accuracy. -GLASM is a deprecated NVIDIA-only backend that offers much better shader building performance at the cost of FPS and rendering accuracy. -SPIR-V compiles the fastest, but yields poor results on most GPU drivers. - - - - + Resolution: Độ phân giải: - - Forces the game to render at a different resolution. -Higher resolutions require much more VRAM and bandwidth. -Options lower than 1X can cause rendering issues. - + + Forces to render at a different resolution. +Higher resolutions require more VRAM and bandwidth. +Options lower than 1X can cause artifacts. + - + Window Adapting Filter: Bộ lọc điều chỉnh cửa sổ: - + FSR Sharpness: Độ nét FSR: - - Determines how sharpened the image will look while using FSR’s dynamic contrast. - + + Determines how sharpened the image will look using FSR's dynamic contrast. + - + Anti-Aliasing Method: Phương pháp khử răng cưa: - + The anti-aliasing method to use. SMAA offers the best quality. -FXAA has a lower performance impact and can produce a better and more stable picture under very low resolutions. - +FXAA can produce a more stable picture in lower resolutions. + - + Fullscreen Mode: Chế độ toàn màn hình: - + The method used to render the window in fullscreen. Borderless offers the best compatibility with the on-screen keyboard that some games request for input. Exclusive fullscreen may offer better performance and better Freesync/Gsync support. - + - + Aspect Ratio: Tỉ lệ khung hình: - - Stretches the game to fit the specified aspect ratio. -Switch games only support 16:9, so custom game mods are required to get other ratios. + + Stretches the renderer to fit the specified aspect ratio. +Most games only support 16:9, so modifications are required to get other ratios. Also controls the aspect ratio of captured screenshots. - + - - Use disk pipeline cache - Dùng bộ nhớ đệm pipeline trên ổ cứng + + Use persistent pipeline cache + - + Allows saving shaders to storage for faster loading on following game boots. Disabling it is only intended for debugging. - + - - Optimize SPIRV output shader - + + Optimize SPIRV output + - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. This feature is experimental. - + - - Use asynchronous GPU emulation - Dùng giả lập GPU bất đồng bộ - - - - Uses an extra CPU thread for rendering. -This option should always remain enabled. - - - - + NVDEC emulation: Giả lập NVDEC: - + Specifies how videos should be decoded. It can either use the CPU or the GPU for decoding, or perform no decoding at all (black screen on videos). In most cases, GPU decoding provides the best performance. - + - + ASTC Decoding Method: - + - + This option controls how ASTC textures should be decoded. -CPU: Use the CPU for decoding, slowest but safest method. -GPU: Use the GPU's compute shaders to decode ASTC textures, recommended for most games and users. -CPU Asynchronously: Use the CPU to decode ASTC textures as they arrive. Completely eliminates ASTC decoding -stuttering at the cost of rendering issues while the texture is being decoded. - +CPU: Use the CPU for decoding. +GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). +CPU Asynchronously: Use the CPU to decode ASTC textures on demand. EliminatesASTC decoding +stuttering but may present artifacts. + - + ASTC Recompression Method: - + - - Almost all desktop and laptop dedicated GPUs lack support for ASTC textures, forcing the emulator to decompress to an intermediate format any card supports, RGBA8. -This option recompresses RGBA8 to either the BC1 or BC3 format, saving VRAM but negatively affecting image quality. - + + Most GPUs lack support for ASTC textures and must decompress to anintermediate format: RGBA8. +BC1/BC3: The intermediate format will be recompressed to BC1 or BC3 format, + saving VRAM but degrading image quality. + - + + Frame Pacing Mode (Vulkan only) + + + + + Controls how the emulator manages frame pacing to reduce stuttering and make the frame rate smoother and more consistent. + + + + VRAM Usage Mode: - + - - Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. Has no effect on integrated graphics. Aggressive mode may severely impact the performance of other applications such as recording software. - + + Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. +Aggressive mode may impact performance of other applications such as recording software. + - + + Skip CPU Inner Invalidation + + + + + Skips certain cache invalidations during memory updates, reducing CPU usage and improving latency. This may cause soft-crashes. + + + + VSync Mode: Chế độ Vsync: - + FIFO (VSync) does not drop frames or exhibit tearing but is limited by the screen refresh rate. -FIFO Relaxed is similar to FIFO but allows tearing as it recovers from a slow down. +FIFO Relaxed 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. - FIFO (VSync) không gây mất khung hình hoặc hiện tượng xé hình nhưng bị giới hạn bởi tốc độ làm tươi màn hình. -FIFO Relaxed tương tự như FIFO nhưng cho phép hiện tượng xé hình khi phục hồi từ tình trạng bị chậm. -Mailbox có thể có độ trễ thấp hơn FIFO và không gây hiện tượng xé hình nhưng có thể mất khung hình. -Immediate (không đồng bộ hóa) chỉ hiển thị những gì đã có và có thể gây hiện tượng xé hình. +Immediate (no synchronization) presents whatever is available and can exhibit tearing. + - + + Sync Memory Operations + + + + + Ensures data consistency between compute and memory operations. +This option fixes issues in games, but may degrade performance. +Unreal Engine 4 games often see the most significant changes thereof. + + + + Enable asynchronous presentation (Vulkan only) Bật hiển thị bất đồng bộ (chỉ cho Vulkan) - + Slightly improves performance by moving presentation to a separate CPU thread. - + - + Force maximum clocks (Vulkan only) Buộc chạy ở xung nhịp tối đa (chỉ cho Vulkan) - + Runs work in the background while waiting for graphics commands to keep the GPU from lowering its clock speed. Chạy các công việc trong nền trong khi đang chờ lệnh đồ họa để giữ cho GPU không giảm xung nhịp. - + Anisotropic Filtering: Lọc bất đẳng hướng: - + Controls the quality of texture rendering at oblique angles. -It’s a light setting and safe to set at 16x on most GPUs. - +Safe to set at 16x on most GPUs. + - - Accuracy Level: - Mức độ chính xác: + + GPU Mode: + - - GPU emulation accuracy. -Most games render fine with Normal, but High is still required for some. -Particles tend to only render correctly with High accuracy. -Extreme should only be used for debugging. -This option can be changed while playing. -Some games may require booting on high to render properly. - + + Controls the GPU emulation mode. +Most games render fine with Fast or Balanced modes, but Accurate is still required for some. +Particles tend to only render correctly with Accurate mode. + - - Use asynchronous shader building (Hack) - Dùng tính năng dựng shader bất đồng bộ (Hack) + + DMA Accuracy: + - - Enables asynchronous shader compilation, which may reduce shader stutter. -This feature is experimental. - + + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. + - Use Fast GPU Time (Hack) - Dùng thời gian GPU nhanh (Hack) + + Enable asynchronous shader compilation + - Enables Fast GPU Time. This option will force most games to run at their highest native resolution. - Bật chế độ Thời gian GPU nhanh. Tùy chọn này sẽ buộc hầu hết các game chạy ở độ phân giải gốc cao nhất của chúng. + + May reduce shader stutter. + - + + Fast GPU Time + + + + + Overclocks the emulated GPU to increase dynamic resolution and render distance. +Use 256 for maximal performance and 512 for maximal graphics fidelity. + + + + + GPU Unswizzle + + + + + Accelerates BCn 3D texture decoding using GPU compute. +Disable if experiencing crashes or graphical glitches. + + + + + GPU Unswizzle Max Texture Size + + + + + Sets the maximum size (MiB) for GPU-based texture unswizzling. +While the GPU is faster for medium and large textures, the CPU may be more efficient for very small ones. +Adjust this to find the balance between GPU acceleration and CPU overhead. + + + + + GPU Unswizzle Stream Size + + + + + Sets the maximum amount of texture data (in MiB) processed per frame. +Higher values can reduce stutter during texture loading but may impact frame consistency. + + + + + GPU Unswizzle Chunk Size + + + + + Determines the number of depth slices processed in a single dispatch. +Increasing this can improve throughput on high-end GPUs but may cause TDR or driver timeouts on weaker hardware. + + + + Use Vulkan pipeline cache Dùng bộ nhớ đệm pipeline Vulkan - + Enables GPU vendor-specific pipeline cache. This option can improve shader loading time significantly in cases where the Vulkan driver does not store pipeline cache files internally. - + - + Enable Compute Pipelines (Intel Vulkan Only) - + - - Enable compute pipelines, required by some games. -This setting only exists for Intel proprietary drivers, and may crash if enabled. + + 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. - + - + Enable Reactive Flushing Bật xả tương ứng - + Uses reactive flushing instead of predictive flushing, allowing more accurate memory syncing. - + - + Sync to framerate of video playback Đồng bộ hóa với tốc độ khung hình khi phát video - + Run the game at normal speed during video playback, even when the framerate is unlocked. Chạy game với tốc độ bình thường trong quá trình phát video, ngay cả khi tốc độ khung hình được mở khóa. - + Barrier feedback loops Vòng lặp phản hồi rào cản - + Improves rendering of transparency effects in specific games. Cải thiện hiệu quả kết xuất của hiệu ứng trong suốt trong một số game. - + + Enable buffer history + + + + + Enables access to previous buffer states. +This option may improve rendering quality and performance consistency in some games. + + + + + Fix bloom effects + + + + + Removes bloom in Burnout. + + + + + Enable Legacy Rescale Pass + + + + + May fix rescale issues in some games by relying on behavior from the previous implementation. +Legacy behavior workaround that fixes line artifacts on AMD and Intel GPUs, and grey texture flicker on Nvidia GPUs in Luigis Mansion 3. + + + + + Extended Dynamic State + + + + + Controls the number of features that can be used in Extended Dynamic State. +Higher states allow for more features and can increase performance, but may cause additional graphical issues. + + + + + Vertex Input Dynamic State + + + + + Enables vertex input dynamic state feature for better quality and performance. + + + + + Sample Shading + + + + + Allows the fragment shader to execute per sample in a multi-sampled fragment instead of once per fragment. Improves graphics quality at the cost of performance. +Higher values improve quality but degrade performance. + + + + RNG Seed Hạt giống RNG - + Controls the seed of the random number generator. -Mainly used for speedrunning purposes. - +Mainly used for speedrunning. + - + Device Name Tên thiết bị - - The name of the emulated Switch. - + + The name of the console. + - + Custom RTC Date: - + - - This option allows to change the emulated clock of the Switch. + + This option allows to change the clock of the console. Can be used to manipulate time in games. - + - + + The number of seconds from the current unix time + + + + Language: - + - - Note: this can be overridden when region setting is auto-select - Lưu ý: Tuỳ chọn này có thể bị ghi đè nếu cài đặt vùng là chọn tự động. + + This option can be overridden when region setting is auto-select + - + Region: Vùng: - - The region of the emulated Switch. - + + The region of the console. + - + Time Zone: Múi giờ: - - The time zone of the emulated Switch. - + + The time zone of the console. + - + Sound Output Mode: Chế độ đầu ra âm thanh: - + Console Mode: - + - - Selects if the console is emulated in Docked or Handheld mode. + + Selects if the console is in Docked or Handheld mode. Games will change their resolution, details and supported controllers and depending on this setting. Setting to Handheld can help improve performance for low end systems. - + - - Prompt for user on game boot - Hiển thị cửa sổ chọn người dùng khi bắt đầu game + + Unit Serial + - - Pause emulation when in background - Tạm dừng giả lập khi chạy nền + + Battery Serial + - - Fast GPU Time (Hack) - + + Debug knobs + - - Overclocks the emulated GPU to increase dynamic resolution and render distance. -Use 128 for maximal performance and 512 for maximal graphics fidelity. - + + Prompt for user profile on boot + - - Extended Dynamic State - + + Useful if multiple people use the same PC. + - - Enables the VkExtendedDynamicState* extensions. -Higher dynamic states will generally improve performance, but may cause issues on certain games or devices. - + + Pause when not in focus + - - Provoking Vertex - + + Pauses emulation when focusing on other windows. + - - Improves lighting and vertex handling in certain games. -Only Vulkan 1.0+ devices support this extension. - - - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - - Ask to select a user profile on each boot, useful if multiple people use eden on the same PC. - - - - - This setting pauses eden when focusing other windows. - - - - + Confirm before stopping emulation - + - - This setting overrides game prompts asking to confirm stopping the game. + + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - + - + Hide mouse on inactivity Ẩn con trỏ chuột khi không dùng - - This setting hides the mouse after 2.5s of inactivity. - + + Hides the mouse after 2.5s of inactivity. + - + Disable controller applet Vô hiệu hoá applet tay cầm - - Forcibly disables the use of the controller applet by guests. -When a guest attempts to open the controller applet, it is immediately closed. - + + Forcibly disables the use of the controller applet in emulated programs. +When a program attempts to open the controller applet, it is immediately closed. + - + Check for updates - + - + Whether or not to check for updates upon startup. - + - + Enable Gamemode - + - + + Force X11 as Graphics Backend + + + + Custom frontend - + - + Real applet - + - + Never - + - + On Load - + - + Always - + - + CPU CPU - + GPU - + - + CPU Asynchronous - + - + Uncompressed (Best quality) Không nén (Chất lượng tốt nhất) - + BC1 (Low quality) BC1 (Chất lượng thấp) - + BC3 (Medium quality) BC3 (Chất lượng trung bình) - - Conservative - - - - - Aggressive - - - - - OpenGL - OpenGL - - - - Vulkan - Vulkan - - - - Null - Null - - - - GLSL - GLSL - - - - GLASM (Assembly Shaders, NVIDIA Only) - GLASM (Assembly Shaders, chỉ cho NVIDIA) - - - - SPIR-V (Experimental, AMD/Mesa Only) - - - - - Normal - Bình thường - - - - High - Cao - - - - Extreme - Cực đại - - - + + Auto Tự động - + + 30 FPS + + + + + 60 FPS + + + + + 90 FPS + + + + + 120 FPS + + + + + Conservative + + + + + Aggressive + + + + + Vulkan + Vulkan + + + + OpenGL GLSL + + + + + OpenGL GLASM (Assembly Shaders, NVIDIA Only) + + + + + OpenGL SPIR-V (Experimental, AMD/Mesa Only) + + + + + Null + Null + + + + Fast + + + + + Balanced + + + + + Accurate Chính xác - - Unsafe - Không an toàn - - - - Paranoid (disables most optimizations) - Paranoid (vô hiệu hoá hầu hết sự tối ưu) - - - - Dynarmic - - - - - NCE - - - - - Borderless Windowed - Cửa sổ không viền - - - - Exclusive Fullscreen - Toàn màn hình - - - - No Video Output - Không có đầu ra video - - - - CPU Video Decoding - Giải mã video bằng CPU - - - - GPU Video Decoding (Default) - Giải mã video bằng GPU (Mặc định) - - - - 0.25X (180p/270p) [EXPERIMENTAL] - - - - - 0.5X (360p/540p) [EXPERIMENTAL] - - - - - 0.75X (540p/810p) [EXPERIMENTAL] - 0.75X (540p/810p) [THỬ NGHIỆM] - - - - 1X (720p/1080p) - 1X (720p/1080p) - - - - 1.5X (1080p/1620p) [EXPERIMENTAL] - 1.5X (1080p/1620p) [THỬ NGHIỆM] - - - - 2X (1440p/2160p) - 2X (1440p/2160p) - - - - 3X (2160p/3240p) - 3X (2160p/3240p) - - - - 4X (2880p/4320p) - 4X (2880p/4320p) - - - - 5X (3600p/5400p) - 5X (3600p/5400p) - - - - 6X (4320p/6480p) - 6X (4320p/6480p) - - - - 7X (5040p/7560p) - 7X (5040p/7560p) - - - - 8X (5760p/8640p) - 8X (5760p/8640p) - - - - Nearest Neighbor - Nearest Neighbor - - - - Bilinear - Bilinear - - - - Bicubic - Bicubic - - - - Gaussian - Gaussian - - - - ScaleForce - ScaleForce - - - - AMD FidelityFX™️ Super Resolution - AMD FidelityFX™️ Super Resolution - - - - Area - - - - - None - Không có - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Default (16:9) - Mặc định (16:9) - - - - Force 4:3 - Dùng 4:3 - - - - Force 21:9 - Dùng 21:9 - - - - Force 16:10 - Dùng 16:10 - - - - Stretch to Window - Mở rộng đến cửa sổ - - - - Automatic - Tự động - - - + + Default Mặc định - + + Unsafe (fast) + + + + + Safe (stable) + + + + + Unsafe + Không an toàn + + + + Paranoid (disables most optimizations) + Paranoid (vô hiệu hoá hầu hết sự tối ưu) + + + + Debugging + + + + + Dynarmic + + + + + NCE + + + + + Borderless Windowed + Cửa sổ không viền + + + + Exclusive Fullscreen + Toàn màn hình + + + + No Video Output + Không có đầu ra video + + + + CPU Video Decoding + Giải mã video bằng CPU + + + + GPU Video Decoding (Default) + Giải mã video bằng GPU (Mặc định) + + + + 0.25X (180p/270p) [EXPERIMENTAL] + + + + + 0.5X (360p/540p) [EXPERIMENTAL] + + + + + 0.75X (540p/810p) [EXPERIMENTAL] + 0.75X (540p/810p) [THỬ NGHIỆM] + + + + 1X (720p/1080p) + 1X (720p/1080p) + + + + 1.25X (900p/1350p) [EXPERIMENTAL] + + + + + 1.5X (1080p/1620p) [EXPERIMENTAL] + 1.5X (1080p/1620p) [THỬ NGHIỆM] + + + + 2X (1440p/2160p) + 2X (1440p/2160p) + + + + 3X (2160p/3240p) + 3X (2160p/3240p) + + + + 4X (2880p/4320p) + 4X (2880p/4320p) + + + + 5X (3600p/5400p) + 5X (3600p/5400p) + + + + 6X (4320p/6480p) + 6X (4320p/6480p) + + + + 7X (5040p/7560p) + 7X (5040p/7560p) + + + + 8X (5760p/8640p) + 8X (5760p/8640p) + + + + Nearest Neighbor + Nearest Neighbor + + + + Bilinear + Bilinear + + + + Bicubic + Bicubic + + + + Gaussian + Gaussian + + + + Lanczos + + + + + ScaleForce + ScaleForce + + + + AMD FidelityFX Super Resolution + + + + + Area + + + + + MMPX + + + + + Zero-Tangent + + + + + B-Spline + + + + + Mitchell + + + + + Spline-1 + + + + + + None + Không có + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Default (16:9) + Mặc định (16:9) + + + + Force 4:3 + Dùng 4:3 + + + + Force 21:9 + Dùng 21:9 + + + + Force 16:10 + Dùng 16:10 + + + + Stretch to Window + Mở rộng đến cửa sổ + + + + Automatic + Tự động + + + 2x 2x - + 4x 4x - + 8x 8x - + 16x 16x - + + 32x + + + + + 64x + + + + Japanese (日本語) Tiếng Nhật (日本語) - + American English Tiếng Anh Mỹ - + French (français) Tiếng Pháp (French) - + German (Deutsch) Tiếng Đức (Deutsch) - + Italian (italiano) Tiếng Ý (italiano) - + Spanish (español) Tiếng Tây Ban Nha (Español) - + Chinese Tiếng Trung - + Korean (한국어) Tiếng Hàn (한국어) - + Dutch (Nederlands) Tiếng Hà Lan (Nederlands) - + Portuguese (português) Tiếng Bồ Đào Nha (Portuguese) - + Russian (Русский) Tiếng Nga (Русский) - + Taiwanese Tiếng Đài Loan - + British English Tiếng Anh Anh - + Canadian French Tiếng Pháp Canada - + Latin American Spanish Tiếng Tây Ban Nha Mỹ Latinh - + Simplified Chinese Tiếng Trung giản thể - + Traditional Chinese (正體中文) Tiếng Trung phồn thể (正體中文) - + Brazilian Portuguese (português do Brasil) Tiếng Bồ Đào Nha Brasil (Português do Brasil) - - + + Polish (polska) + + + + + Thai (แบบไทย) + + + + + Japan Nhật Bản - + USA Hoa Kỳ - + Europe Châu Âu - + Australia Úc - + China Trung Quốc - + Korea Hàn Quốc - + Taiwan Đài Loan - + Auto (%1) Auto select time zone Tự động (%1) - + Default (%1) Default time zone Mặc định (%1) - + CET CET - + CST6CDT CST6CDT - + Cuba Cuba - + EET EET - + Egypt Ai Cập - + Eire Eire - + EST EST - + EST5EDT EST5EDT - + GB GB - + GB-Eire GB-Eire - + GMT GMT - + GMT+0 GMT+0 - + GMT-0 GMT-0 - + GMT0 GMT0 - + Greenwich Greenwich - + Hongkong Hồng Kông - + HST HST - + Iceland Iceland - + Iran Iran - + Israel Israel - + Jamaica Jamaica - + Kwajalein Kwajalein - + Libya Libya - + MET MET - + MST MST - + MST7MDT MST7MDT - + Navajo Navajo - + NZ NZ - + NZ-CHAT NZ-CHAT - + Poland Ba Lan - + Portugal Bồ Đào Nha - + PRC PRC - + PST8PDT PST8PDT - + ROC ROC - + ROK ROK - + Singapore Singapore - + Turkey Thổ Nhĩ Kỳ - + UCT UCT - + Universal Quốc tế - + UTC UTC - + W-SU W-SU - + WET WET - + Zulu Zulu - + Mono Mono - + Stereo Stereo - + Surround Surround - + 4GB DRAM (Default) - + - + 6GB DRAM (Unsafe) - + - + 8GB DRAM - + - + 10GB DRAM (Unsafe) - + - + 12GB DRAM (Unsafe) - + - - Low (128) - - - - - Medium (256) - - - - - High (512) - - - - + Docked Docked - + Handheld Handheld - + + + Off + + + + Boost (1700MHz) - + - + Fast (2000MHz) - + - + Always ask (Default) - + - + Only if game specifies not to stop - + - + Never ask - + + + + + + Medium (256) + + + + + + High (512) + + + + + Very Small (16 MB) + + + + + Small (32 MB) + + + + + Normal (128 MB) + + + + + Large (256 MB) + + + + + Very Large (512 MB) + + + + + Very Low (4 MB) + + + + + Low (8 MB) + + + + + Normal (16 MB) + + + + + Medium (32 MB) + + + + + High (64 MB) + + + + + Very Low (32) + + + + + Low (64) + + + + + Normal (128) + + + + + Disabled + + + + + ExtendedDynamicState 1 + + + + + ExtendedDynamicState 2 + + + + + ExtendedDynamicState 3 + + + + + Tree View + + + + + Grid View + @@ -1931,12 +2234,12 @@ When a guest attempts to open the controller applet, it is immediately closed. Applets - + Applet mode preference - + @@ -1991,7 +2294,7 @@ When a guest attempts to open the controller applet, it is immediately closed.Khôi phục mặc định - + Auto Tự động @@ -2021,7 +2324,7 @@ When a guest attempts to open the controller applet, it is immediately closed. CPU Backend - + @@ -2178,7 +2481,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all memory accesses to use Software MMU Emulation.</div> @@ -2196,7 +2499,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up exclusive memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all exclusive memory accesses to use Software MMU Emulation.</div> @@ -2230,7 +2533,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up memory accesses by allowing invalid memory accesses to succeed.</div> - <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> + <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> <div style="white-space: nowrap">Tối ưu hóa này tăng tốc truy cập bộ nhớ bằng cách cho phép các truy cập bộ nhớ không hợp lệ thành công.</div> @@ -2271,30 +2574,30 @@ When a guest attempts to open the controller applet, it is immediately closed.Ghi nhật ký - - Open Log Location - Mở vị trí nhật ký - - - + Global Log Filter Bộ lọc nhật ký chung - + When checked, the max size of the log increases from 100 MB to 1 GB Khi kích hoạt, kích thước tối đa của tập tin nhật ký tăng từ 100 MB lên 1 GB - + Enable Extended Logging** Bật ghi nhật ký mở rộng** - + Show Log in Console Hiện nhật ký trong console + + + Open Log Location + Mở vị trí nhật ký + Homebrew @@ -2353,7 +2656,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Enable Renderdoc Hotkey - + @@ -2398,12 +2701,12 @@ When a guest attempts to open the controller applet, it is immediately closed. <html><head/><body><p>When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.</p></body></html> - + Disable Buffer Reorder - + @@ -2431,18 +2734,9 @@ When a guest attempts to open the controller applet, it is immediately closed.Cho phép tất cả các loại tay cầm - - Censor username in logs - - - - - **This will be reset automatically when eden closes. - - - - Enable Auto-Stub** - Bật Auto-Stub** + + Enable Auto-Stub + @@ -2451,8 +2745,8 @@ When a guest attempts to open the controller applet, it is immediately closed. - Enable CPU Debugging - Bật chế độ gỡ lỗi CPU + Use dev.keys + @@ -2465,43 +2759,74 @@ When a guest attempts to open the controller applet, it is immediately closed.Gỡ lỗi - - Flush log output on each line - + + Battery Serial: + - - Enable FS Access Log - Bật nhật ký truy cập FS + + Bitmask for quick development toggles + - + + Set debug knobs (bitmask) + + + + + 16-bit debug knob set for quick development toggles + + + + + (bitmask) + + + + + Debug Knobs: + + + + + Unit Serial: + + + + Enable this to output the latest generated audio command list to the console. Only affects games using the audio renderer. Bật tính năng này để đưa ra danh sách lệnh âm thanh mới nhất đã tạo ra đến console. Chỉ ảnh hưởng đến các game sử dụng bộ mã hóa âm thanh. - - Enable Auto-Stub - - - - + Dump Audio Commands To Console** Trích xuất các lệnh âm thanh đến console** - + + Flush log output on each line + + + + + Enable FS Access Log + Bật nhật ký truy cập FS + + + Enable Verbose Reporting Services** Bật dịch vụ báo cáo chi tiết** - **This will be reset automatically when yuzu closes. - **Sẽ tự động đặt lại khi đóng yuzu. + + Censor username in logs + - - Web applet not compiled - Applet web chưa được biên dịch + + **This will be reset automatically when Eden closes. + @@ -2543,14 +2868,10 @@ When a guest attempts to open the controller applet, it is immediately closed. ConfigureDialog - - yuzu Configuration - Cấu hình yuzu - - eden Configuration - + Eden Configuration + @@ -2558,88 +2879,88 @@ When a guest attempts to open the controller applet, it is immediately closed.Một số cài đặt chỉ khả dụng khi game không chạy. - + Applets - + - - + + Audio Âm thanh - - + + CPU CPU - + Debug Gỡ lỗi - + Filesystem Hệ thống tập tin - - + + General Chung - - + + Graphics Đồ hoạ - + GraphicsAdvanced Đồ họa Nâng cao - - GraphicsExtensions - + + GraphicsExtra + - + Hotkeys Phím tắt - - + + Controls Điều khiển - + Profiles Hồ sơ - + Network Mạng - - + + System Hệ thống - + Game List Danh sách game - + Web Web @@ -2669,9 +2990,10 @@ When a guest attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2681,107 +3003,183 @@ When a guest attempts to open the controller applet, it is immediately closed.Thẻ nhớ SD - + + Save Data + + + + Gamecard Đĩa game - + Path Đường dẫn - + Inserted Đã chèn vào - + Current Game Game hiện tại - + Patch Manager Quản lý bản vá - + Dump Decompressed NSOs Trích xuất NSO đã giải nén - + Dump ExeFS Trích xuất ExeFS - + Mod Load Root Thư mục chứa mod gốc - + Dump Root Thư mục trích xuất gốc - + Caching Bộ nhớ đệm - + Cache Game List Metadata Lưu bộ nhớ đệm metadata của danh sách game - - - - + Reset Metadata Cache Đặt lại bộ nhớ đệm metadata - + Select Emulated NAND Directory... Chọn thư mục NAND giả lập... - + Select Emulated SD Directory... Chọn thư mục SD giả lập... - + + + Select Save Data Directory... + + + + Select Gamecard Path... Chọn đường dẫn tới đĩa game... - + Select Dump Directory... Chọn thư mục trích xuất... - + Select Mod Load Directory... Chọn thư mục chứa mod... - - The metadata cache is already empty. - Bộ nhớ đệm metadata trống. + + Save Data Directory + - - The operation completed successfully. - Các hoạt động đã hoàn tất thành công. + + Choose an action for the save data directory: + - - The metadata cache couldn't be deleted. It might be in use or non-existent. - Bộ nhớ đệm metadata không thể xoá. Nó có thể đang được sử dụng hoặc không tồn tại. + + Set Custom Path + + + + + Reset to NAND + + + + + Save data exists in both the old and new locations. + +Old: %1 +New: %2 + +Would you like to migrate saves from the old location? +WARNING: This will overwrite any conflicting saves in the new location! + + + + + Would you like to migrate your save data to the new location? + +From: %1 +To: %2 + + + + + Migrate Save Data + + + + + Migrating save data... + + + + + Cancel + + + + + + Migration Failed + + + + + Failed to create destination directory. + + + + + Failed to migrate save data: +%1 + + + + + Migration Complete + + + + + Save data has been migrated successfully. + +Would you like to delete the old save data? + @@ -2799,28 +3197,54 @@ When a guest attempts to open the controller applet, it is immediately closed. - Linux - + External Content + - + + Add directories to scan for DLCs and Updates without installing to NAND + + + + + Add Directory + + + + + Remove Selected + + + + Reset All Settings Đặt lại mọi cài đặt - yuzu - yuzu + + Eden + - - eden - - - - + This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed? Quá trình này sẽ đặt lại toàn bộ tùy chỉnh và gỡ hết mọi cài đặt cho từng game riêng lẻ. Quá trình này không xoá thư mục game, hồ sơ, hay hồ sơ đầu vào. Tiếp tục? + + + Select External Content Directory... + + + + + Directory Already Added + + + + + This directory is already in the list. + + ConfigureGraphics @@ -2850,33 +3274,33 @@ When a guest attempts to open the controller applet, it is immediately closed.Màu nền: - + % FSR sharpening percentage (e.g. 50%) % - + Off Tắt - + VSync Off Tắt Vsync - + Recommended Đề xuất - + On Bật - + VSync On Bật Vsync @@ -2894,7 +3318,7 @@ When a guest attempts to open the controller applet, it is immediately closed.Nâng cao - + Advanced Graphics Settings Cài đặt đồ hoạ nâng cao @@ -2904,24 +3328,38 @@ When a guest attempts to open the controller applet, it is immediately closed. Form - Mẫu + - Extensions - + Extras + - - Vulkan Extension Settings - + + Hacks + - - While it's recommended to use state 3, some games may perform better on lower states. Setting to 0 (disabled) may also break games. -If your GPU is older (i.e. RX570/580 or older), it may not support these features. If this is the case, set the slider to 0 and uncheck all boxes. -These settings are experimental, and may cause black screens. If your games fail to boot or are stuck on a black screen, change these settings around. - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + + + + + % + Sample Shading percentage (e.g. 50%) + + + + + Extended Dynamic State is disabled on macOS due to MoltenVK compatibility issues that cause black screens. + @@ -2952,75 +3390,75 @@ These settings are experimental, and may cause black screens. If your games fail Khôi phục mặc định - + Action Hành động - + Hotkey Phím tắt - + Controller Hotkey Phím tắt tay cầm - - - + + + Conflicting Key Sequence Tổ hợp phím bị xung đột - - + + The entered key sequence is already assigned to: %1 Tổ hợp phím này đã gán với: %1 - + [waiting] [chờ] - + Invalid Không hợp lệ - + Invalid hotkey settings - + - + An error occurred. Please report this issue on github. - + - + Restore Default Khôi phục mặc định - + Clear Xóa - + Conflicting Button Sequence Tổ hợp nút bị xung đột - + The default button sequence is already assigned to: %1 Tổ hợp nút mặc định đã được gán cho: %1 - + The default key sequence is already assigned to: %1 Tổ hợp phím này đã gán với: %1 @@ -3340,12 +3778,8 @@ These settings are experimental, and may cause black screens. If your games fail - Requires restarting eden - - - - Requires restarting yuzu - Cần khởi động lại yuzu + Requires restarting Eden + @@ -3495,30 +3929,19 @@ These settings are experimental, and may cause black screens. If your games fail - + Left Stick Cần trái - - - - - - - Up - Lên - - - - - - - - - - Left - Trái + + + + + + + Down + Xuống @@ -3532,14 +3955,25 @@ These settings are experimental, and may cause black screens. If your games fail Phải - - - - - - - Down - Xuống + + + + + + + + Left + Trái + + + + + + + + + Up + Lên @@ -3586,14 +4020,6 @@ These settings are experimental, and may cause black screens. If your games fail D-Pad D-Pad - - - - - - SL - SL - @@ -3603,59 +4029,55 @@ These settings are experimental, and may cause black screens. If your games fail SR - - - - L - L + + + + + SL + SL - + ZL ZL + + + + + L + L + Minus Trừ - - - - Capture - Chụp - - + Plus Cộng - - - Home - Home + + + + ZR + ZR - - + + R R - - - - - ZR - ZR - Motion 1 @@ -3666,6 +4088,18 @@ These settings are experimental, and may cause black screens. If your games fail Motion 2 Chuyển động 2 + + + + Capture + Chụp + + + + + Home + Home + Face Buttons @@ -3678,10 +4112,10 @@ These settings are experimental, and may cause black screens. If your games fail X - - - Y - Y + + + B + B @@ -3690,14 +4124,14 @@ These settings are experimental, and may cause black screens. If your games fail A - - - B - B + + + Y + Y - + Right Stick Cần phải @@ -3712,242 +4146,242 @@ These settings are experimental, and may cause black screens. If your games fail Cấu hình - - - - + + + + Clear Xóa - - - - - + + + + + [not set] [chưa đặt] - - - + + + Invert button Đảo ngược nút - - + + Toggle button Đổi nút - + Turbo button Nút turbo - - + + Invert axis Đảo ngược trục - - - + + + Set threshold Thiết lập ngưỡng - - + + Choose a value between 0% and 100% Chọn một giá trị giữa 0% và 100% - + Toggle axis Chuyển đổi trục - + Set gyro threshold Thiết lập ngưỡng cảm biến con quay - + Calibrate sensor Hiệu chỉnh cảm biến - + Map Analog Stick Ánh xạ cần analog - + After pressing OK, first move your joystick horizontally, and then vertically. To invert the axes, first move your joystick vertically, and then horizontally. Sau khi nhấn OK, di chuyển cần điều khiển theo chiều ngang, sau đó theo chiều dọc. Để đảo ngược hướng, di chuyển cần điều khiển theo chiều dọc trước, sau đó theo chiều ngang. - + Center axis Canh chỉnh trục - - + + Deadzone: %1% Vùng chết: %1% - - + + Modifier Range: %1% Phạm vi điều chỉnh: %1% - - + + Pro Controller Pro Controller - + Dual Joycons Joycon đôi - + Left Joycon Joycon trái - + Right Joycon Joycon phải - + Handheld Handheld - + GameCube Controller Tay cầm GameCube - + Poke Ball Plus Poke Ball Plus - + NES Controller Tay cầm NES - + SNES Controller Tay cầm SNES - + N64 Controller Tay cầm N64 - + Sega Genesis Sega Genesis - + Start / Pause Bắt đầu / Tạm dừng - + Z Z - + Control Stick Cần điều khiển - + C-Stick C-Stick - + Shake! Lắc! - + [waiting] [đang chờ] - + New Profile Hồ sơ mới - + Enter a profile name: Nhập tên hồ sơ: - - + + Create Input Profile Tạo hồ sơ đầu vào - + The given profile name is not valid! Tên hồ sơ không hợp lệ! - + Failed to create the input profile "%1" Thất bại khi tạo hồ sơ đầu vào "%1" - + Delete Input Profile Xoá hồ sơ đầu vào - + Failed to delete the input profile "%1" Thất bại khi xoá hồ sơ đầu vào "%1" - + Load Input Profile Nạp hồ sơ đầu vào - + Failed to load the input profile "%1" Thất bại khi nạp hồ sơ đầu vào "%1" - + Save Input Profile Lưu hồ sơ đầu vào - + Failed to save the input profile "%1" Thất bại khi lưu hồ sơ dầu vào "%1" @@ -3970,15 +4404,6 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Mặc định - - ConfigureLinuxTab - - - - Linux - - - ConfigureMotionTouch @@ -4004,7 +4429,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< - + Configure Cấu hình @@ -4034,111 +4459,93 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Cổng: - - Learn More - Tìm hiểu thêm - - - - + + Test Thử nghiệm - + Add Server Thêm máy chủ - + Remove Server Loại bỏ máy chủ - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Tìm hiểu thêm</span></a> - - - + %1:%2 %1:%2 - yuzu - yuzu + + + + + + + Eden + - - <a href='https://eden-emulator.github.io/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - - - - + Port number has invalid characters Cổng có kí tự không hợp lệ - - - - - - - eden - - - - + Port has to be in range 0 and 65353 Cổng phải từ 0 đến 65353 - + IP address is not valid Địa chỉ IP không hợp lệ - + This UDP server already exists Máy chủ UDP này đã tồn tại - + Unable to add more than 8 servers Không thể thêm quá 8 máy chủ - + Testing Thử nghiệm - + Configuring Cấu hình - + Test Successful Thử nghiệm thành công - + Successfully received data from the server. Thành công nhận dữ liệu từ máy chủ. - + Test Failed Thử nghiệm thất bại - + Could not receive valid data from the server.<br>Please verify that the server is set up correctly and the address and port are correct. Không thể nhận được dữ liệu hợp lệ từ máy chủ.<br>Hãy chắc chắn máy chủ được thiết lập chính xác và địa chỉ lẫn cổng đều đúng. - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. Cấu hình kiểm tra hoặc hiệu chuẩn UDP đang được tiến hành.<br>Vui lòng chờ cho đến khi nó hoàn thành. @@ -4265,9 +4672,9 @@ Các giá trị hiện tại lần lượt là %1% và %2%. Giao diện mạng - - None - Không có + + Enable Airplane Mode + @@ -4323,49 +4730,54 @@ Các giá trị hiện tại lần lượt là %1% và %2%. Một số cài đặt chỉ khả dụng khi game không chạy. - + Add-Ons Add-Ons - + System Hệ thống - + CPU CPU - + Graphics Đồ hoạ - + Adv. Graphics Đồ hoạ nâng cao - - GPU Extensions - + + Ext. Graphics + - + Audio Âm thanh - + Input Profiles Hồ sơ đầu vào - Linux - + Network + + + + + Applets + @@ -4386,15 +4798,110 @@ Các giá trị hiện tại lần lượt là %1% và %2%. Add-Ons - + + Import Mod from ZIP + + + + + Import Mod from Folder + + + + Patch Name Tên bản vá - + Version Phiên bản + + + Mod Install Succeeded + + + + + Successfully installed all mods. + + + + + Mod Install Failed + + + + + Failed to install the following mods: + %1 +Check the log for details. + + + + + Mod Folder + + + + + Zipped Mod Location + + + + + Zipped Archives (*.zip) + + + + + Invalid Selection + + + + + Only mods, cheats, and patches can be deleted. +To delete NAND-installed updates, right-click the game in the game list and click Remove -> Remove Installed Update. + + + + + You are about to delete the following installed mods: + + + + + + +Once deleted, these can NOT be recovered. Are you 100% sure you want to delete them? + + + + + Delete add-on(s)? + + + + + Successfully deleted + + + + + Successfully deleted all selected mods. + + + + + &Delete + + + + + &Open in File Manager + + ConfigureProfileManager @@ -4424,32 +4931,17 @@ Các giá trị hiện tại lần lượt là %1% và %2%. Tên người dùng - - Set Image - Đặt hình ảnh - - - + Add Thêm - - Rename - Đổi tên - - - - Remove - Loại bỏ - - - + Profile management is available only when game is not running. Quản lí hồ sơ chỉ khả dụng khi game không chạy. - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -4457,100 +4949,80 @@ Các giá trị hiện tại lần lượt là %1% và %2%. %2 - - Enter Username - Nhập tên người dùng - - - + Users Người dùng - - Enter a username for the new user: - Chọn tên người dùng cho người dùng mới: - - - - Enter a new username: - Nhập tên người dùng mới: - - - - Select User Image - Chọn ảnh người dùng - - - - JPEG Images (*.jpg *.jpeg) - Ảnh JPEG (*.jpg *.jpeg) - - - + Error deleting image Lỗi khi xóa ảnh - + Error occurred attempting to overwrite previous image at: %1. Có lỗi khi ghi đè ảnh trước tại: %1. - + Error deleting file Lỗi khi xoá tập tin - + Unable to delete existing file: %1. Không thể xóa tập tin hiện tại: %1. - + Error creating user image directory Lỗi khi tạo thư mục chứa ảnh người dùng - + Unable to create directory %1 for storing user images. Không thể tạo thư mục %1 để chứa ảnh người dùng. - - Error copying user image - Lỗi chép ảnh người dùng + + Error saving user image + - - Unable to copy image from %1 to %2 - Không thể chép ảnh từ %1 sang %2 + + Unable to save image to file + - - Error resizing user image - Lỗi thu phóng ảnh + + &Edit + - - Unable to resize image - Không thể thu phóng ảnh + + &Delete + + + + + Edit User + ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. Xoá người dùng này? Tất cả dữ liệu save của người dùng này sẽ bị xoá. - + Confirm Delete Xác nhận xóa - + Name: %1 UUID: %2 Tên: %1 @@ -4603,7 +5075,7 @@ UUID: %2 - + Enable Bật @@ -4614,7 +5086,7 @@ UUID: %2 - + Not connected Không kết nối @@ -4624,63 +5096,63 @@ UUID: %2 Khôi phục mặc định - + Clear Xóa - + [not set] [chưa đặt] - + Invert axis Đảo ngược trục - - + + Deadzone: %1% Vùng chết: %1% - + Error enabling ring input Lỗi khi bật đầu vào từ vòng - + Direct Joycon driver is not enabled Driver JoyCon trực tiếp chưa được bật - + Configuring Cấu hình - + The current mapped device doesn't support the ring controller Thiết bị được ánh xạ hiện tại không hỗ trợ vòng điều khiển - + The current mapped device doesn't have a ring attached Thiết bị được ánh xạ hiện tại không có vòng được gắn vào - + The current mapped device is not connected Thiết bị được ánh xạ hiện tại không được kết nối - + Unexpected driver result %1 Kết quả driver không như mong đợi %1 - + [waiting] [chờ] @@ -4704,7 +5176,7 @@ UUID: %2 Lõi - + Warning: "%1" is not a valid language for region "%2" Cảnh báo: "%1" không phải là ngôn ngữ hợp lệ cho khu vực "%2" @@ -4716,14 +5188,10 @@ UUID: %2 TAS TAS - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the yuzu website.</p></body></html> - <html><head/><body><p>Đọc đầu vào từ tay cầm bằng các tập lệnh trong cùng định dạng như các tập lệnh TAS-nx.<br/>Để biết thêm chi tiết, vui lòng tham khảo <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">trang trợ giúp</span></a> trên website của yuzu.</p></body></html> - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the eden website.</p></body></html> - + <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the user handbook.</p></body></html> + @@ -4756,17 +5224,22 @@ UUID: %2 Tạm dừng thực thi trong quá trình tải - + + Show recording dialog + + + + Script Directory Thư mục tập lệnh - + Path Đường dẫn - + ... ... @@ -4774,12 +5247,12 @@ UUID: %2 ConfigureTasDialog - + TAS Configuration Cấu hình TAS - + Select TAS Load Directory... Chọn thư mục nạp TAS... @@ -4883,14 +5356,10 @@ Kéo điểm để thay đổi vị trí, hoặc nhấp đúp chuột vào ô tr Configure Touchscreen Cấu hình màn hình cảm ứng - - Warning: The settings in this page affect the inner workings of yuzu's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - Chú ý: Cài đặt trong trang này có thể ảnh hưởng đến hoạt động bên trong giả lập màn hình cảm ứng của yuzu's. Thay đổi chúng có thể dẫn đến hành vi không mong muốn, chẳng hạn như một phần của màn hình cảm ứng sẽ không hoạt động. Bạn chỉ nên sử dụng trang này nếu bạn biết bạn đang làm gì. - - Warning: The settings in this page affect the inner workings of eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - + Warning: The settings in this page affect the inner workings of Eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. + @@ -4921,64 +5390,43 @@ Kéo điểm để thay đổi vị trí, hoặc nhấp đúp chuột vào ô tr ConfigureUI - - - + + None Không có - - - Small (32x32) - Nhỏ (32x32) - - Standard (64x64) - Tiêu chuẩn (64x64) - - - - Large (128x128) - Lớn (128x128) - - - - Full Size (256x256) - Kích thước đầy đủ (256x256) - - - Small (24x24) Nhỏ (24x24) - + Standard (48x48) Tiêu chuẩn (48x48) - + Large (72x72) Lớn (72x72) - + Filename Tên tập tin - + Filetype Loại tập tin - + Title ID ID title - + Title Name Tên title @@ -5043,75 +5491,70 @@ Kéo điểm để thay đổi vị trí, hoặc nhấp đúp chuột vào ô tr Show Play Time Column - + - Game Icon Size: - Kích thước biểu tượng game: - - - Folder Icon Size: Kích thước biểu tượng thư mục: - + Row 1 Text: Dòng chữ hàng 1: - + Row 2 Text: Dòng chữ hàng 2: - + Screenshots Ảnh chụp màn hình - + Ask Where To Save Screenshots (Windows Only) Hỏi nơi lưu ảnh chụp màn hình (chỉ cho Windows) - + Screenshots Path: Đường dẫn cho ảnh chụp màn hình: - + ... ... - + TextLabel NhãnVănBản - + Resolution: Độ phân giải: - + Select Screenshots Path... Chọn đường dẫn cho ảnh chụp màn hình... - + <System> <System> - + English Tiếng Việt - + Auto (%1 x %2, %3 x %4) Screenshot width value Tự động (%1 x %2, %3 x %4) @@ -5209,170 +5652,178 @@ Kéo điểm để thay đổi vị trí, hoặc nhấp đúp chuột vào ô tr Web Web - - yuzu Web Service - Dịch vụ web yuzu - - - By providing your username and token, you agree to allow yuzu to collect additional usage data, which may include user identifying information. - Bằng cách cung cấp tên đăng nhập và token của bạn, bạn đã chấp thuận sẽ cho phép yuzu thu thập dữ liệu đã sử dụng, trong đó có thể có thông tin nhận dạng người dùng. - - eden Web Service - + Eden Web Service + - - By providing your username and token, you agree to allow eden to collect additional usage data, which may include user identifying information. - - - - - Verify - Xác nhận - - - - Sign up - Đăng ký - - - + Token: Token: - + Username: Tên người dùng: - - What is my token? - Token của tôi là gì? + + Generate + - + Web Service configuration can only be changed when a public room isn't being hosted. Cấu hình dịch vụ web chỉ có thể thay đổi khi không có phòng công khai đang được tổ chức. - Telemetry - Viễn trắc - - - Share anonymous usage data with the yuzu team - Chia sẽ dữ liệu sử dụng ẩn danh với nhóm yuzu - - - Learn more - Tìm hiểu thêm - - - Telemetry ID: - ID viễn trắc: - - - Regenerate - Tạo mới - - - + Discord Presence Hiện diện trên Discord - + Show Current Game in your Discord Status Hiển thị game hiện tại lên trạng thái Discord của bạn - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Tìm hiểu thêm</span></a> - - - - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Đăng ký</span></a> - - - - <a href='https://evilperson1337.notion.site/Hosting-a-Room-Inside-of-Eden-20457c2edaf680108abac6215a79acdb'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - - - - - Warning - - - + - Verification is currently nonfunctional, instead generate a random 48-character string with only lowercase a-z. - - - - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">Token của tôi là gì?</span></a> - - - Telemetry ID: 0x%1 - ID viễn trắc: 0x%1 - - - Unspecified - Không xác định - - - Token not verified - Token chưa được xác minh - - - Token was not verified. The change to your token has not been saved. - Token không được xác thực. Thay đổi token của bạn chưa được lưu. - - - - Unverified, please click Verify before saving configuration + All Good Tooltip - Chưa xác minh, vui lòng nhấp vào Xác minh trước khi lưu cấu hình + - Verifying... - Đang xác minh... - - - Verified + + Must be between 4-20 characters Tooltip - Đã xác minh + - Verification failed + + Must be 48 characters, and lowercase a-z Tooltip - Xác nhận không thành công - - - Verification failed - Xác nhận không thành công - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - Xác thực không thành công. Hãy kiểm tra xem bạn đã nhập token đúng chưa và kết nối internet của bạn có hoạt động hay không. + ControllerDialog - + Controller P1 Tay cầm P1 - + &Controller P1 &Tay cầm P1 + + DataDialog + + + Data Manager + + + + + Deleting ANY data is IRREVERSABLE! + + + + + Shaders + + + + + UserNAND + + + + + SysNAND + + + + + Mods + + + + + Saves + + + + + DataWidget + + + Form + + + + + Tooltip + + + + + Open with your system file manager + + + + + Delete all data in this directory. THIS IS 100% IRREVERSABLE! + + + + + Export all data in this directory. This may take a while! + + + + + Import data for this directory. This may take a while, and will delete ALL EXISTING DATA! + + + + + Calculating... + + + + + DepsDialog + + + Eden Dependencies + + + + + <html><head/><body><p><span style=" font-size:28pt;">Eden Dependencies</span></p></body></html> + + + + + <html><head/><body><p>The projects that make Eden possible</p></body></html> + + + + + Dependency + + + + + Version + + + DirectConnect @@ -5434,1499 +5885,152 @@ Kéo điểm để thay đổi vị trí, hoặc nhấp đúp chuột vào ô tr Username is not valid. Must be 4 to 20 alphanumeric characters. - Tên người dùng không hợp lệ. Phải có từ 4 đến 20 ký tự chữ số hoặc chữ cái. + Room name is not valid. Must be 4 to 20 alphanumeric characters. - Tên phòng không hợp lệ. Phải có từ 4 đến 20 ký tự chữ số hoặc chữ cái. + Username is already in use or not valid. Please choose another. - Tên người dùng đã được sử dụng hoặc không hợp lệ. Vui lòng chọn tên khác. + IP is not a valid IPv4 address. - Địa chỉ IP không phải là địa chỉ IPv4 hợp lệ. + Port must be a number between 0 to 65535. - Cổng phải là một số từ 0 đến 65535. + You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - Bạn phải chọn một Game ưu thích để tạo một phòng. Nếu bạn chưa có bất kỳ game nào trong danh sách game của bạn, hãy thêm một thư mục game bằng cách nhấp vào biểu tượng dấu cộng trong danh sách game. + Unable to find an internet connection. Check your internet settings. - Không thể tìm thấy kết nối internet. Kiểm tra cài đặt internet của bạn. + Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - Không thể kết nối tới máy chủ. Hãy kiểm tra xem các thiết lập kết nối có đúng không. Nếu vẫn không thể kết nối, hãy liên hệ với người chủ phòng và xác minh rằng máy chủ đã được cấu hình đúng cách với cổng ngoài được chuyển tiếp. + Unable to connect to the room because it is already full. - Không thể kết nối tới phòng vì nó đã đầy. + - Creating a room failed. Please retry. Restarting eden might be necessary. - + Creating a room failed. Please retry. Restarting Eden might be necessary. + The host of the room has banned you. Speak with the host to unban you or try a different room. - Chủ phòng đã ban bạn. Hãy nói chuyện với người chủ phòng để được unban, hoặc thử vào một phòng khác. + - Version mismatch! Please update to the latest version of eden. If the problem persists, contact the room host and ask them to update the server. - + Version mismatch! Please update to the latest version of Eden. If the problem persists, contact the room host and ask them to update the server. + Incorrect password. - Mật khẩu sai. + An unknown error occurred. If this error continues to occur, please open an issue - Đã xảy ra lỗi không xác định. Nếu lỗi này tiếp tục xảy ra, vui lòng mở một issue + Connection to room lost. Try to reconnect. - Mất kết nối với phòng. Hãy thử kết nối lại. + You have been kicked by the room host. - Bạn đã bị kick bởi chủ phòng. + IP address is already in use. Please choose another. - Địa chỉ IP đã được sử dụng. Vui lòng chọn một địa chỉ khác. + You do not have enough permission to perform this action. - Bạn không có đủ quyền để thực hiên hành động này. + The user you are trying to kick/ban could not be found. They may have left the room. - Không thể tìm thấy người dùng bạn đang cố gắng kick/ban. -Họ có thể đã rời phòng. + No valid network interface is selected. Please go to Configure -> System -> Network and make a selection. - Không có giao diện mạng hợp lệ được chọn. -Vui lòng vào Cấu hình -> Hệ thống -> Mạng và thực hiện lựa chọn. + Error - Lỗi - - - - GMainWindow - - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Anonymous data is collected</a> to help improve yuzu. <br/><br/>Would you like to share your usage data with us? - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Dữ liệu ẩn danh được thu thập</a>để hỗ trợ cải thiện yuzu. <br/><br/>Bạn có muốn chia sẽ dữ liệu sử dụng với chúng tôi? - - - Telemetry - Viễn trắc - - - - Broken Vulkan Installation Detected - Phát hiện cài đặt Vulkan bị hỏng - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - Khởi tạo Vulkan thất bại trong quá trình khởi động.<br>Nhấp <br><a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>vào đây để xem hướng dẫn khắc phục vấn đề</a>. - - - - Running a game - TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping - Đang chạy một game - - - - Loading Web Applet... - Đang tải applet web... - - - - - Disable Web Applet - Tắt applet web - - - - 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.) - 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.) - - - - The amount of shaders currently being built - Số lượng shader đang được dựng - - - - The current selected resolution scaling multiplier. - Bội số tỷ lệ độ phân giải được chọn hiện tại. - - - - Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. - 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. - - - - How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. - 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. - - - - 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. - 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. - - - - Unmute - Bật tiếng - - - - Mute - Tắt tiếng - - - - Reset Volume - Đặt lại âm lượng - - - - &Clear Recent Files - &Xoá tập tin gần đây - - - - &Continue - &Tiếp tục - - - - &Pause - &Tạm dừng - - - - Warning Outdated Game Format - Cảnh báo định dạng game đã lỗi thời - - - 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.<br><br>For an explanation of the various Switch formats yuzu supports, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - 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.<br><br>Để hiểu thêm về các định dạng khác nhau của Switch mà yuzu hỗ trợ, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>vui lòng kiểm tra wiki của chúng tôi</a>. Thông báo này sẽ không hiển thị lại lần sau. - - - - - Error while loading ROM! - Lỗi khi nạp ROM! - - - - The ROM format is not supported. - Định dạng ROM này không được hỗ trợ. - - - - An error occurred initializing the video core. - Đã xảy ra lỗi khi khởi tạo lõi video. - - - 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: <a href='https://yuzu-emu.org/help/reference/log-files/'>How to Upload the Log File</a>. - 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: <a href='https://yuzu-emu.org/help/reference/log-files/'>Cách tải lên tập tin nhật ký</a>. - - - - Error while loading ROM! %1 - %1 signifies a numeric error code. - Lỗi khi nạp ROM! %1 - - - %1<br>Please follow <a href='https://yuzu-emu.org/help/quickstart/'>the yuzu quickstart guide</a> to redump your files.<br>You can refer to the yuzu wiki</a> or the yuzu Discord</a> for help. - %1 signifies an error string. - %1<br>Vui lòng tuân theo <a href='https://yuzu-emu.org/help/quickstart/'>hướng dẫn nhanh của yuzu</a> để trích xuất lại các tập tin của bạn.<br>Bạn có thể tham khảo yuzu wiki</a> hoặc yuzu Discord</a>để được hỗ trợ. - - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://eden-emulator.github.io/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - - - - - Game Updates Warning - - - - - The game you are trying to launch is known to have performance or booting issues when updates are applied. Please try increasing the memory layout to 6GB or 8GB if any issues occur.<br><br>Press "OK" to continue launching, or "Cancel" to cancel the launch. - - - - - Don't show again for this game - - - - - 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.<br><br>For an explanation of the various Switch formats eden supports, <a href='https://eden-emulator.github.io/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - - - - - eden 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: <a href='https://eden-emulator.github.io/help/reference/log-files/'>How to Upload the Log File</a>. - - - - - %1<br>Please redump your files or ask on Discord for help. - %1 signifies an error string. - - - - - An unknown error occurred. Please see the log for more details. - Đã xảy ra lỗi không xác định. Hãy xem nhật ký để biết thêm chi tiết. - - - - (64-bit) - (64-bit) - - - - (32-bit) - (32-bit) - - - - %1 %2 - %1 is the title name. %2 indicates if the title is 64-bit or 32-bit - %1 %2 - - - - Closing software... - Đang đóng phần mềm... - - - - Save Data - Dữ liệu save - - - - Mod Data - Dữ liệu mod - - - - Error Opening %1 Folder - Lỗi khi mở thư mục %1 - - - - - Folder does not exist! - Thư mục này không tồn tại! - - - - Error Opening Transferable Shader Cache - Lỗi khi mở bộ nhớ đệm shader chuyển được - - - - Failed to create the shader cache directory for this title. - Thất bại khi tạo thư mục bộ nhớ đệm shader cho title này. - - - - Error Removing Contents - Lỗi khi loại bỏ nội dung - - - - Error Removing Update - Lỗi khi loại bỏ bản cập nhật - - - - Error Removing DLC - Lỗi khi loại bỏ DLC - - - - Remove Installed Game Contents? - Loại bỏ nội dung game đã cài đặt? - - - - Remove Installed Game Update? - Loại bỏ bản cập nhật game đã cài đặt? - - - - Remove Installed Game DLC? - Loại bỏ DLC game đã cài đặt? - - - - Remove Entry - Xoá mục - - - - - - - - - Successfully Removed - Loại bỏ thành công - - - - Successfully removed the installed base game. - Loại bỏ thành công base game đã cài đặt. - - - - The base game is not installed in the NAND and cannot be removed. - Base game không được cài đặt trong NAND và không thể loại bỏ. - - - - Successfully removed the installed update. - Loại bỏ thành công bản cập nhật đã cài đặt. - - - - There is no update installed for this title. - Không có bản cập nhật nào được cài đặt cho title này. - - - - There are no DLC installed for this title. - Không có DLC nào được cài đặt cho title này. - - - - Successfully removed %1 installed DLC. - Loại bỏ thành công %1 DLC đã cài đặt. - - - - Delete OpenGL Transferable Shader Cache? - Xoá bộ nhớ đệm shader OpenGL chuyển được? - - - - Delete Vulkan Transferable Shader Cache? - Xoá bộ nhớ đệm shader Vulkan chuyển được? - - - - Delete All Transferable Shader Caches? - Xoá tất cả bộ nhớ đệm shader chuyển được? - - - - Remove Custom Game Configuration? - Loại bỏ cấu hình game tuỳ chỉnh? - - - - Remove Cache Storage? - Loại bỏ bộ nhớ đệm? - - - - Remove File - Loại bỏ tập tin - - - - Remove Play Time Data - - - - - Reset play time? - - - - - - Error Removing Transferable Shader Cache - Lỗi khi loại bỏ bộ nhớ đệm shader chuyển được - - - - - A shader cache for this title does not exist. - Bộ nhớ đệm shader cho title này không tồn tại. - - - - Successfully removed the transferable shader cache. - Thành công loại bỏ bộ nhớ đệm shader chuyển được. - - - - Failed to remove the transferable shader cache. - Thất bại khi xoá bộ nhớ đệm shader chuyển được. - - - - Error Removing Vulkan Driver Pipeline Cache - Lỗi khi xoá bộ nhớ đệm pipeline Vulkan - - - - Failed to remove the driver pipeline cache. - Thất bại khi xoá bộ nhớ đệm pipeline của driver. - - - - - Error Removing Transferable Shader Caches - Lỗi khi loại bỏ bộ nhớ đệm shader chuyển được - - - - Successfully removed the transferable shader caches. - Thành công loại bỏ tất cả bộ nhớ đệm shader chuyển được. - - - - Failed to remove the transferable shader cache directory. - Thất bại khi loại bỏ thư mục bộ nhớ đệm shader. - - - - - Error Removing Custom Configuration - Lỗi khi loại bỏ cấu hình tuỳ chỉnh - - - - A custom configuration for this title does not exist. - Cấu hình tuỳ chỉnh cho title này không tồn tại. - - - - Successfully removed the custom game configuration. - Loại bỏ thành công cấu hình game tuỳ chỉnh. - - - - Failed to remove the custom game configuration. - Thất bại khi xoá cấu hình game tuỳ chỉnh. - - - - - RomFS Extraction Failed! - Giải nén RomFS không thành công! - - - - There was an error copying the RomFS files or the user cancelled the operation. - Đã 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. - - - - Full - Đầy đủ - - - - Skeleton - Khung - - - - Select RomFS Dump Mode - Chọn chế độ trích xuất RomFS - - - - Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. - Vui lòng chọn cách mà bạn muốn RomFS được trích xuất.<br>Chế độ Đầy đủ sẽ sao chép toàn bộ tập tin vào một thư mục mới trong khi <br>chế độ Khung chỉ tạo cấu trúc thư mục. - - - - There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root - 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 > Cấu hình > Hệ thống > Hệ thống tập tin > Thư mục trích xuất gốc - - - - Extracting RomFS... - Giải nén RomFS... - - - - - - - - Cancel - Hủy bỏ - - - - RomFS Extraction Succeeded! - Giải nén RomFS thành công! - - - - - - The operation completed successfully. - Các hoạt động đã hoàn tất thành công. - - - - Integrity verification couldn't be performed! - Không thể thực hiện kiểm tra tính toàn vẹn! - - - - File contents were not checked for validity. - Chưa kiểm tra sự hợp lệ của nội dung tập tin. - - - - - Verifying integrity... - Đang kiểm tra tính toàn vẹn... - - - - - Integrity verification succeeded! - Kiểm tra tính toàn vẹn thành công! - - - - - Integrity verification failed! - Kiểm tra tính toàn vẹn thất bại! - - - - File contents may be corrupt. - Nội dung tập tin có thể bị hỏng. - - - - - - - Create Shortcut - Tạo lối tắt - - - - Do you want to launch the game in fullscreen? - - - - - Successfully created a shortcut to %1 - Thành công tạo lối tắt tại %1 - - - - This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - 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? - - - - Failed to create a shortcut to %1 - - - - - Create Icon - Tạo biểu tượng - - - - Cannot create icon file. Path "%1" does not exist and cannot be created. - Không thể tạo tập tin biểu tượng. Đường dẫn "%1" không tồn tại và không thể tạo. - - - - Error Opening %1 - Lỗi khi mở %1 - - - - Select Directory - Chọn thư mục - - - - Properties - Thuộc tính - - - - The game properties could not be loaded. - Không thể tải thuộc tính của game. - - - - Switch Executable (%1);;All Files (*.*) - %1 is an identifier for the Switch executable file extensions. - Thực thi Switch (%1);;Tất cả tập tin (*.*) - - - - Load File - Nạp tập tin - - - - Open Extracted ROM Directory - Mở thư mục ROM đã giải nén - - - - Invalid Directory Selected - Danh mục đã chọn không hợp lệ - - - - The directory you have selected does not contain a 'main' file. - Thư mục mà bạn đã chọn không chứa tập tin 'main'. - - - - Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - Những tập tin Switch cài được (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - - - - Install Files - Cài đặt tập tin - - - - %n file(s) remaining - - %n tập tin còn lại - - - - - Installing file "%1"... - Đang cài đặt tập tin "%1"... - - - - - Install Results - Kết quả cài đặt - - - - To avoid possible conflicts, we discourage users from installing base games to the NAND. -Please, only use this feature to install updates and DLC. - Để 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. - - - - %n file(s) were newly installed - - - %n tập tin đã được cài đặt mới - - - - - - %n file(s) were overwritten - - - %n tập tin đã được ghi đè - - - - - - %n file(s) failed to install - - - %n tập tin thất bại khi cài đặt - - - - - - System Application - Ứng dụng hệ thống - - - - System Archive - Bản lưu trữ của hệ thống - - - - System Application Update - Cập nhật ứng dụng hệ thống - - - - Firmware Package (Type A) - Gói firmware (Loại A) - - - - Firmware Package (Type B) - Gói firmware (Loại B) - - - - Game - Game - - - - Game Update - Cập nhật game - - - - Game DLC - DLC game - - - - Delta Title - Title Delta - - - - Select NCA Install Type... - Chọn cách cài đặt NCA... - - - - Please select the type of title you would like to install this NCA as: -(In most instances, the default 'Game' is fine.) - 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 'Game' là tốt nhất.) - - - - Failed to Install - Cài đặt thất bại - - - - The title type you selected for the NCA is invalid. - Loại title mà bạn đã chọn cho NCA không hợp lệ. - - - - File not found - Không tìm thấy tập tin - - - - File "%1" not found - Không tìm thấy tập tin "%1" - - - - OK - OK - - - - - Hardware requirements not met - Yêu cầu phần cứng không được đáp ứng - - - - - Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled. - 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á. - - - - Missing yuzu Account - Thiếu tài khoản yuzu - - - - In order to submit a game compatibility test case, you must link your eden account.<br><br/>To link your eden account, go to Emulation &gt; Configuration &gt; Web. - - - - - Install decryption keys and restart eden before attempting to install firmware. - - - - - Firmware installation cancelled, firmware may be in bad state, restart eden or re-install firmware. - - - - - Encryption keys are missing. - - - - - Are you sure you want to close eden? - - - - - - - eden - - - - - The currently running application has requested eden to not exit. - -Would you like to bypass this and exit anyway? - - - - In order to submit a game compatibility test case, you must link your yuzu account.<br><br/>To link your yuzu account, go to Emulation &gt; Configuration &gt; Web. - Để 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.<br><br/>Để liên kết tải khoản yuzu của bạn, hãy đến Giả lập &gt; Cấu hình &gt; Web. - - - - Error opening URL - Lỗi khi mở URL - - - - Unable to open the URL "%1". - Không thể mở URL "%1". - - - - TAS Recording - Ghi lại TAS - - - - Overwrite file of player 1? - Ghi đè tập tin của người chơi 1? - - - - Invalid config detected - Đã phát hiện cấu hình không hợp lệ - - - - Handheld controller can't be used on docked mode. Pro controller will be selected. - Tay cầm handheld không thể được sử dụng trong chế độ docked. Pro Controller sẽ được chọn. - - - - - Amiibo - Amiibo - - - - - The current amiibo has been removed - Amiibo hiện tại đã được loại bỏ - - - - Error - Lỗi - - - - - The current game is not looking for amiibos - Game hiện tại không tìm kiếm amiibos - - - - Amiibo File (%1);; All Files (*.*) - Tập tin Amiibo (%1);; Tất cả tập tin (*.*) - - - - Load Amiibo - Nạp Amiibo - - - - Error loading Amiibo data - Lỗi khi nạp dữ liệu Amiibo - - - - The selected file is not a valid amiibo - Tập tin đã chọn không phải là amiibo hợp lệ - - - - The selected file is already on use - Tập tin đã chọn đã được sử dụng - - - - An unknown error occurred - Đã xảy ra lỗi không xác định - - - - - Verification failed for the following files: - -%1 - Kiểm tra những tập tin sau thất bại: - -%1 - - - - Keys not installed - - - - - Select Dumped Firmware Source Location - - - - - Installing Firmware... - - - - - - - - Firmware install failed - - - - - Unable to locate potential firmware NCA files - - - - - Failed to delete one or more firmware file. - - - - - One or more firmware files failed to copy into NAND. - - - - - Firmware integrity verification failed! - - - - - Select Dumped Keys Location - - - - - - - Decryption Keys install failed - - - - - prod.keys is a required decryption key file. - - - - - One or more keys failed to copy. - - - - - Decryption Keys install succeeded - - - - - Decryption Keys were successfully installed - - - - - Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. - - - - - - - - - - - No firmware available - - - - - Please install the firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Controller Menu. - - - - - Controller Applet - Applet tay cầm - - - - Controller Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Home Menu. - - - - - - Home Menu Applet - - - - - - Home Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use Starter. - - - - - Starter Applet - - - - - Starter is not available. Please reinstall firmware. - - - - - Please install firmware to use the home menu. - - - - - Capture Screenshot - Chụp ảnh màn hình - - - - PNG Image (*.png) - Hình ảnh PNG (*.png) - - - - Update Available - - - - - Update %1 for Eden is available. -Would you like to download it? - - - - - TAS state: Running %1/%2 - Trạng thái TAS: Đang chạy %1/%2 - - - - TAS state: Recording %1 - Trạng thái TAS: Đang ghi %1 - - - - TAS state: Idle %1/%2 - Trạng thái TAS: Đang chờ %1/%2 - - - - TAS State: Invalid - Trạng thái TAS: Không hợp lệ - - - - &Stop Running - &Dừng chạy - - - - &Start - &Bắt đầu - - - - Stop R&ecording - Dừng G&hi - - - - R&ecord - G&hi - - - - Building: %n shader(s) - - Đang dựng: %n shader - - - - - Scale: %1x - %1 is the resolution scaling factor - Tỉ lệ thu phóng: %1x - - - - Speed: %1% / %2% - Tốc độ: %1% / %2% - - - - Speed: %1% - Tốc độ: %1% - - - Game: %1 FPS (Unlocked) - Game: %1 FPS (Đã mở khoá) - - - - Game: %1 FPS - Game: %1 FPS - - - - Frame: %1 ms - Khung hình: %1 ms - - - - %1 %2 - %1 %2 - - - - - FSR - FSR - - - - NO AA - NO AA - - - - VOLUME: MUTE - ÂM LƯỢNG: TẮT TIẾNG - - - - VOLUME: %1% - Volume percentage (e.g. 50%) - ÂM LƯỢNG: %1% - - - - Derivation Components Missing - Thiếu các thành phần chuyển hoá - - - - Select RomFS Dump Target - Chọn thư mục để trích xuất RomFS - - - - Please select which RomFS you would like to dump. - Vui lòng chọn RomFS mà bạn muốn trích xuất. - - - Are you sure you want to close yuzu? - Bạn có chắc chắn muốn đóng yuzu? - - - yuzu - yuzu - - - - Are you sure you want to stop the emulation? Any unsaved progress will be lost. - 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. - - - The currently running application has requested yuzu to not exit. - -Would you like to bypass this and exit anyway? - Chương trình đang chạy đã yêu cầu yuzu không được thoát. - -Bạn có muốn bỏ qua yêu cầu đó và thoát luôn không? - - - - None - Không có - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Nearest - Nearest - - - - Bilinear - Bilinear - - - - Bicubic - Bicubic - - - - Gaussian - Gaussian - - - - ScaleForce - ScaleForce - - - - Area - - - - - Docked - Docked - - - - Handheld - Handheld - - - - Normal - Bình thường - - - - High - Cao - - - - Extreme - Cực đại - - - - Vulkan - Vulkan - - - - OpenGL - OpenGL - - - - Null - Null - - - - GLSL - GLSL - - - - GLASM - GLASM - - - - SPIRV - SPIRV + GRenderWindow - - + + OpenGL not available! OpenGL không khả dụng! - + OpenGL shared contexts are not supported. Các ngữ cảnh OpenGL chung không được hỗ trợ. - yuzu has not been compiled with OpenGL support. - yuzu không được biên dịch với hỗ trợ OpenGL. + + Eden has not been compiled with OpenGL support. + - - eden has not been compiled with OpenGL support. - - - - - + + Error while initializing OpenGL! Lỗi khi khởi tạo OpenGL! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. GPU của bạn có thể không hỗ trợ OpenGL, hoặc bạn không có driver đồ hoạ mới nhất. - + Error while initializing OpenGL 4.6! Lỗi khi khởi tạo OpenGL 4.6! - + Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 GPU của bạn có thể không hỗ trợ OpenGL 4.6, hoặc bạn không có driver đồ hoạ mới nhất.<br><br>GL Renderer:<br>%1 - + Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2 GPU của bạn có thể không hỗ trợ một hoặc nhiều tiện ích OpenGL cần thiết. Vui lòng đảm bảo bạn có driver đồ hoạ mới nhất.<br><br>GL Renderer:<br>%1<br><br>Tiện ích không hỗ trợ:<br>%2 @@ -6934,255 +6038,271 @@ Bạn có muốn bỏ qua yêu cầu đó và thoát luôn không? GameList - + + &Add New Game Directory + + + + Favorite Ưa thích - + Start Game Bắt đầu game - + Start Game without Custom Configuration Bắt đầu game mà không có cấu hình tuỳ chỉnh - + Open Save Data Location Mở vị trí dữ liệu save - + Open Mod Data Location Mở vị trí chứa dữ liệu mod - + Open Transferable Pipeline Cache Mở thư mục chứa bộ nhớ đệm pipeline - + + Link to Ryujinx + + + + Remove Loại bỏ - + Remove Installed Update Loại bỏ bản cập nhật đã cài - + Remove All Installed DLC Loại bỏ tất cả DLC đã cài đặt - + Remove Custom Configuration Loại bỏ cấu hình tuỳ chỉnh - - Remove Play Time Data - - - - + Remove Cache Storage Loại bỏ bộ nhớ đệm - + Remove OpenGL Pipeline Cache Loại bỏ bộ nhớ đệm pipeline OpenGL - + Remove Vulkan Pipeline Cache Loại bỏ bộ nhớ đệm pipeline Vulkan - + Remove All Pipeline Caches Loại bỏ tất cả bộ nhớ đệm shader - + Remove All Installed Contents Loại bỏ tất cả nội dung đã cài đặt - - + + Manage Play Time + + + + + Edit Play Time Data + + + + + Remove Play Time Data + + + + + Dump RomFS Trích xuất RomFS - + Dump RomFS to SDMC Trích xuất RomFS tới SDMC - + Verify Integrity Kiểm tra tính toàn vẹn - + Copy Title ID to Clipboard Sao chép ID title vào bộ nhớ tạm - + Navigate to GameDB entry Điều hướng đến mục GameDB - + Create Shortcut Tạo lối tắt - + Add to Desktop Thêm vào desktop - + Add to Applications Menu Thêm vào menu ứng dụng - + Configure Game - + - Properties - Thuộc tính - - - + Scan Subfolders Quét các thư mục con - + Remove Game Directory Loại bỏ thư mục game - + ▲ Move Up ▲ Di chuyển lên - + ▼ Move Down ▼ Di chuyển xuống - + Open Directory Location Mở vị trí thư mục - + Clear Xóa - + Name Tên - + Compatibility Độ tương thích - + Add-ons Add-ons - + File type Loại tập tin - + Size Kích thước - + Play time - + GameListItemCompat - + Ingame Trong game - + Game starts, but crashes or major glitches prevent it from being completed. Game khởi động, nhưng bị crash hoặc lỗi nghiêm trọng dẫn đến việc không thể hoàn thành nó. - + Perfect Hoàn hảo - + Game can be played without issues. Game có thể chơi mà không gặp vấn đề. - + Playable Có thể chơi - + Game functions with minor graphical or audio glitches and is playable from start to finish. Game hoạt động với lỗi hình ảnh hoặc âm thanh nhẹ và có thể chơi từ đầu tới cuối. - + Intro/Menu Phần mở đầu/Menu - + Game loads, but is unable to progress past the Start Screen. Game đã tải, nhưng không thể qua được màn hình bắt đầu. - + Won't Boot Không khởi động - + The game crashes when attempting to startup. Game crash khi đang khởi động. - + Not Tested Chưa ai thử - + The game has not yet been tested. Game này chưa được thử nghiệm. @@ -7190,7 +6310,7 @@ Bạn có muốn bỏ qua yêu cầu đó và thoát luôn không? GameListPlaceholder - + Double-click to add a new folder to the game list Nhấp đúp chuột để thêm một thư mục mới vào danh sách game @@ -7198,19 +6318,17 @@ Bạn có muốn bỏ qua yêu cầu đó và thoát luôn không? GameListSearchField - + %1 of %n result(s) - - %1 trong %n kết quả - + - + Filter: Lọc: - + Enter pattern to filter Nhập mẫu để lọc @@ -7286,233 +6404,241 @@ Bạn có muốn bỏ qua yêu cầu đó và thoát luôn không? HostRoomWindow - + Error Lỗi - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. + + Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid Eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. Debug Message: - - - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid yuzu account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. -Debug Message: - Công bố phòng công khai trong sảnh thất bại. Để tổ chức phòng công khai, bạn cần phải có một tài khoản yuzu hợp lệ tại Giả lập -> Cấu hình -> Web. Nếu không muốn công khai phòng trong sảnh, hãy chọn mục Không công khai. -Tin nhắn gỡ lỗi: + Hotkeys - + Audio Mute/Unmute Tắt/Bật tiếng - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Main Window Cửa sổ chính - + Audio Volume Down Giảm âm lượng - + Audio Volume Up Tăng âm lượng - + Capture Screenshot Chụp ảnh màn hình - + Change Adapting Filter Thay đổi bộ lọc điều chỉnh - + Change Docked Mode Thay đổi chế độ docked - - Change GPU Accuracy - Thay đổi độ chính xác GPU + + Change GPU Mode + - + Configure - Cấu hình + - + Configure Current Game - + - + Continue/Pause Emulation Tiếp tục/Tạm dừng giả lập - + Exit Fullscreen Thoát chế độ toàn màn hình - Exit yuzu - Thoát yuzu + + Exit Eden + - - Exit eden - - - - + Fullscreen Toàn màn hình - + Load File Nạp tập tin - + Load/Remove Amiibo Nạp/Loại bỏ Amiibo - - Multiplayer Browse Public Game Lobby - + + Browse Public Game Lobby + - - Multiplayer Create Room - + + Create Room + - - Multiplayer Direct Connect to Room - + + Direct Connect to Room + - - Multiplayer Leave Room - + + Leave Room + - - Multiplayer Show Current Room - + + Show Current Room + - + Restart Emulation Khởi động lại giả lập - + Stop Emulation Dừng giả lập - + TAS Record Ghi lại TAS - + TAS Reset Đặt lại TAS - + TAS Start/Stop Bắt đầu/Dừng TAS - + Toggle Filter Bar Hiện/Ẩn thanh lọc - + Toggle Framerate Limit Bật/Tắt giới hạn tốc độ khung hình - + + Toggle Turbo Speed + + + + + Toggle Slow Speed + + + + Toggle Mouse Panning Bật/Tắt lia chuột - + Toggle Renderdoc Capture - + - + Toggle Status Bar Hiện/Ẩn thanh trạng thái + + + Toggle Performance Overlay + + InstallDialog - + Please confirm these are the files you wish to install. Vui lòng xác nhận đây là những tập tin bạn muốn cài. - + Installing an Update or DLC will overwrite the previously installed one. Cài đặt một bản cập nhật hoặc DLC mới sẽ thay thế những bản cũ đã cài trước đó. - + Install Cài đặt - + Install Files to NAND Cài đặt tập tin vào NAND @@ -7520,8 +6646,8 @@ Tin nhắn gỡ lỗi: LimitableInputDialog - - The text can't contain any of the following characters: + + The text can't contain any of the following characters: %1 Văn bản không được chứa bất kỳ ký tự sau đây: %1 @@ -7545,22 +6671,22 @@ Tin nhắn gỡ lỗi: Thời gian ước tính 5m 4s - + Loading... Đang tải... - + Loading Shaders %1 / %2 Đang tải shader %1 / %2 - + Launching... Đang khởi động... - + Estimated Time %1 Thời gian ước tính %1 @@ -7609,42 +6735,42 @@ Tin nhắn gỡ lỗi: Làm mới sảnh - + Password Required to Join Yêu cầu mật khẩu để tham gia - + Password: Mật khẩu: - + Players Người chơi - + Room Name Tên phòng - + Preferred Game Game ưa thích - + Host Chủ phòng - + Refreshing Đang làm mới - + Refresh List Làm mới danh sách @@ -7667,362 +6793,1424 @@ Tin nhắn gỡ lỗi: &Tập tin gần đây - + + Open &Eden Folders + + + + &Emulation &Giả lập - + &View &Xem - + &Reset Window Size &Đặt lại kích thước cửa sổ - + &Debugging &Gỡ lỗi - + + &Game List Mode + + + + + Game &Icon Size + + + + Reset Window Size to &720p Đặt lại kích thước cửa sổ về &720p - + Reset Window Size to 720p Đặt lại kích thước cửa sổ về 720p - + Reset Window Size to &900p Đặt lại kích thước cửa sổ về &900p - + Reset Window Size to 900p Đặt lại kích thước cửa sổ về 900p - + Reset Window Size to &1080p Đặt lại kích thước cửa sổ về &1080p - + Reset Window Size to 1080p Đặt lại kích thước cửa sổ về 1080p - + &Multiplayer &Nhiều người chơi - + &Tools &Công cụ - - &Amiibo - + + Am&iibo + - + + Launch &Applet + + + + &TAS &TAS - + &Create Home Menu Shortcut - + - + + Install &Firmware + + + + &Help &Trợ giúp - + &Install Files to NAND... &Cài đặt tập tin vào NAND... - + L&oad File... N&ạp tập tin... - + Load &Folder... Nạp &thư mục... - + E&xit T&hoát - + + &Pause &Tạm dừng - + &Stop &Dừng - + &Verify Installed Contents - + - - &About eden - + + &About Eden + - - Open &eden Folder - - - - - Open Home Menu - - - - - &Discord - - - - - Open &Setup - - - - - &Desktop - - - - - &Application Menu - - - - &About yuzu - &Thông tin về yuzu - - - + Single &Window Mode Chế độ &cửa sổ đơn - + Con&figure... Cấu &hình... - + Ctrl+, - + - - Display D&ock Widget Headers - Hiển thị tiêu đề công cụ D&ock + + Enable Overlay Display Applet + - + Show &Filter Bar Hiện thanh &lọc - + Show &Status Bar Hiện thanh &trạng thái - + Show Status Bar Hiện thanh trạng thái - + &Browse Public Game Lobby &Duyệt phòng game công khai - + &Create Room &Tạo phòng - + &Leave Room &Rời phòng - + &Direct Connect to Room &Kết nối trực tiếp tới phòng - + &Show Current Room &Hiện phòng hiện tại - + F&ullscreen T&oàn màn hình - + &Restart &Khởi động lại - + Load/Remove &Amiibo... Nạp/Loại bỏ &Amiibo... - + &Report Compatibility &Báo cáo độ tương thích - + Open &Mods Page Mở trang &mods - + Open &Quickstart Guide Mở &Hướng dẫn nhanh - + &FAQ &FAQ - Open &yuzu Folder - Mở thư mục &yuzu - - - + &Capture Screenshot &Chụp ảnh màn hình - - Open &Album - + + &Album + - + &Set Nickname and Owner - + - + &Delete Game Data - + - + &Restore Amiibo - + - + &Format Amiibo - + - - Open &Mii Editor - + + &Mii Editor + - + &Configure TAS... &Cấu hình TAS... - + Configure C&urrent Game... Cấu hình game h&iện tại... - + + &Start &Bắt đầu - + &Reset &Đặt lại - + + R&ecord G&hi lại - + Open &Controller Menu - + - - Install Firmware - + + Install Decryption &Keys + - - Install Decryption Keys - + + &Home Menu + - - - MicroProfileDialog - - &MicroProfile - &MicroProfile + + &Desktop + + + + + &Application Menu + + + + + &Root Data Folder + + + + + &NAND Folder + + + + + &SDMC Folder + + + + + &Mod Folder + + + + + &Log Folder + + + + + From Folder + + + + + From ZIP + + + + + &Eden Dependencies + + + + + &Data Manager + + + + + &Tree View + + + + + &Grid View + + + + + Game Icon Size + + + + + + + None + + + + + Show Game &Name + + + + + Show &Performance Overlay + + + + + Small (32x32) + + + + + Standard (64x64) + + + + + Large (128x128) + + + + + Full Size (256x256) + + + + + Broken Vulkan Installation Detected + + + + + Vulkan initialization failed during boot. + + + + + Running a game + TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping + + + + + Loading Web Applet... + + + + + + Disable Web Applet + + + + + 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.) + + + + + The amount of shaders currently being built + + + + + The current selected resolution scaling multiplier. + + + + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. + + + + + How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. + + + + + 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. + + + + + Unmute + + + + + Mute + + + + + Reset Volume + + + + + &Clear Recent Files + + + + + &Continue + + + + + Warning: Outdated Game Format + + + + + 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.<br>For an explanation of the various Switch formats Eden supports, out our user handbook. This message will not be shown again. + + + + + + Error while loading ROM! + + + + + The ROM format is not supported. + + + + + An error occurred initializing the video core. + + + + + Eden 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: <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>How to Upload the Log File</a>. + + + + + Error while loading ROM! %1 + %1 signifies a numeric error code. + + + + + %1<br>Please redump your files or ask on Discord/Stoat for help. + %1 signifies an error string. + + + + + An unknown error occurred. Please see the log for more details. + + + + + (64-bit) + + + + + (32-bit) + + + + + %1 %2 + %1 is the title name. %2 indicates if the title is 64-bit or 32-bit + + + + + Closing software... + + + + + Save Data + + + + + Mod Data + + + + + Error Opening %1 Folder + + + + + + Folder does not exist! + + + + + Remove Installed Game Contents? + + + + + Remove Installed Game Update? + + + + + Remove Installed Game DLC? + + + + + Remove Entry + + + + + Delete OpenGL Transferable Shader Cache? + + + + + Delete Vulkan Transferable Shader Cache? + + + + + Delete All Transferable Shader Caches? + + + + + Remove Custom Game Configuration? + + + + + Remove Cache Storage? + + + + + Remove File + + + + + Remove Play Time Data + + + + + Reset play time? + + + + + + RomFS Extraction Failed! + + + + + There was an error copying the RomFS files or the user cancelled the operation. + + + + + Full + + + + + Skeleton + + + + + Select RomFS Dump Mode + + + + + Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. + + + + + There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root + + + + + Extracting RomFS... + + + + + + Cancel + + + + + RomFS Extraction Succeeded! + + + + + The operation completed successfully. + + + + + Error Opening %1 + + + + + Select Directory + + + + + Properties + + + + + The game properties could not be loaded. + + + + + Switch Executable (%1);;All Files (*.*) + %1 is an identifier for the Switch executable file extensions. + + + + + Load File + + + + + Open Extracted ROM Directory + + + + + Invalid Directory Selected + + + + + The directory you have selected does not contain a 'main' file. + + + + + Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) + + + + + Install Files + + + + + %n file(s) remaining + + + + + Installing file "%1"... + + + + + + Install Results + + + + + To avoid possible conflicts, we discourage users from installing base games to the NAND. +Please, only use this feature to install updates and DLC. + + + + + %n file(s) were newly installed + + + + + + %n file(s) were overwritten + + + + + + %n file(s) failed to install + + + + + + System Application + + + + + System Archive + + + + + System Application Update + + + + + Firmware Package (Type A) + + + + + Firmware Package (Type B) + + + + + Game + + + + + Game Update + + + + + Game DLC + + + + + Delta Title + + + + + Select NCA Install Type... + + + + + Please select the type of title you would like to install this NCA as: +(In most instances, the default 'Game' is fine.) + + + + + Failed to Install + + + + + The title type you selected for the NCA is invalid. + + + + + File not found + + + + + File "%1" not found + + + + + OK + + + + + Function Disabled + + + + + Compatibility list reporting is currently disabled. Check back later! + + + + + Error opening URL + + + + + Unable to open the URL "%1". + + + + + TAS Recording + + + + + Overwrite file of player 1? + + + + + Invalid config detected + + + + + Handheld controller can't be used on docked mode. Pro controller will be selected. + + + + + + Amiibo + + + + + + The current amiibo has been removed + + + + + Error + + + + + + The current game is not looking for amiibos + + + + + Amiibo File (%1);; All Files (*.*) + + + + + Load Amiibo + + + + + Error loading Amiibo data + + + + + The selected file is not a valid amiibo + + + + + The selected file is already on use + + + + + An unknown error occurred + + + + + + Keys not installed + + + + + + Install decryption keys and restart Eden before attempting to install firmware. + + + + + Select Dumped Firmware Source Location + + + + + Select Dumped Firmware ZIP + + + + + Zipped Archives (*.zip) + + + + + Firmware cleanup failed + + + + + Failed to clean up extracted firmware cache. +Check write permissions in the system temp directory and try again. +OS reported error: %1 + + + + + No firmware available + + + + + Firmware Corrupted + + + + + Unknown applet + + + + + Applet doesn't map to a known value. + + + + + Record not found + + + + + Applet not found. Please reinstall firmware. + + + + + Capture Screenshot + + + + + PNG Image (*.png) + + + + + Update Available + + + + + Download %1? + + + + + TAS state: Running %1/%2 + + + + + TAS state: Recording %1 + + + + + TAS state: Idle %1/%2 + + + + + TAS State: Invalid + + + + + &Stop Running + + + + + Stop R&ecording + + + + + Building: %n shader(s) + + + + + Scale: %1x + %1 is the resolution scaling factor + + + + + Speed: %1% / %2% + + + + + Speed: %1% + + + + + Game: %1 FPS + + + + + Frame: %1 ms + + + + + + FSR + + + + + NO AA + + + + + VOLUME: MUTE + + + + + VOLUME: %1% + Volume percentage (e.g. 50%) + + + + + Derivation Components Missing + + + + + Decryption keys are missing. Install them now? + + + + + Wayland Detected! + + + + + Wayland is known to have significant performance issues and mysterious bugs. +It's recommended to use X11 instead. + +Would you like to force it for future launches? + + + + + Use X11 + + + + + Continue with Wayland + + + + + Don't show again + + + + + Restart Required + + + + + Restart Eden to apply the X11 backend. + + + + + Slow + + + + + Turbo + + + + + Unlocked + + + + + Select RomFS Dump Target + + + + + Please select which RomFS you would like to dump. + + + + + Are you sure you want to close Eden? + + + + + + + Eden + + + + + Are you sure you want to stop the emulation? Any unsaved progress will be lost. + + + + + The currently running application has requested Eden to not exit. + +Would you like to bypass this and exit anyway? + + + + + FXAA + + + + + SMAA + + + + + Nearest + + + + + Bilinear + + + + + Bicubic + + + + + Zero-Tangent + + + + + B-Spline + + + + + Mitchell + + + + + Spline-1 + + + + + Gaussian + + + + + Lanczos + + + + + ScaleForce + + + + + Area + + + + + MMPX + + + + + Docked + + + + + Handheld + + + + + Fast + + + + + Balanced + + + + + Accurate + + + + + Vulkan + + + + + OpenGL GLSL + + + + + OpenGL SPIRV + + + + + OpenGL GLASM + + + + + Null + MigrationWorker - - Data was migrated successfully. - - - - + Linking the old directory failed. You may need to re-run with administrative privileges on Windows. OS gave error: %1 - + - + + + +Note that your configuration and data will be shared with %1. +If this is not desirable, delete the following files: +%2 +%3 +%4 + + + + If you wish to clean up the files which were left in the old data location, you can do so by deleting the following directory: %1 - + + + + + Data was migrated successfully. + + + + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + @@ -8039,7 +8227,7 @@ If you wish to clean up the files which were left in the old data location, you - + Refreshing Đang làm mới @@ -8049,27 +8237,27 @@ If you wish to clean up the files which were left in the old data location, you Unban - + Subject Đối tượng - + Type Loại - + Forum Username Tên người dùng trên diễn đàn - + IP Address Địa chỉ IP - + Refresh Làm mới @@ -8077,37 +8265,37 @@ If you wish to clean up the files which were left in the old data location, you MultiplayerState - + Current connection status Tình trạng kết nối hiện tại - + Not Connected. Click here to find a room! Không kết nối. Nhấp vào đây để tìm một phòng! - + Not Connected Không kết nối - + Connected Đã kết nối - + New Messages Received Đã nhận được tin nhắn mới - + Error Lỗi - + Failed to update the room information. Please check your Internet connection and try hosting the room again. Debug Message: Không thể cập nhật thông tin phòng. Vui lòng kiểm tra kết nối Internet của bạn và thử tạo phòng lại. @@ -8116,90 +8304,6 @@ Tin nhắn gỡ lỗi: NetworkMessage - - Username is not valid. Must be 4 to 20 alphanumeric characters. - Tên người dùng không hợp lệ. Phải có từ 4 đến 20 ký tự chữ số hoặc chữ cái. - - - Room name is not valid. Must be 4 to 20 alphanumeric characters. - Tên phòng không hợp lệ. Phải có từ 4 đến 20 ký tự chữ số hoặc chữ cái. - - - Username is already in use or not valid. Please choose another. - Tên người dùng đã được sử dụng hoặc không hợp lệ. Vui lòng chọn tên khác. - - - IP is not a valid IPv4 address. - Địa chỉ IP không phải là địa chỉ IPv4 hợp lệ. - - - Port must be a number between 0 to 65535. - Cổng phải là một số từ 0 đến 65535. - - - You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - Bạn phải chọn một Game ưu thích để tạo một phòng. Nếu bạn chưa có bất kỳ game nào trong danh sách game của bạn, hãy thêm một thư mục game bằng cách nhấp vào biểu tượng dấu cộng trong danh sách game. - - - Unable to find an internet connection. Check your internet settings. - Không thể tìm thấy kết nối internet. Kiểm tra cài đặt internet của bạn. - - - Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - Không thể kết nối tới máy chủ. Hãy kiểm tra xem các thiết lập kết nối có đúng không. Nếu vẫn không thể kết nối, hãy liên hệ với người chủ phòng và xác minh rằng máy chủ đã được cấu hình đúng cách với cổng ngoài được chuyển tiếp. - - - Unable to connect to the room because it is already full. - Không thể kết nối tới phòng vì nó đã đầy. - - - Creating a room failed. Please retry. Restarting yuzu might be necessary. - Tạo phòng thất bại. Vui lòng thử lại. Có thể cần khởi động lại yuzu. - - - The host of the room has banned you. Speak with the host to unban you or try a different room. - Chủ phòng đã ban bạn. Hãy nói chuyện với người chủ phòng để được unban, hoặc thử vào một phòng khác. - - - Version mismatch! Please update to the latest version of yuzu. If the problem persists, contact the room host and ask them to update the server. - Phiên bản không khớp! Vui lòng cập nhật lên phiên bản mới nhất của yuzu. Nếu vấn đề vẫn tiếp tục, hãy liên hệ với người quản lý phòng và yêu cầu họ cập nhật máy chủ. - - - Incorrect password. - Mật khẩu sai. - - - An unknown error occurred. If this error continues to occur, please open an issue - Đã xảy ra lỗi không xác định. Nếu lỗi này tiếp tục xảy ra, vui lòng mở một issue - - - Connection to room lost. Try to reconnect. - Mất kết nối với phòng. Hãy thử kết nối lại. - - - You have been kicked by the room host. - Bạn đã bị kick bởi chủ phòng. - - - IP address is already in use. Please choose another. - Địa chỉ IP đã được sử dụng. Vui lòng chọn một địa chỉ khác. - - - You do not have enough permission to perform this action. - Bạn không có đủ quyền để thực hiên hành động này. - - - The user you are trying to kick/ban could not be found. -They may have left the room. - Không thể tìm thấy người dùng bạn đang cố gắng kick/ban. -Họ có thể đã rời phòng. - - - No valid network interface is selected. -Please go to Configure -> System -> Network and make a selection. - Không có giao diện mạng hợp lệ được chọn. -Vui lòng vào Cấu hình -> Hệ thống -> Mạng và thực hiện lựa chọn. - Game already running @@ -8234,10 +8338,132 @@ Tiếp tục? - NetworkMessage::ErrorManager + NewUserDialog - Error - Lỗi + + + New User + + + + + Change Avatar + + + + + Set Image + + + + + UUID + + + + + Eden + + + + + Username + + + + + UUID must be 32 hex characters (0-9, A-F) + + + + + Generate + + + + + Select User Image + + + + + Image Formats (*.jpg *.jpeg *.png *.bmp) + + + + + No firmware available + + + + + Please install the firmware to use firmware avatars. + + + + + + Error loading archive + + + + + Archive is not available. Please install/reinstall firmware. + + + + + Could not locate RomFS. Your file or decryption keys may be corrupted. + + + + + Error extracting archive + + + + + Could not extract RomFS. Your file or decryption keys may be corrupted. + + + + + Error finding image directory + + + + + Failed to find image directory in the archive. + + + + + No images found + + + + + No avatar images were found in the archive. + + + + + + All Good + Tooltip + + + + + Must be 32 hex characters (0-9, a-f) + Tooltip + + + + + Must be between 1 and 32 characters + Tooltip + @@ -8264,7 +8490,7 @@ Tiếp tục? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -8273,83 +8499,196 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> + + PerformanceOverlay + + + Form + + + + + Frametime + + + + + 0 ms + + + + + + Min: 0 + + + + + + Max: 0 + + + + + + Avg: 0 + + + + + FPS + + + + + 0 fps + + + + + %1 fps + + + + + + Avg: %1 + + + + + + Min: %1 + + + + + + Max: %1 + + + + + %1 ms + + + PlayerControlPreview - + START/PAUSE BẮT ĐẦU/TẠM DỪNG + + ProfileAvatarDialog + + + Select + + + + + Cancel + + + + + Background Color + + + + + Select Firmware Avatar + + + QObject - - %1 is not playing a game - %1 hiện không chơi game + + + + Migration + - - %1 is playing %2 - %1 đang chơi %2 + + Clear Shader Cache + - - Not playing a game - Hiện không chơi game + + Keep Old Data + - - Installed SD Titles - Các title đã cài đặt trên thẻ SD + + Clear Old Data + - - Installed NAND Titles - Các title đã cài đặt trên NAND + + Link Old Directory + - - System Titles - Titles hệ thống + + + + + - - Add New Game Directory - Thêm thư mục game + + + No + - - Favorites - Ưa thích + + You can manually re-trigger this prompt by deleting the new config directory: +%1 + + + + + Migrating + + + + + Migrating, this may take a while... + - - + + Shift Shift - - + + Ctrl Ctrl - - + + Alt Alt - - - - + + + + [not set] [chưa đặt] @@ -8359,15 +8698,15 @@ p, li { white-space: pre-wrap; } Mũ %1 %2 - - - - - - - - + + + + + + + + Axis %1%2 Trục %1%2 @@ -8377,359 +8716,383 @@ p, li { white-space: pre-wrap; } Nút %1 - - - - - - + + + + + + [unknown] [không xác định] - - - + + + Left Trái - - - + + + Right Phải - - - + + + Down Xuống - - - + + + Up Lên - - + + Z Z - - + + R R - - + + L L - - + + A A - - + + B B - - + + X X - - + + Y Y - - + + Start Bắt đầu - - + + L1 L1 - - + + L2 L2 - - + + L3 L3 - - + + R1 R1 - - + + R2 R2 - - + + R3 R3 - - + + Circle Tròn - - + + Cross X - - + + Square Vuông - - + + Triangle Tam giác - - + + Share Chia sẻ - - + + Options Tuỳ chọn - - + + [undefined] [không xác định] - + %1%2 %1%2 - - + + [invalid] [không hợp lệ] - - + + %1%2Hat %3 %1%2Mũ %3 - - - + + + %1%2Axis %3 %1%2Trục %3 - - + + %1%2Axis %3,%4,%5 %1%2Trục %3,%4,%5 - - + + %1%2Motion %3 %1%2Chuyển động %3 - - + + %1%2Button %3 %1%2Nút %3 - - + + [unused] [không sử dụng] - + ZR ZR - + ZL ZL - + SR SR - + SL SL - + Stick L Cần L - + Stick R Cần R - + Plus Cộng - + Minus Trừ - - + + Home Home - + Capture Chụp - + Touch Cảm ứng - + Wheel Indicates the mouse wheel Con lăn - + Backward Lùi - + Forward Tiến - + Task Nhiệm vụ - + Extra Thêm - + %1%2%3%4 %1%2%3%4 - - + + %1%2%3Hat %4 %1%2%3Mũ %4 - - + + %1%2%3Axis %4 %1%2%3Trục %4 - - + + %1%2%3Button %4 %1%2%3Nút %4 - - - - Migration - + + Not playing a game + Hiện không chơi game - - - - - + + %1 is not playing a game + %1 hiện không chơi game - - - No - + + %1 is playing %2 + %1 đang chơi %2 - - You can manually re-trigger this prompt by deleting the new config directory: -%1 - + + Play Time: %1 + - - Migrating - + + Never Played + - - Migrating, this may take a while... - + + Version: %1 + + + + + Version: 1.0.0 + + + + + Installed SD Titles + Các title đã cài đặt trên thẻ SD + + + + Installed NAND Titles + Các title đã cài đặt trên NAND + + + + System Titles + Titles hệ thống + + + + Add New Game Directory + Thêm thư mục game + + + + Favorites + Ưa thích @@ -8820,31 +9183,817 @@ p, li { white-space: pre-wrap; } Đường dẫn tập tin - + No game data present Hiện tại không có dữ liệu game - + The following amiibo data will be formatted: Dữ liệu amiibo sau sẽ được định dạng: - + The following game data will removed: Dữ liệu game sau sẽ bị xoá: - + Set nickname and owner: Đặt biệt danh và chủ sỡ hữu: - + Do you wish to restore this amiibo? Bạn có muốn khôi phục amiibo này không? + + QtCommon::Content + + + Game Requires Firmware + + + + + The game you are trying to launch requires firmware to boot or to get past the opening menu. Please <a href='https://yuzu-mirror.github.io/help/quickstart'>dump and install firmware</a>, or press "OK" to launch anyways. + + + + + Installing Firmware... + + + + + + + + + Cancel + + + + + Firmware Install Failed + + + + + Firmware Install Succeeded + + + + + Firmware integrity verification failed! + + + + + + Verification failed for the following files: + +%1 + + + + + + Verifying integrity... + + + + + + Integrity verification succeeded! + + + + + + The operation completed successfully. + + + + + + Integrity verification failed! + + + + + File contents may be corrupt or missing. + + + + + Integrity verification couldn't be performed + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity. + + + + + Select Dumped Keys Location + + + + + Decryption Keys install succeeded + + + + + Decryption Keys install failed + + + + + Orphaned Profiles Detected! + + + + + UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br> + + + + + Really clear data? + + + + + Important data may be lost! + + + + + Are you REALLY sure? + + + + + Once deleted, your data will NOT come back! +Only do this if you're 100% sure you want to delete this data. + + + + + Clearing... + + + + + Select Export Location + + + + + %1.zip + + + + + + Zipped Archives (*.zip) + + + + + Exporting data. This may take a while... + + + + + Exporting + + + + + Exported Successfully + + + + + Data was exported successfully. + + + + + Export Cancelled + + + + + Export was cancelled by the user. + + + + + Export Failed + + + + + Ensure you have write permissions on the targeted directory and try again. + + + + + Select Import Location + + + + + Import Warning + + + + + All previous data in this directory will be deleted. Are you sure you wish to proceed? + + + + + Importing data. This may take a while... + + + + + Importing + + + + + Imported Successfully + + + + + Data was imported successfully. + + + + + Import Cancelled + + + + + Import was cancelled by the user. + + + + + Import Failed + + + + + Ensure you have read permissions on the targeted directory and try again. + + + + + QtCommon::FS + + + Linked Save Data + + + + + Save data has been linked. + + + + + Failed to link save data + + + + + Could not link directory: + %1 +To: + %2 + + + + + Already Linked + + + + + This title is already linked to Ryujinx. Would you like to unlink it? + + + + + Failed to unlink old directory + + + + + + OS returned error: %1 + + + + + Failed to copy save data + + + + + Unlink Successful + + + + + Successfully unlinked Ryujinx save data. Save data has been kept intact. + + + + + Could not find Ryujinx installation + + + + + Could not find a valid Ryujinx installation. This may typically occur if you are using Ryujinx in portable mode. + +Would you like to manually select a portable folder to use? + + + + + Ryujinx Portable Location + + + + + Not a valid Ryujinx directory + + + + + The specified directory does not contain valid Ryujinx data. + + + + + + Could not find Ryujinx save data + + + + + QtCommon::Game + + + Error Removing Contents + + + + + Error Removing Update + + + + + Error Removing DLC + + + + + + + + + + Successfully Removed + + + + + Successfully removed the installed base game. + + + + + The base game is not installed in the NAND and cannot be removed. + + + + + Successfully removed the installed update. + + + + + There is no update installed for this title. + + + + + There are no DLCs installed for this title. + + + + + Successfully removed %1 installed DLC. + + + + + + Error Removing Transferable Shader Cache + + + + + + A shader cache for this title does not exist. + + + + + Successfully removed the transferable shader cache. + + + + + Failed to remove the transferable shader cache. + + + + + Error Removing Vulkan Driver Pipeline Cache + + + + + Failed to remove the driver pipeline cache. + + + + + + Error Removing Transferable Shader Caches + + + + + Successfully removed the transferable shader caches. + + + + + Failed to remove the transferable shader cache directory. + + + + + + Error Removing Custom Configuration + + + + + A custom configuration for this title does not exist. + + + + + Successfully removed the custom game configuration. + + + + + Failed to remove the custom game configuration. + + + + + Reset Metadata Cache + + + + + The metadata cache is already empty. + + + + + The operation completed successfully. + + + + + The metadata cache couldn't be deleted. It might be in use or non-existent. + + + + + Create Shortcut + + + + + Do you want to launch the game in fullscreen? + + + + + Shortcut Created + + + + + Successfully created a shortcut to %1 + + + + + Shortcut may be Volatile! + + + + + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? + + + + + Failed to Create Shortcut + + + + + Failed to create a shortcut to %1 + + + + + Create Icon + + + + + Cannot create icon file. Path "%1" does not exist and cannot be created. + + + + + No firmware available + + + + + Please install firmware to use the home menu. + + + + + Home Menu Applet + + + + + Home Menu is not available. Please reinstall firmware. + + + + + QtCommon::Mod + + + Mod Name + + + + + What should this mod be called? + + + + + RomFS + + + + + ExeFS/Patch + + + + + Cheat + + + + + Mod Type + + + + + Could not detect mod type automatically. Please manually specify the type of mod you downloaded. + +Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods. + + + + + + Mod Extract Failed + + + + + Failed to create temporary directory %1 + + + + + Zip file %1 is empty + + + + + QtCommon::Path + + + Error Opening Shader Cache + + + + + Failed to create or open shader cache for this title, ensure your app data directory has write permissions. + + + + + QtCommon::StringLookup + + + Contains game save data. DO NOT REMOVE UNLESS YOU KNOW WHAT YOU'RE DOING! + + + + + Contains Vulkan and OpenGL pipeline caches. Generally safe to remove. + + + + + Contains updates and DLC for games. + + + + + Contains firmware and applet data. + + + + + Contains game mods, patches, and cheats. + + + + + Decryption Keys were successfully installed + + + + + Unable to read key directory, aborting + + + + + One or more keys failed to copy. + + + + + Verify your keys file has a .keys extension and try again. + + + + + Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. + + + + + Successfully installed firmware version %1 + + + + + Unable to locate potential firmware NCA files + + + + + Failed to delete one or more firmware files. + + + + + One or more firmware files failed to copy into NAND. + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. Restart Eden or re-install firmware. + + + + + Firmware missing. Firmware is required to run certain games and use the Home Menu. + + + + + Firmware reported as present, but was unable to be read. Check for decryption keys and redump firmware if necessary. + + + + + Eden has detected user data for the following emulators: + + + + + Would you like to migrate your data for use in Eden? +Select the corresponding button to migrate data from that emulator. +This may take a while. + + + + + Clearing shader cache is recommended for all users. +Do not uncheck unless you know what you're doing. + + + + + Keeps the old data directory. This is recommended if you aren't +space-constrained and want to keep separate data for the old emulator. + + + + + Deletes the old data directory. +This is recommended on devices with space constraints. + + + + + Creates a filesystem link between the old directory and Eden directory. +This is recommended if you want to share data between emulators. + + + + + Ryujinx title database does not exist. + + + + + Invalid header on Ryujinx title database. + + + + + Invalid magic header on Ryujinx title database. + + + + + Invalid byte alignment on Ryujinx title database. + + + + + No items found in Ryujinx title database. + + + + + Title %1 not found in Ryujinx title database. + + + QtControllerSelectorDialog @@ -8881,7 +10030,7 @@ p, li { white-space: pre-wrap; } - + Pro Controller Pro Controller @@ -8894,7 +10043,7 @@ p, li { white-space: pre-wrap; } - + Dual Joycons Joycon đôi @@ -8907,7 +10056,7 @@ p, li { white-space: pre-wrap; } - + Left Joycon Joycon trái @@ -8920,7 +10069,7 @@ p, li { white-space: pre-wrap; } - + Right Joycon Joycon phải @@ -8949,7 +10098,7 @@ p, li { white-space: pre-wrap; } - + Handheld Handheld @@ -9067,35 +10216,35 @@ p, li { white-space: pre-wrap; } Not enough controllers - + - + GameCube Controller Tay cầm GameCube - + Poke Ball Plus Poke Ball Plus - + NES Controller Tay cầm NES - + SNES Controller Tay cầm SNES - + N64 Controller Tay cầm N64 - + Sega Genesis Sega Genesis @@ -9103,28 +10252,28 @@ p, li { white-space: pre-wrap; } QtErrorDisplay - - - + + + Error Code: %1-%2 (0x%3) Mã lỗi: %1-%2 (0x%3) - + An error has occurred. Please try again or contact the developer of the software. Một lỗi đã xảy ra. Vui lòng thử lại hoặc liên hệ nhà phát triển của phần mềm. - + An error occurred on %1 at %2. Please try again or contact the developer of the software. Một lỗi đã xảy ra tại %1 vào %2. Vui lòng thử lại hoặc liên hệ nhà phát triển của phần mềm. - + An error has occurred. %1 @@ -9140,7 +10289,7 @@ Vui lòng thử lại hoặc liên hệ nhà phát triển của phần mềm. QtProfileSelectionDialog - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -9148,7 +10297,7 @@ Vui lòng thử lại hoặc liên hệ nhà phát triển của phần mềm. - + Users Người dùng @@ -9241,7 +10390,7 @@ Vui lòng thử lại hoặc liên hệ nhà phát triển của phần mềm.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -9250,17 +10399,57 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - - + + OK OK - + Cancel Hủy bỏ + + RyujinxDialog + + + Ryujinx Link + + + + + Linking save data to Ryujinx lets both Ryujinx and Eden reference the same save files for your games. + +By selecting "From Eden", previous save data stored in Ryujinx will be deleted, and vice versa for "From Ryujinx". + + + + + From Eden + + + + + From Ryujinx + + + + + Cancel + + + + + Failed to link save data + + + + + OS returned error: %1 + + + SequenceDialog @@ -9270,143 +10459,31 @@ p, li { white-space: pre-wrap; } - WaitTreeCallstack + SetPlayTimeDialog - - Call stack - Ngăn xếp gọi - - - - WaitTreeSynchronizationObject - - - [%1] %2 - [%1] %2 + + Set Play Time Data + - - waited by no thread - chờ đợi bởi vì không có luồng - - - - WaitTreeThread - - - runnable - có thể chạy + + Hours: + - - paused - đã tạm dừng + + Minutes: + - - sleeping - ngủ + + Seconds: + - - waiting for IPC reply - đang đợi IPC phản hồi - - - - waiting for objects - đang đợi đối tượng - - - - waiting for condition variable - đang chờ biến điều kiện - - - - waiting for address arbiter - chờ đợi địa chỉ người đứng giữa - - - - waiting for suspend resume - đang đợi để tạm dừng và tiếp tục - - - - waiting - đang chờ - - - - initialized - đã khởi tạo - - - - terminated - đã chấm dứt - - - - unknown - không xác định - - - - PC = 0x%1 LR = 0x%2 - PC = 0x%1 LR = 0x%2 - - - - ideal - lý tưởng - - - - core %1 - lõi %1 - - - - processor = %1 - bộ xử lý = %1 - - - - affinity mask = %1 - che đậy tánh giống nhau = %1 - - - - thread id = %1 - id luồng = %1 - - - - priority = %1(current) / %2(normal) - quyền ưu tiên = %1(hiện tại) / %2(bình thường) - - - - last running ticks = %1 - các tick chạy cuối cùng = %1 - - - - WaitTreeThreadList - - - waited by thread - đợi vì luồng - - - - WaitTreeWidget - - - &Wait Tree - &Cây Đợi + + Total play time reached maximum. + diff --git a/dist/languages/vi_VN.ts b/dist/languages/vi_VN.ts index 6277ea7e03..a588ef4952 100644 --- a/dist/languages/vi_VN.ts +++ b/dist/languages/vi_VN.ts @@ -1,25 +1,15 @@ - - - + AboutDialog - - About yuzu - Thông tin về yuzu - - - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - - About eden - + About Eden + - <html><head/><body><p><span style=" font-size:28pt;">eden</span></p></body></html> - + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> + @@ -34,70 +24,50 @@ p, li { white-space: pre-wrap; } hr { height: 1px; border-width: 0; } li.unchecked::marker { content: "\2610"; } li.checked::marker { content: "\2612"; } -</style></head><body style=" font-family:'Adwaita Sans'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> - +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> + - <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">This software should not be used to play games you have not legally obtained.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu là một phần mềm giả lập thử nghiệm mã nguồn mở cho máy Nintendo Switch, được cấp phép theo giấy phép GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Bạn không được phép sử dụng phần mềm này cho để chơi game mà bạn kiếm được một cách bất hợp pháp.</span></p></body></html> - - - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Trang web</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Mã nguồn</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Đóng góp</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/license.txt"><span style=" text-decoration: underline; color:#039be5;">Giấy phép</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. eden is not affiliated with Nintendo in any way.</span></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; là thương hiệu của Nintendo. yuzu không hề liên kết với Nintendo dưới bất kỳ hình thức nào.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. Eden is not affiliated with Nintendo in any way.</span></p></body></html> + CalibrationConfigurationDialog - + Communicating with the server... Đang giao tiếp với máy chủ... - + Cancel Huỷ - + Touch the top left corner <br>of your touchpad. Hãy chạm vào góc trên cùng<br>bên trái trên touchpad của bạn. - + Now touch the bottom right corner <br>of your touchpad. Giờ hãy chạm vào góc dưới cùng<br>bên phải trên touchpad của bạn. - + Configuration completed! Đã hoàn thành quá trình thiết lập! - + OK OK @@ -120,78 +90,78 @@ p, li { white-space: pre-wrap; } Gửi tin nhắn - + Members Thành viên - + %1 has joined %1 đã vô - + %1 has left %1 đã thoát - + %1 has been kicked %1 đã bị kick - + %1 has been banned %1 đã bị ban - + %1 has been unbanned %1 đã được unban - + View Profile Xem hồ sơ - - + + Block Player Chặn người chơi - + When you block a player, you will no longer receive chat messages from them.<br><br>Are you sure you would like to block %1? Khi bạn chặn một người chơi, bạn sẽ không còn nhận được tin nhắn từ người chơi đó nữa.<br><br>Bạn có chắc là muốn chặn %1? - + Kick Kick - + Ban Ban - + Kick Player Kick người chơi - + Are you sure you would like to <b>kick</b> %1? Bạn có chắc là bạn muốn <b>kick</b> %1? - + Ban Player Ban người chơi - + Are you sure you would like to <b>kick and ban</b> %1? This would ban both their forum username and their IP address. @@ -226,17 +196,17 @@ This would ban both their forum username and their IP address. ClientRoomWindow - + Connected Đã kết nối - + Disconnected Mất kết nối - + %1 - %2 (%3/%4 members) - connected %1 - %2 (%3/%4 members) - đã kết nối @@ -259,14 +229,10 @@ This would ban both their forum username and their IP address. Report Game Compatibility Báo cáo trò chơi tương thích - - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of yuzu you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected yuzu account</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Nếu bạn chọn gửi bản kiểm tra vào </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">danh sách tương thích yuzu</span></a><span style=" font-size:10pt;">, Thông tin sau sẽ được thu thập và hiển thị lên trang web:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Thông tin phần cứng (CPU / GPU / Hệ điều hành)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Phiên bản yuzu bạn đang chạy</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Tài khoản yuzu đang kết nối</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">eden Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of eden you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected eden account</li></ul></body></html> - + @@ -374,22 +340,22 @@ This would ban both their forum username and their IP address. Cảm ơn bạn đã gửi đến cho chúng tôi! - + Submitting Đang gửi - + Communication error Đã xảy ra lỗi giao tiếp với máy chủ - + An error occurred while sending the Testcase Có lỗi xảy ra khi gửi Testcase - + Next Tiếp theo @@ -397,1528 +363,1865 @@ This would ban both their forum username and their IP address. ConfigurationShared - + % % - + Amiibo editor - + - + Controller configuration - + - + Data erase - + - + Error Lỗi - + Net connect - + - + Player select - + - + Software keyboard Bàn phím mềm - + Mii Edit - + - + Online web - + - + Shop - + - + Photo viewer - + - + Offline web - + - + Login share - + - + Wifi web auth - + - + My page - + - + + Enable Overlay Applet + + + + + Enables Horizon's built-in overlay applet. Press and hold the home button for 1 second to show it. + + + + Output Engine: Đầu ra hệ thống: - + Output Device: Đầu ra thiết bị: - + Input Device: Đầu vào thiết bị: - + Mute audio - + - + Volume: Âm lượng: - + Mute audio when in background Tắt âm thanh khi chạy nền - + Multicore CPU Emulation Giả lập CPU đa nhân - - This option increases CPU emulation thread use from 1 to the Switch’s maximum of 4. -This is mainly a debug option and shouldn’t be disabled. - + + This option increases CPU emulation thread use from 1 to the maximum of 4. +This is mainly a debug option and shouldn't be disabled. + - + Memory Layout - + - - Increases the amount of emulated RAM from the stock 4GB of the retail Switch to the developer kit's 8/6GB. -It’s doesn’t improve stability or performance and is intended to let big texture mods fit in emulated RAM. -Enabling it will increase memory use. It is not recommended to enable unless a specific game with a texture mod needs it. - + + Increases the amount of emulated RAM. +Doesn't affect performance/stability but may allow HD texture mods to load. + - + Limit Speed Percent Giới hạn phần trăm tốc độ - - Controls the game's maximum rendering speed, but it’s up to each game if it runs faster or not. + + Controls the game's maximum rendering speed, but it's up to each game if it runs faster or not. 200% for a 30 FPS game is 60 FPS, and for a 60 FPS game it will be 120 FPS. Disabling it means unlocking the framerate to the maximum your PC can reach. - + - + + Turbo Speed + + + + + When the Turbo Speed hotkey is pressed, the speed will be limited to this percentage. + + + + + Slow Speed + + + + + When the Slow Speed hotkey is pressed, the speed will be limited to this percentage. + + + + Synchronize Core Speed - + - - Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). -Compatibility varies by game; many (especially older ones) may not respond well. + + Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). Can help reduce stuttering at lower framerates. - + - + Accuracy: Độ chính xác - - This setting controls the accuracy of the emulated CPU. -Don't change this unless you know what you are doing. - + + Change the accuracy of the emulated CPU (for debugging only). + - - + + Backend: - + - - Fast CPU Time - + + CPU Overclock + - + Overclocks the emulated CPU to remove some FPS limiters. Weaker CPUs may see reduced performance, and certain games may behave improperly. Use Boost (1700MHz) to run at the Switch's highest native clock, or Fast (2000MHz) to run at 2x clock. - + - + + Custom CPU Ticks + + + + + Set a custom value of CPU ticks. Higher values can increase performance, but may cause deadlocks. A range of 77-21000 is recommended. + + + + + Enable Host MMU Emulation (fastmem) + + + + + This optimization speeds up memory accesses by the guest program. +Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU. +Disabling this forces all memory accesses to use Software MMU Emulation. + + + + Unfuse FMA (improve performance on CPUs without FMA) Không dùng FMA (tăng hiệu suất cho các dòng CPU không hỗ trợ FMA) - + This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support. - + - + Faster FRSQRTE and FRECPE Chạy FRSQRTE và FRECPE nhanh hơn - + This option improves the speed of some approximate floating-point functions by using less accurate native approximations. - + - + Faster ASIMD instructions (32 bits only) Các lệnh ASIMD nhanh hơn (chỉ áp dụng cho 32 bit) - + This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes. - + - + Inaccurate NaN handling Xử lí NaN gặp lỗi - + This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions. - + - + Disable address space checks Tắt kiểm tra không gian địa chỉ - - This option improves speed by eliminating a safety check before every memory read/write in guest. -Disabling it may allow a game to read/write the emulator's memory. - + + This option improves speed by eliminating a safety check before every memory operation. +Disabling it may allow arbitrary code execution. + - + Ignore global monitor Bỏ qua màn hình chung - + 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. - + - + API: API đồ hoạ: - - Switches between the available graphics APIs. -Vulkan is recommended in most cases. - + + Changes the output graphics API. +Vulkan is recommended. + - + Device: Thiết bị đồ hoạ: - - This setting selects the GPU to use with the Vulkan backend. - + + This setting selects the GPU to use (Vulkan only). + - - Shader Backend: - Backend shader: - - - - The shader backend to use for the OpenGL renderer. -GLSL is the fastest in performance and the best in rendering accuracy. -GLASM is a deprecated NVIDIA-only backend that offers much better shader building performance at the cost of FPS and rendering accuracy. -SPIR-V compiles the fastest, but yields poor results on most GPU drivers. - - - - + Resolution: Độ phân giải: - - Forces the game to render at a different resolution. -Higher resolutions require much more VRAM and bandwidth. -Options lower than 1X can cause rendering issues. - + + Forces to render at a different resolution. +Higher resolutions require more VRAM and bandwidth. +Options lower than 1X can cause artifacts. + - + Window Adapting Filter: Bộ lọc điều chỉnh cửa sổ: - + FSR Sharpness: Độ sắc nét FSR: - - Determines how sharpened the image will look while using FSR’s dynamic contrast. - + + Determines how sharpened the image will look using FSR's dynamic contrast. + - + Anti-Aliasing Method: Phương pháp khử răng cưa: - + The anti-aliasing method to use. SMAA offers the best quality. -FXAA has a lower performance impact and can produce a better and more stable picture under very low resolutions. - +FXAA can produce a more stable picture in lower resolutions. + - + Fullscreen Mode: Chế độ Toàn màn hình: - + The method used to render the window in fullscreen. Borderless offers the best compatibility with the on-screen keyboard that some games request for input. Exclusive fullscreen may offer better performance and better Freesync/Gsync support. - + - + Aspect Ratio: Tỉ lệ khung hình: - - Stretches the game to fit the specified aspect ratio. -Switch games only support 16:9, so custom game mods are required to get other ratios. + + Stretches the renderer to fit the specified aspect ratio. +Most games only support 16:9, so modifications are required to get other ratios. Also controls the aspect ratio of captured screenshots. - + - - Use disk pipeline cache - Dùng bộ nhớ đệm pipeline trên ổ cứng + + Use persistent pipeline cache + - + Allows saving shaders to storage for faster loading on following game boots. Disabling it is only intended for debugging. - + - - Optimize SPIRV output shader - + + Optimize SPIRV output + - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. This feature is experimental. - + - - Use asynchronous GPU emulation - Dùng giả lập GPU không đồng bộ - - - - Uses an extra CPU thread for rendering. -This option should always remain enabled. - - - - + NVDEC emulation: Giả lập NVDEC - + Specifies how videos should be decoded. It can either use the CPU or the GPU for decoding, or perform no decoding at all (black screen on videos). In most cases, GPU decoding provides the best performance. - + - + ASTC Decoding Method: - + - + This option controls how ASTC textures should be decoded. -CPU: Use the CPU for decoding, slowest but safest method. -GPU: Use the GPU's compute shaders to decode ASTC textures, recommended for most games and users. -CPU Asynchronously: Use the CPU to decode ASTC textures as they arrive. Completely eliminates ASTC decoding -stuttering at the cost of rendering issues while the texture is being decoded. - +CPU: Use the CPU for decoding. +GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). +CPU Asynchronously: Use the CPU to decode ASTC textures on demand. EliminatesASTC decoding +stuttering but may present artifacts. + - + ASTC Recompression Method: - + - - Almost all desktop and laptop dedicated GPUs lack support for ASTC textures, forcing the emulator to decompress to an intermediate format any card supports, RGBA8. -This option recompresses RGBA8 to either the BC1 or BC3 format, saving VRAM but negatively affecting image quality. - + + Most GPUs lack support for ASTC textures and must decompress to anintermediate format: RGBA8. +BC1/BC3: The intermediate format will be recompressed to BC1 or BC3 format, + saving VRAM but degrading image quality. + - + + Frame Pacing Mode (Vulkan only) + + + + + Controls how the emulator manages frame pacing to reduce stuttering and make the frame rate smoother and more consistent. + + + + VRAM Usage Mode: - + - - Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. Has no effect on integrated graphics. Aggressive mode may severely impact the performance of other applications such as recording software. - + + Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. +Aggressive mode may impact performance of other applications such as recording software. + - + + Skip CPU Inner Invalidation + + + + + Skips certain cache invalidations during memory updates, reducing CPU usage and improving latency. This may cause soft-crashes. + + + + VSync Mode: Chế độ Vsync: - + FIFO (VSync) does not drop frames or exhibit tearing but is limited by the screen refresh rate. -FIFO Relaxed is similar to FIFO but allows tearing as it recovers from a slow down. +FIFO Relaxed 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. - FIFO (VSync) không gây mất khung hình hoặc hiện tượng xé hình nhưng bị giới hạn bởi tốc độ làm tươi màn hình. -FIFO Relaxed tương tự như FIFO nhưng cho phép hiện tượng xé hình khi phục hồi từ tình trạng bị chậm. -Mailbox có thể có độ trễ thấp hơn FIFO và không gây hiện tượng xé hình nhưng có thể mất khung hình. -Immediate (không đồng bộ hóa) chỉ hiển thị những gì đã có và có thể gây hiện tượng xé hình. +Immediate (no synchronization) presents whatever is available and can exhibit tearing. + - + + Sync Memory Operations + + + + + Ensures data consistency between compute and memory operations. +This option fixes issues in games, but may degrade performance. +Unreal Engine 4 games often see the most significant changes thereof. + + + + Enable asynchronous presentation (Vulkan only) Bật hiển thị bất đồng bộ (chỉ dành cho Vulkan) - + Slightly improves performance by moving presentation to a separate CPU thread. - + - + Force maximum clocks (Vulkan only) Buộc chạy ở xung nhịp tối đa (chỉ Vulkan) - + Runs work in the background while waiting for graphics commands to keep the GPU from lowering its clock speed. Chạy các công việc trong nền trong khi đang chờ lệnh đồ họa để giữ cho GPU không giảm xung nhịp. - + Anisotropic Filtering: Bộ lọc góc nghiêng: - + Controls the quality of texture rendering at oblique angles. -It’s a light setting and safe to set at 16x on most GPUs. - +Safe to set at 16x on most GPUs. + - - Accuracy Level: - Độ chính xác: + + GPU Mode: + - - GPU emulation accuracy. -Most games render fine with Normal, but High is still required for some. -Particles tend to only render correctly with High accuracy. -Extreme should only be used for debugging. -This option can be changed while playing. -Some games may require booting on high to render properly. - + + Controls the GPU emulation mode. +Most games render fine with Fast or Balanced modes, but Accurate is still required for some. +Particles tend to only render correctly with Accurate mode. + - - Use asynchronous shader building (Hack) - Dùng tính năng dựng shader bất đồng bộ (Hack) + + DMA Accuracy: + - - Enables asynchronous shader compilation, which may reduce shader stutter. -This feature is experimental. - + + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. + - Use Fast GPU Time (Hack) - Tăng Tốc Thời Gian GPU (Hack) + + Enable asynchronous shader compilation + - Enables Fast GPU Time. This option will force most games to run at their highest native resolution. - Bật chế độ Thời gian GPU nhanh. Tùy chọn này sẽ buộc hầu hết các game chạy ở độ phân giải gốc cao nhất của chúng. + + May reduce shader stutter. + - + + Fast GPU Time + + + + + Overclocks the emulated GPU to increase dynamic resolution and render distance. +Use 256 for maximal performance and 512 for maximal graphics fidelity. + + + + + GPU Unswizzle + + + + + Accelerates BCn 3D texture decoding using GPU compute. +Disable if experiencing crashes or graphical glitches. + + + + + GPU Unswizzle Max Texture Size + + + + + Sets the maximum size (MiB) for GPU-based texture unswizzling. +While the GPU is faster for medium and large textures, the CPU may be more efficient for very small ones. +Adjust this to find the balance between GPU acceleration and CPU overhead. + + + + + GPU Unswizzle Stream Size + + + + + Sets the maximum amount of texture data (in MiB) processed per frame. +Higher values can reduce stutter during texture loading but may impact frame consistency. + + + + + GPU Unswizzle Chunk Size + + + + + Determines the number of depth slices processed in a single dispatch. +Increasing this can improve throughput on high-end GPUs but may cause TDR or driver timeouts on weaker hardware. + + + + Use Vulkan pipeline cache Dùng Vulkan pipeline cache - + Enables GPU vendor-specific pipeline cache. This option can improve shader loading time significantly in cases where the Vulkan driver does not store pipeline cache files internally. - + - + Enable Compute Pipelines (Intel Vulkan Only) - + - - Enable compute pipelines, required by some games. -This setting only exists for Intel proprietary drivers, and may crash if enabled. + + 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. - + - + Enable Reactive Flushing Bật xả tương ứng - + Uses reactive flushing instead of predictive flushing, allowing more accurate memory syncing. - + - + Sync to framerate of video playback Đồng bộ hóa với tốc độ khung hình khi phát video - + Run the game at normal speed during video playback, even when the framerate is unlocked. Chạy game với tốc độ bình thường trong quá trình phát video, ngay cả khi tốc độ khung hình được mở khóa. - + Barrier feedback loops Vòng lặp phản hồi rào cản - + Improves rendering of transparency effects in specific games. Cải thiện hiệu quả hiển thị của hiệu ứng trong suốt trong một số trò chơi. - + + Enable buffer history + + + + + Enables access to previous buffer states. +This option may improve rendering quality and performance consistency in some games. + + + + + Fix bloom effects + + + + + Removes bloom in Burnout. + + + + + Enable Legacy Rescale Pass + + + + + May fix rescale issues in some games by relying on behavior from the previous implementation. +Legacy behavior workaround that fixes line artifacts on AMD and Intel GPUs, and grey texture flicker on Nvidia GPUs in Luigis Mansion 3. + + + + + Extended Dynamic State + + + + + Controls the number of features that can be used in Extended Dynamic State. +Higher states allow for more features and can increase performance, but may cause additional graphical issues. + + + + + Vertex Input Dynamic State + + + + + Enables vertex input dynamic state feature for better quality and performance. + + + + + Sample Shading + + + + + Allows the fragment shader to execute per sample in a multi-sampled fragment instead of once per fragment. Improves graphics quality at the cost of performance. +Higher values improve quality but degrade performance. + + + + RNG Seed Hạt giống RNG - + Controls the seed of the random number generator. -Mainly used for speedrunning purposes. - +Mainly used for speedrunning. + - + Device Name Tên thiết bị - - The name of the emulated Switch. - + + The name of the console. + - + Custom RTC Date: - + - - This option allows to change the emulated clock of the Switch. + + This option allows to change the clock of the console. Can be used to manipulate time in games. - + - + + The number of seconds from the current unix time + + + + Language: - + - - Note: this can be overridden when region setting is auto-select - Chú ý: cái này có thể ghi đè khi cài đặt quốc gia là chọn tự động + + This option can be overridden when region setting is auto-select + - + Region: Vùng: - - The region of the emulated Switch. - + + The region of the console. + - + Time Zone: Múi giờ: - - The time zone of the emulated Switch. - + + The time zone of the console. + - + Sound Output Mode: Chế độ đầu ra âm thanh - + Console Mode: - + - - Selects if the console is emulated in Docked or Handheld mode. + + Selects if the console is in Docked or Handheld mode. Games will change their resolution, details and supported controllers and depending on this setting. Setting to Handheld can help improve performance for low end systems. - + - - Prompt for user on game boot - Hiển thị cửa sổ chọn người dùng khi bắt đầu trò chơi + + Unit Serial + - - Pause emulation when in background - Tạm dừng giả lập khi chạy nền + + Battery Serial + - - Fast GPU Time (Hack) - + + Debug knobs + - - Overclocks the emulated GPU to increase dynamic resolution and render distance. -Use 128 for maximal performance and 512 for maximal graphics fidelity. - + + Prompt for user profile on boot + - - Extended Dynamic State - + + Useful if multiple people use the same PC. + - - Enables the VkExtendedDynamicState* extensions. -Higher dynamic states will generally improve performance, but may cause issues on certain games or devices. - + + Pause when not in focus + - - Provoking Vertex - + + Pauses emulation when focusing on other windows. + - - Improves lighting and vertex handling in certain games. -Only Vulkan 1.0+ devices support this extension. - - - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - - Ask to select a user profile on each boot, useful if multiple people use eden on the same PC. - - - - - This setting pauses eden when focusing other windows. - - - - + Confirm before stopping emulation - + - - This setting overrides game prompts asking to confirm stopping the game. + + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - + - + Hide mouse on inactivity Ẩn con trỏ chuột khi không dùng - - This setting hides the mouse after 2.5s of inactivity. - + + Hides the mouse after 2.5s of inactivity. + - + Disable controller applet Vô hiệu hoá applet tay cầm - - Forcibly disables the use of the controller applet by guests. -When a guest attempts to open the controller applet, it is immediately closed. - + + Forcibly disables the use of the controller applet in emulated programs. +When a program attempts to open the controller applet, it is immediately closed. + - + Check for updates - + - + Whether or not to check for updates upon startup. - + - + Enable Gamemode - + - + + Force X11 as Graphics Backend + + + + Custom frontend - + - + Real applet - + - + Never - + - + On Load - + - + Always - + - + CPU CPU - + GPU - + - + CPU Asynchronous - + - + Uncompressed (Best quality) Không nén (Chất lượng tốt nhất) - + BC1 (Low quality) BC1 (Chất lượng thấp) - + BC3 (Medium quality) BC3 (Chất lượng trung bình) - - Conservative - - - - - Aggressive - - - - - OpenGL - OpenGL - - - - Vulkan - Vulkan - - - - Null - Null - - - - GLSL - GLSL - - - - GLASM (Assembly Shaders, NVIDIA Only) - GLASM (Assembly Shaders, Chỉ Cho NVIDIA) - - - - SPIR-V (Experimental, AMD/Mesa Only) - - - - - Normal - Trung bình - - - - High - Khỏe - - - - Extreme - Tối đa - - - + + Auto Tự động - + + 30 FPS + + + + + 60 FPS + + + + + 90 FPS + + + + + 120 FPS + + + + + Conservative + + + + + Aggressive + + + + + Vulkan + Vulkan + + + + OpenGL GLSL + + + + + OpenGL GLASM (Assembly Shaders, NVIDIA Only) + + + + + OpenGL SPIR-V (Experimental, AMD/Mesa Only) + + + + + Null + Null + + + + Fast + + + + + Balanced + + + + + Accurate Tuyệt đối - - Unsafe - Tương đối - - - - Paranoid (disables most optimizations) - Paranoid (vô hiệu hoá hầu hết sự tối ưu) - - - - Dynarmic - - - - - NCE - - - - - Borderless Windowed - Cửa sổ không viền - - - - Exclusive Fullscreen - Toàn màn hình - - - - No Video Output - Không Video Đầu Ra - - - - CPU Video Decoding - Giải mã video bằng CPU - - - - GPU Video Decoding (Default) - Giải mã video bằng GPU (Mặc định) - - - - 0.25X (180p/270p) [EXPERIMENTAL] - - - - - 0.5X (360p/540p) [EXPERIMENTAL] - - - - - 0.75X (540p/810p) [EXPERIMENTAL] - 0.75X (540p/810p) [THỬ NGHIỆM] - - - - 1X (720p/1080p) - 1X (720p/1080p) - - - - 1.5X (1080p/1620p) [EXPERIMENTAL] - 1.5X (1080p/1620p) [THỬ NGHIỆM] - - - - 2X (1440p/2160p) - 2X (1440p/2160p) - - - - 3X (2160p/3240p) - 3X (2160p/3240p) - - - - 4X (2880p/4320p) - 4X (2880p/4320p) - - - - 5X (3600p/5400p) - 5X (3600p/5400p) - - - - 6X (4320p/6480p) - 6X (4320p/6480p) - - - - 7X (5040p/7560p) - 7X (5040p/7560p) - - - - 8X (5760p/8640p) - 8X (5760p/8640p) - - - - Nearest Neighbor - Nearest Neighbor - - - - Bilinear - Bilinear - - - - Bicubic - Bicubic - - - - Gaussian - ScaleForce - - - - ScaleForce - ScaleForce - - - - AMD FidelityFX™️ Super Resolution - AMD FidelityFX™️ Super Resolution - - - - Area - - - - - None - Trống - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Default (16:9) - Mặc định (16:9) - - - - Force 4:3 - Dùng 4:3 - - - - Force 21:9 - Dùng 21:9 - - - - Force 16:10 - Dung 16:10 - - - - Stretch to Window - Kéo dãn đến cửa sổ phần mềm - - - - Automatic - Tự động - - - + + Default Mặc định - + + Unsafe (fast) + + + + + Safe (stable) + + + + + Unsafe + Tương đối + + + + Paranoid (disables most optimizations) + Paranoid (vô hiệu hoá hầu hết sự tối ưu) + + + + Debugging + + + + + Dynarmic + + + + + NCE + + + + + Borderless Windowed + Cửa sổ không viền + + + + Exclusive Fullscreen + Toàn màn hình + + + + No Video Output + Không Video Đầu Ra + + + + CPU Video Decoding + Giải mã video bằng CPU + + + + GPU Video Decoding (Default) + Giải mã video bằng GPU (Mặc định) + + + + 0.25X (180p/270p) [EXPERIMENTAL] + + + + + 0.5X (360p/540p) [EXPERIMENTAL] + + + + + 0.75X (540p/810p) [EXPERIMENTAL] + 0.75X (540p/810p) [THỬ NGHIỆM] + + + + 1X (720p/1080p) + 1X (720p/1080p) + + + + 1.25X (900p/1350p) [EXPERIMENTAL] + + + + + 1.5X (1080p/1620p) [EXPERIMENTAL] + 1.5X (1080p/1620p) [THỬ NGHIỆM] + + + + 2X (1440p/2160p) + 2X (1440p/2160p) + + + + 3X (2160p/3240p) + 3X (2160p/3240p) + + + + 4X (2880p/4320p) + 4X (2880p/4320p) + + + + 5X (3600p/5400p) + 5X (3600p/5400p) + + + + 6X (4320p/6480p) + 6X (4320p/6480p) + + + + 7X (5040p/7560p) + 7X (5040p/7560p) + + + + 8X (5760p/8640p) + 8X (5760p/8640p) + + + + Nearest Neighbor + Nearest Neighbor + + + + Bilinear + Bilinear + + + + Bicubic + Bicubic + + + + Gaussian + ScaleForce + + + + Lanczos + + + + + ScaleForce + ScaleForce + + + + AMD FidelityFX Super Resolution + + + + + Area + + + + + MMPX + + + + + Zero-Tangent + + + + + B-Spline + + + + + Mitchell + + + + + Spline-1 + + + + + + None + Trống + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Default (16:9) + Mặc định (16:9) + + + + Force 4:3 + Dùng 4:3 + + + + Force 21:9 + Dùng 21:9 + + + + Force 16:10 + Dung 16:10 + + + + Stretch to Window + Kéo dãn đến cửa sổ phần mềm + + + + Automatic + Tự động + + + 2x 2x - + 4x 4x - + 8x 8x - + 16x 16x - + + 32x + + + + + 64x + + + + Japanese (日本語) Tiếng Nhật (日本語) - + American English Tiếng Anh Mỹ - + French (français) Tiếng Pháp (French) - + German (Deutsch) Tiếng Đức (Deutsch) - + Italian (italiano) Tiếng Ý (italiano) - + Spanish (español) Tiếng Tây Ban Nha (Spanish) - + Chinese Tiếng Trung - + Korean (한국어) Tiếng Hàn (한국어) - + Dutch (Nederlands) Tiếng Hà Lan (Dutch) - + Portuguese (português) Tiếng Bồ Đào Nha (Portuguese) - + Russian (Русский) Tiếng Nga (Русский) - + Taiwanese Tiếng Đài Loan - + British English Tiếng Anh UK (British English) - + Canadian French Tiếng Pháp Canada - + Latin American Spanish Tiếng Mỹ La-tinh - + Simplified Chinese Tiếng Trung giản thể - + Traditional Chinese (正體中文) Tiếng Trung phồn thể (正體中文) - + Brazilian Portuguese (português do Brasil) Tiếng Bồ Đào Nha của người Brazil (Português do Brasil) - - + + Polish (polska) + + + + + Thai (แบบไทย) + + + + + Japan Nhật Bản - + USA Hoa Kỳ - + Europe Châu Âu - + Australia Châu Úc - + China Trung Quốc - + Korea Hàn Quốc - + Taiwan Đài Loan - + Auto (%1) Auto select time zone Tự động (%1) - + Default (%1) Default time zone Mặc định (%1) - + CET CET - + CST6CDT CST6CDT - + Cuba Cuba - + EET EET - + Egypt Ai Cập - + Eire Eire - + EST EST - + EST5EDT EST5EDT - + GB GB - + GB-Eire GB-Eire - + GMT GMT - + GMT+0 GMT+0 - + GMT-0 GMT-0 - + GMT0 GMT0 - + Greenwich Greenwich - + Hongkong Hồng Kông - + HST HST - + Iceland Iceland - + Iran Iran - + Israel Israel - + Jamaica Jamaica - + Kwajalein Kwajalein - + Libya Libya - + MET MET - + MST MST - + MST7MDT MST7MDT - + Navajo Navajo - + NZ NZ - + NZ-CHAT NZ-CHAT - + Poland Ba Lan - + Portugal Bồ Đào Nha - + PRC PRC - + PST8PDT PST8PDT - + ROC ROC - + ROK ROK - + Singapore Singapore - + Turkey Thổ Nhĩ Kỳ - + UCT UCT - + Universal Quốc tế - + UTC UTC - + W-SU W-SU - + WET WET - + Zulu Zulu - + Mono Mono - + Stereo Stereo - + Surround Surround - + 4GB DRAM (Default) - + - + 6GB DRAM (Unsafe) - + - + 8GB DRAM - + - + 10GB DRAM (Unsafe) - + - + 12GB DRAM (Unsafe) - + - - Low (128) - - - - - Medium (256) - - - - - High (512) - - - - + Docked Chế độ cắm TV - + Handheld Cầm tay - + + + Off + + + + Boost (1700MHz) - + - + Fast (2000MHz) - + - + Always ask (Default) - + - + Only if game specifies not to stop - + - + Never ask - + + + + + + Medium (256) + + + + + + High (512) + + + + + Very Small (16 MB) + + + + + Small (32 MB) + + + + + Normal (128 MB) + + + + + Large (256 MB) + + + + + Very Large (512 MB) + + + + + Very Low (4 MB) + + + + + Low (8 MB) + + + + + Normal (16 MB) + + + + + Medium (32 MB) + + + + + High (64 MB) + + + + + Very Low (32) + + + + + Low (64) + + + + + Normal (128) + + + + + Disabled + + + + + ExtendedDynamicState 1 + + + + + ExtendedDynamicState 2 + + + + + ExtendedDynamicState 3 + + + + + Tree View + + + + + Grid View + @@ -1931,12 +2234,12 @@ When a guest attempts to open the controller applet, it is immediately closed. Applets - + Applet mode preference - + @@ -1991,7 +2294,7 @@ When a guest attempts to open the controller applet, it is immediately closed.Khôi phục về mặc định - + Auto Tự động @@ -2021,7 +2324,7 @@ When a guest attempts to open the controller applet, it is immediately closed. CPU Backend - + @@ -2178,7 +2481,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all memory accesses to use Software MMU Emulation.</div> @@ -2196,7 +2499,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up exclusive memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all exclusive memory accesses to use Software MMU Emulation.</div> @@ -2230,7 +2533,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up memory accesses by allowing invalid memory accesses to succeed.</div> - <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> + <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> <div style="white-space: nowrap">Tối ưu hóa này tăng tốc truy cập bộ nhớ bằng cách cho phép các truy cập bộ nhớ không hợp lệ thành công.</div> @@ -2271,30 +2574,30 @@ When a guest attempts to open the controller applet, it is immediately closed.Sổ ghi chép - - Open Log Location - Mở vị trí sổ ghi chép - - - + Global Log Filter Bộ lọc sổ ghi chép - + When checked, the max size of the log increases from 100 MB to 1 GB Khi tích vào, dung lượng tối đa cho file log chuyển từ 100 MB lên 1 GB - + Enable Extended Logging** Bật ghi nhật ký mở rộng** - + Show Log in Console Hiện nhật ký trên trong console + + + Open Log Location + Mở vị trí sổ ghi chép + Homebrew @@ -2353,7 +2656,7 @@ When a guest attempts to open the controller applet, it is immediately closed. Enable Renderdoc Hotkey - + @@ -2398,12 +2701,12 @@ When a guest attempts to open the controller applet, it is immediately closed. <html><head/><body><p>When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.</p></body></html> - + Disable Buffer Reorder - + @@ -2431,18 +2734,9 @@ When a guest attempts to open the controller applet, it is immediately closed.Kích hoạt tất cả các loại tay cầm - - Censor username in logs - - - - - **This will be reset automatically when eden closes. - - - - Enable Auto-Stub** - Bật Auto-Stub** + + Enable Auto-Stub + @@ -2451,8 +2745,8 @@ When a guest attempts to open the controller applet, it is immediately closed. - Enable CPU Debugging - Bật Vá Lỗi CPU + Use dev.keys + @@ -2465,43 +2759,74 @@ When a guest attempts to open the controller applet, it is immediately closed.Vá lỗi - - Flush log output on each line - + + Battery Serial: + - - Enable FS Access Log - Bật log truy cập FS + + Bitmask for quick development toggles + - + + Set debug knobs (bitmask) + + + + + 16-bit debug knob set for quick development toggles + + + + + (bitmask) + + + + + Debug Knobs: + + + + + Unit Serial: + + + + Enable this to output the latest generated audio command list to the console. Only affects games using the audio renderer. Bật tính năng này để đưa ra danh sách lệnh âm thanh mới nhất đã tạo ra đến console. Chỉ ảnh hưởng đến các game sử dụng bộ mã hóa âm thanh. - - Enable Auto-Stub - - - - + Dump Audio Commands To Console** Trích xuất các lệnh âm thanh đến console** - + + Flush log output on each line + + + + + Enable FS Access Log + Bật log truy cập FS + + + Enable Verbose Reporting Services** Bật dịch vụ báo cáo chi tiết** - **This will be reset automatically when yuzu closes. - **Sẽ tự động thiết lập lại khi tắt yuzu. + + Censor username in logs + - - Web applet not compiled - Applet web chưa được biên dịch + + **This will be reset automatically when Eden closes. + @@ -2543,14 +2868,10 @@ When a guest attempts to open the controller applet, it is immediately closed. ConfigureDialog - - yuzu Configuration - Thiết lập yuzu - - eden Configuration - + Eden Configuration + @@ -2558,88 +2879,88 @@ When a guest attempts to open the controller applet, it is immediately closed.Một số cài đặt chỉ khả dụng khi game không chạy. - + Applets - + - - + + Audio Âm thanh - - + + CPU CPU - + Debug Gỡ lỗi - + Filesystem Hệ thống tệp tin - - + + General Chung - - + + Graphics Đồ hoạ - + GraphicsAdvanced Đồ họa Nâng cao - - GraphicsExtensions - + + GraphicsExtra + - + Hotkeys Phím tắt - - + + Controls Phím - + Profiles Hồ sơ - + Network Mạng - - + + System Hệ thống - + Game List Danh sách trò chơi - + Web Web @@ -2669,9 +2990,10 @@ When a guest attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2681,107 +3003,183 @@ When a guest attempts to open the controller applet, it is immediately closed.Thẻ nhớ SD - + + Save Data + + + + Gamecard Thẻ nhớ trò chơi - + Path Đường dẫn - + Inserted Đã chèn vào - + Current Game Game hiện tại - + Patch Manager Quản lý bản bá - + Dump Decompressed NSOs Sao chép NSO đã giải nén - + Dump ExeFS Sao chép ExeFS - + Mod Load Root Thư mục tải mod gốc - + Dump Root Trích xuất thư mục gốc - + Caching Bộ nhớ đệm - + Cache Game List Metadata Lưu bộ nhớ đệm của danh sách trò chơi - - - - + Reset Metadata Cache Khôi phục bộ nhớ đệm của metadata - + Select Emulated NAND Directory... Chọn Thư Mục Giả Lập NAND... - + Select Emulated SD Directory... Chọn Thư Mục Giả Lập SD... - + + + Select Save Data Directory... + + + + Select Gamecard Path... Chọn đường dẫn tới đĩa game... - + Select Dump Directory... Chọn thư mục trích xuất... - + Select Mod Load Directory... Chọn Thư Mục Chứa Mod... - - The metadata cache is already empty. - Bộ nhớ đệm metadata trống. + + Save Data Directory + - - The operation completed successfully. - Các hoạt động đã hoàn tất thành công. + + Choose an action for the save data directory: + - - The metadata cache couldn't be deleted. It might be in use or non-existent. - Bộ nhớ đệm metadata không thể xoá. Nó có thể đang được sử dụng hoặc không tồn tại. + + Set Custom Path + + + + + Reset to NAND + + + + + Save data exists in both the old and new locations. + +Old: %1 +New: %2 + +Would you like to migrate saves from the old location? +WARNING: This will overwrite any conflicting saves in the new location! + + + + + Would you like to migrate your save data to the new location? + +From: %1 +To: %2 + + + + + Migrate Save Data + + + + + Migrating save data... + + + + + Cancel + + + + + + Migration Failed + + + + + Failed to create destination directory. + + + + + Failed to migrate save data: +%1 + + + + + Migration Complete + + + + + Save data has been migrated successfully. + +Would you like to delete the old save data? + @@ -2799,28 +3197,54 @@ When a guest attempts to open the controller applet, it is immediately closed. - Linux - + External Content + - + + Add directories to scan for DLCs and Updates without installing to NAND + + + + + Add Directory + + + + + Remove Selected + + + + Reset All Settings Đặt lại mọi tùy chỉnh - yuzu - yuzu + + Eden + - - eden - - - - + This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed? Quá trình này sẽ thiết lập lại toàn bộ tùy chỉnh và gỡ hết mọi cài đặt cho từng game riêng lẻ. Quá trình này không xóa đường dẫn tới thư mục game, hồ sơ, hay hồ sơ của thiết lập phím. Tiếp tục? + + + Select External Content Directory... + + + + + Directory Already Added + + + + + This directory is already in the list. + + ConfigureGraphics @@ -2850,33 +3274,33 @@ When a guest attempts to open the controller applet, it is immediately closed.Màu nền: - + % FSR sharpening percentage (e.g. 50%) % - + Off Tắt - + VSync Off Tắt Vsync - + Recommended Đề xuất - + On Bật - + VSync On Bật Vsync @@ -2894,7 +3318,7 @@ When a guest attempts to open the controller applet, it is immediately closed.Nâng cao - + Advanced Graphics Settings Cài đặt đồ hoạ nâng cao @@ -2904,24 +3328,38 @@ When a guest attempts to open the controller applet, it is immediately closed. Form - Mẫu + - Extensions - + Extras + - - Vulkan Extension Settings - + + Hacks + - - While it's recommended to use state 3, some games may perform better on lower states. Setting to 0 (disabled) may also break games. -If your GPU is older (i.e. RX570/580 or older), it may not support these features. If this is the case, set the slider to 0 and uncheck all boxes. -These settings are experimental, and may cause black screens. If your games fail to boot or are stuck on a black screen, change these settings around. - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + + + + + % + Sample Shading percentage (e.g. 50%) + + + + + Extended Dynamic State is disabled on macOS due to MoltenVK compatibility issues that cause black screens. + @@ -2952,75 +3390,75 @@ These settings are experimental, and may cause black screens. If your games fail Khôi phục về mặc định - + Action Hành động - + Hotkey Phím tắt - + Controller Hotkey Phím tắt tay cầm - - - + + + Conflicting Key Sequence Tổ hợp phím bị xung đột - - + + The entered key sequence is already assigned to: %1 Tổ hợp phím này đã gán với: %1 - + [waiting] [Chờ] - + Invalid Không hợp lệ - + Invalid hotkey settings - + - + An error occurred. Please report this issue on github. - + - + Restore Default Khôi phục về mặc định - + Clear Xóa - + Conflicting Button Sequence Dãy nút xung đột - + The default button sequence is already assigned to: %1 Dãy nút mặc định đã được gán cho: %1 - + The default key sequence is already assigned to: %1 Tổ hợp phím này đã gán với: %1 @@ -3340,12 +3778,8 @@ These settings are experimental, and may cause black screens. If your games fail - Requires restarting eden - - - - Requires restarting yuzu - Phải khởi động lại yuzu + Requires restarting Eden + @@ -3495,30 +3929,19 @@ These settings are experimental, and may cause black screens. If your games fail - + Left Stick Cần trái - - - - - - - Up - Lên - - - - - - - - - - Left - Trái + + + + + + + Down + Xuống @@ -3532,14 +3955,25 @@ These settings are experimental, and may cause black screens. If your games fail Phải - - - - - - - Down - Xuống + + + + + + + + Left + Trái + + + + + + + + + Up + Lên @@ -3586,14 +4020,6 @@ These settings are experimental, and may cause black screens. If your games fail D-Pad D-Pad - - - - - - SL - SL - @@ -3603,59 +4029,55 @@ These settings are experimental, and may cause black screens. If your games fail SR - - - - L - L + + + + + SL + SL - + ZL ZL + + + + + L + L + Minus Trừ - - - - Capture - Chụp - - + Plus Cộng - - - Home - Home + + + + ZR + ZR - - + + R R - - - - - ZR - ZR - Motion 1 @@ -3666,6 +4088,18 @@ These settings are experimental, and may cause black screens. If your games fail Motion 2 Chuyển động 2 + + + + Capture + Chụp + + + + + Home + Home + Face Buttons @@ -3678,10 +4112,10 @@ These settings are experimental, and may cause black screens. If your games fail X - - - Y - Y + + + B + B @@ -3690,14 +4124,14 @@ These settings are experimental, and may cause black screens. If your games fail A - - - B - B + + + Y + Y - + Right Stick Cần phải @@ -3712,242 +4146,242 @@ These settings are experimental, and may cause black screens. If your games fail Cài đặt - - - - + + + + Clear Bỏ trống - - - - - + + + + + [not set] [không đặt] - - - + + + Invert button Đảo ngược nút - - + + Toggle button Đổi nút - + Turbo button Nút Turbo - - + + Invert axis Đảo ngược trục - - - + + + Set threshold Thiết lập ngưỡng - - + + Choose a value between 0% and 100% Chọn một giá trị giữa 0% và 100% - + Toggle axis Chuyển đổi trục - + Set gyro threshold Thiết lập ngưỡng cảm biến con quay - + Calibrate sensor Hiệu chỉnh cảm biến - + Map Analog Stick Thiết lập Cần Điều Khiển - + After pressing OK, first move your joystick horizontally, and then vertically. To invert the axes, first move your joystick vertically, and then horizontally. Sau khi bấm OK, di chuyển cần sang ngang, rồi sau đó sang dọc. Nếu muốn đảo ngược hướng cần điều khiển, di chuyển cần sang dọc trước, rồi sang ngang. - + Center axis Canh chỉnh trục - - + + Deadzone: %1% Vùng chết: %1% - - + + Modifier Range: %1% Phạm vi điều chỉnh: %1% - - + + Pro Controller Tay cầm Pro Controller - + Dual Joycons Joycon đôi - + Left Joycon Joycon Trái - + Right Joycon Joycon Phải - + Handheld Cầm tay - + GameCube Controller Tay cầm GameCube - + Poke Ball Plus Poke Ball Plus - + NES Controller Tay cầm NES - + SNES Controller Tay cầm SNES - + N64 Controller Tay cầm N64 - + Sega Genesis Sega Genesis - + Start / Pause Bắt đầu / Tạm ngưng - + Z Z - + Control Stick Cần điều khiển - + C-Stick C-Stick - + Shake! Lắc! - + [waiting] [Chờ] - + New Profile Hồ sơ mới - + Enter a profile name: Nhập tên hồ sơ: - - + + Create Input Profile Tạo Hồ Sơ Phím - + The given profile name is not valid! Tên hồ sơ không hợp lệ! - + Failed to create the input profile "%1" Quá trình tạo hồ sơ phím "%1" thất bại - + Delete Input Profile Xóa Hồ Sơ Phím - + Failed to delete the input profile "%1" Quá trình xóa hồ sơ phím "%1" thất bại - + Load Input Profile Nạp Hồ Sơ Phím - + Failed to load the input profile "%1" Quá trình nạp hồ sơ phím "%1" thất bại - + Save Input Profile Lưu Hồ Sơ Phím - + Failed to save the input profile "%1" Quá trình lưu hồ sơ phím "%1" thất bại @@ -3970,15 +4404,6 @@ Nếu muốn đảo ngược hướng cần điều khiển, di chuyển cần s Mặc định - - ConfigureLinuxTab - - - - Linux - - - ConfigureMotionTouch @@ -4004,7 +4429,7 @@ Nếu muốn đảo ngược hướng cần điều khiển, di chuyển cần s - + Configure Cài đặt @@ -4034,111 +4459,93 @@ Nếu muốn đảo ngược hướng cần điều khiển, di chuyển cần s Cổng: - - Learn More - Tìm hiểu thêm - - - - + + Test Thử nghiệm - + Add Server Thêm Server - + Remove Server Xóa Server - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Tìm hiểu thêm</span></a> - - - + %1:%2 %1:%2 - yuzu - yuzu + + + + + + + Eden + - - <a href='https://eden-emulator.github.io/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - - - - + Port number has invalid characters Cổng có kí tự không hợp lệ - - - - - - - eden - - - - + Port has to be in range 0 and 65353 Cổng phải từ 0 đến 65353 - + IP address is not valid Địa chỉ IP không hợp lệ - + This UDP server already exists Server UDP đã tồn tại - + Unable to add more than 8 servers Không thể vượt quá 8 server - + Testing Thử nghiệm - + Configuring Cài đặt - + Test Successful Thử Nghiệm Thành Công - + Successfully received data from the server. Nhận được dữ liệu từ server! - + Test Failed Thử Nghiệm Thất Bại - + Could not receive valid data from the server.<br>Please verify that the server is set up correctly and the address and port are correct. Không thể nhận được dữ liệu hợp lệ từ server. <br>Hãy chắc chắn server được thiết lập chính xác, từ địa chỉ lẫn cổng phải được thiết lập đúng. - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. Cấu hình kiểm tra hoặc hiệu chuẩn UDP đang được tiến hành.<br>Vui lòng chờ cho đến khi nó hoàn thành. @@ -4265,9 +4672,9 @@ Các giá trị hiện tại lần lượt là %1% và %2%. Giao diện mạng - - None - Trống + + Enable Airplane Mode + @@ -4323,49 +4730,54 @@ Các giá trị hiện tại lần lượt là %1% và %2%. Một số cài đặt chỉ khả dụng khi game không chạy. - + Add-Ons Bổ Sung - + System Hệ Thống - + CPU CPU - + Graphics Đồ Họa - + Adv. Graphics Đồ Họa Nâng Cao - - GPU Extensions - + + Ext. Graphics + - + Audio Âm Thanh - + Input Profiles Hồ sơ đầu vào - Linux - + Network + + + + + Applets + @@ -4386,15 +4798,110 @@ Các giá trị hiện tại lần lượt là %1% và %2%. Bổ Sung - + + Import Mod from ZIP + + + + + Import Mod from Folder + + + + Patch Name Tên bản vá - + Version Phiên Bản + + + Mod Install Succeeded + + + + + Successfully installed all mods. + + + + + Mod Install Failed + + + + + Failed to install the following mods: + %1 +Check the log for details. + + + + + Mod Folder + + + + + Zipped Mod Location + + + + + Zipped Archives (*.zip) + + + + + Invalid Selection + + + + + Only mods, cheats, and patches can be deleted. +To delete NAND-installed updates, right-click the game in the game list and click Remove -> Remove Installed Update. + + + + + You are about to delete the following installed mods: + + + + + + +Once deleted, these can NOT be recovered. Are you 100% sure you want to delete them? + + + + + Delete add-on(s)? + + + + + Successfully deleted + + + + + Successfully deleted all selected mods. + + + + + &Delete + + + + + &Open in File Manager + + ConfigureProfileManager @@ -4424,32 +4931,17 @@ Các giá trị hiện tại lần lượt là %1% và %2%. Tên - - Set Image - Đặt Hình Ảnh - - - + Add Thêm - - Rename - Đổi Tên - - - - Remove - Gỡ Bỏ - - - + Profile management is available only when game is not running. Chỉ có thể quản lí hồ sơ khi game không chạy. - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -4457,100 +4949,80 @@ Các giá trị hiện tại lần lượt là %1% và %2%. %2 - - Enter Username - Điền Tên - - - + Users Người Dùng - - Enter a username for the new user: - Chọn tên cho người dùng mới - - - - Enter a new username: - Chọn một tên mới: - - - - Select User Image - Chọn Ảnh cho Người Dùng - - - - JPEG Images (*.jpg *.jpeg) - Ảnh JPEG (*.jpg *.jpeg) - - - + Error deleting image Lỗi khi xóa ảnh - + Error occurred attempting to overwrite previous image at: %1. Có lỗi khi ghi đè ảnh trước tại: %1. - + Error deleting file Lỗi xóa ảnh - + Unable to delete existing file: %1. Không thể xóa ảnh hiện tại: %1. - + Error creating user image directory Lỗi khi tạo thư mục chứa ảnh người dùng - + Unable to create directory %1 for storing user images. Không thể tạo thư mục %1 để chứa ảnh người dùng - - Error copying user image - Lỗi chép ảnh người dùng + + Error saving user image + - - Unable to copy image from %1 to %2 - Không thể chép ảnh từ %1 sang %2 + + Unable to save image to file + - - Error resizing user image - Lỗi thu phóng ảnh + + &Edit + - - Unable to resize image - Không thể thu phóng ảnh + + &Delete + + + + + Edit User + ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. Xoá người dùng này? Tất cả dữ liệu save của người dùng này sẽ bị xoá. - + Confirm Delete Xác nhận xóa - + Name: %1 UUID: %2 Tên: %1 @@ -4603,7 +5075,7 @@ UUID: %2 - + Enable Bật @@ -4614,7 +5086,7 @@ UUID: %2 - + Not connected Không kết nối @@ -4624,63 +5096,63 @@ UUID: %2 Khôi phục về mặc định - + Clear Bỏ trống - + [not set] [không đặt] - + Invert axis Đảo ngược trục - - + + Deadzone: %1% Vùng chết: %1% - + Error enabling ring input Lỗi khi bật đầu vào từ vòng - + Direct Joycon driver is not enabled Driver JoyCon trực tiếp chưa được bật - + Configuring Cài đặt - + The current mapped device doesn't support the ring controller Thiết bị đươc ánh xạ hiện tại không hỗ trợ vòng điều khiển - + The current mapped device doesn't have a ring attached Thiết bị được ánh xạ hiện tại không có vòng được gắn vào - + The current mapped device is not connected Thiết bị được ánh xạ hiện tại không được kết nối - + Unexpected driver result %1 Kết quả driver không như mong đợi %1 - + [waiting] [Chờ] @@ -4704,7 +5176,7 @@ UUID: %2 Lõi - + Warning: "%1" is not a valid language for region "%2" Cảnh báo: "%1" không phải là ngôn ngữ hợp lệ cho khu vực "%2" @@ -4716,14 +5188,10 @@ UUID: %2 TAS TAS - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the yuzu website.</p></body></html> - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>Để biết thêm chi tiết, vui lòng tham khảo <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">trang trợ giúp</span></a> trên website của yuzu.</p></body></html> - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the eden website.</p></body></html> - + <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the user handbook.</p></body></html> + @@ -4756,17 +5224,22 @@ UUID: %2 Tạm dừng thực thi trong quá trình tải - + + Show recording dialog + + + + Script Directory Thư mục tập lệnh - + Path Đường dẫn - + ... ... @@ -4774,12 +5247,12 @@ UUID: %2 ConfigureTasDialog - + TAS Configuration Cấu hình TAS - + Select TAS Load Directory... Chọn thư mục tải TAS @@ -4883,14 +5356,10 @@ Kéo điểm để thay đổi vị trí, hoặc nhấp đúp chuột vào ô tr Configure Touchscreen Thiết lập màn hình cảm ứng - - Warning: The settings in this page affect the inner workings of yuzu's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - Chú ý: Cài đặt trong trang này có thể ảnh hưởng đến hoạt động bên trong giả lập màn hình cảm ứng của yuzu's. Thay đổi chúng có thể dẫn đến hành vi không mong muốn, chẳng hạn như một phần của màn hình cảm ứng sẽ không hoạt động. Bạn chỉ nên sử dụng trang này nếu bạn biết bạn đang làm gì. - - Warning: The settings in this page affect the inner workings of eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - + Warning: The settings in this page affect the inner workings of Eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. + @@ -4921,64 +5390,43 @@ Kéo điểm để thay đổi vị trí, hoặc nhấp đúp chuột vào ô tr ConfigureUI - - - + + None Trống - - - Small (32x32) - Nhỏ (32x32) - - Standard (64x64) - Tiêu chuẩn (64x64) - - - - Large (128x128) - Lớn (128x128) - - - - Full Size (256x256) - Kích thước đầy đủ (256x256) - - - Small (24x24) Nhỏ (24x24) - + Standard (48x48) Tiêu chuẩn (48x48) - + Large (72x72) Lớn (72x72) - + Filename Tên tệp - + Filetype Loại tập tin - + Title ID ID của game - + Title Name Tên title @@ -5043,75 +5491,70 @@ Kéo điểm để thay đổi vị trí, hoặc nhấp đúp chuột vào ô tr Show Play Time Column - + - Game Icon Size: - Kích thước icon game: - - - Folder Icon Size: Kích thước icon thư mục: - + Row 1 Text: Dòng chữ hàng 1: - + Row 2 Text: Dòng chữ hàng 2: - + Screenshots Ảnh chụp màn hình - + Ask Where To Save Screenshots (Windows Only) Hỏi nơi lưu ảnh chụp màn hình (chỉ Windows) - + Screenshots Path: Đường dẫn cho ảnh chụp màn hình: - + ... ... - + TextLabel NhãnVănBản - + Resolution: Độ phân giải: - + Select Screenshots Path... Chọn đường dẫn cho ảnh chụp màn hình... - + <System> <System> - + English Tiếng Anh - + Auto (%1 x %2, %3 x %4) Screenshot width value Tự động (%1 x %2, %3 x %4) @@ -5209,170 +5652,178 @@ Kéo điểm để thay đổi vị trí, hoặc nhấp đúp chuột vào ô tr Web Web - - yuzu Web Service - Dịch vụ Web yuzu - - - By providing your username and token, you agree to allow yuzu to collect additional usage data, which may include user identifying information. - Bằng cách cung cấp tên đăng nhập và mã thông báo của bạn, bạn đã chấp thuận sẽ cho phép yuzu thu thập dữ liệu đã sử dụng, trong đó có thể có thông tin nhận dạng người dùng. - - eden Web Service - + Eden Web Service + - - By providing your username and token, you agree to allow eden to collect additional usage data, which may include user identifying information. - - - - - Verify - Xác nhận - - - - Sign up - Đăng ký - - - + Token: Mã thông báo: - + Username: Tên người dùng: - - What is my token? - Mã thông báo của tôi là gì? + + Generate + - + Web Service configuration can only be changed when a public room isn't being hosted. Cấu hình dịch vụ web chỉ có thể thay đổi khi không có phòng công khai đang được tổ chức. - Telemetry - Viễn trắc - - - Share anonymous usage data with the yuzu team - Chia sẽ dữ liệu sử dụng ẩn danh với nhóm yuzu - - - Learn more - Tìm hiểu thêm - - - Telemetry ID: - ID Viễn trắc: - - - Regenerate - Tạo mới - - - + Discord Presence Hiện diện trên Discord - + Show Current Game in your Discord Status Hiển thị trò chơi hiện tại lên thông tin Discord của bạn - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Tìm hiểu thêm</span></a> - - - - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Đăng ký</span></a> - - - - <a href='https://evilperson1337.notion.site/Hosting-a-Room-Inside-of-Eden-20457c2edaf680108abac6215a79acdb'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - - - - - Warning - - - + - Verification is currently nonfunctional, instead generate a random 48-character string with only lowercase a-z. - - - - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">Mã thông báo của tôi là gì?</span></a> - - - Telemetry ID: 0x%1 - ID Viễn trắc: 0x%1 - - - Unspecified - Không xác định - - - Token not verified - Token chưa được xác minh - - - Token was not verified. The change to your token has not been saved. - Token không được xác thực. Thay đổi token của bạn chưa được lưu. - - - - Unverified, please click Verify before saving configuration + All Good Tooltip - Chưa xác minh, vui lòng nhấp vào Xác minh trước khi lưu cấu hình + - Verifying... - Đang xác minh... - - - Verified + + Must be between 4-20 characters Tooltip - Đã xác minh + - Verification failed + + Must be 48 characters, and lowercase a-z Tooltip - Xác nhận không thành công - - - Verification failed - Xác nhận không thành công - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - Xác thực không thành công. Hãy kiểm tra xem bạn đã nhập token đúng chưa và kết nối internet của bạn có hoạt động hay không. + ControllerDialog - + Controller P1 Tay cầm P1 - + &Controller P1 &Tay cầm P1 + + DataDialog + + + Data Manager + + + + + Deleting ANY data is IRREVERSABLE! + + + + + Shaders + + + + + UserNAND + + + + + SysNAND + + + + + Mods + + + + + Saves + + + + + DataWidget + + + Form + + + + + Tooltip + + + + + Open with your system file manager + + + + + Delete all data in this directory. THIS IS 100% IRREVERSABLE! + + + + + Export all data in this directory. This may take a while! + + + + + Import data for this directory. This may take a while, and will delete ALL EXISTING DATA! + + + + + Calculating... + + + + + DepsDialog + + + Eden Dependencies + + + + + <html><head/><body><p><span style=" font-size:28pt;">Eden Dependencies</span></p></body></html> + + + + + <html><head/><body><p>The projects that make Eden possible</p></body></html> + + + + + Dependency + + + + + Version + + + DirectConnect @@ -5434,1498 +5885,152 @@ Kéo điểm để thay đổi vị trí, hoặc nhấp đúp chuột vào ô tr Username is not valid. Must be 4 to 20 alphanumeric characters. - Tên người dùng không hợp lệ. Phải có từ 4 đến 20 ký tự chữ số hoặc chữ cái. + Room name is not valid. Must be 4 to 20 alphanumeric characters. - Tên phòng không hợp lệ. Phải có từ 4 đến 20 ký tự chữ số hoặc chữ cái. + Username is already in use or not valid. Please choose another. - Tên người dùng đã được sử dụng hoặc không hợp lệ. Vui lòng chọn tên khác. + IP is not a valid IPv4 address. - Địa chỉ IP không phải là địa chỉ IPv4 hợp lệ. + Port must be a number between 0 to 65535. - Cổng phải là một số từ 0 đến 65535. + You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - Bạn phải chọn một Game ưu thích để tạo một phòng. Nếu bạn chưa có bất kỳ game nào trong danh sách game của bạn, hãy thêm một thư mục game bằng cách nhấp vào biểu tượng dấu cộng trong danh sách game. + Unable to find an internet connection. Check your internet settings. - Không thể tìm thấy kết nối internet. Kiểm tra cài đặt internet của bạn. + Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - Không thể kết nối tới máy chủ. Hãy kiểm tra xem các thiết lập kết nối có đúng không. Nếu vẫn không thể kết nối, hãy liên hệ với người chủ phòng và xác minh rằng máy chủ đã được cấu hình đúng cách với cổng ngoài được chuyển tiếp. + Unable to connect to the room because it is already full. - Không thể kết nối tới phòng vì nó đã đầy. + - Creating a room failed. Please retry. Restarting eden might be necessary. - + Creating a room failed. Please retry. Restarting Eden might be necessary. + The host of the room has banned you. Speak with the host to unban you or try a different room. - Chủ phòng đã ban bạn. Hãy nói chuyện với người chủ phòng để được unban, hoặc thử vào một phòng khác. + - Version mismatch! Please update to the latest version of eden. If the problem persists, contact the room host and ask them to update the server. - + Version mismatch! Please update to the latest version of Eden. If the problem persists, contact the room host and ask them to update the server. + Incorrect password. - Mật khẩu sai + An unknown error occurred. If this error continues to occur, please open an issue - Đã xảy ra lỗi không xác định. Nếu lỗi này tiếp tục xảy ra, vui lòng mở một issue + Connection to room lost. Try to reconnect. - Mất kết nối với phòng. Hãy thử kết nối lại. + You have been kicked by the room host. - Bạn đã bị kick bởi chủ phòng. + IP address is already in use. Please choose another. - Địa chỉ IP đã được sử dụng. Vui lòng chọn một địa chỉ khác. + You do not have enough permission to perform this action. - Bạn không có đủ quyền để thực hiên hành động này. + The user you are trying to kick/ban could not be found. They may have left the room. - Không thể tìm thấy người dùng bạn đang cố gắng kick/ban. -Họ có thể đã rời phòng. + No valid network interface is selected. Please go to Configure -> System -> Network and make a selection. - Không có giao diện mạng hợp lệ được chọn. Vui lòng vào Cấu hình -> Hệ thống -> Mạng và thực hiện lựa chọn. + Error - Lỗi - - - - GMainWindow - - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Anonymous data is collected</a> to help improve yuzu. <br/><br/>Would you like to share your usage data with us? - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Dữ liệu ẩn danh được thu thập</a>để hỗ trợ cải thiện yuzu. <br/><br/>Bạn có muốn chia sẽ dữ liệu sử dụng cho chúng tôi? - - - Telemetry - Viễn trắc - - - - Broken Vulkan Installation Detected - Phát hiện cài đặt Vulkan bị hỏng - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - Khởi tạo Vulkan thất bại trong quá trình khởi động.<br>Nhấn <br><a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>vào đây để xem hướng dẫn khắc phục vấn đề</a>. - - - - Running a game - TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping - Đang chạy một game - - - - Loading Web Applet... - Đang tải applet web... - - - - - Disable Web Applet - Tắt applet web - - - - 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.) - 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.) - - - - The amount of shaders currently being built - Số lượng shader đang được dựng - - - - The current selected resolution scaling multiplier. - Bội số tỷ lệ độ phân giải được chọn hiện tại. - - - - Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. - 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 - - - - How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. - 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. - - - - 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. - 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. - - - - Unmute - Bật tiếng - - - - Mute - Tắt tiếng - - - - Reset Volume - Đặt lại âm lượng - - - - &Clear Recent Files - &Xoá tập tin gần đây - - - - &Continue - &Tiếp tục - - - - &Pause - &Tạm dừng - - - - Warning Outdated Game Format - Chú ý định dạng trò chơi đã lỗi thời - - - 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.<br><br>For an explanation of the various Switch formats yuzu supports, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - 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.<br><br>Để giải thích về các định dạng khác nhau của Switch mà yuzu hỗ trợ, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>vui lòng kiểm tra trên wiki của chúng tôi</a>. Thông báo này sẽ không hiển thị lại lần sau. - - - - - Error while loading ROM! - Xảy ra lỗi khi đang nạp ROM! - - - - The ROM format is not supported. - Định dạng ROM này không hỗ trợ. - - - - An error occurred initializing the video core. - Đã xảy ra lỗi khi khởi tạo lõi video. - - - 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: <a href='https://yuzu-emu.org/help/reference/log-files/'>How to Upload the Log File</a>. - 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: <a href='https://yuzu-emu.org/help/reference/log-files/'>Cách tải lên tập tin nhật ký</a>. - - - - Error while loading ROM! %1 - %1 signifies a numeric error code. - Lỗi xảy ra khi nạp ROM! %1 - - - %1<br>Please follow <a href='https://yuzu-emu.org/help/quickstart/'>the yuzu quickstart guide</a> to redump your files.<br>You can refer to the yuzu wiki</a> or the yuzu Discord</a> for help. - %1 signifies an error string. - %1<br>Vui lòng tuân theo <a href='https://yuzu-emu.org/help/quickstart/'>hướng dẫn nhanh của yuzu</a> để trích xuất lại các tệp của bạn.<br>Bạn có thể tham khảo yuzu wiki</a> hoặc yuzu Discord</a>để được hỗ trợ. - - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://eden-emulator.github.io/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - - - - - Game Updates Warning - - - - - The game you are trying to launch is known to have performance or booting issues when updates are applied. Please try increasing the memory layout to 6GB or 8GB if any issues occur.<br><br>Press "OK" to continue launching, or "Cancel" to cancel the launch. - - - - - Don't show again for this game - - - - - 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.<br><br>For an explanation of the various Switch formats eden supports, <a href='https://eden-emulator.github.io/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - - - - - eden 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: <a href='https://eden-emulator.github.io/help/reference/log-files/'>How to Upload the Log File</a>. - - - - - %1<br>Please redump your files or ask on Discord for help. - %1 signifies an error string. - - - - - An unknown error occurred. Please see the log for more details. - Đã 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. - - - - (64-bit) - (64-bit) - - - - (32-bit) - (32-bit) - - - - %1 %2 - %1 is the title name. %2 indicates if the title is 64-bit or 32-bit - %1 %2 - - - - Closing software... - Đang đóng phần mềm... - - - - Save Data - Dữ liệu save - - - - Mod Data - Dữ liệu mod - - - - Error Opening %1 Folder - Xảy ra lỗi khi mở %1 thư mục - - - - - Folder does not exist! - Thư mục này không tồn tại! - - - - Error Opening Transferable Shader Cache - Lỗi khi mở bộ nhớ cache shader có thể chuyển. - - - - Failed to create the shader cache directory for this title. - Thất bại khi tạo thư mục bộ nhớ cache shader cho title này. - - - - Error Removing Contents - Lỗi khi loại bỏ nội dung - - - - Error Removing Update - Lỗi khi loại bỏ cập nhật - - - - Error Removing DLC - Lỗi khi loại bỏ DLC - - - - Remove Installed Game Contents? - Loại bỏ nội dung game đã cài đặt? - - - - Remove Installed Game Update? - Loại bỏ bản cập nhật game đã cài đặt? - - - - Remove Installed Game DLC? - Loại bỏ DLC game đã cài đặt? - - - - Remove Entry - Xoá mục - - - - - - - - - Successfully Removed - Loại bỏ thành công - - - - Successfully removed the installed base game. - Loại bỏ thành công base game đã cài đặt - - - - The base game is not installed in the NAND and cannot be removed. - Base game không được cài đặt trong NAND và không thể loại bỏ. - - - - Successfully removed the installed update. - Loại bỏ thành công bản cập nhật đã cài đặt - - - - There is no update installed for this title. - Không có bản cập nhật nào được cài đặt cho title này. - - - - There are no DLC installed for this title. - Không có DLC nào được cài đặt cho title này. - - - - Successfully removed %1 installed DLC. - Loại bỏ thành công %1 DLC đã cài đặt - - - - Delete OpenGL Transferable Shader Cache? - Xoá bộ nhớ cache shader OpenGL chuyển được? - - - - Delete Vulkan Transferable Shader Cache? - Xoá bộ nhớ cache shader Vulkan chuyển được? - - - - Delete All Transferable Shader Caches? - Xoá tất cả bộ nhớ cache shader chuyển được? - - - - Remove Custom Game Configuration? - Loại bỏ cấu hình game tuỳ chỉnh? - - - - Remove Cache Storage? - Xoá bộ nhớ cache? - - - - Remove File - Xoá tập tin - - - - Remove Play Time Data - - - - - Reset play time? - - - - - - Error Removing Transferable Shader Cache - Lỗi khi xoá bộ nhớ cache shader chuyển được - - - - - A shader cache for this title does not exist. - Bộ nhớ cache shader cho title này không tồn tại. - - - - Successfully removed the transferable shader cache. - Thành công loại bỏ bộ nhớ cache shader chuyển được - - - - Failed to remove the transferable shader cache. - Thất bại khi xoá bộ nhớ cache shader chuyển được. - - - - Error Removing Vulkan Driver Pipeline Cache - Lỗi khi xoá bộ nhớ cache pipeline Vulkan - - - - Failed to remove the driver pipeline cache. - Thất bại khi xoá bộ nhớ cache pipeline của driver. - - - - - Error Removing Transferable Shader Caches - Lỗi khi loại bỏ bộ nhớ cache shader chuyển được - - - - Successfully removed the transferable shader caches. - Thành công loại bỏ tât cả bộ nhớ cache shader chuyển được. - - - - Failed to remove the transferable shader cache directory. - Thất bại khi loại bỏ thư mục bộ nhớ cache shader. - - - - - Error Removing Custom Configuration - Lỗi khi loại bỏ cấu hình tuỳ chỉnh - - - - A custom configuration for this title does not exist. - Cấu hình tuỳ chỉnh cho title này không tồn tại. - - - - Successfully removed the custom game configuration. - Loại bỏ thành công cấu hình game tuỳ chỉnh. - - - - Failed to remove the custom game configuration. - Thất bại khi xoá cấu hình game tuỳ chỉnh - - - - - RomFS Extraction Failed! - Khai thác RomFS không thành công! - - - - There was an error copying the RomFS files or the user cancelled the operation. - Đã 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. - - - - Full - Đầy - - - - Skeleton - Sườn - - - - Select RomFS Dump Mode - Chọn chế độ kết xuất RomFS - - - - Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. - Vui lòng chọn RomFS mà bạn muốn kết xuất như thế nào.<br>Đầy đủ sẽ sao chép toàn bộ tệp tin vào một danh mục mới trong khi <br>bộ xương chỉ tạo kết cấu danh mục. - - - - There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root - 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 > Thiết lập > Hệ thống > Hệ thống tệp > Thư mục trích xuất gốc - - - - Extracting RomFS... - Khai thác RomFS... - - - - - - - - Cancel - Hủy bỏ - - - - RomFS Extraction Succeeded! - Khai thác RomFS thành công! - - - - - - The operation completed successfully. - Các hoạt động đã hoàn tất thành công. - - - - Integrity verification couldn't be performed! - Không thể thực hiện kiểm tra tính toàn vẹn! - - - - File contents were not checked for validity. - Chưa kiểm tra sự hợp lệ của nội dung tập tin. - - - - - Verifying integrity... - Đang kiểm tra tính toàn vẹn... - - - - - Integrity verification succeeded! - Kiểm tra tính toàn vẹn thành công! - - - - - Integrity verification failed! - Kiểm tra tính toàn vẹn thất bại! - - - - File contents may be corrupt. - Nội dung tập tin có thể bị hỏng. - - - - - - - Create Shortcut - Tạo lối tắt - - - - Do you want to launch the game in fullscreen? - - - - - Successfully created a shortcut to %1 - Thành công tạo lối tắt tại %1 - - - - This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - 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? - - - - Failed to create a shortcut to %1 - - - - - Create Icon - Tạo icon - - - - Cannot create icon file. Path "%1" does not exist and cannot be created. - Không thể tạo tập tin icon. Đường dẫn "%1" không tồn tại và không thể tạo. - - - - Error Opening %1 - Lỗi khi mở %1 - - - - Select Directory - Chọn danh mục - - - - Properties - Thuộc tính - - - - The game properties could not be loaded. - Thuộc tính của trò chơi không thể nạp được. - - - - Switch Executable (%1);;All Files (*.*) - %1 is an identifier for the Switch executable file extensions. - Thực thi Switch (%1);;Tất cả tệp tin (*.*) - - - - Load File - Nạp tệp tin - - - - Open Extracted ROM Directory - Mở danh mục ROM đã trích xuất - - - - Invalid Directory Selected - Danh mục đã chọn không hợp lệ - - - - The directory you have selected does not contain a 'main' file. - Danh mục mà bạn đã chọn không có chứa tệp tin 'main'. - - - - Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - Những tệp tin Switch cài được (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - - - - Install Files - Cài đặt tập tin - - - - %n file(s) remaining - - %n tập tin còn lại - - - - - Installing file "%1"... - Đang cài đặt tệp tin "%1"... - - - - - Install Results - Kết quả cài đặt - - - - To avoid possible conflicts, we discourage users from installing base games to the NAND. -Please, only use this feature to install updates and DLC. - Để 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. - - - - %n file(s) were newly installed - - - %n đã được cài đặt mới - - - - - - %n file(s) were overwritten - - - %n tập tin đã được ghi đè - - - - - - %n file(s) failed to install - - - %n tập tin thất bại khi cài đặt - - - - - - System Application - Ứng dụng hệ thống - - - - System Archive - Hệ thống lưu trữ - - - - System Application Update - Cập nhật hệ thống ứng dụng - - - - Firmware Package (Type A) - Gói phần mềm (Loại A) - - - - Firmware Package (Type B) - Gói phần mềm (Loại B) - - - - Game - Trò chơi - - - - Game Update - Cập nhật trò chơi - - - - Game DLC - Nội dung trò chơi có thể tải xuống - - - - Delta Title - Tiêu đề Delta - - - - Select NCA Install Type... - Chọn loại NCA để cài đặt... - - - - Please select the type of title you would like to install this NCA as: -(In most instances, the default 'Game' is fine.) - 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 'Game' là tốt nhất.) - - - - Failed to Install - Cài đặt đã không thành công - - - - The title type you selected for the NCA is invalid. - Loại tiêu đề NCA mà bạn chọn nó không hợp lệ. - - - - File not found - Không tìm thấy tệp tin - - - - File "%1" not found - Không tìm thấy "%1" tệp tin - - - - OK - OK - - - - - Hardware requirements not met - Yêu cầu phần cứng không được đáp ứng - - - - - Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled. - 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. - - - - Missing yuzu Account - Thiếu tài khoản yuzu - - - - In order to submit a game compatibility test case, you must link your eden account.<br><br/>To link your eden account, go to Emulation &gt; Configuration &gt; Web. - - - - - Install decryption keys and restart eden before attempting to install firmware. - - - - - Firmware installation cancelled, firmware may be in bad state, restart eden or re-install firmware. - - - - - Encryption keys are missing. - - - - - Are you sure you want to close eden? - - - - - - - eden - - - - - The currently running application has requested eden to not exit. - -Would you like to bypass this and exit anyway? - - - - In order to submit a game compatibility test case, you must link your yuzu account.<br><br/>To link your yuzu account, go to Emulation &gt; Configuration &gt; Web. - Để 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.<br><br/>Để liên kết tải khoản yuzu của bạn, hãy đến Giả lập &gt; Thiết lập &gt; Web. - - - - Error opening URL - Lỗi khi mở URL - - - - Unable to open the URL "%1". - Không thể mở URL "%1". - - - - TAS Recording - Ghi lại TAS - - - - Overwrite file of player 1? - Ghi đè tập tin của người chơi 1? - - - - Invalid config detected - Đã phát hiện cấu hình không hợp lệ - - - - Handheld controller can't be used on docked mode. Pro controller will be selected. - Tay cầm handheld không thể được sử dụng trong chế độ docked. Pro Controller sẽ được chọn. - - - - - Amiibo - Amiibo - - - - - The current amiibo has been removed - Amiibo hiện tại đã bị loại bỏ - - - - Error - Lỗi - - - - - The current game is not looking for amiibos - Game hiện tại không tìm kiếm amiibos - - - - Amiibo File (%1);; All Files (*.*) - Tệp tin Amiibo (%1);; Tất cả tệp tin (*.*) - - - - Load Amiibo - Nạp dữ liệu Amiibo - - - - Error loading Amiibo data - Xảy ra lỗi khi nạp dữ liệu Amiibo - - - - The selected file is not a valid amiibo - Tập tin đã chọn không phải là amiibo hợp lệ - - - - The selected file is already on use - Tập tin đã chọn đã được sử dụng - - - - An unknown error occurred - Đã xảy ra lỗi không xác định - - - - - Verification failed for the following files: - -%1 - Kiểm tra những tập tin sau thất bại: - -%1 - - - - Keys not installed - - - - - Select Dumped Firmware Source Location - - - - - Installing Firmware... - - - - - - - - Firmware install failed - - - - - Unable to locate potential firmware NCA files - - - - - Failed to delete one or more firmware file. - - - - - One or more firmware files failed to copy into NAND. - - - - - Firmware integrity verification failed! - - - - - Select Dumped Keys Location - - - - - - - Decryption Keys install failed - - - - - prod.keys is a required decryption key file. - - - - - One or more keys failed to copy. - - - - - Decryption Keys install succeeded - - - - - Decryption Keys were successfully installed - - - - - Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. - - - - - - - - - - - No firmware available - - - - - Please install the firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Controller Menu. - - - - - Controller Applet - Applet tay cầm - - - - Controller Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use the Home Menu. - - - - - - Home Menu Applet - - - - - - Home Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use Starter. - - - - - Starter Applet - - - - - Starter is not available. Please reinstall firmware. - - - - - Please install firmware to use the home menu. - - - - - Capture Screenshot - Chụp ảnh màn hình - - - - PNG Image (*.png) - Hình ảnh PNG (*.png) - - - - Update Available - - - - - Update %1 for Eden is available. -Would you like to download it? - - - - - TAS state: Running %1/%2 - Trạng thái TAS: Đang chạy %1/%2 - - - - TAS state: Recording %1 - Trạng thái TAS: Đang ghi %1 - - - - TAS state: Idle %1/%2 - Trạng thái TAS: Đang chờ %1/%2 - - - - TAS State: Invalid - Trạng thái TAS: Không hợp lệ - - - - &Stop Running - &Dừng chạy - - - - &Start - &Bắt đầu - - - - Stop R&ecording - Dừng G&hi - - - - R&ecord - G&hi - - - - Building: %n shader(s) - - Đang dựng: %n shader(s) - - - - - Scale: %1x - %1 is the resolution scaling factor - Tỉ lệ thu phóng: %1x - - - - Speed: %1% / %2% - Tốc độ: %1% / %2% - - - - Speed: %1% - Tốc độ: %1% - - - Game: %1 FPS (Unlocked) - Game: %1 FPS (Đã mở khoá) - - - - Game: %1 FPS - Trò chơi: %1 FPS - - - - Frame: %1 ms - Khung hình: %1 ms - - - - %1 %2 - %1 %2 - - - - - FSR - FSR - - - - NO AA - NO AA - - - - VOLUME: MUTE - ÂM LƯỢNG: TẮT TIẾNG - - - - VOLUME: %1% - Volume percentage (e.g. 50%) - ÂM LƯỢNG: %1% - - - - Derivation Components Missing - Thiếu các thành phần chuyển hoá - - - - Select RomFS Dump Target - Chọn thư mục để sao chép RomFS - - - - Please select which RomFS you would like to dump. - Vui lòng chọn RomFS mà bạn muốn sao chép. - - - Are you sure you want to close yuzu? - Bạn có chắc chắn muốn đóng yuzu? - - - yuzu - yuzu - - - - Are you sure you want to stop the emulation? Any unsaved progress will be lost. - 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. - - - The currently running application has requested yuzu to not exit. - -Would you like to bypass this and exit anyway? - Chương trình đang chạy đã yêu cầu yuzu không được thoát. - -Bạn có muốn bỏ qua yêu cầu đó và thoát luôn không? - - - - None - Trống - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Nearest - Nearest - - - - Bilinear - Bilinear - - - - Bicubic - Bicubic - - - - Gaussian - ScaleForce - - - - ScaleForce - ScaleForce - - - - Area - - - - - Docked - Chế độ cắm TV - - - - Handheld - Cầm tay - - - - Normal - Trung bình - - - - High - Khỏe - - - - Extreme - Tối đa - - - - Vulkan - Vulkan - - - - OpenGL - OpenGL - - - - Null - Null - - - - GLSL - GLSL - - - - GLASM - GLASM - - - - SPIRV - SPIRV + GRenderWindow - - + + OpenGL not available! Không có sẵn OpenGL! - + OpenGL shared contexts are not supported. Các ngữ cảnh OpenGL chung không được hỗ trợ. - yuzu has not been compiled with OpenGL support. - yuzu không được biên dịch với hỗ trợ OpenGL. + + Eden has not been compiled with OpenGL support. + - - eden has not been compiled with OpenGL support. - - - - - + + Error while initializing OpenGL! Đã xảy ra lỗi khi khởi tạo OpenGL! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. GPU của bạn có thể không hỗ trợ OpenGL, hoặc bạn không có driver đồ hoạ mới nhất. - + Error while initializing OpenGL 4.6! Lỗi khi khởi tạo OpenGL 4.6! - + Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 GPU của bạn có thể không hỗ trợ OpenGL 4.6, hoặc bạn không có driver đồ hoạ mới nhất.<br><br>GL Renderer:<br>%1 - + Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2 GPU của bạn có thể không hỗ trợ một hoặc nhiều tiện ích OpenGL cần thiết. Vui lòng đảm bảo bạn có driver đồ hoạ mới nhất.<br><br>GL Renderer:<br>%1<br><br>Tiện ích không hỗ trợ:<br>%2 @@ -6933,255 +6038,271 @@ Bạn có muốn bỏ qua yêu cầu đó và thoát luôn không? GameList - + + &Add New Game Directory + + + + Favorite Ưa thích - + Start Game Bắt đầu game - + Start Game without Custom Configuration Bắt đầu game mà không có cấu hình tuỳ chỉnh - + Open Save Data Location Mở vị trí lưu dữ liệu - + Open Mod Data Location Mở vị trí chỉnh sửa dữ liệu - + Open Transferable Pipeline Cache Mở thư mục chứa bộ nhớ cache pipeline - + + Link to Ryujinx + + + + Remove Gỡ Bỏ - + Remove Installed Update Loại bỏ bản cập nhật đã cài - + Remove All Installed DLC Loại bỏ tất cả DLC đã cài đặt - + Remove Custom Configuration Loại bỏ cấu hình tuỳ chỉnh - - Remove Play Time Data - - - - + Remove Cache Storage Xoá bộ nhớ cache - + Remove OpenGL Pipeline Cache Loại bỏ OpenGL Pipeline Cache - + Remove Vulkan Pipeline Cache Loại bỏ bộ nhớ cache pipeline Vulkan - + Remove All Pipeline Caches Loại bỏ tất cả bộ nhớ cache shader - + Remove All Installed Contents Loại bỏ tất cả nội dung đã cài đặt - - + + Manage Play Time + + + + + Edit Play Time Data + + + + + Remove Play Time Data + + + + + Dump RomFS Kết xuất RomFS - + Dump RomFS to SDMC Trích xuất RomFS tới SDMC - + Verify Integrity Kiểm tra tính toàn vẹn - + Copy Title ID to Clipboard Sao chép ID tiêu đề vào bộ nhớ tạm - + Navigate to GameDB entry Điều hướng đến mục cơ sở dữ liệu trò chơi - + Create Shortcut Tạo lối tắt - + Add to Desktop Thêm vào Desktop - + Add to Applications Menu Thêm vào menu ứng dụng - + Configure Game - + - Properties - Thuộc tính - - - + Scan Subfolders Quét các thư mục con - + Remove Game Directory Loại bỏ thư mục game - + ▲ Move Up ▲ Di chuyển lên - + ▼ Move Down ▼ Di chuyển xuống - + Open Directory Location Mở vị trí thư mục - + Clear Bỏ trống - + Name Tên - + Compatibility Tương thích - + Add-ons Tiện ích ngoài - + File type Loại tệp tin - + Size Kích cỡ - + Play time - + GameListItemCompat - + Ingame Trong game - + Game starts, but crashes or major glitches prevent it from being completed. Game khởi động, nhưng gặp vấn đề hoặc lỗi nghiêm trọng đến việc không thể hoàn thành trò chơi. - + Perfect Tốt nhất - + Game can be played without issues. Game có thể chơi mà không gặp vấn đề. - + Playable Có thể chơi - + Game functions with minor graphical or audio glitches and is playable from start to finish. Game hoạt động với lỗi hình ảnh hoặc âm thanh nhẹ và có thể chơi từ đầu tới cuối. - + Intro/Menu Phần mở đầu/Menu - + Game loads, but is unable to progress past the Start Screen. Trò chơi đã tải, nhưng không thể qua Màn hình Bắt đầu. - + Won't Boot Không hoạt động - + The game crashes when attempting to startup. Trò chơi sẽ thoát đột ngột khi khởi động. - + Not Tested Chưa ai thử - + The game has not yet been tested. Trò chơi này chưa có ai thử cả. @@ -7189,7 +6310,7 @@ Bạn có muốn bỏ qua yêu cầu đó và thoát luôn không? GameListPlaceholder - + Double-click to add a new folder to the game list Nháy đúp chuột để thêm một thư mục mới vào danh sách trò chơi game @@ -7197,19 +6318,17 @@ Bạn có muốn bỏ qua yêu cầu đó và thoát luôn không? GameListSearchField - + %1 of %n result(s) - - %1 trong %n kết quả - + - + Filter: Bộ lọc: - + Enter pattern to filter Nhập khuôn để lọc @@ -7285,233 +6404,241 @@ Bạn có muốn bỏ qua yêu cầu đó và thoát luôn không? HostRoomWindow - + Error Lỗi - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. + + Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid Eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. Debug Message: - - - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid yuzu account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. -Debug Message: - Công bố phòng công khai trong sảnh thất bại. Để tổ chức phòng công khai, bạn cần phải có một tài khoản yuzu hợp lệ tại Giả lập -> Thiết lập -> Web. Nếu không muốn công khai phòng trong sảnh, hãy chọn mục Không công khai. -Tin nhắn gỡ lỗi: + Hotkeys - + Audio Mute/Unmute Tắt/Bật tiếng - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Main Window Cửa sổ chính - + Audio Volume Down Giảm âm lượng - + Audio Volume Up Tăng âm lượng - + Capture Screenshot Chụp ảnh màn hình - + Change Adapting Filter Thay đổi bộ lọc điều chỉnh - + Change Docked Mode Đổi chế độ Docked - - Change GPU Accuracy - Thay đổi độ chính xác GPU + + Change GPU Mode + - + Configure - + - + Configure Current Game - + - + Continue/Pause Emulation Tiếp tục/Tạm dừng giả lập - + Exit Fullscreen Thoát chế độ toàn màn hình - Exit yuzu - Thoát yuzu + + Exit Eden + - - Exit eden - - - - + Fullscreen Toàn màn hình - + Load File Nạp tệp tin - + Load/Remove Amiibo Tải/Loại bỏ Amiibo - - Multiplayer Browse Public Game Lobby - + + Browse Public Game Lobby + - - Multiplayer Create Room - + + Create Room + - - Multiplayer Direct Connect to Room - + + Direct Connect to Room + - - Multiplayer Leave Room - + + Leave Room + - - Multiplayer Show Current Room - + + Show Current Room + - + Restart Emulation Khởi động lại giả lập - + Stop Emulation Dừng giả lập - + TAS Record Ghi lại TAS - + TAS Reset Đặt lại TAS - + TAS Start/Stop Bắt đầu/Dừng TAS - + Toggle Filter Bar Hiện/Ẩn thanh lọc - + Toggle Framerate Limit Bật/Tắt giới hạn tốc độ khung hình - + + Toggle Turbo Speed + + + + + Toggle Slow Speed + + + + Toggle Mouse Panning Bật/Tắt di chuyển chuột - + Toggle Renderdoc Capture - + - + Toggle Status Bar Hiện/Ẩn thanh trạng thái + + + Toggle Performance Overlay + + InstallDialog - + Please confirm these are the files you wish to install. Xin hãy xác nhận đây là những tệp tin bạn muốn cài. - + Installing an Update or DLC will overwrite the previously installed one. Cài đặt một tệp tin cập nhật hoặc DLC mới sẽ thay thế những tệp cũ đã cài trước đó. - + Install Cài đặt - + Install Files to NAND Cài đặt tập tin vào NAND @@ -7519,8 +6646,8 @@ Tin nhắn gỡ lỗi: LimitableInputDialog - - The text can't contain any of the following characters: + + The text can't contain any of the following characters: %1 Văn bản không được chứa bất kỳ ký tự sau đây: %1 @@ -7544,22 +6671,22 @@ Tin nhắn gỡ lỗi: Thời gian ước tính 5m 4s - + Loading... Đang tải... - + Loading Shaders %1 / %2 Đang nạp shader %1 / %2 - + Launching... Đang mở... - + Estimated Time %1 Ước tính thời gian %1 @@ -7608,42 +6735,42 @@ Tin nhắn gỡ lỗi: Làm mới sảnh - + Password Required to Join Yêu cầu mật khẩu để tham gia - + Password: Mật khẩu: - + Players Người chơi - + Room Name Tên phòng - + Preferred Game Trò chơi ưa thích - + Host Chủ phòng - + Refreshing Đang làm mới - + Refresh List Làm mới danh sách @@ -7666,362 +6793,1424 @@ Tin nhắn gỡ lỗi: &Tập tin gần đây - + + Open &Eden Folders + + + + &Emulation &Giả lập - + &View &Xem - + &Reset Window Size &Đặt lại kích thước cửa sổ - + &Debugging &Gỡ lỗi - + + &Game List Mode + + + + + Game &Icon Size + + + + Reset Window Size to &720p Đặt lại kích thước cửa sổ về &720p - + Reset Window Size to 720p Đặt lại kích thước cửa sổ về 720p - + Reset Window Size to &900p Đặt lại kích thước cửa sổ về &900p - + Reset Window Size to 900p Đặt lại kích thước cửa sổ về 900p - + Reset Window Size to &1080p Đặt lại kích thước cửa sổ về &1080p - + Reset Window Size to 1080p Đặt lại kích thước cửa sổ về 1080p - + &Multiplayer &Nhiều người chơi - + &Tools &Công cụ - - &Amiibo - + + Am&iibo + - + + Launch &Applet + + + + &TAS &TAS - + &Create Home Menu Shortcut - + - + + Install &Firmware + + + + &Help &Trợ giúp - + &Install Files to NAND... &Cài đặt tập tin vào NAND... - + L&oad File... N&ạp tập tin... - + Load &Folder... Nạp &Thư mục - + E&xit Th&oát - + + &Pause &Tạm dừng - + &Stop &Dừng - + &Verify Installed Contents - + - - &About eden - + + &About Eden + - - Open &eden Folder - - - - - Open Home Menu - - - - - &Discord - - - - - Open &Setup - - - - - &Desktop - - - - - &Application Menu - - - - &About yuzu - &Thông tin về yuzu - - - + Single &Window Mode &Chế độ cửa sổ đơn - + Con&figure... Cấu& hình - + Ctrl+, - + - - Display D&ock Widget Headers - Hiển thị tiêu đề công cụ D&ock + + Enable Overlay Display Applet + - + Show &Filter Bar Hiện thanh &lọc - + Show &Status Bar Hiện thanh &trạng thái - + Show Status Bar Hiển thị thanh trạng thái - + &Browse Public Game Lobby &Duyệt phòng game công khai - + &Create Room &Tạo phòng - + &Leave Room &Rời phòng - + &Direct Connect to Room &Kết nối trực tiếp tới phòng - + &Show Current Room &Hiện phòng hiện tại - + F&ullscreen T&oàn màn hình - + &Restart &Khởi động lại - + Load/Remove &Amiibo... Tải/Loại bỏ &Amiibo - + &Report Compatibility &Báo cáo tương thích - + Open &Mods Page Mở trang &mods - + Open &Quickstart Guide Mở &Hướng dẫn nhanh - + &FAQ &FAQ - Open &yuzu Folder - Mở thư mục &yuzu - - - + &Capture Screenshot &Chụp ảnh màn hình - - Open &Album - + + &Album + - + &Set Nickname and Owner - + - + &Delete Game Data - + - + &Restore Amiibo - + - + &Format Amiibo - + - - Open &Mii Editor - + + &Mii Editor + - + &Configure TAS... &Cấu hình TAS... - + Configure C&urrent Game... Cấu hình game hiện tại... - + + &Start &Bắt đầu - + &Reset &Đặt lại - + + R&ecord G&hi - + Open &Controller Menu - + - - Install Firmware - + + Install Decryption &Keys + - - Install Decryption Keys - + + &Home Menu + - - - MicroProfileDialog - - &MicroProfile - &MicroProfile + + &Desktop + + + + + &Application Menu + + + + + &Root Data Folder + + + + + &NAND Folder + + + + + &SDMC Folder + + + + + &Mod Folder + + + + + &Log Folder + + + + + From Folder + + + + + From ZIP + + + + + &Eden Dependencies + + + + + &Data Manager + + + + + &Tree View + + + + + &Grid View + + + + + Game Icon Size + + + + + + + None + + + + + Show Game &Name + + + + + Show &Performance Overlay + + + + + Small (32x32) + + + + + Standard (64x64) + + + + + Large (128x128) + + + + + Full Size (256x256) + + + + + Broken Vulkan Installation Detected + + + + + Vulkan initialization failed during boot. + + + + + Running a game + TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping + + + + + Loading Web Applet... + + + + + + Disable Web Applet + + + + + 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.) + + + + + The amount of shaders currently being built + + + + + The current selected resolution scaling multiplier. + + + + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. + + + + + How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. + + + + + 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. + + + + + Unmute + + + + + Mute + + + + + Reset Volume + + + + + &Clear Recent Files + + + + + &Continue + + + + + Warning: Outdated Game Format + + + + + 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.<br>For an explanation of the various Switch formats Eden supports, out our user handbook. This message will not be shown again. + + + + + + Error while loading ROM! + + + + + The ROM format is not supported. + + + + + An error occurred initializing the video core. + + + + + Eden 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: <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>How to Upload the Log File</a>. + + + + + Error while loading ROM! %1 + %1 signifies a numeric error code. + + + + + %1<br>Please redump your files or ask on Discord/Stoat for help. + %1 signifies an error string. + + + + + An unknown error occurred. Please see the log for more details. + + + + + (64-bit) + + + + + (32-bit) + + + + + %1 %2 + %1 is the title name. %2 indicates if the title is 64-bit or 32-bit + + + + + Closing software... + + + + + Save Data + + + + + Mod Data + + + + + Error Opening %1 Folder + + + + + + Folder does not exist! + + + + + Remove Installed Game Contents? + + + + + Remove Installed Game Update? + + + + + Remove Installed Game DLC? + + + + + Remove Entry + + + + + Delete OpenGL Transferable Shader Cache? + + + + + Delete Vulkan Transferable Shader Cache? + + + + + Delete All Transferable Shader Caches? + + + + + Remove Custom Game Configuration? + + + + + Remove Cache Storage? + + + + + Remove File + + + + + Remove Play Time Data + + + + + Reset play time? + + + + + + RomFS Extraction Failed! + + + + + There was an error copying the RomFS files or the user cancelled the operation. + + + + + Full + + + + + Skeleton + + + + + Select RomFS Dump Mode + + + + + Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. + + + + + There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root + + + + + Extracting RomFS... + + + + + + Cancel + + + + + RomFS Extraction Succeeded! + + + + + The operation completed successfully. + + + + + Error Opening %1 + + + + + Select Directory + + + + + Properties + + + + + The game properties could not be loaded. + + + + + Switch Executable (%1);;All Files (*.*) + %1 is an identifier for the Switch executable file extensions. + + + + + Load File + + + + + Open Extracted ROM Directory + + + + + Invalid Directory Selected + + + + + The directory you have selected does not contain a 'main' file. + + + + + Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) + + + + + Install Files + + + + + %n file(s) remaining + + + + + Installing file "%1"... + + + + + + Install Results + + + + + To avoid possible conflicts, we discourage users from installing base games to the NAND. +Please, only use this feature to install updates and DLC. + + + + + %n file(s) were newly installed + + + + + + %n file(s) were overwritten + + + + + + %n file(s) failed to install + + + + + + System Application + + + + + System Archive + + + + + System Application Update + + + + + Firmware Package (Type A) + + + + + Firmware Package (Type B) + + + + + Game + + + + + Game Update + + + + + Game DLC + + + + + Delta Title + + + + + Select NCA Install Type... + + + + + Please select the type of title you would like to install this NCA as: +(In most instances, the default 'Game' is fine.) + + + + + Failed to Install + + + + + The title type you selected for the NCA is invalid. + + + + + File not found + + + + + File "%1" not found + + + + + OK + + + + + Function Disabled + + + + + Compatibility list reporting is currently disabled. Check back later! + + + + + Error opening URL + + + + + Unable to open the URL "%1". + + + + + TAS Recording + + + + + Overwrite file of player 1? + + + + + Invalid config detected + + + + + Handheld controller can't be used on docked mode. Pro controller will be selected. + + + + + + Amiibo + + + + + + The current amiibo has been removed + + + + + Error + + + + + + The current game is not looking for amiibos + + + + + Amiibo File (%1);; All Files (*.*) + + + + + Load Amiibo + + + + + Error loading Amiibo data + + + + + The selected file is not a valid amiibo + + + + + The selected file is already on use + + + + + An unknown error occurred + + + + + + Keys not installed + + + + + + Install decryption keys and restart Eden before attempting to install firmware. + + + + + Select Dumped Firmware Source Location + + + + + Select Dumped Firmware ZIP + + + + + Zipped Archives (*.zip) + + + + + Firmware cleanup failed + + + + + Failed to clean up extracted firmware cache. +Check write permissions in the system temp directory and try again. +OS reported error: %1 + + + + + No firmware available + + + + + Firmware Corrupted + + + + + Unknown applet + + + + + Applet doesn't map to a known value. + + + + + Record not found + + + + + Applet not found. Please reinstall firmware. + + + + + Capture Screenshot + + + + + PNG Image (*.png) + + + + + Update Available + + + + + Download %1? + + + + + TAS state: Running %1/%2 + + + + + TAS state: Recording %1 + + + + + TAS state: Idle %1/%2 + + + + + TAS State: Invalid + + + + + &Stop Running + + + + + Stop R&ecording + + + + + Building: %n shader(s) + + + + + Scale: %1x + %1 is the resolution scaling factor + + + + + Speed: %1% / %2% + + + + + Speed: %1% + + + + + Game: %1 FPS + + + + + Frame: %1 ms + + + + + + FSR + + + + + NO AA + + + + + VOLUME: MUTE + + + + + VOLUME: %1% + Volume percentage (e.g. 50%) + + + + + Derivation Components Missing + + + + + Decryption keys are missing. Install them now? + + + + + Wayland Detected! + + + + + Wayland is known to have significant performance issues and mysterious bugs. +It's recommended to use X11 instead. + +Would you like to force it for future launches? + + + + + Use X11 + + + + + Continue with Wayland + + + + + Don't show again + + + + + Restart Required + + + + + Restart Eden to apply the X11 backend. + + + + + Slow + + + + + Turbo + + + + + Unlocked + + + + + Select RomFS Dump Target + + + + + Please select which RomFS you would like to dump. + + + + + Are you sure you want to close Eden? + + + + + + + Eden + + + + + Are you sure you want to stop the emulation? Any unsaved progress will be lost. + + + + + The currently running application has requested Eden to not exit. + +Would you like to bypass this and exit anyway? + + + + + FXAA + + + + + SMAA + + + + + Nearest + + + + + Bilinear + + + + + Bicubic + + + + + Zero-Tangent + + + + + B-Spline + + + + + Mitchell + + + + + Spline-1 + + + + + Gaussian + + + + + Lanczos + + + + + ScaleForce + + + + + Area + + + + + MMPX + + + + + Docked + + + + + Handheld + + + + + Fast + + + + + Balanced + + + + + Accurate + + + + + Vulkan + + + + + OpenGL GLSL + + + + + OpenGL SPIRV + + + + + OpenGL GLASM + + + + + Null + MigrationWorker - - Data was migrated successfully. - - - - + Linking the old directory failed. You may need to re-run with administrative privileges on Windows. OS gave error: %1 - + - + + + +Note that your configuration and data will be shared with %1. +If this is not desirable, delete the following files: +%2 +%3 +%4 + + + + If you wish to clean up the files which were left in the old data location, you can do so by deleting the following directory: %1 - + + + + + Data was migrated successfully. + + + + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + @@ -8038,7 +8227,7 @@ If you wish to clean up the files which were left in the old data location, you - + Refreshing Đang làm mới @@ -8048,27 +8237,27 @@ If you wish to clean up the files which were left in the old data location, you Unban - + Subject Đối tượng - + Type Loại - + Forum Username Tên người dùng trên diễn đàn - + IP Address Địa chỉ IP - + Refresh Làm mới @@ -8076,37 +8265,37 @@ If you wish to clean up the files which were left in the old data location, you MultiplayerState - + Current connection status Tình trạng kết nối hiện tại - + Not Connected. Click here to find a room! Không kết nối. Nhấn vào đây để tìm một phòng! - + Not Connected Không kết nối - + Connected Đã kết nối - + New Messages Received Đã nhận được tin nhắn mới - + Error Lỗi - + Failed to update the room information. Please check your Internet connection and try hosting the room again. Debug Message: Không thể cập nhật thông tin phòng. Vui lòng kiểm tra kết nối Internet của bạn và thử tạo phòng lại. @@ -8115,89 +8304,6 @@ Tin nhắn gỡ lỗi: NetworkMessage - - Username is not valid. Must be 4 to 20 alphanumeric characters. - Tên người dùng không hợp lệ. Phải có từ 4 đến 20 ký tự chữ số hoặc chữ cái. - - - Room name is not valid. Must be 4 to 20 alphanumeric characters. - Tên phòng không hợp lệ. Phải có từ 4 đến 20 ký tự chữ số hoặc chữ cái. - - - Username is already in use or not valid. Please choose another. - Tên người dùng đã được sử dụng hoặc không hợp lệ. Vui lòng chọn tên khác. - - - IP is not a valid IPv4 address. - Địa chỉ IP không phải là địa chỉ IPv4 hợp lệ. - - - Port must be a number between 0 to 65535. - Cổng phải là một số từ 0 đến 65535. - - - You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - Bạn phải chọn một Game ưu thích để tạo một phòng. Nếu bạn chưa có bất kỳ game nào trong danh sách game của bạn, hãy thêm một thư mục game bằng cách nhấp vào biểu tượng dấu cộng trong danh sách game. - - - Unable to find an internet connection. Check your internet settings. - Không thể tìm thấy kết nối internet. Kiểm tra cài đặt internet của bạn. - - - Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - Không thể kết nối tới máy chủ. Hãy kiểm tra xem các thiết lập kết nối có đúng không. Nếu vẫn không thể kết nối, hãy liên hệ với người chủ phòng và xác minh rằng máy chủ đã được cấu hình đúng cách với cổng ngoài được chuyển tiếp. - - - Unable to connect to the room because it is already full. - Không thể kết nối tới phòng vì nó đã đầy. - - - Creating a room failed. Please retry. Restarting yuzu might be necessary. - Tạo phòng thất bại. Vui lòng thử lại. Có thể cần khởi động lại yuzu. - - - The host of the room has banned you. Speak with the host to unban you or try a different room. - Chủ phòng đã ban bạn. Hãy nói chuyện với người chủ phòng để được unban, hoặc thử vào một phòng khác. - - - Version mismatch! Please update to the latest version of yuzu. If the problem persists, contact the room host and ask them to update the server. - Phiên bản không khớp! Vui lòng cập nhật lên phiên bản mới nhất của yuzu. Nếu vấn đề vẫn tiếp tục, hãy liên hệ với người quản lý phòng và yêu cầu họ cập nhật máy chủ. - - - Incorrect password. - Mật khẩu sai - - - An unknown error occurred. If this error continues to occur, please open an issue - Đã xảy ra lỗi không xác định. Nếu lỗi này tiếp tục xảy ra, vui lòng mở một issue - - - Connection to room lost. Try to reconnect. - Mất kết nối với phòng. Hãy thử kết nối lại. - - - You have been kicked by the room host. - Bạn đã bị kick bởi chủ phòng. - - - IP address is already in use. Please choose another. - Địa chỉ IP đã được sử dụng. Vui lòng chọn một địa chỉ khác. - - - You do not have enough permission to perform this action. - Bạn không có đủ quyền để thực hiên hành động này. - - - The user you are trying to kick/ban could not be found. -They may have left the room. - Không thể tìm thấy người dùng bạn đang cố gắng kick/ban. -Họ có thể đã rời phòng. - - - No valid network interface is selected. -Please go to Configure -> System -> Network and make a selection. - Không có giao diện mạng hợp lệ được chọn. Vui lòng vào Cấu hình -> Hệ thống -> Mạng và thực hiện lựa chọn. - Game already running @@ -8232,10 +8338,132 @@ Tiếp tục? - NetworkMessage::ErrorManager + NewUserDialog - Error - Lỗi + + + New User + + + + + Change Avatar + + + + + Set Image + + + + + UUID + + + + + Eden + + + + + Username + + + + + UUID must be 32 hex characters (0-9, A-F) + + + + + Generate + + + + + Select User Image + + + + + Image Formats (*.jpg *.jpeg *.png *.bmp) + + + + + No firmware available + + + + + Please install the firmware to use firmware avatars. + + + + + + Error loading archive + + + + + Archive is not available. Please install/reinstall firmware. + + + + + Could not locate RomFS. Your file or decryption keys may be corrupted. + + + + + Error extracting archive + + + + + Could not extract RomFS. Your file or decryption keys may be corrupted. + + + + + Error finding image directory + + + + + Failed to find image directory in the archive. + + + + + No images found + + + + + No avatar images were found in the archive. + + + + + + All Good + Tooltip + + + + + Must be 32 hex characters (0-9, a-f) + Tooltip + + + + + Must be between 1 and 32 characters + Tooltip + @@ -8262,7 +8490,7 @@ Tiếp tục? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -8271,83 +8499,196 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> + + PerformanceOverlay + + + Form + + + + + Frametime + + + + + 0 ms + + + + + + Min: 0 + + + + + + Max: 0 + + + + + + Avg: 0 + + + + + FPS + + + + + 0 fps + + + + + %1 fps + + + + + + Avg: %1 + + + + + + Min: %1 + + + + + + Max: %1 + + + + + %1 ms + + + PlayerControlPreview - + START/PAUSE BẮT ĐẦU/TẠM DỪNG + + ProfileAvatarDialog + + + Select + + + + + Cancel + + + + + Background Color + + + + + Select Firmware Avatar + + + QObject - - %1 is not playing a game - %1 hiện không chơi game + + + + Migration + - - %1 is playing %2 - %1 đang chơi %2 + + Clear Shader Cache + - - Not playing a game - Hiện không chơi game + + Keep Old Data + - - Installed SD Titles - Các title đã cài đặt trên thẻ SD + + Clear Old Data + - - Installed NAND Titles - Các title đã cài đặt trên NAND + + Link Old Directory + - - System Titles - Titles hệ thống + + + + + - - Add New Game Directory - Thêm thư mục game + + + No + - - Favorites - Ưa thích + + You can manually re-trigger this prompt by deleting the new config directory: +%1 + + + + + Migrating + + + + + Migrating, this may take a while... + - - + + Shift Shift - - + + Ctrl Ctrl - - + + Alt Alt - - - - + + + + [not set] [chưa đặt nút] @@ -8357,15 +8698,15 @@ p, li { white-space: pre-wrap; } Mũ %1 %2 - - - - - - - - + + + + + + + + Axis %1%2 Trục %1%2 @@ -8375,359 +8716,383 @@ p, li { white-space: pre-wrap; } Nút %1 - - - - - - + + + + + + [unknown] [không xác định] - - - + + + Left Trái - - - + + + Right Phải - - - + + + Down Xuống - - - + + + Up Lên - - + + Z Z - - + + R R - - + + L L - - + + A A - - + + B B - - + + X X - - + + Y Y - - + + Start Bắt đầu - - + + L1 L1 - - + + L2 L2 - - + + L3 L3 - - + + R1 R1 - - + + R2 R2 - - + + R3 R3 - - + + Circle Tròn - - + + Cross X - - + + Square Hình vuông - - + + Triangle Hình tam giác - - + + Share Chia sẻ - - + + Options Tuỳ chọn - - + + [undefined] [không xác định] - + %1%2 %1%2 - - + + [invalid] [không hợp lệ] - - + + %1%2Hat %3 %1%2Mũ %3 - - - + + + %1%2Axis %3 %1%2Trục %3 - - + + %1%2Axis %3,%4,%5 %1%2Trục %3,%4,%5 - - + + %1%2Motion %3 %1%2Chuyển động %3 - - + + %1%2Button %3 %1%2Nút %3 - - + + [unused] [không sử dụng] - + ZR ZR - + ZL ZL - + SR SR - + SL SL - + Stick L Cần L - + Stick R Cần R - + Plus Cộng - + Minus Trừ - - + + Home Home - + Capture Chụp - + Touch Cảm Ứng - + Wheel Indicates the mouse wheel Con lăn - + Backward Lùi - + Forward Tiến - + Task Nhiệm vụ - + Extra Thêm - + %1%2%3%4 %1%2%3%4 - - + + %1%2%3Hat %4 %1%2%3Mũ %4 - - + + %1%2%3Axis %4 %1%2%3Trục %4 - - + + %1%2%3Button %4 %1%2%3Nút %4 - - - - Migration - + + Not playing a game + Hiện không chơi game - - - - - + + %1 is not playing a game + %1 hiện không chơi game - - - No - + + %1 is playing %2 + %1 đang chơi %2 - - You can manually re-trigger this prompt by deleting the new config directory: -%1 - + + Play Time: %1 + - - Migrating - + + Never Played + - - Migrating, this may take a while... - + + Version: %1 + + + + + Version: 1.0.0 + + + + + Installed SD Titles + Các title đã cài đặt trên thẻ SD + + + + Installed NAND Titles + Các title đã cài đặt trên NAND + + + + System Titles + Titles hệ thống + + + + Add New Game Directory + Thêm thư mục game + + + + Favorites + Ưa thích @@ -8818,31 +9183,817 @@ p, li { white-space: pre-wrap; } Đường dẫn tập tin - + No game data present Hiện tại không có dữ liệu game - + The following amiibo data will be formatted: Dữ liệu amiibo sau sẽ được định dạng: - + The following game data will removed: Dữ liệu game sau sẽ bị xoá: - + Set nickname and owner: Đặt biệt danh và chủ sỡ hữu: - + Do you wish to restore this amiibo? Bạn có muốn khôi phục amiibo này không? + + QtCommon::Content + + + Game Requires Firmware + + + + + The game you are trying to launch requires firmware to boot or to get past the opening menu. Please <a href='https://yuzu-mirror.github.io/help/quickstart'>dump and install firmware</a>, or press "OK" to launch anyways. + + + + + Installing Firmware... + + + + + + + + + Cancel + + + + + Firmware Install Failed + + + + + Firmware Install Succeeded + + + + + Firmware integrity verification failed! + + + + + + Verification failed for the following files: + +%1 + + + + + + Verifying integrity... + + + + + + Integrity verification succeeded! + + + + + + The operation completed successfully. + + + + + + Integrity verification failed! + + + + + File contents may be corrupt or missing. + + + + + Integrity verification couldn't be performed + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity. + + + + + Select Dumped Keys Location + + + + + Decryption Keys install succeeded + + + + + Decryption Keys install failed + + + + + Orphaned Profiles Detected! + + + + + UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br> + + + + + Really clear data? + + + + + Important data may be lost! + + + + + Are you REALLY sure? + + + + + Once deleted, your data will NOT come back! +Only do this if you're 100% sure you want to delete this data. + + + + + Clearing... + + + + + Select Export Location + + + + + %1.zip + + + + + + Zipped Archives (*.zip) + + + + + Exporting data. This may take a while... + + + + + Exporting + + + + + Exported Successfully + + + + + Data was exported successfully. + + + + + Export Cancelled + + + + + Export was cancelled by the user. + + + + + Export Failed + + + + + Ensure you have write permissions on the targeted directory and try again. + + + + + Select Import Location + + + + + Import Warning + + + + + All previous data in this directory will be deleted. Are you sure you wish to proceed? + + + + + Importing data. This may take a while... + + + + + Importing + + + + + Imported Successfully + + + + + Data was imported successfully. + + + + + Import Cancelled + + + + + Import was cancelled by the user. + + + + + Import Failed + + + + + Ensure you have read permissions on the targeted directory and try again. + + + + + QtCommon::FS + + + Linked Save Data + + + + + Save data has been linked. + + + + + Failed to link save data + + + + + Could not link directory: + %1 +To: + %2 + + + + + Already Linked + + + + + This title is already linked to Ryujinx. Would you like to unlink it? + + + + + Failed to unlink old directory + + + + + + OS returned error: %1 + + + + + Failed to copy save data + + + + + Unlink Successful + + + + + Successfully unlinked Ryujinx save data. Save data has been kept intact. + + + + + Could not find Ryujinx installation + + + + + Could not find a valid Ryujinx installation. This may typically occur if you are using Ryujinx in portable mode. + +Would you like to manually select a portable folder to use? + + + + + Ryujinx Portable Location + + + + + Not a valid Ryujinx directory + + + + + The specified directory does not contain valid Ryujinx data. + + + + + + Could not find Ryujinx save data + + + + + QtCommon::Game + + + Error Removing Contents + + + + + Error Removing Update + + + + + Error Removing DLC + + + + + + + + + + Successfully Removed + Đã gỡ bỏ thành công + + + + Successfully removed the installed base game. + + + + + The base game is not installed in the NAND and cannot be removed. + + + + + Successfully removed the installed update. + + + + + There is no update installed for this title. + + + + + There are no DLCs installed for this title. + + + + + Successfully removed %1 installed DLC. + Đã gỡ bỏ thành công DLC %1 + + + + + Error Removing Transferable Shader Cache + + + + + + A shader cache for this title does not exist. + + + + + Successfully removed the transferable shader cache. + + + + + Failed to remove the transferable shader cache. + + + + + Error Removing Vulkan Driver Pipeline Cache + + + + + Failed to remove the driver pipeline cache. + + + + + + Error Removing Transferable Shader Caches + + + + + Successfully removed the transferable shader caches. + + + + + Failed to remove the transferable shader cache directory. + + + + + + Error Removing Custom Configuration + + + + + A custom configuration for this title does not exist. + + + + + Successfully removed the custom game configuration. + Đã xóa thành công cấu hình trò chơi tùy chỉnh. + + + + Failed to remove the custom game configuration. + Không thể xóa cấu hình trò chơi tùy chỉnh. + + + + Reset Metadata Cache + + + + + The metadata cache is already empty. + + + + + The operation completed successfully. + Thao tác đã hoàn tất thành công. + + + + The metadata cache couldn't be deleted. It might be in use or non-existent. + + + + + Create Shortcut + Tạo lối tắt + + + + Do you want to launch the game in fullscreen? + Bạn có muốn khởi chạy trò chơi ở chế độ toàn màn hình không? + + + + Shortcut Created + Lối tắt đã được tạo + + + + Successfully created a shortcut to %1 + Đã tạo thành công lối tắt tới %1 + + + + Shortcut may be Volatile! + Lối tắt có thể không ổn định! + + + + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? + Thao tác này sẽ tạo một lối tắt đến AppImage hiện tại. Việc này có thể không hoạt động tốt nếu bạn cập nhật. Bạn có muốn tiếp tục không? + + + + Failed to Create Shortcut + Không thể tạo lối tắt + + + + Failed to create a shortcut to %1 + Không thể tạo lối tắt tới %1 + + + + Create Icon + Tạo icon + + + + Cannot create icon file. Path "%1" does not exist and cannot be created. + Không thể tạo icon. Đường dẫn "%1" không tồn tại và không thể tạo được. + + + + No firmware available + Không có firmware khả dụng + + + + Please install firmware to use the home menu. + + + + + Home Menu Applet + + + + + Home Menu is not available. Please reinstall firmware. + + + + + QtCommon::Mod + + + Mod Name + + + + + What should this mod be called? + + + + + RomFS + + + + + ExeFS/Patch + + + + + Cheat + + + + + Mod Type + + + + + Could not detect mod type automatically. Please manually specify the type of mod you downloaded. + +Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods. + + + + + + Mod Extract Failed + + + + + Failed to create temporary directory %1 + + + + + Zip file %1 is empty + + + + + QtCommon::Path + + + Error Opening Shader Cache + + + + + Failed to create or open shader cache for this title, ensure your app data directory has write permissions. + + + + + QtCommon::StringLookup + + + Contains game save data. DO NOT REMOVE UNLESS YOU KNOW WHAT YOU'RE DOING! + + + + + Contains Vulkan and OpenGL pipeline caches. Generally safe to remove. + + + + + Contains updates and DLC for games. + + + + + Contains firmware and applet data. + + + + + Contains game mods, patches, and cheats. + + + + + Decryption Keys were successfully installed + + + + + Unable to read key directory, aborting + + + + + One or more keys failed to copy. + + + + + Verify your keys file has a .keys extension and try again. + + + + + Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. + + + + + Successfully installed firmware version %1 + + + + + Unable to locate potential firmware NCA files + + + + + Failed to delete one or more firmware files. + + + + + One or more firmware files failed to copy into NAND. + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. Restart Eden or re-install firmware. + + + + + Firmware missing. Firmware is required to run certain games and use the Home Menu. + + + + + Firmware reported as present, but was unable to be read. Check for decryption keys and redump firmware if necessary. + + + + + Eden has detected user data for the following emulators: + + + + + Would you like to migrate your data for use in Eden? +Select the corresponding button to migrate data from that emulator. +This may take a while. + + + + + Clearing shader cache is recommended for all users. +Do not uncheck unless you know what you're doing. + + + + + Keeps the old data directory. This is recommended if you aren't +space-constrained and want to keep separate data for the old emulator. + + + + + Deletes the old data directory. +This is recommended on devices with space constraints. + + + + + Creates a filesystem link between the old directory and Eden directory. +This is recommended if you want to share data between emulators. + + + + + Ryujinx title database does not exist. + + + + + Invalid header on Ryujinx title database. + + + + + Invalid magic header on Ryujinx title database. + + + + + Invalid byte alignment on Ryujinx title database. + + + + + No items found in Ryujinx title database. + + + + + Title %1 not found in Ryujinx title database. + + + QtControllerSelectorDialog @@ -8879,7 +10030,7 @@ p, li { white-space: pre-wrap; } - + Pro Controller Tay cầm Pro Controller @@ -8892,7 +10043,7 @@ p, li { white-space: pre-wrap; } - + Dual Joycons Joycon đôi @@ -8905,7 +10056,7 @@ p, li { white-space: pre-wrap; } - + Left Joycon Joycon Trái @@ -8918,7 +10069,7 @@ p, li { white-space: pre-wrap; } - + Right Joycon Joycon Phải @@ -8947,7 +10098,7 @@ p, li { white-space: pre-wrap; } - + Handheld Cầm tay @@ -9065,35 +10216,35 @@ p, li { white-space: pre-wrap; } Not enough controllers - + - + GameCube Controller Tay cầm GameCube - + Poke Ball Plus Poke Ball Plus - + NES Controller Tay cầm NES - + SNES Controller Tay cầm SNES - + N64 Controller Tay cầm N64 - + Sega Genesis Sega Genesis @@ -9101,28 +10252,28 @@ p, li { white-space: pre-wrap; } QtErrorDisplay - - - + + + Error Code: %1-%2 (0x%3) Mã lỗi: %1-%2 (0x%3) - + An error has occurred. Please try again or contact the developer of the software. Một lỗi đã xảy ra. Vui lòng thử lại hoặc liên hệ nhà phát triển của phần mềm. - + An error occurred on %1 at %2. Please try again or contact the developer of the software. Một lỗi đã xảy ra tại %1 vào %2. Vui lòng thử lại hoặc liên hệ nhà phát triển của phần mềm. - + An error has occurred. %1 @@ -9138,7 +10289,7 @@ Vui lòng thử lại hoặc liên hệ nhà phát triển của phần mềm. QtProfileSelectionDialog - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -9146,7 +10297,7 @@ Vui lòng thử lại hoặc liên hệ nhà phát triển của phần mềm. - + Users Người Dùng @@ -9239,7 +10390,7 @@ Vui lòng thử lại hoặc liên hệ nhà phát triển của phần mềm.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -9248,17 +10399,57 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - - + + OK Chấp nhận - + Cancel Hủy bỏ + + RyujinxDialog + + + Ryujinx Link + + + + + Linking save data to Ryujinx lets both Ryujinx and Eden reference the same save files for your games. + +By selecting "From Eden", previous save data stored in Ryujinx will be deleted, and vice versa for "From Ryujinx". + + + + + From Eden + + + + + From Ryujinx + + + + + Cancel + + + + + Failed to link save data + + + + + OS returned error: %1 + + + SequenceDialog @@ -9268,143 +10459,31 @@ p, li { white-space: pre-wrap; } - WaitTreeCallstack + SetPlayTimeDialog - - Call stack - Chùm cuộc gọi - - - - WaitTreeSynchronizationObject - - - [%1] %2 - [%1] %2 + + Set Play Time Data + - - waited by no thread - chờ đợi bởi vì không có luồng - - - - WaitTreeThread - - - runnable - có thể chạy + + Hours: + - - paused - tạm dừng + + Minutes: + - - sleeping - ngủ + + Seconds: + - - waiting for IPC reply - chờ đợi IPC phản hồi - - - - waiting for objects - chờ đợi đối tượng - - - - waiting for condition variable - đang chờ biến điều kiện - - - - waiting for address arbiter - chờ đợi địa chỉ người đứng giữa - - - - waiting for suspend resume - đang đợi để tạm dừng và tiếp tục - - - - waiting - đang chờ - - - - initialized - đã khởi tạo - - - - terminated - đã chấm dứt - - - - unknown - không xác định - - - - PC = 0x%1 LR = 0x%2 - PC = 0x%1 LR = 0x%2 - - - - ideal - lý tưởng - - - - core %1 - lõi %1 - - - - processor = %1 - bộ xử lý = %1 - - - - affinity mask = %1 - che đậy tánh giống nhau = %1 - - - - thread id = %1 - id luồng = %1 - - - - priority = %1(current) / %2(normal) - quyền ưu tiên = %1(hiện tại) / %2(bình thường) - - - - last running ticks = %1 - lần chạy cuối cùng = %1 - - - - WaitTreeThreadList - - - waited by thread - chờ đợi bởi vì có luồng - - - - WaitTreeWidget - - - &Wait Tree - &Cây Đợi + + Total play time reached maximum. + diff --git a/dist/languages/zh_CN.ts b/dist/languages/zh_CN.ts index 934cc8897a..6fb006631b 100644 --- a/dist/languages/zh_CN.ts +++ b/dist/languages/zh_CN.ts @@ -1,25 +1,15 @@ - - - + AboutDialog - - About yuzu - 关于 yuzu - - - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - - About eden - + About Eden + 关于 Eden - <html><head/><body><p><span style=" font-size:28pt;">eden</span></p></body></html> - + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> @@ -34,70 +24,57 @@ p, li { white-space: pre-wrap; } hr { height: 1px; border-width: 0; } li.unchecked::marker { content: "\2610"; } li.checked::marker { content: "\2612"; } -</style></head><body style=" font-family:'Adwaita Sans'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> - +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css"> +p, li { white-space: pre-wrap; } +hr { height: 1px; border-width: 0; } +li.unchecked::marker { content: "\2610"; } +li.checked::marker { content: "\2612"; } +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden 是一个实验性的开源任天堂 Switch 模拟器,以 GPLv3.0+ 许可证授权。本项目基于 yuzu 模拟器开发(后者已于 2024 年 3 月终止)。<br /><br />请勿使用此软件运行非法获得的游戏。</span></p></body></html> - <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">This software should not be used to play games you have not legally obtained.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu 是一个实验性的开源 Nintendo Switch 模拟器,以 GPLv3.0+ 授权。</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">此软件不得用于运行非法取得的游戏。</span></p></body></html> - - - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">官方网站</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">源代码</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">贡献者</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">许可证</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">主页</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">源码</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">贡献者</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">许可证</span></a></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. eden is not affiliated with Nintendo in any way.</span></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; 是任天堂的商标。yuzu 与任天堂没有任何关系。</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. Eden is not affiliated with Nintendo in any way.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; 是任天堂的注册商标。Eden 与任天堂没有任何关系。</span></p></body></html> CalibrationConfigurationDialog - + Communicating with the server... - 正在与服务器通信… + 正在连接服务器… - + Cancel 取消 - + Touch the top left corner <br>of your touchpad. 触摸你的触摸板<br>的左上角。 - + Now touch the bottom right corner <br>of your touchpad. 触摸你的触摸板<br>的右下角。 - + Configuration completed! 配置完成! - + OK 确定 @@ -120,78 +97,78 @@ p, li { white-space: pre-wrap; } 发送消息 - + Members 成员 - + %1 has joined %1 已加入 - + %1 has left %1 已离开 - + %1 has been kicked %1 已被踢出房间 - + %1 has been banned %1 已被封禁 - + %1 has been unbanned %1 已被解封 - + View Profile 查看个人资料 - - + + Block Player 屏蔽玩家 - + When you block a player, you will no longer receive chat messages from them.<br><br>Are you sure you would like to block %1? 屏蔽玩家后,你将无法收到他们的聊天消息。<br><br>您确定要屏蔽 %1 吗? - + Kick 踢出房间 - + Ban 封禁 - + Kick Player 踢出玩家 - + Are you sure you would like to <b>kick</b> %1? 您确定要将 %1 <b>踢出房间</b>吗? - + Ban Player 封禁玩家 - + Are you sure you would like to <b>kick and ban</b> %1? This would ban both their forum username and their IP address. @@ -226,17 +203,17 @@ This would ban both their forum username and their IP address. ClientRoomWindow - + Connected 已连接 - + Disconnected 已断开连接 - + %1 - %2 (%3/%4 members) - connected %1 - %2 (%3/%4 个成员) - 已连接 @@ -259,19 +236,15 @@ This would ban both their forum username and their IP address. Report Game Compatibility 报告游戏兼容性 - - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of yuzu you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected yuzu account</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">如果您选择向 </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu 兼容性列表</span></a><span style=" font-size:10pt;">提交测试用例的话,以下信息将会被收集并显示在网站上:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">设备硬件信息 (CPU / GPU / 操作系统)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">您正在使用的 yuzu 版本</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">已关联的 yuzu 账户信息</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">eden Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of eden you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected eden account</li></ul></body></html> - + <html><head/><body><p><span style=" font-size:10pt;">如果您选择向 </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">Eden 兼容性列表</span></a><span style=" font-size:10pt;">提交测试结果,我们将收集并在网页上展示以下信息:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">硬件信息(CPU / GPU / 操作系统)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">您使用的 Eden 版本</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">已连接的 Eden 账户</li></ul></body></html> <html><head/><body><p>Does the game boot?</p></body></html> - <html><head/><body><p>游戏启动了吗?</p></body></html> + <html><head/><body><p>游戏成功启动了吗?</p></body></html> @@ -374,22 +347,22 @@ This would ban both their forum username and their IP address. 感谢您向我们提交信息! - + Submitting 提交中 - + Communication error 网络错误 - + An error occurred while sending the Testcase 在提交测试用例时发生错误。 - + Next 下一步 @@ -397,350 +370,388 @@ This would ban both their forum username and their IP address. ConfigurationShared - + % % - + Amiibo editor Amiibo 编辑器 - + Controller configuration 控制器设置 - + Data erase 清除数据 - + Error 错误 - + Net connect 网络连接 - + Player select 选择玩家 - + Software keyboard 软件键盘 - + Mii Edit - Mii Edit + Mii 编辑 - + Online web 在线网络 - + Shop 商店 - + Photo viewer 照片查看器 - + Offline web 离线网络 - + Login share 第三方账号登录 - + Wifi web auth Wifi 网络认证 - + My page 我的主页 - + + Enable Overlay Applet + 开启覆盖层小程序 + + + + Enables Horizon's built-in overlay applet. Press and hold the home button for 1 second to show it. + 开启 Horizon 内置的覆盖层小程序。请按住 home 键 1 秒来显示它。 + + + Output Engine: 输出引擎: - + Output Device: 输出设备: - + Input Device: 输入设备: - + Mute audio 静音 - + Volume: 音量: - + Mute audio when in background 模拟器位于后台时静音 - + Multicore CPU Emulation 多核 CPU 仿真 - - This option increases CPU emulation thread use from 1 to the Switch’s maximum of 4. -This is mainly a debug option and shouldn’t be disabled. - 此选项将 CPU 模拟线程的数量从 1 增加到 Switch 实机的最大值 4。 -这是调试选项,不应被禁用。 + + This option increases CPU emulation thread use from 1 to the maximum of 4. +This is mainly a debug option and shouldn't be disabled. + 此选项会将 CPU 模拟线程数量从 1 增加到 Switch 实机的最大值 4。 +这是个调试选项,不建议禁用。 - + Memory Layout 内存布局 - - Increases the amount of emulated RAM from the stock 4GB of the retail Switch to the developer kit's 8/6GB. -It’s doesn’t improve stability or performance and is intended to let big texture mods fit in emulated RAM. -Enabling it will increase memory use. It is not recommended to enable unless a specific game with a texture mod needs it. - 提升模拟内存容量,从零售 Switch 通常的 4GB 内存增加到开发机的 6/8GB 内存。 -不会提高稳定性和性能,而是让大型纹理 Mod 适用于模拟内存。 -启用时将增加内存使用量。建议不要启用,除非具有纹理 Mod 的某些游戏需要。 + + Increases the amount of emulated RAM. +Doesn't affect performance/stability but may allow HD texture mods to load. + 增加模拟内存的容量。 +不影响性能或稳定性,但可能对加载高清贴图模组有帮助。 - + Limit Speed Percent 运行速度限制 - - Controls the game's maximum rendering speed, but it’s up to each game if it runs faster or not. + + Controls the game's maximum rendering speed, but it's up to each game if it runs faster or not. 200% for a 30 FPS game is 60 FPS, and for a 60 FPS game it will be 120 FPS. Disabling it means unlocking the framerate to the maximum your PC can reach. - 控制游戏的最大渲染速度,但这取决于游戏的实际运行速度。 -对于 30 FPS 的游戏,设置为 200% 则将最高运行速度限制为 60 FPS;对于 60 FPS 的游戏,设置为 200% 则将最高运行速度限制为 120 FPS。 -禁用此项将解锁帧率限制,尽可能快地运行游戏。 + 控制游戏的最大渲染速度,但还取决于游戏本身的实际运行速度。 +对于 30 帧的游戏,设置为 200% 则可以提升为60 帧;对于 60帧的游戏,设置为 200% 则可以提升为 120 FPS。 +禁用此项同时也会解锁帧率限制,尽可能快地运行游戏。 - + + Turbo Speed + 加速模式 + + + + When the Turbo Speed hotkey is pressed, the speed will be limited to this percentage. + 当按下 加速模式 快捷键时,速度会被限制在这个百分比。 + + + + Slow Speed + 减速模式 + + + + When the Slow Speed hotkey is pressed, the speed will be limited to this percentage. + 当按下 减速模式 快捷键时,速度会被限制在这个百分比。 + + + Synchronize Core Speed - + 同步 CPU 核心速度 - - Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). -Compatibility varies by game; many (especially older ones) may not respond well. + + Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). Can help reduce stuttering at lower framerates. - + 将 CPU 核心速度与游戏的最大渲染速度同步,在不影响游戏速度 (动画、物理等) 的情况下提升 FPS。 +可以帮助在较低帧率下减少卡顿。 - + Accuracy: 精度: - - This setting controls the accuracy of the emulated CPU. -Don't change this unless you know what you are doing. - 此选项控制模拟 CPU 的精度。 -如果您不确定,就不要更改此项。 + + Change the accuracy of the emulated CPU (for debugging only). + 更改模拟 CPU 的精度(仅供调试使用)。 - - + + Backend: 后端: - - Fast CPU Time - + + CPU Overclock + CPU 超频 - + Overclocks the emulated CPU to remove some FPS limiters. Weaker CPUs may see reduced performance, and certain games may behave improperly. Use Boost (1700MHz) to run at the Switch's highest native clock, or Fast (2000MHz) to run at 2x clock. - + 对模拟的 CPU 进行超频,以移除部分 FPS 限制。性能较弱的 CPU 可能会出现性能下降,某些游戏也可能会出现异常行为。 + +您可以选择: +Boost(1700MHz):运行在 Switch 的最高原生频率。 +Fast(2000MHz):运行在 2 倍频率。 - + + Custom CPU Ticks + 自定义 CPU 时钟周期 + + + + Set a custom value of CPU ticks. Higher values can increase performance, but may cause deadlocks. A range of 77-21000 is recommended. + 设置自定义的 CPU 时钟周期。较高的数值可能提升性能,但也可能导致游戏卡死。推荐范围:77–21000。 + + + + Enable Host MMU Emulation (fastmem) + 启用主机 MMU 模拟(快速内存存取) + + + + This optimization speeds up memory accesses by the guest program. +Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU. +Disabling this forces all memory accesses to use Software MMU Emulation. + 加速游戏对内存的读写操作。 +开启时,游戏内存读写直接使用主机内存,并利用硬件 MMU 来提升性能。 +关闭时,所有内存访问都通过软件 MMU 来模拟。 + + + Unfuse FMA (improve performance on CPUs without FMA) 低精度 FMA (在 CPU 不支持 FMA 指令集的情况下提高性能) - + This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support. 该选项通过降低积和熔加运算的精度来提高模拟器在不支持 FMA 指令集 CPU 上的运行速度。 - + Faster FRSQRTE and FRECPE 快速 FRSQRTE 和 FRECPE - + This option improves the speed of some approximate floating-point functions by using less accurate native approximations. 该选项通过使用精度较低的近似值来提高某些浮点函数的运算速度。 - + Faster ASIMD instructions (32 bits only) 加速 ASIMD 指令执行(仅限 32 位) - + This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes. 该选项通过不正确的舍入模式来提高 32 位 ASIMD 浮点函数的运行速度。 - + Inaccurate NaN handling 低精度非数处理 - + This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions. 该选项通过取消非数检查来提高速度。 请注意,这也会降低某些浮点指令的精确度。 - + Disable address space checks 禁用地址空间检查 - - This option improves speed by eliminating a safety check before every memory read/write in guest. -Disabling it may allow a game to read/write the emulator's memory. - 此选项通过取消每次模拟内存读/写前的安全检查来提高速度。 -禁用此选项可能会允许游戏读/写模拟器自己的内存。 + + This option improves speed by eliminating a safety check before every memory operation. +Disabling it may allow arbitrary code execution. + 此选项通过在每次内存操作前取消安全检查来提高速度。 +禁用它可能允许执行任意代码。 - + Ignore global monitor 忽略全局监视器 - + 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. 此选项仅通过 cmpxchg 指令来提高速度,以确保独占访问指令的安全性。 请注意,这可能会导致死锁和其他问题。 - + API: API: - - Switches between the available graphics APIs. -Vulkan is recommended in most cases. - 切换图形 API。 -大多数情况下建议使用 Vulkan。 + + Changes the output graphics API. +Vulkan is recommended. + 更改图形输出的 API。 +推荐使用 Vulkan。 - + Device: 设备: - - This setting selects the GPU to use with the Vulkan backend. - 切换图形 API 为 Vulkan 时所使用的 GPU。 + + This setting selects the GPU to use (Vulkan only). + 设置Vulkan下使用的GPU。 - - Shader Backend: - 着色器后端: - - - - The shader backend to use for the OpenGL renderer. -GLSL is the fastest in performance and the best in rendering accuracy. -GLASM is a deprecated NVIDIA-only backend that offers much better shader building performance at the cost of FPS and rendering accuracy. -SPIR-V compiles the fastest, but yields poor results on most GPU drivers. - 切换 OpenGL 渲染器的着色器后端。 -GLSL 具有最好的性能和渲染精度。 -GLASM 仅限于 NVIDIA GPU,以 FPS 和渲染精度为代价提供更好的着色器构建性能。 -SPIR-V 编译速度最快,但在大多数 GPU 驱动程序上表现很差。 - - - + Resolution: 分辨率: - - Forces the game to render at a different resolution. -Higher resolutions require much more VRAM and bandwidth. -Options lower than 1X can cause rendering issues. - 指定游戏画面的分辨率。 -更高的分辨率需要更多的 VRAM 和带宽。 + + Forces to render at a different resolution. +Higher resolutions require more VRAM and bandwidth. +Options lower than 1X can cause artifacts. + 强制设置游戏画面的分辨率。 +更高的分辨率需要更多的显存和带宽。 低于 1X 的选项可能造成渲染问题。 - + Window Adapting Filter: 窗口滤镜: - + FSR Sharpness: FSR 锐化度: - - Determines how sharpened the image will look while using FSR’s dynamic contrast. - 指定使用 FSR 时图像的锐化程度。 + + Determines how sharpened the image will look using FSR's dynamic contrast. + 确定使用 FSR 的动态对比度后的图像锐化度。 - + Anti-Aliasing Method: 抗锯齿方式: - + The anti-aliasing method to use. SMAA offers the best quality. -FXAA has a lower performance impact and can produce a better and more stable picture under very low resolutions. - 切换抗锯齿的方式。 -子像素形态学抗锯齿提供最佳质量。 -快速近似抗锯齿对性能影响较小,可以在非常低的分辨率下生成更好、更稳定的图像。 +FXAA can produce a more stable picture in lower resolutions. + 要使用的抗锯齿模式。 +SMAA 提供最佳质量。 +FXAA 可以在较低分辨率下产生更稳定的画面。 - + Fullscreen Mode: 全屏模式: - + The method used to render the window in fullscreen. Borderless offers the best compatibility with the on-screen keyboard that some games request for input. Exclusive fullscreen may offer better performance and better Freesync/Gsync support. @@ -749,63 +760,52 @@ Exclusive fullscreen may offer better performance and better Freesync/Gsync supp 独占全屏提供更好的性能和 Freesync/Gsync 支持。 - + Aspect Ratio: 屏幕纵横比: - - Stretches the game to fit the specified aspect ratio. -Switch games only support 16:9, so custom game mods are required to get other ratios. + + Stretches the renderer to fit the specified aspect ratio. +Most games only support 16:9, so modifications are required to get other ratios. Also controls the aspect ratio of captured screenshots. - 拉伸游戏画面以适应指定的屏幕纵横比。 -Switch 游戏只支持 16:9,因此需要 Mod 才能实现其他比例。 -此选项也控制捕获屏幕截图的纵横比。 + 将渲染器拉伸以适应指定的高宽比。 +大多数游戏仅支持 16:9,因此需要进行修改以获得其他比例。 +此设置同时控制捕获截图的高宽比。 - - Use disk pipeline cache - 启用磁盘管线缓存 + + Use persistent pipeline cache + 使用持久管道缓存 - + Allows saving shaders to storage for faster loading on following game boots. Disabling it is only intended for debugging. 将生成的着色器保存到硬盘,提高后续游戏过程中的着色器加载速度。 请仅在调试时禁用此项。 - - Optimize SPIRV output shader - + + Optimize SPIRV output + 优化 SPIRV 输出 - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. This feature is experimental. - + 对生成的 SPIRV 着色器执行额外的优化处理。 +实验性功能。也许会略微提升性能,但会增加着色器编译所需的时间。 - - Use asynchronous GPU emulation - 使用 GPU 异步模拟 - - - - Uses an extra CPU thread for rendering. -This option should always remain enabled. - 使用额外的 CPU 线程进行渲染。 -此选项应始终保持启用状态。 - - - + NVDEC emulation: NVDEC 模拟方式: - + Specifies how videos should be decoded. It can either use the CPU or the GPU for decoding, or perform no decoding at all (black screen on videos). In most cases, GPU decoding provides the best performance. @@ -814,1173 +814,1478 @@ In most cases, GPU decoding provides the best performance. 大多数情况下,使用 GPU 解码将提供最好的性能。 - + ASTC Decoding Method: ASTC 纹理解码方式: - + This option controls how ASTC textures should be decoded. -CPU: Use the CPU for decoding, slowest but safest method. -GPU: Use the GPU's compute shaders to decode ASTC textures, recommended for most games and users. -CPU Asynchronously: Use the CPU to decode ASTC textures as they arrive. Completely eliminates ASTC decoding -stuttering at the cost of rendering issues while the texture is being decoded. +CPU: Use the CPU for decoding. +GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). +CPU Asynchronously: Use the CPU to decode ASTC textures on demand. EliminatesASTC decoding +stuttering but may present artifacts. 此选项控制 ASTC 纹理解码方式。 -CPU:使用 CPU 进行解码,速度最慢但最安全。 -GPU:使用 GPU 的计算着色器来解码 ASTC 纹理,建议大多数游戏和用户使用此项。 +CPU:使用 CPU 解码。 +GPU:使用 GPU 解码 (建议)。 CPU 异步模拟:使用 CPU 在 ASTC 纹理到达时对其进行解码。 消除 ASTC 解码带来的卡顿,但在解码时可能出现渲染问题。 - + ASTC Recompression Method: ASTC 纹理重压缩方式: - - Almost all desktop and laptop dedicated GPUs lack support for ASTC textures, forcing the emulator to decompress to an intermediate format any card supports, RGBA8. -This option recompresses RGBA8 to either the BC1 or BC3 format, saving VRAM but negatively affecting image quality. - 几乎所有台式机和笔记本电脑 GPU 都不支持 ASTC 纹理,这迫使模拟器解压纹理到 GPU 支持的中间格式 RGBA8。 -此选项可将 RGBA8 重新压缩为 BC1 或 BC3 格式,节省 VRAM,但会对图像质量产生负面影响。 + + Most GPUs lack support for ASTC textures and must decompress to anintermediate format: RGBA8. +BC1/BC3: The intermediate format will be recompressed to BC1 or BC3 format, + saving VRAM but degrading image quality. + 大多数 GPU 不支持 ASTC 纹理,必须解压到中间格式: RGBA8。 +BC1/BC3: 中间格式将被重新压缩为 BC1 或 BC3 格式,从而节省显存, +但会降低图像质量。 - + + Frame Pacing Mode (Vulkan only) + 帧同步模式 (仅限 Vulkan) + + + + Controls how the emulator manages frame pacing to reduce stuttering and make the frame rate smoother and more consistent. + 控制模拟器如何管理帧同步,以减少卡顿,使帧率表现更加平稳顺滑。 + + + VRAM Usage Mode: VRAM 使用模式: - - Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. Has no effect on integrated graphics. Aggressive mode may severely impact the performance of other applications such as recording software. - 指定模拟器使用 VRAM 的方式。此选项对核芯显卡没有影响。 -保守模式:模拟器更倾向于节省 VRAM。 -激进模式:最大限度利用 VRAM 来提高性能。 -激进模式可能会严重影响其他应用程序(如录屏软件)的性能。 + + Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. +Aggressive mode may impact performance of other applications such as recording software. + 选择模拟器是应优先节省内存还是最大限度地使用可用视频内存以提高性能。 +激进模式可能会影响诸如录屏软件等其他应用程序的性能,。 - + + Skip CPU Inner Invalidation + 跳过 CPU 内部失效处理 + + + + Skips certain cache invalidations during memory updates, reducing CPU usage and improving latency. This may cause soft-crashes. + 在内存更新期间跳过某些缓存失效,从而降低 CPU 使用率并改善延迟。这可能导致软件崩溃。 + + + VSync Mode: 垂直同步模式: - + FIFO (VSync) does not drop frames or exhibit tearing but is limited by the screen refresh rate. -FIFO Relaxed is similar to FIFO but allows tearing as it recovers from a slow down. +FIFO Relaxed 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. - FIFO (垂直同步)不会掉帧或产生画面撕裂,但受到屏幕刷新率的限制。 -FIFO Relaxed 类似于 FIFO,但允许从低 FPS 恢复时产生撕裂。 -Mailbox 具有比 FIFO 更低的延迟,不会产生撕裂但可能会掉帧。 -Immediate (无同步)只显示可用内容,并可能产生撕裂。 +Immediate (no synchronization) presents whatever is available and can exhibit tearing. + FIFO(垂直同步)不会丢帧或出现撕裂,但受屏幕刷新率的限制。 +FIFO Relaxed 允许撕裂,因为它会在降速时进行恢复。 +Mailbox 的延迟可能比 FIFO 低且不会导致撕裂,但可能会丢帧。 +Immediate (不同步) 会呈现全部可用内容,并可能出现撕裂。 - + + Sync Memory Operations + 同步内存操作 + + + + Ensures data consistency between compute and memory operations. +This option fixes issues in games, but may degrade performance. +Unreal Engine 4 games often see the most significant changes thereof. + 确保计算和内存操作之间的数据一致性。 +此选项可以解决游戏中的问题,但可能会降低性能。 +虚幻 4 引擎的游戏通常会看到最显著的变化。 + + + Enable asynchronous presentation (Vulkan only) 启用异步帧提交 (仅限 Vulkan) - + Slightly improves performance by moving presentation to a separate CPU thread. 将帧提交移动到单独的 CPU 线程,略微提高性能。 - + Force maximum clocks (Vulkan only) 强制最大时钟 (仅限 Vulkan) - + Runs work in the background while waiting for graphics commands to keep the GPU from lowering its clock speed. 在后台运行的同时等待图形命令,以防止 GPU 降低时钟速度。 - + Anisotropic Filtering: 各向异性过滤: - + Controls the quality of texture rendering at oblique angles. -It’s a light setting and safe to set at 16x on most GPUs. - 控制斜角的纹理渲染质量。 -这是一个渲染相关的选项,在大多数 GPU 上设置为 16x 是安全的。 +Safe to set at 16x on most GPUs. + 控制在斜角下纹理渲染的质量。 +大多数 GPU 上设置为 16 倍是安全的。 - - Accuracy Level: - 精度: + + GPU Mode: + GPU 模式: - - GPU emulation accuracy. -Most games render fine with Normal, but High is still required for some. -Particles tend to only render correctly with High accuracy. -Extreme should only be used for debugging. -This option can be changed while playing. -Some games may require booting on high to render properly. - 指定 GPU 模拟精度。 -大多数游戏设置为“正常”时渲染效果良好,但某些游戏需要设置为“高”。 -粒子效果只能以高精度才能正确渲染。 -“极高”只用于调试。 -此选项可在游戏运行时更改。 -某些游戏可能在启动时设置为“高”才能正确渲染。 + + Controls the GPU emulation mode. +Most games render fine with Fast or Balanced modes, but Accurate is still required for some. +Particles tend to only render correctly with Accurate mode. + 控制 GPU 模拟的精确度。大部分游戏在性能或平衡模式下可以正常渲染,但部分游戏需要设置为精确。粒子效果通常只有在精确模式下才能正确显示。 - - Use asynchronous shader building (Hack) - 启用异步着色器构建 (不稳定) + + DMA Accuracy: + DMA 精度: - - Enables asynchronous shader compilation, which may reduce shader stutter. -This feature is experimental. - 启用异步着色器编译,可能会减少着色器卡顿。 -实验性功能。 + + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. + 控制 DMA 精度。安全精度可修复某些游戏中的问题,但可能会降低性能。 - Use Fast GPU Time (Hack) - 启用快速 GPU 时钟 (不稳定) + + Enable asynchronous shader compilation + 开启异步着色器编译 - Enables Fast GPU Time. This option will force most games to run at their highest native resolution. - 启用快速 GPU 时钟。此选项将强制大多数游戏以其最高分辨率运行。 + + May reduce shader stutter. + 可能减少着色器卡顿。 - + + Fast GPU Time + GPU 超频频率 + + + + Overclocks the emulated GPU to increase dynamic resolution and render distance. +Use 256 for maximal performance and 512 for maximal graphics fidelity. + 将模拟的 GPU 超频,以提高动态分辨率和渲染距离。使用 256 可获得最大性能,使用 512 可获得最高的图形保真度。 + + + + GPU Unswizzle + GPU 还原 + + + + Accelerates BCn 3D texture decoding using GPU compute. +Disable if experiencing crashes or graphical glitches. + 利用 GPU 计算来加速 BCn 格式 3D 纹理的解码。如果遇到崩溃或画面花屏,请禁用此项。 + + + + GPU Unswizzle Max Texture Size + GPU 还原最大纹理尺寸 + + + + Sets the maximum size (MiB) for GPU-based texture unswizzling. +While the GPU is faster for medium and large textures, the CPU may be more efficient for very small ones. +Adjust this to find the balance between GPU acceleration and CPU overhead. + 设置基于 GPU 的纹理还原的最大尺寸(单位:MiB)。 +虽然 GPU 在处理中型和大型纹理时速度更快,但对于非常小的纹理,CPU 的效率可能更高。 +调整此设置,以便在 GPU 加速和 CPU 开销之间找到最佳平衡点。 + + + + GPU Unswizzle Stream Size + GPU 还原流大小 + + + + Sets the maximum amount of texture data (in MiB) processed per frame. +Higher values can reduce stutter during texture loading but may impact frame consistency. + 设置每帧处理的纹理数据最大量(单位:MiB)。 +较高的数值可以减少纹理加载时的卡顿,但可能会影响帧率的稳定性(即造成帧时间波动)。 + + + + GPU Unswizzle Chunk Size + GPU 还原块大小 + + + + Determines the number of depth slices processed in a single dispatch. +Increasing this can improve throughput on high-end GPUs but may cause TDR or driver timeouts on weaker hardware. + 确定在单次调度(Dispatch)中处理的深度切片(Depth Slices)数量。 +增加此数值可以提高高端 GPU 的吞吐量(处理效率),但在性能较弱的硬件上可能会引发 TDR(驱动程序重置)或驱动超时。 + + + Use Vulkan pipeline cache 启用 Vulkan 管线缓存 - + Enables GPU vendor-specific pipeline cache. This option can improve shader loading time significantly in cases where the Vulkan driver does not store pipeline cache files internally. 启用 GPU 供应商专用的管线缓存。 在 Vulkan 驱动程序内部不存储管线缓存的情况下,此选项可显著提高着色器加载速度。 - + Enable Compute Pipelines (Intel Vulkan Only) 启用计算管线 (仅限 Intel 显卡 Vulkan 模式) - - Enable compute pipelines, required by some games. -This setting only exists for Intel proprietary drivers, and may crash if enabled. + + 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. - 启用某些游戏所需的计算管线。 -此选项仅适用于英特尔专有驱动程序。如果启用,可能会造成崩溃。 -在其他的驱动程序上将始终启用计算管线。 + 某些游戏需要此功能。 +此设置仅适用于英特尔专用驱动,启用可能会导致崩溃。 +在所有其他驱动程序上始终启用计算管线。 - + Enable Reactive Flushing 启用反应性刷新 - + Uses reactive flushing instead of predictive flushing, allowing more accurate memory syncing. 使用反应性刷新取代预测性刷新,从而更精确地同步内存。 - + Sync to framerate of video playback 播放视频时帧率同步 - + Run the game at normal speed during video playback, even when the framerate is unlocked. 在视频播放期间以正常速度运行游戏,即使帧率未锁定。 - + Barrier feedback loops 屏障反馈环路 - + Improves rendering of transparency effects in specific games. 改进某些游戏中透明效果的渲染。 - + + Enable buffer history + 启用缓冲区历史 + + + + Enables access to previous buffer states. +This option may improve rendering quality and performance consistency in some games. + 允许访问之前的缓冲状态。 +这个选项可能会提升某些游戏的渲染质量和性能一致性。 + + + + Fix bloom effects + 修复泛光效果 + + + + Removes bloom in Burnout. + 去除《火爆狂飙》中的泛光特效。 + + + + Enable Legacy Rescale Pass + 启用旧版缩放 + + + + May fix rescale issues in some games by relying on behavior from the previous implementation. +Legacy behavior workaround that fixes line artifacts on AMD and Intel GPUs, and grey texture flicker on Nvidia GPUs in Luigis Mansion 3. + 通过依赖之前实现的行为,可能会修复部分游戏的缩放重叠问题。 +修复 AMD 和 Intel 显卡上的线条伪影,以及《路易斯洋楼3》中 Nvidia 显卡的灰色纹理闪烁的遗留行为变通方法。 + + + + Extended Dynamic State + 扩展动态状态 + + + + Controls the number of features that can be used in Extended Dynamic State. +Higher states allow for more features and can increase performance, but may cause additional graphical issues. + 控制在扩展动态状态中可使用的函数数量。更高的数值允许启用更多功能,并可能提升性能,但同时也可能导致额外的图形问题。 + + + + Vertex Input Dynamic State + 顶点输入动态状态 + + + + Enables vertex input dynamic state feature for better quality and performance. + 开启顶点输入动态状态功能来获得更好的质量和性能。 + + + + Sample Shading + 采样着色 + + + + Allows the fragment shader to execute per sample in a multi-sampled fragment instead of once per fragment. Improves graphics quality at the cost of performance. +Higher values improve quality but degrade performance. + 允许片段着色器在多重采样的片段中每个样本执行一次而不是每个片段执行一次。可以提高图形质量,但会降低性能。 +更高的值可以提高质量但会降低性能。 + + + RNG Seed 随机数生成器种子 - + Controls the seed of the random number generator. -Mainly used for speedrunning purposes. +Mainly used for speedrunning. 控制随机数生成器的种子。 -主要用于快速通关。 +主要用于竞速游戏。 - + Device Name 设备名称 - - The name of the emulated Switch. - 模拟 Switch 主机的名称。 + + The name of the console. + 主机的数量。 - + Custom RTC Date: 自定义系统时间: - - This option allows to change the emulated clock of the Switch. + + This option allows to change the clock of the console. Can be used to manipulate time in games. - 此选项允许更改 Switch 的模拟时钟。 -可用于在游戏中操纵时间。 + 此选项允许更改控制台的时钟。 +可用于操纵游戏中的时间。 - + + The number of seconds from the current unix time + 来自当前 unix 时间的秒数。 + + + Language: 语言: - - Note: this can be overridden when region setting is auto-select - 注意:当“地区”设置是“自动选择”时,此设置可能会被覆盖。 + + This option can be overridden when region setting is auto-select + 当区域设置为自动选择时可以使用此选项替代。 - + Region: 地区: - - The region of the emulated Switch. - 模拟 Switch 主机的所属地区。 + + The region of the console. + 主机的区域。 - + Time Zone: 时区: - - The time zone of the emulated Switch. - 模拟 Switch 主机的所属时区。 + + The time zone of the console. + 主机的时区。 - + Sound Output Mode: 声音输出模式: - + Console Mode: 控制台模式: - - Selects if the console is emulated in Docked or Handheld mode. + + Selects if the console is in Docked or Handheld mode. Games will change their resolution, details and supported controllers and depending on this setting. Setting to Handheld can help improve performance for low end systems. - 选择控制台处于主机模式还是掌机模式。 -游戏将根据此设置更改其分辨率、详细信息和支持的控制器。 -设置为掌机模式有助于提高低端 PC 上的模拟性能。 + 选择控制台是处于底座模式还是掌机模式。 +游戏会根据此设置改变分辨率、细节和支持的控制器。 +将设置为掌机模式可以帮助低端系统提高性能。 - - Prompt for user on game boot - 游戏启动时提示选择用户 + + Unit Serial + 单元序列号: - Ask to select a user profile on each boot, useful if multiple people use yuzu on the same PC. - 每次启动时询问用户选择一个用户配置文件。在多人使用同一台电脑上的 yuzu 时,这很有用。 + + Battery Serial + 电池序列号: - - Pause emulation when in background - 模拟器位于后台时暂停模拟 + + Debug knobs + 调试开关 - This setting pauses yuzu when focusing other windows. - 当用户聚焦在其他窗口时暂停 yuzu。 + + Prompt for user profile on boot + 启动时提示选择用户账户 - - Fast GPU Time (Hack) - + + Useful if multiple people use the same PC. + 在多人使用相同的 PC 时有效。 - - Overclocks the emulated GPU to increase dynamic resolution and render distance. -Use 128 for maximal performance and 512 for maximal graphics fidelity. - + + Pause when not in focus + 在丢失焦点时暂停 - - Extended Dynamic State - + + Pauses emulation when focusing on other windows. + 当焦点位于其它窗口时暂停模拟器。 - - Enables the VkExtendedDynamicState* extensions. -Higher dynamic states will generally improve performance, but may cause issues on certain games or devices. - - - - - Provoking Vertex - - - - - Improves lighting and vertex handling in certain games. -Only Vulkan 1.0+ devices support this extension. - - - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - - Ask to select a user profile on each boot, useful if multiple people use eden on the same PC. - - - - - This setting pauses eden when focusing other windows. - - - - + Confirm before stopping emulation 停止模拟时需要确认 - - This setting overrides game prompts asking to confirm stopping the game. + + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - 此设置将覆盖游戏中确认停止游戏的提示。 -启用此项将绕过游戏中的提示并直接退出模拟。 + 替代提示以确认停止模拟。 +启用它将绕过此类提示并直接退出模拟。 - + Hide mouse on inactivity 自动隐藏鼠标光标 - - This setting hides the mouse after 2.5s of inactivity. - 当鼠标停止活动超过 2.5 秒时隐藏鼠标光标。 + + Hides the mouse after 2.5s of inactivity. + 在 2.5 秒无活动后隐藏鼠标。 - + Disable controller applet 禁用控制器小程序 - - Forcibly disables the use of the controller applet by guests. -When a guest attempts to open the controller applet, it is immediately closed. - 强制禁用来宾程序使用控制器小程序。 -当来宾程序尝试打开控制器小程序时,控制器小程序会立即关闭。 + + Forcibly disables the use of the controller applet in emulated programs. +When a program attempts to open the controller applet, it is immediately closed. + 强制禁止在模拟程序中使用控制器小程序。 + 当程序尝试打开控制器小程序时,它会立即被关闭。 - + Check for updates - + 检查更新 - + Whether or not to check for updates upon startup. - + 在启动时是否检查更新。 - + Enable Gamemode 启用游戏模式 - + + Force X11 as Graphics Backend + 强制使用 X11 作为图形后端 + + + Custom frontend 自定义前端 - + Real applet 真实的小程序 - + Never - + 永不 - + On Load - + 加载时 - + Always - + 总是 - + CPU CPU - + GPU GPU - + CPU Asynchronous CPU 异步模拟 - + Uncompressed (Best quality) 不压缩 (最高质量) - + BC1 (Low quality) BC1 (低质量) - + BC3 (Medium quality) BC3 (中等质量) - - Conservative - 保守模式 - - - - Aggressive - 激进模式 - - - - OpenGL - OpenGL - - - - Vulkan - Vulkan - - - - Null - - - - - GLSL - GLSL - - - - GLASM (Assembly Shaders, NVIDIA Only) - GLASM (汇编着色器,仅限 NVIDIA 显卡) - - - - SPIR-V (Experimental, AMD/Mesa Only) - SPIR-V (实验性,仅限 AMD/Mesa) - - - - Normal - 正常 - - - - High - - - - - Extreme - 极高 - - - + + Auto 自动 - + + 30 FPS + 30 FPS + + + + 60 FPS + 60 FPS + + + + 90 FPS + 90 FPS + + + + 120 FPS + 120 FPS + + + + Conservative + 保守模式 + + + + Aggressive + 激进模式 + + + + Vulkan + Vulkan + + + + OpenGL GLSL + OpenGL GLSL + + + + OpenGL GLASM (Assembly Shaders, NVIDIA Only) + OpenGL GLASM (汇编着色器,仅限 NVIDIA 显卡) + + + + OpenGL SPIR-V (Experimental, AMD/Mesa Only) + OpenGL SPIR-V (实验性,仅限 AMD/Mesa) + + + + Null + + + + + Fast + 高速 + + + + Balanced + 平衡 + + + + Accurate 高精度 - - Unsafe - 低精度 - - - - Paranoid (disables most optimizations) - 偏执模式 (禁用绝大多数优化项) - - - - Dynarmic - 动态编译 - - - - NCE - 本机代码执行 - - - - Borderless Windowed - 无边框窗口 - - - - Exclusive Fullscreen - 独占全屏 - - - - No Video Output - 无视频输出 - - - - CPU Video Decoding - CPU 视频解码 - - - - GPU Video Decoding (Default) - GPU 视频解码 (默认) - - - - 0.25X (180p/270p) [EXPERIMENTAL] - - - - - 0.5X (360p/540p) [EXPERIMENTAL] - 0.5X (360p/540p) [实验性] - - - - 0.75X (540p/810p) [EXPERIMENTAL] - 0.75X (540p/810p) [实验性] - - - - 1X (720p/1080p) - 1X (720p/1080p) - - - - 1.5X (1080p/1620p) [EXPERIMENTAL] - 1.5X (1080p/1620p) [实验性] - - - - 2X (1440p/2160p) - 2X (1440p/2160p) - - - - 3X (2160p/3240p) - 3X (2160p/3240p) - - - - 4X (2880p/4320p) - 4X (2880p/4320p) - - - - 5X (3600p/5400p) - 5X (3600p/5400p) - - - - 6X (4320p/6480p) - 6X (4320p/6480p) - - - - 7X (5040p/7560p) - 7X (5040p/7560p) - - - - 8X (5760p/8640p) - 8X (5760p/8640p) - - - - Nearest Neighbor - 近邻取样 - - - - Bilinear - 双线性过滤 - - - - Bicubic - 双三线过滤 - - - - Gaussian - 高斯模糊 - - - - ScaleForce - 强制缩放 - - - - AMD FidelityFX™️ Super Resolution - AMD FidelityFX™️ 超级分辨率锐画技术 - - - - Area - - - - - None - - - - - FXAA - 快速近似抗锯齿 - - - - SMAA - 子像素形态学抗锯齿 - - - - Default (16:9) - 默认 (16:9) - - - - Force 4:3 - 强制 4:3 - - - - Force 21:9 - 强制 21:9 - - - - Force 16:10 - 强制 16:10 - - - - Stretch to Window - 拉伸窗口 - - - - Automatic - 自动 - - - + + Default 系统默认 - + + Unsafe (fast) + 不安全(快速) + + + + Safe (stable) + 安全(稳定) + + + + Unsafe + 低精度 + + + + Paranoid (disables most optimizations) + 偏执模式 (禁用绝大多数优化项) + + + + Debugging + 调试 + + + + Dynarmic + 动态编译 + + + + NCE + 本机代码执行 + + + + Borderless Windowed + 无边框窗口 + + + + Exclusive Fullscreen + 独占全屏 + + + + No Video Output + 无视频输出 + + + + CPU Video Decoding + CPU 视频解码 + + + + GPU Video Decoding (Default) + GPU 视频解码 (默认) + + + + 0.25X (180p/270p) [EXPERIMENTAL] + 0.25X (180p/270p) [实验性] + + + + 0.5X (360p/540p) [EXPERIMENTAL] + 0.5X (360p/540p) [实验性] + + + + 0.75X (540p/810p) [EXPERIMENTAL] + 0.75X (540p/810p) [实验性] + + + + 1X (720p/1080p) + 1X (720p/1080p) + + + + 1.25X (900p/1350p) [EXPERIMENTAL] + 1.25X (900p/1350p) [实验性] + + + + 1.5X (1080p/1620p) [EXPERIMENTAL] + 1.5X (1080p/1620p) [实验性] + + + + 2X (1440p/2160p) + 2X (1440p/2160p) + + + + 3X (2160p/3240p) + 3X (2160p/3240p) + + + + 4X (2880p/4320p) + 4X (2880p/4320p) + + + + 5X (3600p/5400p) + 5X (3600p/5400p) + + + + 6X (4320p/6480p) + 6X (4320p/6480p) + + + + 7X (5040p/7560p) + 7X (5040p/7560p) + + + + 8X (5760p/8640p) + 8X (5760p/8640p) + + + + Nearest Neighbor + 近邻取样 + + + + Bilinear + 双线性过滤 + + + + Bicubic + 双三线过滤 + + + + Gaussian + 高斯模糊 + + + + Lanczos + Lanczos + + + + ScaleForce + 强制缩放 + + + + AMD FidelityFX Super Resolution + AMD FidelityFX 超级分辨率 + + + + Area + 区域 + + + + MMPX + MMPX + + + + Zero-Tangent + 零切线 + + + + B-Spline + B-Spline + + + + Mitchell + Mitchell + + + + Spline-1 + Spline-1 + + + + + None + + + + + FXAA + 快速近似抗锯齿 + + + + SMAA + 子像素形态学抗锯齿 + + + + Default (16:9) + 默认 (16:9) + + + + Force 4:3 + 强制 4:3 + + + + Force 21:9 + 强制 21:9 + + + + Force 16:10 + 强制 16:10 + + + + Stretch to Window + 拉伸窗口 + + + + Automatic + 自动 + + + 2x 2x - + 4x 4x - + 8x 8x - + 16x 16x - + + 32x + 32x + + + + 64x + 64x + + + Japanese (日本語) 日语 (日本語) - + American English 美式英语 - + French (français) 法语 (français) - + German (Deutsch) 德语 (Deutsch) - + Italian (italiano) 意大利语 (italiano) - + Spanish (español) 西班牙语 (español) - + Chinese 中文 - + Korean (한국어) 韩语 (한국어) - + Dutch (Nederlands) 荷兰语 (Nederlands) - + Portuguese (português) 葡萄牙语 (português) - + Russian (Русский) 俄语 (Русский) - + Taiwanese 台湾中文 - + British English 英式英语 - + Canadian French 加拿大法语 - + Latin American Spanish 拉美西班牙语 - + Simplified Chinese 简体中文 - + Traditional Chinese (正體中文) 繁体中文 (正體中文) - + Brazilian Portuguese (português do Brasil) 巴西-葡萄牙语 (português do Brasil) - - + + Polish (polska) + 波兰语(波兰语) + + + + Thai (แบบไทย) + 泰语 + + + + Japan 日本 - + USA 美国 - + Europe 欧洲 - + Australia 澳大利亚 - + China 中国 - + Korea 韩国 - + Taiwan - 中国台湾 + 台湾地区 - + Auto (%1) Auto select time zone 自动 (%1) - + Default (%1) Default time zone 默认 (%1) - + CET 欧洲中部时间 - + CST6CDT 古巴标准时间&古巴夏令时 - + Cuba 古巴 - + EET 东欧时间 - + Egypt 埃及 - + Eire 爱尔兰 - + EST 东部标准时间 - + EST5EDT 东部标准时间&东部夏令时 - + GB 英国 - + GB-Eire 英国-爱尔兰时间 - + GMT - 格林威治标准时间 (GMT) + GMT - + GMT+0 GMT+0 - + GMT-0 GMT-0 - + GMT0 GMT0 - + Greenwich 格林威治 - + Hongkong - 中国香港 + 香港 - + HST 美国夏威夷时间 - + Iceland 冰岛 - + Iran 伊朗 - + Israel 以色列 - + Jamaica 牙买加 - + Kwajalein 夸贾林环礁 - + Libya 利比亚 - + MET 中欧时间 - + MST 山区标准时间 (北美) - + MST7MDT 山区标准时间&山区夏令时 (北美) - + Navajo 纳瓦霍 - + NZ 新西兰时间 - + NZ-CHAT 新西兰-查塔姆群岛 - + Poland 波兰 - + Portugal 葡萄牙 - + PRC 中国标准时间 - + PST8PDT 太平洋标准时间&太平洋夏令时 - + ROC 台湾时间 - + ROK 韩国时间 - + Singapore 新加坡 - + Turkey 土耳其 - + UCT UCT - + Universal 世界时间 - + UTC 协调世界时 - + W-SU 欧洲-莫斯科时间 - + WET 西欧时间 - + Zulu 祖鲁 - + Mono 单声道 - + Stereo 立体声 - + Surround 环绕声 - + 4GB DRAM (Default) 4GB DRAM (默认) - + 6GB DRAM (Unsafe) 6GB DRAM (不安全) - + 8GB DRAM - + 8GB DRAM - + 10GB DRAM (Unsafe) - + 10GB DRAM (不安全) - + 12GB DRAM (Unsafe) - + 12GB DRAM (不安全) - - Low (128) - - - - - Medium (256) - - - - - High (512) - - - - 8GB DRAM (Unsafe) - 8GB DRAM (不安全) - - - + Docked 主机模式 - + Handheld 掌机模式 - + + + Off + 关闭 + + + Boost (1700MHz) - + 加速 (1700MHz) - + Fast (2000MHz) - + 快速 (2000MHz) - + Always ask (Default) 总是询问 (默认) - + Only if game specifies not to stop 仅当游戏不希望停止时 - + Never ask 从不询问 + + + + Medium (256) + 中(256) + + + + + High (512) + 高(512) + + + + Very Small (16 MB) + 很小 (16 MB) + + + + Small (32 MB) + 较小 (32 MB) + + + + Normal (128 MB) + 正常 (128 MB) + + + + Large (256 MB) + 较大 (256 MB) + + + + Very Large (512 MB) + 很大 (512 MB) + + + + Very Low (4 MB) + 很低 (4 MB) + + + + Low (8 MB) + 低 (8 MB) + + + + Normal (16 MB) + 正常 (16 MB) + + + + Medium (32 MB) + 中 (32 MB) + + + + High (64 MB) + 高 (64 MB) + + + + Very Low (32) + 很低 (32) + + + + Low (64) + 低 (64) + + + + Normal (128) + 正常 (128) + + + + Disabled + 禁用 + + + + ExtendedDynamicState 1 + 扩展动态状态 1 + + + + ExtendedDynamicState 2 + 扩展动态状态 2 + + + + ExtendedDynamicState 3 + 扩展动态状态 3 + + + + Tree View + 树景视图 + + + + Grid View + 网格视图 + ConfigureApplets @@ -2052,7 +2357,7 @@ When a guest attempts to open the controller applet, it is immediately closed.恢复默认 - + Auto 自动 @@ -2125,9 +2430,10 @@ When a guest attempts to open the controller applet, it is immediately closed. -<div style="white-space: nowrap">这个选项提升了来宾程序的内存访问速度。</div> + <div style="white-space: nowrap">这个选项提升了来宾程序的内存访问速度。</div> <div style="white-space: nowrap">启用内嵌到 PageTable::pointers 指向已发射代码的指针。</div> -<div style="white-space: nowrap">禁用此选项将强制通过 Memory::Read/Memory::Write 函数进行内存访问。</div> +<div style="white-space: nowrap">禁用此选项将强制通过 Memory::Read/Memory::Write 函数进行内存访问。</div> + @@ -2140,8 +2446,8 @@ When a guest attempts to open the controller applet, it is immediately closed. -<div>该选项通过允许发出的基本块直接跳转到其他基本块(如果目标 PC 是静态的)来避免调度器的查找。</div> - + <div>该选项通过允许发出的基本块直接跳转到其他基本块(如果目标 PC 是静态的)来避免调度器的查找。</div> + @@ -2154,8 +2460,8 @@ When a guest attempts to open the controller applet, it is immediately closed. -<div>该选项通过跟踪 BL 指令的潜在返回地址来避免调度器查找。这近似于 CPU 返回堆栈缓冲区的情况。</div> - + <div>该选项通过跟踪 BL 指令的潜在返回地址来避免调度器查找。这近似于 CPU 返回堆栈缓冲区的情况。</div> + @@ -2168,8 +2474,8 @@ When a guest attempts to open the controller applet, it is immediately closed. -<div>启用两层调度系统。首先使用一个更快的调度程序跳转至目标 MRU 缓存。如果失败,调度返回到较慢的 C++ 调度程序。</div> - + <div>启用两层调度系统。首先使用一个更快的调度程序跳转至目标 MRU 缓存。如果失败,调度返回到较慢的 C++ 调度程序。</div> + @@ -2182,8 +2488,8 @@ When a guest attempts to open the controller applet, it is immediately closed. -<div>启用 IR 优化,以减少 CPU 对上下文结构的不必要访问。</div> - + <div>启用 IR 优化,以减少 CPU 对上下文结构的不必要访问。</div> + @@ -2196,8 +2502,8 @@ When a guest attempts to open the controller applet, it is immediately closed. -<div>启用涉及恒定传播的 IR 优化。</div> - + <div>启用涉及恒定传播的 IR 优化。</div> + @@ -2210,8 +2516,8 @@ When a guest attempts to open the controller applet, it is immediately closed. -<div>启用其他的 IR 优化。</div> - + <div>启用其他的 IR 优化。</div> + @@ -2225,9 +2531,9 @@ When a guest attempts to open the controller applet, it is immediately closed. -<div style="white-space: nowrap">启用时,只有当访问越过页面边界时才会触发偏移。</div> + <div style="white-space: nowrap">启用时,只有当访问越过页面边界时才会触发偏移。</div> <div style="white-space: nowrap">禁用时,所有未对齐的访问都会触发偏移。</div> - + @@ -2238,7 +2544,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all memory accesses to use Software MMU Emulation.</div> @@ -2256,7 +2562,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up exclusive memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all exclusive memory accesses to use Software MMU Emulation.</div> @@ -2277,9 +2583,9 @@ When a guest attempts to open the controller applet, it is immediately closed. -<div style="white-space: nowrap">此优化能提高正在运行的游戏对独占内存的访问速度。</div> + <div style="white-space: nowrap">此优化能提高正在运行的游戏对独占内存的访问速度。</div> <div style="white-space: nowrap">启用此功能将减少独占内存访问条件下 fastmem 机制失败带来的性能开销。</div> - + @@ -2290,12 +2596,12 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up memory accesses by allowing invalid memory accesses to succeed.</div> - <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> + <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> -<div style="white-space: nowrap">此选项允许无效内存的访问从而提高内存访问速度。</div> + <div style="white-space: nowrap">此选项允许无效内存的访问从而提高内存访问速度。</div> <div style="white-space: nowrap">启用此选项将减少内存访问的开销,并且对不访问无效内存的程序没有影响。</div> - + @@ -2331,30 +2637,30 @@ When a guest attempts to open the controller applet, it is immediately closed.日志 - - Open Log Location - 打开日志位置 - - - + Global Log Filter 全局日志过滤器 - + When checked, the max size of the log increases from 100 MB to 1 GB 选中此项后,日志文件的最大大小从 100MB 增加到 1GB - + Enable Extended Logging** 启用扩展的日志记录** - + Show Log in Console 显示日志窗口 + + + Open Log Location + 打开日志位置 + Homebrew @@ -2491,18 +2797,9 @@ When a guest attempts to open the controller applet, it is immediately closed.启用其他类型的控制器 - - Censor username in logs - - - - - **This will be reset automatically when eden closes. - - - - Enable Auto-Stub** - 启用自动函数打桩(Auto-Stub)** + + Enable Auto-Stub + 开启自动存根 @@ -2511,8 +2808,8 @@ When a guest attempts to open the controller applet, it is immediately closed. - Enable CPU Debugging - 启用 CPU 调试模式 + Use dev.keys + 使用 dev.keys @@ -2525,43 +2822,74 @@ When a guest attempts to open the controller applet, it is immediately closed.调试选项 - - Flush log output on each line - + + Battery Serial: + 电池序列号: - - Enable FS Access Log - 启用文件系统访问记录 + + Bitmask for quick development toggles + 用于快速开发切换的位掩码 - + + Set debug knobs (bitmask) + 设置调试开关 (位掩码) + + + + 16-bit debug knob set for quick development toggles + 用于快速开发切换的 16 位调试开关组 + + + + (bitmask) + (位掩码) + + + + Debug Knobs: + 调试开关: + + + + Unit Serial: + 单元序列号: + + + Enable this to output the latest generated audio command list to the console. Only affects games using the audio renderer. 启用此选项会将最新的音频命令列表输出到控制台。只影响使用音频渲染器的游戏。 - - Enable Auto-Stub - - - - + Dump Audio Commands To Console** 将音频命令转储至控制台** - + + Flush log output on each line + 每行刷新日志输出 + + + + Enable FS Access Log + 启用文件系统访问记录 + + + Enable Verbose Reporting Services** 启用详细报告服务** - **This will be reset automatically when yuzu closes. - **该选项将在 yuzu 关闭时自动重置。 + + Censor username in logs + 审查日志中的用户名 - - Web applet not compiled - Web 小程序未编译 + + **This will be reset automatically when Eden closes. + **这会在 Eden 关闭时自动重置。 @@ -2603,14 +2931,10 @@ When a guest attempts to open the controller applet, it is immediately closed. ConfigureDialog - - yuzu Configuration - yuzu 设置 - - eden Configuration - + Eden Configuration + Eden 设置 @@ -2618,88 +2942,88 @@ When a guest attempts to open the controller applet, it is immediately closed.只有当游戏不在运行时,某些设置项才可用。 - + Applets 小程序 - - + + Audio 声音 - - + + CPU CPU - + Debug 调试 - + Filesystem 文件系统 - - + + General 通用 - - + + Graphics 图形 - + GraphicsAdvanced 高级图形选项 - - GraphicsExtensions - + + GraphicsExtra + 图形增强 - + Hotkeys 热键 - - + + Controls 控制 - + Profiles 用户配置 - + Network 网络 - - + + System 系统 - + Game List 游戏列表 - + Web 网络 @@ -2729,9 +3053,10 @@ When a guest attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2741,107 +3066,183 @@ When a guest attempts to open the controller applet, it is immediately closed.SD 卡 - + + Save Data + 存档 + + + Gamecard 游戏卡带 - + Path 路径 - + Inserted 已插入 - + Current Game 当前游戏 - + Patch Manager 补丁管理 - + Dump Decompressed NSOs 转储已解压的 NSO 文件 - + Dump ExeFS 转储 ExeFS - + Mod Load Root Mod 加载根目录 - + Dump Root 转储根目录 - + Caching 缓存 - + Cache Game List Metadata 缓存游戏列表数据 - - - - + Reset Metadata Cache 重置缓存数据 - + Select Emulated NAND Directory... 选择模拟 NAND 目录... - + Select Emulated SD Directory... 选择模拟 SD 卡目录... - + + + Select Save Data Directory... + 选择存档目录... + + + Select Gamecard Path... 选择游戏卡带路径... - + Select Dump Directory... 选择转储目录... - + Select Mod Load Directory... 选择 Mod 载入目录... - - The metadata cache is already empty. - 缓存数据已为空。 + + Save Data Directory + 选择存档目录 - - The operation completed successfully. - 操作已成功完成。 + + Choose an action for the save data directory: + 为存档目录选择一个操作: - - The metadata cache couldn't be deleted. It might be in use or non-existent. - 缓存数据删除失败。它可能不存在或正在被使用。 + + Set Custom Path + 设置自定义路径 + + + + Reset to NAND + 重置 NAND + + + + Save data exists in both the old and new locations. + +Old: %1 +New: %2 + +Would you like to migrate saves from the old location? +WARNING: This will overwrite any conflicting saves in the new location! + 保存存档同时在旧位置和新位置。旧: %1新: %2是否要将存档从旧位置迁移到新位置?警告:此操作将会覆盖新位置中任何冲突的存档! + + + + Would you like to migrate your save data to the new location? + +From: %1 +To: %2 + 你是否要迁移存档位置?来自: %1将到: %2 + + + + Migrate Save Data + 迁移存档 + + + + Migrating save data... + 迁移存档... + + + + Cancel + 取消 + + + + + Migration Failed + 迁移失败 + + + + Failed to create destination directory. + 创建目标目录失败。 + + + + Failed to migrate save data: +%1 + 迁移存档数据失败:%1 + + + + Migration Complete + 迁移完成 + + + + Save data has been migrated successfully. + +Would you like to delete the old save data? + 存档已成功迁移。是否要删除旧存档数据? @@ -2859,28 +3260,54 @@ When a guest attempts to open the controller applet, it is immediately closed. - Linux - Linux + External Content + 外部内容 - + + Add directories to scan for DLCs and Updates without installing to NAND + 添加目录以扫描 DLC 和更新,无需安装到 NAND 系统 + + + + Add Directory + 添加目录 + + + + Remove Selected + 移除选择 + + + Reset All Settings 重置所有设置项 - yuzu - yuzu + + Eden + Eden - - eden - - - - + This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed? 将重置模拟器所有设置并删除所有游戏的单独设置。这不会删除游戏目录、个人文件及输入配置文件。是否继续? + + + Select External Content Directory... + 选择外部内容目录... + + + + Directory Already Added + 目录已添加 + + + + This directory is already in the list. + 这个目录已经在列表中了。 + ConfigureGraphics @@ -2910,33 +3337,33 @@ When a guest attempts to open the controller applet, it is immediately closed.背景颜色: - + % FSR sharpening percentage (e.g. 50%) % - + Off 关闭 - + VSync Off 垂直同步关 - + Recommended 推荐 - + On 开启 - + VSync On 垂直同步开 @@ -2954,7 +3381,7 @@ When a guest attempts to open the controller applet, it is immediately closed.高级 - + Advanced Graphics Settings 高级图形选项 @@ -2964,24 +3391,38 @@ When a guest attempts to open the controller applet, it is immediately closed. Form - 类型 + 来自 - Extensions - + Extras + 额外 - - Vulkan Extension Settings - + + Hacks + Hacks - - While it's recommended to use state 3, some games may perform better on lower states. Setting to 0 (disabled) may also break games. -If your GPU is older (i.e. RX570/580 or older), it may not support these features. If this is the case, set the slider to 0 and uncheck all boxes. -These settings are experimental, and may cause black screens. If your games fail to boot or are stuck on a black screen, change these settings around. - + + Changing these options from their default may cause issues. Novitii cavete! + 更改这些选项可能会导致问题。新手小心! + + + + Vulkan Extensions + Vulkan 扩展 + + + + % + Sample Shading percentage (e.g. 50%) + % + + + + Extended Dynamic State is disabled on macOS due to MoltenVK compatibility issues that cause black screens. + 由于 MoltenVK 兼容性问题会导致黑屏,macOS 上已禁用扩展动态状态。 @@ -3012,75 +3453,75 @@ These settings are experimental, and may cause black screens. If your games fail 恢复默认 - + Action 作用 - + Hotkey 热键 - + Controller Hotkey 控制器热键 - - - + + + Conflicting Key Sequence 按键冲突 - - + + The entered key sequence is already assigned to: %1 输入的按键序列已分配给: %1 - + [waiting] [请按键] - + Invalid 无效 - + Invalid hotkey settings 无效的热键设置 - + An error occurred. Please report this issue on github. 发生错误。请在 GitHub 提交 Issue。 - + Restore Default 恢复默认 - + Clear 清除 - + Conflicting Button Sequence 键位冲突 - + The default button sequence is already assigned to: %1 默认的按键序列已分配给: %1 - + The default key sequence is already assigned to: %1 默认的按键序列已分配给: %1 @@ -3400,12 +3841,8 @@ These settings are experimental, and may cause black screens. If your games fail - Requires restarting eden - - - - Requires restarting yuzu - 需要重启 yuzu + Requires restarting Eden + 需要重启 Eden @@ -3555,30 +3992,19 @@ These settings are experimental, and may cause black screens. If your games fail - + Left Stick 左摇杆 - - - - - - - Up - - - - - - - - - - - Left - + + + + + + + Down + @@ -3592,14 +4018,25 @@ These settings are experimental, and may cause black screens. If your games fail - - - - - - - Down - + + + + + + + + Left + + + + + + + + + + Up + @@ -3646,14 +4083,6 @@ These settings are experimental, and may cause black screens. If your games fail D-Pad 十字方向键 - - - - - - SL - SL - @@ -3663,59 +4092,55 @@ These settings are experimental, and may cause black screens. If your games fail SR - - - - L - L + + + + + SL + SL - + ZL ZL + + + + + L + L + Minus - - - - Capture - 截图 - - + Plus - - - Home - Home + + + + ZR + ZR - - + + R R - - - - - ZR - ZR - Motion 1 @@ -3726,6 +4151,18 @@ These settings are experimental, and may cause black screens. If your games fail Motion 2 体感 2 + + + + Capture + 截图 + + + + + Home + Home + Face Buttons @@ -3738,10 +4175,10 @@ These settings are experimental, and may cause black screens. If your games fail X - - - Y - Y + + + B + B @@ -3750,14 +4187,14 @@ These settings are experimental, and may cause black screens. If your games fail A - - - B - B + + + Y + Y - + Right Stick 右摇杆 @@ -3772,242 +4209,242 @@ These settings are experimental, and may cause black screens. If your games fail 设置 - - - - + + + + Clear 清除 - - - - - + + + + + [not set] [未设置] - - - + + + Invert button 反转按键 - - + + Toggle button 切换按键 - + Turbo button 连发键 - - + + Invert axis 轴方向倒置 - - - + + + Set threshold 阈值设定 - - + + Choose a value between 0% and 100% 选择一个介于 0% 和 100% 之间的值 - + Toggle axis 切换轴 - + Set gyro threshold 陀螺仪阈值设定 - + Calibrate sensor 校准传感器 - + Map Analog Stick 映射摇杆 - + After pressing OK, first move your joystick horizontally, and then vertically. To invert the axes, first move your joystick vertically, and then horizontally. 在按下确定后,首先水平移动你的手柄,然后垂直移动它。 如果要使体感方向倒置,首先垂直移动你的手柄,然后水平移动它。 - + Center axis 中心轴 - - + + Deadzone: %1% 摇杆死区:%1% - - + + Modifier Range: %1% 摇杆灵敏度:%1% - - + + Pro Controller - Pro Controller + Pro 控制器 - + Dual Joycons 双 Joycons 手柄 - + Left Joycon 左 Joycon 手柄 - + Right Joycon 右 Joycon 手柄 - + Handheld 掌机模式 - + GameCube Controller GameCube 控制器 - + Poke Ball Plus 精灵球 PLUS - + NES Controller NES 控制器 - + SNES Controller SNES 控制器 - + N64 Controller N64 控制器 - + Sega Genesis 世嘉创世纪 - + Start / Pause 开始 / 暂停 - + Z Z - + Control Stick 控制摇杆 - + C-Stick C 摇杆 - + Shake! 摇动! - + [waiting] [等待中] - + New Profile 新建自定义设置 - + Enter a profile name: 输入配置文件名称: - - + + Create Input Profile 新建输入配置文件 - + The given profile name is not valid! 输入的配置文件名称无效! - + Failed to create the input profile "%1" 新建输入配置文件 "%1" 失败 - + Delete Input Profile 删除输入配置文件 - + Failed to delete the input profile "%1" 删除输入配置文件 "%1" 失败 - + Load Input Profile 加载输入配置文件 - + Failed to load the input profile "%1" 加载输入配置文件 "%1" 失败 - + Save Input Profile 保存输入配置文件 - + Failed to save the input profile "%1" 保存输入配置文件 "%1" 失败 @@ -4030,15 +4467,6 @@ To invert the axes, first move your joystick vertically, and then horizontally.< 系统默认 - - ConfigureLinuxTab - - - - Linux - Linux - - ConfigureMotionTouch @@ -4064,7 +4492,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< - + Configure 设置 @@ -4094,111 +4522,93 @@ To invert the axes, first move your joystick vertically, and then horizontally.< 端口: - - Learn More - 了解更多 - - - - + + Test 测试 - + Add Server 添加服务器 - + Remove Server 移除服务器 - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">了解更多</span></a> - - - + %1:%2 %1:%2 - yuzu - yuzu + + + + + + + Eden + Eden - - <a href='https://eden-emulator.github.io/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - - - - + Port number has invalid characters 端口号中包含无效字符 - - - - - - - eden - - - - + Port has to be in range 0 and 65353 端口必须为 0 到 65353 之间 - + IP address is not valid 无效的 IP 地址 - + This UDP server already exists 此 UDP 服务器已存在 - + Unable to add more than 8 servers 最多只能添加 8 个服务器 - + Testing 测试中 - + Configuring 配置中 - + Test Successful 测试成功 - + Successfully received data from the server. 已成功地从服务器获取数据。 - + Test Failed 测试失败 - + Could not receive valid data from the server.<br>Please verify that the server is set up correctly and the address and port are correct. 无法从服务器获取数据。<br>请验证服务器是否正在运行,以及地址和端口是否配置正确。 - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. UDP 测试或触摸校准正在进行中。<br>请耐心等待。 @@ -4325,9 +4735,9 @@ Current values are %1% and %2% respectively. 网络接口 - - None - + + Enable Airplane Mode + 启用飞行模式 @@ -4383,49 +4793,54 @@ Current values are %1% and %2% respectively. 只有当游戏不在运行时,某些设置项才可用。 - + Add-Ons 附加项 - + System 系统 - + CPU CPU - + Graphics 图形 - + Adv. Graphics 高级图形 - - GPU Extensions - + + Ext. Graphics + 扩展图形 - + Audio 声音 - + Input Profiles 输入配置文件 - Linux - Linux + Network + 网络 + + + + Applets + 小程序 @@ -4446,15 +4861,114 @@ Current values are %1% and %2% respectively. 附加项 - + + Import Mod from ZIP + 导入 ZIP 档的模组 + + + + Import Mod from Folder + 导入目录下的模组 + + + Patch Name 补丁名称 - + Version 版本 + + + Mod Install Succeeded + 模组安装成功 + + + + Successfully installed all mods. + 成功安装了所有模组。 + + + + Mod Install Failed + 模组安装失败 + + + + Failed to install the following mods: + %1 +Check the log for details. + 未能安装以下模组: + %1 +查看日志以获取详细信息。 + + + + Mod Folder + 模组文件夹 + + + + Zipped Mod Location + 压缩模组位置 + + + + Zipped Archives (*.zip) + 压缩文件 (*.zip) + + + + Invalid Selection + 无效选择 + + + + Only mods, cheats, and patches can be deleted. +To delete NAND-installed updates, right-click the game in the game list and click Remove -> Remove Installed Update. + 只有模组、作弊码和补丁可以被删除。 +要删除 NAND 安装的更新,请在游戏列表中右键点击游戏,然后点击“移除->移除已安装的更新”。 + + + + You are about to delete the following installed mods: + + 你即将删除以下已安装的模组: + + + + +Once deleted, these can NOT be recovered. Are you 100% sure you want to delete them? + +一旦删除,这些数据就无法恢复。你百分之百确定要删除它们吗? + + + + Delete add-on(s)? + 删除模组? + + + + Successfully deleted + 删除成功 + + + + Successfully deleted all selected mods. + 成功删除了所有选择的模组。 + + + + &Delete + 删除 (&D) + + + + &Open in File Manager + + ConfigureProfileManager @@ -4484,32 +4998,17 @@ Current values are %1% and %2% respectively. 用户名 - - Set Image - 设置图像 - - - + Add 添加 - - Rename - 重命名 - - - - Remove - 移除 - - - + Profile management is available only when game is not running. 只有当游戏不在运行时,才能进行用户配置的管理。 - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -4517,100 +5016,80 @@ Current values are %1% and %2% respectively. %2 - - Enter Username - 输入用户名 - - - + Users 用户 - - Enter a username for the new user: - 输入新用户的用户名: - - - - Enter a new username: - 输入新的用户名: - - - - Select User Image - 选择用户图像 - - - - JPEG Images (*.jpg *.jpeg) - JPEG 图像 (*.jpg *.jpeg) - - - + Error deleting image 删除图像时出错 - + Error occurred attempting to overwrite previous image at: %1. 尝试覆盖该用户的现有图像时出错: %1 - + Error deleting file 删除文件时出错 - + Unable to delete existing file: %1. 无法删除文件: %1 - + Error creating user image directory 创建用户图像目录时出错 - + Unable to create directory %1 for storing user images. 无法创建存储用户图像的目录 %1 。 - - Error copying user image - 复制用户图像时出错 + + Error saving user image + 保存用户图像错误 - - Unable to copy image from %1 to %2 - 无法将图像从 %1 复制到 %2 + + Unable to save image to file + 无法保存图像到文件 - - Error resizing user image - 调整用户图像大小时出错 + + &Edit + 编辑 (&E) - - Unable to resize image - 无法调整图像的大小 + + &Delete + 删除 (&D) + + + + Edit User + 编辑用户 ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. 删除此用户?此用户保存的所有数据都将被删除。 - + Confirm Delete 确认删除 - + Name: %1 UUID: %2 名称: %1 @@ -4663,7 +5142,7 @@ UUID: %2 - + Enable 启用 @@ -4674,7 +5153,7 @@ UUID: %2 - + Not connected 未连接 @@ -4684,63 +5163,63 @@ UUID: %2 恢复默认 - + Clear 清除 - + [not set] [未设置] - + Invert axis 轴方向倒置 - - + + Deadzone: %1% 摇杆死区:%1% - + Error enabling ring input 启用健身环输入时出错 - + Direct Joycon driver is not enabled 未启用 Joycon 直接驱动 - + Configuring 配置中 - + The current mapped device doesn't support the ring controller 当前映射的设备不支持健身环控制器 - + The current mapped device doesn't have a ring attached 当前映射的设备未连接健身环控制器 - + The current mapped device is not connected 当前映射的设备未连接 - + Unexpected driver result %1 意外的驱动结果: %1 - + [waiting] [请按键] @@ -4764,7 +5243,7 @@ UUID: %2 核心 - + Warning: "%1" is not a valid language for region "%2" 警告:“ %1 ”并不是“ %2 ”地区的有效语言 @@ -4776,14 +5255,10 @@ UUID: %2 TAS TAS - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the yuzu website.</p></body></html> - <html><head/><body><p>通过读取与 TAS-nx 脚本具有相同格式的脚本来读取控制器的输入。<br/>有关详细信息,请参阅 yuzu 官方网站的<a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">帮助页面</span></a>。</p></body></html> - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the eden website.</p></body></html> - + <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the user handbook.</p></body></html> + <html><head/><body><p>使用与 TAS-nx 脚本相同的格式从脚本中读取控制器输入。<br/>如需更详细的说明,请参阅用户手册。</p></body></html> @@ -4816,17 +5291,22 @@ UUID: %2 遇到载入画面时暂停执行 - + + Show recording dialog + + + + Script Directory 脚本目录 - + Path 路径 - + ... ... @@ -4834,12 +5314,12 @@ UUID: %2 ConfigureTasDialog - + TAS Configuration TAS 设置 - + Select TAS Load Directory... 选择 TAS 载入目录... @@ -4943,14 +5423,10 @@ Drag points to change position, or double-click table cells to edit values.Configure Touchscreen 触摸屏设置 - - Warning: The settings in this page affect the inner workings of yuzu's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - 警告:此页面中的设置会影响 yuzu 的模拟触摸屏的内部工作方式。改变它们可能造成不良后果,例如触摸屏完全或部分失效。如果您不知道自己在做什么,请不要使用此页面。 - - Warning: The settings in this page affect the inner workings of eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - + Warning: The settings in this page affect the inner workings of Eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. + 警告: 此页面中的设置会影响 Eden 模拟触摸屏的内部运行。更改这些设置可能导致不良后果,例如触摸屏部分或完全无法使用。只有在明确知道自己在做什么的情况下才使用此页面。 @@ -4981,64 +5457,43 @@ Drag points to change position, or double-click table cells to edit values. ConfigureUI - - - + + None - - - Small (32x32) - 小 (32x32) - - Standard (64x64) - 标准 (64x64) - - - - Large (128x128) - 大 (128x128) - - - - Full Size (256x256) - 最大 (256x256) - - - Small (24x24) 小 (24x24) - + Standard (48x48) 标准 (48x48) - + Large (72x72) 大 (72x72) - + Filename 文件名 - + Filetype 文件类型 - + Title ID 游戏 ID - + Title Name 游戏名称 @@ -5107,71 +5562,66 @@ Drag points to change position, or double-click table cells to edit values. - Game Icon Size: - 游戏图标大小: - - - Folder Icon Size: 文件夹图标大小: - + Row 1 Text: 第一行: - + Row 2 Text: 第二行: - + Screenshots 捕获截图 - + Ask Where To Save Screenshots (Windows Only) 询问保存截图的位置 (仅限 Windows ) - + Screenshots Path: - 截图保存位置: + 截图保存位置: - + ... ... - + TextLabel 文本水印 - + Resolution: 分辨率: - + Select Screenshots Path... 选择截图保存位置... - + <System> <System> - + English 英语 - + Auto (%1 x %2, %3 x %4) Screenshot width value 自动 (%1 x %2, %3 x %4) @@ -5269,170 +5719,178 @@ Drag points to change position, or double-click table cells to edit values.Web 网络 - - yuzu Web Service - yuzu 网络服务 - - - By providing your username and token, you agree to allow yuzu to collect additional usage data, which may include user identifying information. - 提供您的用户名和令牌意味着您同意让 yuzu 收集额外的使用数据,其中可能包括用户识别信息。 - - eden Web Service - + Eden Web Service + Eden 网络服务 - - By providing your username and token, you agree to allow eden to collect additional usage data, which may include user identifying information. - - - - - Verify - 验证 - - - - Sign up - 注册 - - - + Token: - 令牌: + 令牌: - + Username: - 用户名: + 用户名: - - What is my token? - 我的令牌是? + + Generate + 生成 - + Web Service configuration can only be changed when a public room isn't being hosted. 公共房间未被创建时,才能更改网络服务设置。 - Telemetry - 使用数据共享 - - - Share anonymous usage data with the yuzu team - 与 yuzu 团队共享匿名使用数据 - - - Learn more - 了解更多 - - - Telemetry ID: - 数据 ID: - - - Regenerate - 重新生成 - - - + Discord Presence Discord 状态 - + Show Current Game in your Discord Status 在您的 Discord 状态中显示当前游戏 - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">了解更多</span></a> - - - - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">注册</span></a> - - - - <a href='https://evilperson1337.notion.site/Hosting-a-Room-Inside-of-Eden-20457c2edaf680108abac6215a79acdb'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - - - - - Warning - - - + - Verification is currently nonfunctional, instead generate a random 48-character string with only lowercase a-z. - - - - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">我的令牌是?</span></a> - - - Telemetry ID: 0x%1 - 数据 ID: 0x%1 - - - Unspecified - 未指定 - - - Token not verified - 令牌未被验证 - - - Token was not verified. The change to your token has not been saved. - 令牌未被验证。您对用户名和令牌的更改尚未保存。 - - - - Unverified, please click Verify before saving configuration + All Good Tooltip - 令牌未验证,请在保存配置前先进行验证。 + 全部正常 - Verifying... - 验证中... - - - Verified + + Must be between 4-20 characters Tooltip - 已验证 + 必须在4-20个字符之间 - Verification failed + + Must be 48 characters, and lowercase a-z Tooltip - 验证失败 - - - Verification failed - 验证失败 - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - 验证失败。请检查您输入的令牌是否正确,并且确保您的互联网连接正常。 + 必须为48个字符,且a-z为小写 ControllerDialog - + Controller P1 控制器 P1 - + &Controller P1 控制器 P1 (&C) + + DataDialog + + + Data Manager + 数据管理器 + + + + Deleting ANY data is IRREVERSABLE! + 删除任何数据都是不可逆的! + + + + Shaders + 着色器 + + + + UserNAND + 用户 NAND + + + + SysNAND + 系统 NAND + + + + Mods + Mod + + + + Saves + 存档 + + + + DataWidget + + + Form + 来自 + + + + Tooltip + 工具提示 + + + + Open with your system file manager + 使用您系统的文件管理器打开 + + + + Delete all data in this directory. THIS IS 100% IRREVERSABLE! + 删除此目录中的所有数据。这是 100% 不可逆的! + + + + Export all data in this directory. This may take a while! + 导出此目录中的所有数据。此过程可能需要一些时间! + + + + Import data for this directory. This may take a while, and will delete ALL EXISTING DATA! + 导入此目录的数据。这可能需要一些时间,并且会删除所有现有数据! + + + + Calculating... + 正在计算... + + + + DepsDialog + + + Eden Dependencies + Eden 依赖项 + + + + <html><head/><body><p><span style=" font-size:28pt;">Eden Dependencies</span></p></body></html> + <html><head/><body><p><span style=" font-size:28pt;">Eden 依赖项</span></p></body></html> + + + + <html><head/><body><p>The projects that make Eden possible</p></body></html> + <html><head/><body><p>让 Eden 成为可能的项目</p></body></html> + + + + Dependency + 依赖项 + + + + Version + 版本 + + DirectConnect @@ -5494,1511 +5952,153 @@ Drag points to change position, or double-click table cells to edit values. Username is not valid. Must be 4 to 20 alphanumeric characters. - 用户名无效。必须是 4 - 20 个数字和英文字符。 + 用户名无效。必须是4到20个字母、数字字符。 Room name is not valid. Must be 4 to 20 alphanumeric characters. - 房间名称无效。必须是 4 - 20 个数字和英文字符。 + 房间名称无效。必须是4到20个字母数字字符。 Username is already in use or not valid. Please choose another. - 用户名无效或已被他人使用。请选择其他的用户名。 + 用户名已被使用或无效。请选择其他用户名。 IP is not a valid IPv4 address. - 此 IP 不是有效的 IPv4 地址。 + IP 不是一个有效的 IPv4 地址。 Port must be a number between 0 to 65535. - 端口号必须位于 0 至 65535 之间。 + 请输入 0 到 65535 之间的数字。 You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - 创建房间需要确定首选游戏。如果您的游戏列表中没有任何游戏,请单击游戏列表的加号图标添加游戏文件夹。 + 您必须选择一个首选游戏来创建房间。如果您的游戏列表中还没有任何游戏,请点击游戏列表中的加号图标添加一个游戏文件夹。 Unable to find an internet connection. Check your internet settings. - 找不到网络连接。请检查您的网络设置。 + 找不到网络连接。请检查您的网络设置。 Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - 无法连接到服务器。请验证连接是否正确无误。如果仍然无法连接,请联系房主,并验证服务器是否正确配置了外部端口。 + 无法连接到服务器。请检查连接设置是否正确。如果您仍然无法连接,请联系房主,并验证服务器是否正确配置了外部端口。 Unable to connect to the room because it is already full. - 无法连接到该房间,因为该房间已满员。 + 无法连接到该房间,因为该房间已满。 - Creating a room failed. Please retry. Restarting eden might be necessary. - + Creating a room failed. Please retry. Restarting Eden might be necessary. + 创建房间失败。请重试。重启 Eden 可能会有助于解决问题。 The host of the room has banned you. Speak with the host to unban you or try a different room. - 此房间的主人已将您封禁。请联系房主进行解封或选择其他房间。 + 此房间的主人已将您封禁。请联系房主进行解封或选择其他房间。 - Version mismatch! Please update to the latest version of eden. If the problem persists, contact the room host and ask them to update the server. - + Version mismatch! Please update to the latest version of Eden. If the problem persists, contact the room host and ask them to update the server. + 版本不匹配!请升级到最新版本的 Eden。如果问题依然存在,请联系房间主机拥有者并建议他们升级服务器。 Incorrect password. - 密码错误。 + 密码错误。 An unknown error occurred. If this error continues to occur, please open an issue - 发生未知错误。如果此错误依然存在,请及时反馈问题。 + 发生了未知错误。如果此错误继续发生,请打开一个Issue。 Connection to room lost. Try to reconnect. - 与房间的连接丢失。请尝试重新连接。 + 与房间的连接丢失。尝试重新连接。 You have been kicked by the room host. - 您已被房主踢出房间。 + 你被房间主人踢了。 IP address is already in use. Please choose another. - 此 IP 地址已在使用中。请选择其他地址。 + IP地址已在使用中。请选择另一个。 You do not have enough permission to perform this action. - 您没有足够的权限执行此操作。 + 您没有足够的权限执行此操作。 The user you are trying to kick/ban could not be found. They may have left the room. - 找不到您试图踢出房间/封禁的用户。 -他们可能已经离开了房间。 + 找不到您试图踢/禁止的用户。他们可能已经离开房间了。 No valid network interface is selected. Please go to Configure -> System -> Network and make a selection. - 未选择有效的网络接口。 -请于设置 -> 系统 -> 网络中进行相关设置。 + 未选择有效的网络接口。 +请转到设置 -> 系统 -> 网络中进行相关设置。 Error - 错误 - - - - GMainWindow - - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Anonymous data is collected</a> to help improve yuzu. <br/><br/>Would you like to share your usage data with us? - <a href='https://yuzu-emu.org/help/feature/telemetry/'>我们收集匿名数据</a>来帮助改进 yuzu 。<br/><br/>您愿意和我们分享您的使用数据吗? - - - Telemetry - 使用数据共享 - - - - Broken Vulkan Installation Detected - 检测到 Vulkan 的安装已损坏 - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - Vulkan 初始化失败。<br><br>点击<a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>这里</a>获取此问题的相关信息。 - - - - Running a game - TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping - 游戏正在运行 - - - - Loading Web Applet... - 正在加载 Web 小程序... - - - - - Disable Web Applet - 禁用 Web 小程序 - - - - 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.) - 禁用 Web 小程序可能会发生未知的行为,且只能在《超级马里奥 3D 全明星》中使用。您确定要禁用 Web 小程序吗? -(您可以在调试选项中重新启用它。) - - - - The amount of shaders currently being built - 当前正在构建的着色器数量 - - - - The current selected resolution scaling multiplier. - 当前选定的分辨率缩放比例。 - - - - Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. - 当前的模拟速度。高于或低于 100% 的值表示运行速度比实际的 Switch 更快或更慢。 - - - - How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. - 游戏当前运行的帧率。这将因游戏和场景的不同而有所变化。 - - - - 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. - 在不计算速度限制和垂直同步的情况下,模拟一个 Switch 帧的实际时间。若要进行全速模拟,这个数值不应超过 16.67 毫秒。 - - - - Unmute - 取消静音 - - - - Mute - 静音 - - - - Reset Volume - 重置音量 - - - - &Clear Recent Files - 清除最近文件 (&C) - - - - &Continue - 继续 (&C) - - - - &Pause - 暂停 (&P) - - - - Warning Outdated Game Format - 过时游戏格式警告 - - - 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.<br><br>For an explanation of the various Switch formats yuzu supports, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - 目前使用的游戏为解体的 ROM 目录格式,这是一种过时的格式,已被其他格式替代,如 NCA,NAX,XCI 或 NSP。解体的 ROM 目录缺少图标、元数据和更新支持。<br><br>有关 yuzu 支持的各种 Switch 格式的说明,<a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>请查看我们的 wiki</a>。此消息将不会再次出现。 - - - - - Error while loading ROM! - 加载 ROM 时出错! - - - - The ROM format is not supported. - 该 ROM 格式不受支持。 - - - - An error occurred initializing the video core. - 初始化视频核心时发生错误 - - - 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: <a href='https://yuzu-emu.org/help/reference/log-files/'>How to Upload the Log File</a>. - yuzu 在运行视频核心时发生错误。这可能是由 GPU 驱动程序过旧造成的。有关详细信息,请参阅日志文件。关于日志文件的更多信息,请参考以下页面:<a href='https://yuzu-emu.org/help/reference/log-files/'>如何上传日志文件</a>。 - - - - Error while loading ROM! %1 - %1 signifies a numeric error code. - 加载 ROM 时出错! %1 - - - %1<br>Please follow <a href='https://yuzu-emu.org/help/quickstart/'>the yuzu quickstart guide</a> to redump your files.<br>You can refer to the yuzu wiki</a> or the yuzu Discord</a> for help. - %1 signifies an error string. - %1<br>请参考<a href='https://yuzu-emu.org/help/quickstart/'>yuzu 快速导航</a>以获取相关文件。<br>您可以参考 yuzu 的 wiki 页面</a>或 Discord 社区</a>以获得帮助。 - - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://eden-emulator.github.io/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - - - - - Game Updates Warning - - - - - The game you are trying to launch is known to have performance or booting issues when updates are applied. Please try increasing the memory layout to 6GB or 8GB if any issues occur.<br><br>Press "OK" to continue launching, or "Cancel" to cancel the launch. - - - - - Don't show again for this game - - - - - 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.<br><br>For an explanation of the various Switch formats eden supports, <a href='https://eden-emulator.github.io/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - - - - - eden 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: <a href='https://eden-emulator.github.io/help/reference/log-files/'>How to Upload the Log File</a>. - - - - - %1<br>Please redump your files or ask on Discord for help. - %1 signifies an error string. - - - - - An unknown error occurred. Please see the log for more details. - 发生了未知错误。请查看日志了解详情。 - - - - (64-bit) - (64-bit) - - - - (32-bit) - (32-bit) - - - - %1 %2 - %1 is the title name. %2 indicates if the title is 64-bit or 32-bit - %1 %2 - - - - Closing software... - 正在关闭… - - - - Save Data - 保存数据 - - - - Mod Data - Mod 数据 - - - - Error Opening %1 Folder - 打开 %1 文件夹时出错 - - - - - Folder does not exist! - 文件夹不存在! - - - - Error Opening Transferable Shader Cache - 打开可转移着色器缓存时出错 - - - - Failed to create the shader cache directory for this title. - 为该游戏创建着色器缓存目录时失败。 - - - - Error Removing Contents - 删除内容时出错 - - - - Error Removing Update - 删除更新时出错 - - - - Error Removing DLC - 删除 DLC 时出错 - - - - Remove Installed Game Contents? - 删除已安装的游戏内容? - - - - Remove Installed Game Update? - 删除已安装的游戏更新? - - - - Remove Installed Game DLC? - 删除已安装的游戏 DLC 内容? - - - - Remove Entry - 删除项目 - - - - - - - - - Successfully Removed - 删除成功 - - - - Successfully removed the installed base game. - 成功删除已安装的游戏。 - - - - The base game is not installed in the NAND and cannot be removed. - 该游戏未安装于 NAND 中,无法删除。 - - - - Successfully removed the installed update. - 成功删除已安装的游戏更新。 - - - - There is no update installed for this title. - 这个游戏没有任何已安装的更新。 - - - - There are no DLC installed for this title. - 这个游戏没有任何已安装的 DLC 。 - - - - Successfully removed %1 installed DLC. - 成功删除游戏 %1 安装的 DLC 。 - - - - Delete OpenGL Transferable Shader Cache? - 删除 OpenGL 模式的着色器缓存? - - - - Delete Vulkan Transferable Shader Cache? - 删除 Vulkan 模式的着色器缓存? - - - - Delete All Transferable Shader Caches? - 删除所有的着色器缓存? - - - - Remove Custom Game Configuration? - 移除自定义游戏设置? - - - - Remove Cache Storage? - 移除缓存? - - - - Remove File - 删除文件 - - - - Remove Play Time Data - 清除游玩时间 - - - - Reset play time? - 重置游玩时间? - - - - - Error Removing Transferable Shader Cache - 删除着色器缓存时出错 - - - - - A shader cache for this title does not exist. - 这个游戏的着色器缓存不存在。 - - - - Successfully removed the transferable shader cache. - 成功删除着色器缓存。 - - - - Failed to remove the transferable shader cache. - 删除着色器缓存失败。 - - - - Error Removing Vulkan Driver Pipeline Cache - 删除 Vulkan 驱动程序管线缓存时出错 - - - - Failed to remove the driver pipeline cache. - 删除驱动程序管线缓存失败。 - - - - - Error Removing Transferable Shader Caches - 删除着色器缓存时出错 - - - - Successfully removed the transferable shader caches. - 着色器缓存删除成功。 - - - - Failed to remove the transferable shader cache directory. - 删除着色器缓存目录失败。 - - - - - Error Removing Custom Configuration - 移除自定义游戏设置时出错 - - - - A custom configuration for this title does not exist. - 这个游戏的自定义设置不存在。 - - - - Successfully removed the custom game configuration. - 成功移除自定义游戏设置。 - - - - Failed to remove the custom game configuration. - 移除自定义游戏设置失败。 - - - - - RomFS Extraction Failed! - RomFS 提取失败! - - - - There was an error copying the RomFS files or the user cancelled the operation. - 复制 RomFS 文件时出错,或用户取消了操作。 - - - - Full - 完整 - - - - Skeleton - 框架 - - - - Select RomFS Dump Mode - 选择 RomFS 转储模式 - - - - Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. - 请选择 RomFS 转储的方式。<br>“完整” 会将所有文件复制到新目录中,而<br>“框架” 只会创建目录结构。 - - - - There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root - %1 没有足够的空间用于提取 RomFS。请保持足够的空间或于模拟—>设置—>系统—>文件系统—>转储根目录中选择一个其他目录。 - - - - Extracting RomFS... - 正在提取 RomFS... - - - - - - - - Cancel - 取消 - - - - RomFS Extraction Succeeded! - RomFS 提取成功! - - - - - - The operation completed successfully. - 操作成功完成。 - - - - Integrity verification couldn't be performed! - 无法执行完整性验证! - - - - File contents were not checked for validity. - 未检查文件的完整性。 - - - - - Verifying integrity... - 正在验证完整性... - - - - - Integrity verification succeeded! - 完整性验证成功! - - - - - Integrity verification failed! - 完整性验证失败! - - - - File contents may be corrupt. - 文件可能已经损坏。 - - - - - - - Create Shortcut - 创建快捷方式 - - - - Do you want to launch the game in fullscreen? - 您想以全屏模式启动游戏吗? - - - - Successfully created a shortcut to %1 - %1 的快捷方式创建成功 - - - - This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - 这将为当前的游戏创建快捷方式。但在其更新后,快捷方式可能无法正常工作。是否继续? - - - - Failed to create a shortcut to %1 - %1 的快捷方式创建失败 - - - - Create Icon - 创建图标 - - - - Cannot create icon file. Path "%1" does not exist and cannot be created. - 无法创建图标文件。路径“ %1 ”不存在且无法被创建。 - - - - Error Opening %1 - 打开 %1 时出错 - - - - Select Directory - 选择目录 - - - - Properties - 属性 - - - - The game properties could not be loaded. - 无法加载该游戏的属性信息。 - - - - Switch Executable (%1);;All Files (*.*) - %1 is an identifier for the Switch executable file extensions. - Switch 可执行文件 (%1);;所有文件 (*.*) - - - - Load File - 加载文件 - - - - Open Extracted ROM Directory - 打开提取的 ROM 目录 - - - - Invalid Directory Selected - 选择的目录无效 - - - - The directory you have selected does not contain a 'main' file. - 选择的目录不包含 “main” 文件。 - - - - Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - 可安装 Switch 文件 (*.nca *.nsp *.xci);;任天堂内容档案 (*.nca);;任天堂应用包 (*.nsp);;NX 卡带镜像 (*.xci) - - - - Install Files - 安装文件 - - - - %n file(s) remaining - - 剩余 %n 个文件 - - - - - Installing file "%1"... - 正在安装文件 "%1"... - - - - - Install Results - 安装结果 - - - - To avoid possible conflicts, we discourage users from installing base games to the NAND. -Please, only use this feature to install updates and DLC. - 为了避免可能存在的冲突,我们不建议将游戏本体安装到 NAND 中。 -此功能仅用于安装游戏更新和 DLC 。 - - - - %n file(s) were newly installed - - - 最近安装了 %n 个文件 - - - - - - %n file(s) were overwritten - - - %n 个文件被覆盖 - - - - - - %n file(s) failed to install - - - %n 个文件安装失败 - - - - - - System Application - 系统应用 - - - - System Archive - 系统档案 - - - - System Application Update - 系统应用更新 - - - - Firmware Package (Type A) - 固件包 (A型) - - - - Firmware Package (Type B) - 固件包 (B型) - - - - Game - 游戏 - - - - Game Update - 游戏更新 - - - - Game DLC - 游戏 DLC - - - - Delta Title - 差量程序 - - - - Select NCA Install Type... - 选择 NCA 安装类型... - - - - Please select the type of title you would like to install this NCA as: -(In most instances, the default 'Game' is fine.) - 请选择此 NCA 的程序类型: -(在大多数情况下,选择默认的“游戏”即可。) - - - - Failed to Install - 安装失败 - - - - The title type you selected for the NCA is invalid. - 选择的 NCA 程序类型无效。 - - - - File not found - 找不到文件 - - - - File "%1" not found - 文件 "%1" 未找到 - - - - OK - 确定 - - - - - Hardware requirements not met - 硬件不满足要求 - - - - - Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled. - 您的系统不满足运行 yuzu 的推荐配置。兼容性报告已被禁用。 - - - - Missing yuzu Account - 未设置 yuzu 账户 - - - - In order to submit a game compatibility test case, you must link your eden account.<br><br/>To link your eden account, go to Emulation &gt; Configuration &gt; Web. - - - - - Install decryption keys and restart eden before attempting to install firmware. - - - - - Firmware installation cancelled, firmware may be in bad state, restart eden or re-install firmware. - - - - - Encryption keys are missing. - - - - - Are you sure you want to close eden? - - - - - - - eden - - - - - The currently running application has requested eden to not exit. - -Would you like to bypass this and exit anyway? - - - - In order to submit a game compatibility test case, you must link your yuzu account.<br><br/>To link your yuzu account, go to Emulation &gt; Configuration &gt; Web. - 要提交游戏兼容性测试用例,您必须设置您的 yuzu 帐户。<br><br/>要设置您的 yuzu 帐户,请转到模拟 &gt; 设置 &gt; 网络。 - - - - Error opening URL - 打开 URL 时出错 - - - - Unable to open the URL "%1". - 无法打开 URL : "%1" 。 - - - - TAS Recording - TAS 录制中 - - - - Overwrite file of player 1? - 覆盖玩家 1 的文件? - - - - Invalid config detected - 检测到无效配置 - - - - Handheld controller can't be used on docked mode. Pro controller will be selected. - 掌机手柄无法在主机模式中使用。将会选择 Pro controller。 - - - - - Amiibo - Amiibo - - - - - The current amiibo has been removed - 当前的 Amiibo 已被移除。 - - - - Error 错误 - - - - The current game is not looking for amiibos - 当前游戏并没有在寻找 Amiibos - - - - Amiibo File (%1);; All Files (*.*) - Amiibo 文件 (%1);; 全部文件 (*.*) - - - - Load Amiibo - 加载 Amiibo - - - - Error loading Amiibo data - 加载 Amiibo 数据时出错 - - - - The selected file is not a valid amiibo - 选择的文件并不是有效的 amiibo - - - - The selected file is already on use - 选择的文件已在使用中 - - - - An unknown error occurred - 发生了未知错误 - - - - - Verification failed for the following files: - -%1 - 以下文件完整性验证失败: - -%1 - - - - Keys not installed - 密钥未安装 - - - Install decryption keys and restart yuzu before attempting to install firmware. - 在安装固件之前,请先安装密钥并重新启动 yuzu。 - - - - Select Dumped Firmware Source Location - 选择固件位置 - - - - Installing Firmware... - 正在安装固件... - - - - - - - Firmware install failed - 固件安装失败 - - - - Unable to locate potential firmware NCA files - 无法定位某些固件 NCA 文件 - - - - Failed to delete one or more firmware file. - 无法删除某些固件文件。 - - - Firmware installation cancelled, firmware may be in bad state, restart yuzu or re-install firmware. - 固件安装被取消,安装的固件可能已经损坏。请重新启动 yuzu,或重新安装固件。 - - - - One or more firmware files failed to copy into NAND. - 某些固件文件未能复制到 NAND。 - - - - Firmware integrity verification failed! - 固件完整性验证失败! - - - - Select Dumped Keys Location - 选择密钥文件位置 - - - - - - Decryption Keys install failed - 密钥文件安装失败 - - - - prod.keys is a required decryption key file. - prod.keys 是必需的解密密钥文件。 - - - - One or more keys failed to copy. - 某些密钥文件复制失败。 - - - - Decryption Keys install succeeded - 密钥文件安装成功 - - - - Decryption Keys were successfully installed - 密钥文件已成功安装 - - - - Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. - 密钥文件无法初始化。请检查您的转储工具是否为最新版本,然后重新转储密钥文件。 - - - - - - - - - - No firmware available - 无可用固件 - - - - Please install the firmware to use the Album applet. - 请安装固件以使用相册小程序。 - - - - Album Applet - 相册小程序 - - - - Album applet is not available. Please reinstall firmware. - 相册小程序不可用。请重新安装固件。 - - - - Please install the firmware to use the Cabinet applet. - 请安装固件以使用 Cabinet 小程序。 - - - - Cabinet Applet - Cabinet 小程序 - - - - Cabinet applet is not available. Please reinstall firmware. - Cabinet 小程序不可用。请重新安装固件。 - - - - Please install the firmware to use the Mii editor. - 请安装固件以使用 Mii editor。 - - - - Mii Edit Applet - Mii Edit 小程序 - - - - Mii editor is not available. Please reinstall firmware. - Mii editor 不可用。请重新安装固件。 - - - - Please install the firmware to use the Controller Menu. - 请安装固件以使用控制器菜单。 - - - - Controller Applet - 控制器小程序 - - - - Controller Menu is not available. Please reinstall firmware. - 控制器菜单不可用。请重新安装固件。 - - - - Please install the firmware to use the Home Menu. - - - - - - Home Menu Applet - - - - - - Home Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use Starter. - - - - - Starter Applet - - - - - Starter is not available. Please reinstall firmware. - - - - - Please install firmware to use the home menu. - - - - - Capture Screenshot - 捕获截图 - - - - PNG Image (*.png) - PNG 图像 (*.png) - - - - Update Available - - - - - Update %1 for Eden is available. -Would you like to download it? - - - - - TAS state: Running %1/%2 - TAS 状态:正在运行 %1/%2 - - - - TAS state: Recording %1 - TAS 状态:正在录制 %1 - - - - TAS state: Idle %1/%2 - TAS 状态:空闲 %1/%2 - - - - TAS State: Invalid - TAS 状态:无效 - - - - &Stop Running - 停止运行 (&S) - - - - &Start - 开始 (&S) - - - - Stop R&ecording - 停止录制 (&E) - - - - R&ecord - 录制 (&E) - - - - Building: %n shader(s) - - 正在编译 %n 个着色器文件 - - - - - Scale: %1x - %1 is the resolution scaling factor - 缩放比例: %1x - - - - Speed: %1% / %2% - 速度: %1% / %2% - - - - Speed: %1% - 速度: %1% - - - Game: %1 FPS (Unlocked) - FPS: %1 (未锁定) - - - - Game: %1 FPS - FPS: %1 - - - - Frame: %1 ms - 帧延迟: %1 毫秒 - - - - %1 %2 - %1 %2 - - - - - FSR - FSR - - - - NO AA - 抗锯齿关 - - - - VOLUME: MUTE - 音量: 静音 - - - - VOLUME: %1% - Volume percentage (e.g. 50%) - 音量: %1% - - - - Derivation Components Missing - 组件丢失 - - - Encryption keys are missing. <br>Please follow <a href='https://yuzu-emu.org/help/quickstart/'>the yuzu quickstart guide</a> to get all your keys, firmware and games. - 密钥缺失。<br>请查看<a href='https://yuzu-emu.org/help/quickstart/'>yuzu 快速导航</a>以获得你的密钥、固件和游戏。 - - - - Select RomFS Dump Target - 选择 RomFS 转储目标 - - - - Please select which RomFS you would like to dump. - 请选择希望转储的 RomFS。 - - - Are you sure you want to close yuzu? - 您确定要关闭 yuzu 吗? - - - yuzu - yuzu - - - - Are you sure you want to stop the emulation? Any unsaved progress will be lost. - 您确定要停止模拟吗?未保存的进度将会丢失。 - - - The currently running application has requested yuzu to not exit. - -Would you like to bypass this and exit anyway? - 当前运行的应用程序请求 yuzu 不要退出。 - -您希望忽略并退出吗? - - - - None - - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Nearest - 邻近取样 - - - - Bilinear - 双线性过滤 - - - - Bicubic - 双三线过滤 - - - - Gaussian - 高斯模糊 - - - - ScaleForce - 强制缩放 - - - - Area - - - - - Docked - 主机模式 - - - - Handheld - 掌机模式 - - - - Normal - 正常 - - - - High - - - - - Extreme - 极高 - - - - Vulkan - Vulkan - - - - OpenGL - OpenGL - - - - Null - - - - - GLSL - GLSL - - - - GLASM - GLASM - - - - SPIRV - SPIRV - GRenderWindow - - + + OpenGL not available! OpenGL 模式不可用! - + OpenGL shared contexts are not supported. 不支持 OpenGL 共享上下文。 - yuzu has not been compiled with OpenGL support. - yuzu 没有使用 OpenGL 进行编译。 + + Eden has not been compiled with OpenGL support. + Eden 尚未编译为支持 OpenGL。 - - eden has not been compiled with OpenGL support. - - - - - + + Error while initializing OpenGL! 初始化 OpenGL 时出错! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. 您的 GPU 可能不支持 OpenGL ,或者您没有安装最新的显卡驱动。 - + Error while initializing OpenGL 4.6! 初始化 OpenGL 4.6 时出错! - + Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 您的 GPU 可能不支持 OpenGL 4.6 ,或者您没有安装最新的显卡驱动。<br><br>GL 渲染器:<br>%1 - + Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2 您的 GPU 可能不支持某些必需的 OpenGL 扩展。请确保您已经安装最新的显卡驱动。<br><br>GL 渲染器:<br>%1<br><br>不支持的扩展:<br>%2 @@ -7006,192 +6106,208 @@ Would you like to bypass this and exit anyway? GameList - + + &Add New Game Directory + 添加新游戏目录 (&A) + + + Favorite 收藏 - + Start Game 开始游戏 - + Start Game without Custom Configuration 使用公共设置项进行游戏 - + Open Save Data Location 打开存档位置 - + Open Mod Data Location 打开 MOD 数据位置 - + Open Transferable Pipeline Cache 打开可转移着色器缓存 - + + Link to Ryujinx + 链接到 Ryujinx + + + Remove 删除 - + Remove Installed Update 删除已安装的游戏更新 - + Remove All Installed DLC 删除所有已安装 DLC - + Remove Custom Configuration 删除自定义设置 - - Remove Play Time Data - 清除游玩时间 - - - + Remove Cache Storage 移除缓存 - + Remove OpenGL Pipeline Cache 删除 OpenGL 着色器缓存 - + Remove Vulkan Pipeline Cache 删除 Vulkan 着色器缓存 - + Remove All Pipeline Caches 删除所有着色器缓存 - + Remove All Installed Contents 删除所有安装的项目 - - + + Manage Play Time + 管理游戏时间 + + + + Edit Play Time Data + 编辑游戏时间数据 + + + + Remove Play Time Data + 清除游玩时间 + + + + Dump RomFS 转储 RomFS - + Dump RomFS to SDMC 转储 RomFS 到 SDMC - + Verify Integrity 完整性验证 - + Copy Title ID to Clipboard 复制游戏 ID 到剪贴板 - + Navigate to GameDB entry 查看兼容性报告 - + Create Shortcut 创建快捷方式 - + Add to Desktop 添加到桌面 - + Add to Applications Menu 添加到应用程序菜单 - + Configure Game - + 配置游戏 - Properties - 属性 - - - + Scan Subfolders 扫描子文件夹 - + Remove Game Directory 移除游戏目录 - + ▲ Move Up ▲ 向上移动 - + ▼ Move Down ▼ 向下移动 - + Open Directory Location 打开目录位置 - + Clear 清除 - + Name 名称 - + Compatibility 兼容性 - + Add-ons 附加项 - + File type 文件类型 - + Size 大小 - + Play time 游玩时间 @@ -7199,62 +6315,62 @@ Would you like to bypass this and exit anyway? GameListItemCompat - + Ingame 可进游戏 - + Game starts, but crashes or major glitches prevent it from being completed. 游戏可以开始,但会出现崩溃或严重故障导致游戏无法继续。 - + Perfect 完美 - + Game can be played without issues. 游戏可以毫无问题地运行。 - + Playable 可运行 - + Game functions with minor graphical or audio glitches and is playable from start to finish. 游戏可以从头到尾完整地运行,但可能出现轻微的图形或音频故障。 - + Intro/Menu 开场/菜单 - + Game loads, but is unable to progress past the Start Screen. 游戏可以加载,但无法通过标题页面。 - + Won't Boot 无法启动 - + The game crashes when attempting to startup. 在启动游戏时直接崩溃。 - + Not Tested 未测试 - + The game has not yet been tested. 游戏尚未经过测试。 @@ -7262,7 +6378,7 @@ Would you like to bypass this and exit anyway? GameListPlaceholder - + Double-click to add a new folder to the game list 双击添加新的游戏文件夹 @@ -7270,19 +6386,17 @@ Would you like to bypass this and exit anyway? GameListSearchField - + %1 of %n result(s) - - %1 / %n 个结果 - + %n个结果中的第%1个 - + Filter: 搜索: - + Enter pattern to filter 搜索游戏 @@ -7358,233 +6472,241 @@ Would you like to bypass this and exit anyway? HostRoomWindow - + Error 错误 - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. + + Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid Eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. Debug Message: - - - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid yuzu account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. -Debug Message: - 向公共大厅创建房间时失败。为了创建公共房间,您必须在模拟 -> 设置 -> 网络中配置有效的 yuzu 帐户。如果不想在公共大厅中创建房间,请选择“私有”。 -调试消息: + Hotkeys - + Audio Mute/Unmute 开启/关闭静音 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Main Window 主窗口 - + Audio Volume Down 调低音量 - + Audio Volume Up 调高音量 - + Capture Screenshot 捕获截图 - + Change Adapting Filter 更改窗口滤镜 - + Change Docked Mode 更改主机运行模式 - - Change GPU Accuracy - 更改 GPU 精度 + + Change GPU Mode + 更改 GPU 模式 - + Configure - 设置 + 配置 - + Configure Current Game - + 配置当前游戏 - + Continue/Pause Emulation 继续/暂停模拟 - + Exit Fullscreen 退出全屏 - Exit yuzu - 退出 yuzu + + Exit Eden + 退出 Eden - - Exit eden - - - - + Fullscreen 全屏 - + Load File 加载文件 - + Load/Remove Amiibo 加载/移除 Amiibo - - Multiplayer Browse Public Game Lobby + + Browse Public Game Lobby 浏览公共游戏大厅 - - Multiplayer Create Room + + Create Room 创建房间 - - Multiplayer Direct Connect to Room + + Direct Connect to Room 直接连接到房间 - - Multiplayer Leave Room + + Leave Room 离开房间 - - Multiplayer Show Current Room + + Show Current Room 显示当前房间 - + Restart Emulation 重新启动模拟 - + Stop Emulation 停止模拟 - + TAS Record TAS 录制 - + TAS Reset 重置 TAS - + TAS Start/Stop TAS 开始/停止 - + Toggle Filter Bar 显示/隐藏搜索栏 - + Toggle Framerate Limit 打开/关闭帧率限制 - + + Toggle Turbo Speed + 切换加速模式 + + + + Toggle Slow Speed + 切换减速模式 + + + Toggle Mouse Panning 打开/关闭鼠标平移 - + Toggle Renderdoc Capture 切换到 Renderdoc 捕获截图 - + Toggle Status Bar 显示/隐藏状态栏 + + + Toggle Performance Overlay + 切换性能覆盖层 + InstallDialog - + Please confirm these are the files you wish to install. 请确认这些您想要安装的文件。 - + Installing an Update or DLC will overwrite the previously installed one. 安装游戏更新或 DLC 时,会覆盖以前安装的内容。 - + Install 安装 - + Install Files to NAND 安装文件到 NAND @@ -7592,8 +6714,8 @@ Debug Message: LimitableInputDialog - - The text can't contain any of the following characters: + + The text can't contain any of the following characters: %1 文本中不能包含以下字符: %1 @@ -7617,22 +6739,22 @@ Debug Message: 所需时间: 5 分 4 秒 - + Loading... 加载中... - + Loading Shaders %1 / %2 正在加载着色器: %1 / %2 - + Launching... 启动中... - + Estimated Time %1 所需时间: %1 @@ -7681,42 +6803,42 @@ Debug Message: 刷新游戏大厅 - + Password Required to Join 需要密码 - + Password: 密码: - + Players 玩家数 - + Room Name 房间名称 - + Preferred Game 首选游戏 - + Host 房主 - + Refreshing 刷新中 - + Refresh List 刷新列表 @@ -7739,362 +6861,1446 @@ Debug Message: 最近文件 (&R) - + + Open &Eden Folders + 打开 &Eden 文件夹 + + + &Emulation 模拟 (&E) - + &View 视图 (&V) - + &Reset Window Size 重置窗口大小 (&R) - + &Debugging 调试 (&D) - + + &Game List Mode + 游戏列表模式 (&G) + + + + Game &Icon Size + 游戏图标大小 (&I) + + + Reset Window Size to &720p 重置窗口大小为720p (&7) - + Reset Window Size to 720p 重置窗口大小为720p - + Reset Window Size to &900p 重置窗口大小为900p (&9) - + Reset Window Size to 900p 重置窗口大小为900p - + Reset Window Size to &1080p 重置窗口大小为1080p (&1) - + Reset Window Size to 1080p 重置窗口大小为1080p - + &Multiplayer 多人游戏 (&M) - + &Tools 工具 (&T) - - &Amiibo - Amiibo (&A) + + Am&iibo + Am&iibo - + + Launch &Applet + 启动小程序 (&A) + + + &TAS TAS (&T) - + &Create Home Menu Shortcut - + 创建主页菜单快捷方式(&C) - + + Install &Firmware + 安装固件(&F) + + + &Help 帮助 (&H) - + &Install Files to NAND... 安装文件到 NAND... (&I) - + L&oad File... 加载文件... (&O) - + Load &Folder... 加载文件夹... (&F) - + E&xit 退出 (&X) - + + &Pause 暂停 (&P) - + &Stop 停止 (&S) - + &Verify Installed Contents 验证已安装内容的完整性 (&V) - - &About eden - + + &About Eden + 关于 Eden(&A) - - Open &eden Folder - - - - - Open Home Menu - - - - - &Discord - - - - - Open &Setup - - - - - &Desktop - - - - - &Application Menu - - - - &About yuzu - 关于 yuzu (&A) - - - + Single &Window Mode 单窗口模式 (&W) - + Con&figure... 设置... (&F) - + Ctrl+, - + Ctrl+, - - Display D&ock Widget Headers - 显示停靠小部件的标题 (&O) + + Enable Overlay Display Applet + 开启覆盖层显示小程序 - + Show &Filter Bar 显示搜索栏 (&F) - + Show &Status Bar 显示状态栏 (&S) - + Show Status Bar 显示状态栏 - + &Browse Public Game Lobby 浏览公共游戏大厅 (&B) - + &Create Room 创建房间 (&C) - + &Leave Room 离开房间 (&L) - + &Direct Connect to Room 直接连接到房间 (&D) - + &Show Current Room 显示当前房间 (&S) - + F&ullscreen 全屏 (&U) - + &Restart 重新启动 (&R) - + Load/Remove &Amiibo... 加载/移除 Amiibo... (&A) - + &Report Compatibility 报告兼容性 (&R) - + Open &Mods Page 打开 Mod 页面 (&M) - + Open &Quickstart Guide 查看快速导航 (&Q) - + &FAQ FAQ (&F) - Open &yuzu Folder - 打开 yuzu 文件夹 (&Y) - - - + &Capture Screenshot 捕获截图 (&C) - - Open &Album - 打开相册 (&A) + + &Album + 相册 (&A) - + &Set Nickname and Owner 设置昵称及所有者 (&S) - + &Delete Game Data 删除游戏数据 (&D) - + &Restore Amiibo 重置 Amiibo (&R) - + &Format Amiibo 格式化 Amiibo (&F) - - Open &Mii Editor - 打开 Mii Editor (&M) + + &Mii Editor + Mii 编辑器 (&M) - + &Configure TAS... 配置 TAS... (&C) - + Configure C&urrent Game... 配置当前游戏... (&U) - + + &Start 开始 (&S) - + &Reset 重置 (&R) - + + R&ecord 录制 (&E) - + Open &Controller Menu 打开控制器菜单 (&C) - - Install Firmware - 安装固件 + + Install Decryption &Keys + 安装解密密钥(&K) - - Install Decryption Keys - 安装密钥文件 + + &Home Menu + 主页 (&H) - - - MicroProfileDialog - - &MicroProfile - MicroProfile (&M) + + &Desktop + 桌面(&D) + + + + &Application Menu + 应用程序菜单(&A) + + + + &Root Data Folder + 根数据文件夹(&R) + + + + &NAND Folder + &NAND 文件夹 + + + + &SDMC Folder + &SDMC 文件夹 + + + + &Mod Folder + &Mod 文件夹 + + + + &Log Folder + &Log 文件夹 + + + + From Folder + 从文件夹 + + + + From ZIP + 从 ZIP + + + + &Eden Dependencies + &Eden 依赖项 + + + + &Data Manager + 数据管理器(&D) + + + + &Tree View + 树景视图 (&T) + + + + &Grid View + 网格视图 (&G) + + + + Game Icon Size + 游戏图标大小 + + + + + + None + + + + + Show Game &Name + 显示游戏名称 (&N) + + + + Show &Performance Overlay + 显示性能覆盖层 + + + + Small (32x32) + 小 (32x32) + + + + Standard (64x64) + 标准 (64x64) + + + + Large (128x128) + 大 (128x128) + + + + Full Size (256x256) + 最大 (256x256) + + + + Broken Vulkan Installation Detected + 检测到损坏的 Vulkan 安装 + + + + Vulkan initialization failed during boot. + 在启动时初始化 Vulkan 失败。 + + + + Running a game + TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping + 运行游戏 + + + + Loading Web Applet... + 正在加载 Web 小程序... + + + + + Disable Web Applet + 禁用 Web 小程序 + + + + 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.) + 禁用网页小程序可能会导致未定义的行为并且应仅在 超级马里奥 3D 全明星中使用。您确定要禁用网页小程序吗? +(这可以在调试设置中重新启用。) + + + + The amount of shaders currently being built + 当前正在构建的着色器数量 + + + + The current selected resolution scaling multiplier. + 当前选择的分辨率缩放倍数。 + + + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. + 当前模拟速度。高于或低于 100% 的数值表示模拟运行比 Switch 快或慢。 + + + + How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. + 游戏当前显示的每秒帧数。这个数值会因游戏和场景的不同而有所变化。 + + + + 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. + 模拟 Switch 一帧所需的时间,不包括帧限制或垂直同步。为了全速模拟这个时间最多应为 16.67 毫秒。 + + + + Unmute + 取消静音 + + + + Mute + 静音 + + + + Reset Volume + 重置音量 + + + + &Clear Recent Files + 清除最近的文件(&C) + + + + &Continue + 继续(&C) + + + + Warning: Outdated Game Format + 警告: 游戏格式过时 + + + + 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.<br>For an explanation of the various Switch formats Eden supports, out our user handbook. This message will not be shown again. + 您正在为此游戏使用解包 ROM 目录格式,这是一种已过时的格式,它已被 NCA、NAX、XCI 或 NSP 等其他格式取代。解包 ROM 目录缺少图标、元数据和更新支持。<br>有关 Eden 支持的各种 Switch 格式的说明请查阅我们的用户手册。此消息将不再显示。 + + + + + Error while loading ROM! + 加载 ROM 时出错! + + + + The ROM format is not supported. + 不支持该 ROM 格式。 + + + + An error occurred initializing the video core. + 初始化视频核心时发生错误。 + + + + Eden 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: <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>How to Upload the Log File</a>. + Eden 在运行视频核心时遇到了错误。通常这是由于 GPU 驱动程序过时引起的,包括集成显卡驱动程序。有关详细信息,请查看日志。有关如何访问日志的更多信息,请参阅以下页面:<a href="https://yuzu-mirror.github.io/help/reference/log-files/">如何上传日志文件</a>。 + + + + Error while loading ROM! %1 + %1 signifies a numeric error code. + 加载 ROM 时出错! %1 + + + + %1<br>Please redump your files or ask on Discord/Stoat for help. + %1 signifies an error string. + %1<br>请重新导出您的文件,或在 Discord/Stoat 上寻求帮助。 + + + + An unknown error occurred. Please see the log for more details. + 发生未知错误。请查看日志以获取更多详情。 + + + + (64-bit) + (64 位) + + + + (32-bit) + (32 位) + + + + %1 %2 + %1 is the title name. %2 indicates if the title is 64-bit or 32-bit + %1 %2 + + + + Closing software... + 正在关闭软件... + + + + Save Data + 存档数据 + + + + Mod Data + Mod 数据 + + + + Error Opening %1 Folder + 打开 %1 文件夹出错 + + + + + Folder does not exist! + 文件夹不存在! + + + + Remove Installed Game Contents? + 是否移除已安装的游戏内容? + + + + Remove Installed Game Update? + 是否移除已安装的游戏更新? + + + + Remove Installed Game DLC? + 是否移除已安装的游戏 DLC? + + + + Remove Entry + 删除条目 + + + + Delete OpenGL Transferable Shader Cache? + 要删除 OpenGL 可传输着色器缓存吗? + + + + Delete Vulkan Transferable Shader Cache? + 要删除 Vulkan 可传输着色器缓存吗? + + + + Delete All Transferable Shader Caches? + 删除所有可传输的着色器缓存? + + + + Remove Custom Game Configuration? + 是否移除自定义游戏配置? + + + + Remove Cache Storage? + 要清除缓存存储吗? + + + + Remove File + 删除文件 + + + + Remove Play Time Data + 删除游戏时间数据 + + + + Reset play time? + 要重置播放时间吗? + + + + + RomFS Extraction Failed! + RomFS 提取失败! + + + + There was an error copying the RomFS files or the user cancelled the operation. + 复制 RomFS 文件时出错或用户取消了操作。 + + + + Full + 完整 + + + + Skeleton + 结构 + + + + Select RomFS Dump Mode + 选择 RomFS 转储模式 + + + + Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. + 请选择您希望如何导出 RomFS。<br>&quot;完整&quot; 将把所有文件复制到新的目录中,而<br>&quot;结构&quot; 仅会创建目录结构。</br></br> + + + + There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root + %1 的可用空间不足,无法提取 RomFS。请释放空间或在模拟 > 配置 > 系统 > 文件系统 > 转储根目录,中选择其它目录 + + + + Extracting RomFS... + 正在提取 RomFS... + + + + + Cancel + 取消 + + + + RomFS Extraction Succeeded! + RomFS 提取成功! + + + + The operation completed successfully. + 操作已成功完成。 + + + + Error Opening %1 + 打开 %1 时出错 + + + + Select Directory + 选择目录 + + + + Properties + 属性 + + + + The game properties could not be loaded. + 无法加载游戏属性。 + + + + Switch Executable (%1);;All Files (*.*) + %1 is an identifier for the Switch executable file extensions. + Switch 可执行文件 (%1);;所有文件 (*.*) + + + + Load File + 加载文件 + + + + Open Extracted ROM Directory + 打开已提取的 ROM 目录 + + + + Invalid Directory Selected + 选择的目录无效 + + + + The directory you have selected does not contain a 'main' file. + 您选择的目录不包含 'main' 文件。 + + + + Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) + 可安装的 Switch 文件 (*.nca *.nsp *.xci);;任天堂内容档案 (*.nca);;任天堂提交包 (*.nsp);;NX 卡带镜像 (*.xci) + + + + Install Files + 安装文件 + + + + %n file(s) remaining + 剩余 %n 个文件 + + + + Installing file "%1"... + 正在安装文件 "%1"... + + + + + Install Results + 安装结果 + + + + To avoid possible conflicts, we discourage users from installing base games to the NAND. +Please, only use this feature to install updates and DLC. + 为了避免可能的冲突,我们不鼓励用户将基础游戏安装到 NAND。 +请仅使用此功能来安装更新和 DLC。 + + + + %n file(s) were newly installed + + 已新安装 %n 个文件 + + + + + %n file(s) were overwritten + + 已覆盖了 %n 个文件 + + + + %n file(s) failed to install + + %n 个文件安装失败 + + + + + System Application + 系统应用 + + + + System Archive + 系统档案 + + + + System Application Update + 系统应用更新 + + + + Firmware Package (Type A) + 固件包 (类型 A) + + + + Firmware Package (Type B) + 固件包 (类型 B) + + + + Game + 游戏 + + + + Game Update + 游戏更新 + + + + Game DLC + 游戏可下载内容 + + + + Delta Title + Delta 标题 + + + + Select NCA Install Type... + 选择 NCA 安装类型... + + + + Please select the type of title you would like to install this NCA as: +(In most instances, the default 'Game' is fine.) + 请选择您希望将此 NCA 安装为的标题类型: +(在大多数情况下,默认的 '游戏' 就可以。) + + + + Failed to Install + 安装失败 + + + + The title type you selected for the NCA is invalid. + 您为 NCA 选择的标题类型无效。 + + + + File not found + 找不到文件 + + + + File "%1" not found + 未找到文件 "%1" + + + + OK + 确定 + + + + Function Disabled + 功能已被关闭 + + + + Compatibility list reporting is currently disabled. Check back later! + 兼容性列表报告目前已被禁用。请稍后再查看! + + + + Error opening URL + 打开网址出错 + + + + Unable to open the URL "%1". + 无法打开 URL "%1"。 + + + + TAS Recording + TAS 录像 + + + + Overwrite file of player 1? + 要覆盖玩家 1 的文件吗? + + + + Invalid config detected + 检测到无效配置 + + + + Handheld controller can't be used on docked mode. Pro controller will be selected. + 手柄在主机模式下无法使用。将选择 Pro 手柄。 + + + + + Amiibo + Amiibo + + + + + The current amiibo has been removed + 当前的 amiibo 已被移除 + + + + Error + 错误 + + + + + The current game is not looking for amiibos + 当前游戏不支持寻找 amiibo + + + + Amiibo File (%1);; All Files (*.*) + Amiibo 文件 (%1);; 所有文件 (*.*) + + + + Load Amiibo + 读取 Amiibo + + + + Error loading Amiibo data + 加载 Amiibo 数据出错 + + + + The selected file is not a valid amiibo + 所选文件不是有效的 amiibo + + + + The selected file is already on use + 所选文件正在使用中 + + + + An unknown error occurred + 发生未知错误 + + + + + Keys not installed + 未安装密钥 + + + + + Install decryption keys and restart Eden before attempting to install firmware. + 在尝试安装固件之前请先安装解密密钥并重启 Eden。 + + + + Select Dumped Firmware Source Location + 选择已转储固件源位置 + + + + Select Dumped Firmware ZIP + 选择已转储的固件 ZIP + + + + Zipped Archives (*.zip) + 压缩文件 (*.zip) + + + + Firmware cleanup failed + 固件清理失败 + + + + Failed to clean up extracted firmware cache. +Check write permissions in the system temp directory and try again. +OS reported error: %1 + 清理提取的固件缓存失败。 +检查系统临时目录的写入权限然后重试。 +操作系统报告错误: %1 + + + + No firmware available + 没有可用的固件 + + + + Firmware Corrupted + 固件已损坏 + + + + Unknown applet + 未知小程序 + + + + Applet doesn't map to a known value. + 无法识别该小程序对应的值。 + + + + Record not found + 找不到记录程序 + + + + Applet not found. Please reinstall firmware. + 找不到小程序。请重新安装固件。 + + + + Capture Screenshot + 截取屏幕截图 + + + + PNG Image (*.png) + PNG 图像 (*.png) + + + + Update Available + 有可用更新 + + + + Download %1? + 下载 %1? + + + + TAS state: Running %1/%2 + TAS 状态: 正在运行 %1/%2 + + + + TAS state: Recording %1 + TAS 状态: 正在录制 %1 + + + + TAS state: Idle %1/%2 + TAS 状态: 空闲 %1/%2 + + + + TAS State: Invalid + TAS 状态: 无效 + + + + &Stop Running + 停止运行(&S) + + + + Stop R&ecording + 停止录制(&A) + + + + Building: %n shader(s) + 正在编译:%n 个着色器 + + + + Scale: %1x + %1 is the resolution scaling factor + 缩放: %1x + + + + Speed: %1% / %2% + 速度: %1% / %2% + + + + Speed: %1% + 速度: %1% + + + + Game: %1 FPS + 游戏: %1 FPS + + + + Frame: %1 ms + 帧: %1 ms + + + + + FSR + FSR + + + + NO AA + 无 AA + + + + VOLUME: MUTE + 音量: 静音 + + + + VOLUME: %1% + Volume percentage (e.g. 50%) + 音量: %1% + + + + Derivation Components Missing + 缺少派生组件 + + + + Decryption keys are missing. Install them now? + 缺少解密密钥。现在安装吗? + + + + Wayland Detected! + 检测到 Wayland! + + + + Wayland is known to have significant performance issues and mysterious bugs. +It's recommended to use X11 instead. + +Would you like to force it for future launches? + 众所周知,Wayland 存在明显的性能问题和神秘的错误。 +建议改用 X11。 + +您想要在未来的启动中强制执行吗? + + + + Use X11 + 使用 X11 + + + + Continue with Wayland + 继续使用 Wayland + + + + Don't show again + 不再显示 + + + + Restart Required + 需要重新启动 + + + + Restart Eden to apply the X11 backend. + 重新启动 Eden 以应用 X11 后端。 + + + + Slow + 慢速 + + + + Turbo + 加速 + + + + Unlocked + 解锁 + + + + Select RomFS Dump Target + 选择 RomFS 转储目标 + + + + Please select which RomFS you would like to dump. + 请选择您想要转储的 RomFS。 + + + + Are you sure you want to close Eden? + 您确实要关闭 Eden 吗? + + + + + + Eden + Eden + + + + Are you sure you want to stop the emulation? Any unsaved progress will be lost. + 您确定要停止模拟吗?任何未保存的进度将会丢失。 + + + + The currently running application has requested Eden to not exit. + +Would you like to bypass this and exit anyway? + 当前正在运行的应用程序已请求 Eden 不退出。 + +您想要绕过并退出吗? + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Nearest + 最临近 + + + + Bilinear + 双线性 + + + + Bicubic + 双三次 + + + + Zero-Tangent + 零切线 + + + + B-Spline + B-Spline + + + + Mitchell + Mitchell + + + + Spline-1 + Spline-1 + + + + Gaussian + Gaussian + + + + Lanczos + Lanczos + + + + ScaleForce + ScaleForce + + + + Area + Area + + + + MMPX + MMPX + + + + Docked + 主机模式 + + + + Handheld + 掌机模式 + + + + Fast + 加速 + + + + Balanced + 平衡 + + + + Accurate + 精确 + + + + Vulkan + Vulkan + + + + OpenGL GLSL + OpenGL GLSL + + + + OpenGL SPIRV + OpenGL SPIRV + + + + OpenGL GLASM + OpenGL GLASM + + + + Null + MigrationWorker - - Data was migrated successfully. - - - - + Linking the old directory failed. You may need to re-run with administrative privileges on Windows. OS gave error: %1 - + 链接旧目录失败。您可能需要在 Windows 上以管理员权限重新运行。 +OS 给出的错误: %1 - + + + +Note that your configuration and data will be shared with %1. +If this is not desirable, delete the following files: +%2 +%3 +%4 + + +请注意您的配置和数据将与 %1 共享。 +如果不希望这样,请删除以下文件: +%2 +%3 +%4 + + + If you wish to clean up the files which were left in the old data location, you can do so by deleting the following directory: %1 - + + +如果您希望清理保存在旧数据位置的文件,可以通过删除以下目录来实现: +%1 + + + + Data was migrated successfully. + 数据已成功迁移。 + + + + ModSelectDialog + + + Dialog + 对话框 + + + + The specified folder or archive contains the following mods. Select which ones to install. + 指定的文件夹或归档包含以下模组。选择安装哪些。 @@ -8111,7 +8317,7 @@ If you wish to clean up the files which were left in the old data location, you - + Refreshing 刷新中 @@ -8121,27 +8327,27 @@ If you wish to clean up the files which were left in the old data location, you 解封 - + Subject 项目 - + Type 类型 - + Forum Username 论坛用户名 - + IP Address IP 地址 - + Refresh 刷新 @@ -8149,129 +8355,45 @@ If you wish to clean up the files which were left in the old data location, you MultiplayerState - + Current connection status 当前的连接状态 - + Not Connected. Click here to find a room! 未连接。点击此处查找一个房间! - + Not Connected 未连接 - + Connected 已连接 - + New Messages Received 收到了新消息 - + Error 错误 - + Failed to update the room information. Please check your Internet connection and try hosting the room again. Debug Message: 更新房间信息时失败。请检查网络连接并尝试重开房间。 -调试信息: +调试信息: NetworkMessage - - Username is not valid. Must be 4 to 20 alphanumeric characters. - 用户名无效。必须是 4 - 20 个数字和英文字符。 - - - Room name is not valid. Must be 4 to 20 alphanumeric characters. - 房间名称无效。必须是 4 - 20 个数字和英文字符。 - - - Username is already in use or not valid. Please choose another. - 用户名无效或已被他人使用。请选择其他的用户名。 - - - IP is not a valid IPv4 address. - 此 IP 不是有效的 IPv4 地址。 - - - Port must be a number between 0 to 65535. - 端口号必须位于 0 至 65535 之间。 - - - You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - 创建房间需要确定首选游戏。如果您的游戏列表中没有任何游戏,请单击游戏列表的加号图标添加游戏文件夹。 - - - Unable to find an internet connection. Check your internet settings. - 找不到网络连接。请检查您的网络设置。 - - - Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - 无法连接到服务器。请验证连接是否正确无误。如果仍然无法连接,请联系房主,并验证服务器是否正确配置了外部端口。 - - - Unable to connect to the room because it is already full. - 无法连接到该房间,因为该房间已满员。 - - - Creating a room failed. Please retry. Restarting yuzu might be necessary. - 房间创建失败。请重试并重新启动 yuzu。 - - - The host of the room has banned you. Speak with the host to unban you or try a different room. - 此房间的主人已将您封禁。请联系房主进行解封或选择其他房间。 - - - Version mismatch! Please update to the latest version of yuzu. If the problem persists, contact the room host and ask them to update the server. - 版本过低!请更新 yuzu 至最新版本。如果问题仍然存在,请联系告知房主更新服务器。 - - - Incorrect password. - 密码错误。 - - - An unknown error occurred. If this error continues to occur, please open an issue - 发生未知错误。如果此错误依然存在,请及时反馈问题。 - - - Connection to room lost. Try to reconnect. - 与房间的连接丢失。请尝试重新连接。 - - - You have been kicked by the room host. - 您已被房主踢出房间。 - - - IP address is already in use. Please choose another. - 此 IP 地址已在使用中。请选择其他地址。 - - - You do not have enough permission to perform this action. - 您没有足够的权限执行此操作。 - - - The user you are trying to kick/ban could not be found. -They may have left the room. - 找不到您试图踢出房间/封禁的用户。 -他们可能已经离开了房间。 - - - No valid network interface is selected. -Please go to Configure -> System -> Network and make a selection. - 未选择有效的网络接口。 -请于设置 -> 系统 -> 网络中进行相关设置。 - Game already running @@ -8306,10 +8428,132 @@ Proceed anyway? - NetworkMessage::ErrorManager + NewUserDialog - Error - 错误 + + + New User + 新的用户 + + + + Change Avatar + 更换头像 + + + + Set Image + 设置图像 + + + + UUID + UUID + + + + Eden + Eden + + + + Username + 用户名 + + + + UUID must be 32 hex characters (0-9, A-F) + UUID 必须由 32 个十六进制字符(0-9,A-F)组成 + + + + Generate + 生成 + + + + Select User Image + 选择用户图像 + + + + Image Formats (*.jpg *.jpeg *.png *.bmp) + 图像格式 (*.jpg *.jpeg *.png *.bmp) + + + + No firmware available + 没有可用的固件 + + + + Please install the firmware to use firmware avatars. + 请先安装固件,才能使用固件附带的头像。 + + + + + Error loading archive + 载入档案错误 + + + + Archive is not available. Please install/reinstall firmware. + 档案不可用。请安装/重新安装固件。 + + + + Could not locate RomFS. Your file or decryption keys may be corrupted. + 无法定位 RomFS。您的文件或解密密钥可能已损坏。 + + + + Error extracting archive + 解压档案发生错误 + + + + Could not extract RomFS. Your file or decryption keys may be corrupted. + 无法释放 RomFS。您的文件或解密密钥可能已损坏。 + + + + Error finding image directory + 查找图像目录错误 + + + + Failed to find image directory in the archive. + 在档案中查找映像目录错误。 + + + + No images found + 找不到图像 + + + + No avatar images were found in the archive. + 在档案找找不到头像图像。 + + + + + All Good + Tooltip + 全部正常 + + + + Must be 32 hex characters (0-9, a-f) + Tooltip + 必须由 32 个十六进制字符(0-9,A-F)组成 + + + + Must be between 1 and 32 characters + Tooltip + 长度需为 1-32 个字符 @@ -8336,7 +8580,7 @@ Proceed anyway? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -8345,83 +8589,199 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> + + PerformanceOverlay + + + Form + 窗体 + + + + Frametime + 帧时间 + + + + 0 ms + 0 ms + + + + + Min: 0 + 最小:0 + + + + + Max: 0 + 最大: 0 + + + + + Avg: 0 + 平均: 0 + + + + FPS + FPS + + + + 0 fps + 0 fps + + + + %1 fps + %1 fps + + + + + Avg: %1 + 平均: %1 + + + + + Min: %1 + 最小: %1 + + + + + Max: %1 + 最大: %1 + + + + %1 ms + %1 ms + + PlayerControlPreview - + START/PAUSE 开始/暂停 + + ProfileAvatarDialog + + + Select + 选择 + + + + Cancel + 取消 + + + + Background Color + 背景颜色 + + + + Select Firmware Avatar + 选择固件自带头像 + + QObject - - %1 is not playing a game - %1 不在玩游戏 + + + + Migration + 迁移 - - %1 is playing %2 - %1 正在玩 %2 + + Clear Shader Cache + 清除着色器缓存 - - Not playing a game - 不在玩游戏 + + Keep Old Data + 保留旧数据 - - Installed SD Titles - SD 卡中安装的项目 + + Clear Old Data + 清理旧数据 - - Installed NAND Titles - NAND 中安装的项目 + + Link Old Directory + 链接旧目录 - - System Titles - 系统项目 + + + + + + + - - Add New Game Directory - 添加游戏目录 + + + No + - - Favorites - 收藏 + + You can manually re-trigger this prompt by deleting the new config directory: +%1 + 您可以通过删除新建的配置目录来重新触发此提示: +%1 + + + + Migrating + 迁移中 + + + + Migrating, this may take a while... + 迁移中,可能需要一段时间,请稍候…… - - + + Shift Shift - - + + Ctrl Ctrl - - + + Alt Alt - - - - + + + + [not set] [未设置] @@ -8431,15 +8791,15 @@ p, li { white-space: pre-wrap; } 方向键 %1 %2 - - - - - - - - + + + + + + + + Axis %1%2 轴 %1%2 @@ -8449,359 +8809,383 @@ p, li { white-space: pre-wrap; } 按键 %1 - - - - - - + + + + + + [unknown] [未知] - - - + + + Left - - - + + + Right - - - + + + Down - - - + + + Up - - + + Z Z - - + + R R - - + + L L - - + + A A - - + + B B - - + + X X - - + + Y Y - - + + Start 开始 - - + + L1 L1 - - + + L2 L2 - - + + L3 L3 - - + + R1 R1 - - + + R2 R2 - - + + R3 R3 - - + + Circle - - + + Cross - - + + Square - - + + Triangle Δ - - + + Share 分享 - - + + Options 选项 - - + + [undefined] [未指定] - + %1%2 %1%2 - - + + [invalid] [无效] - - + + %1%2Hat %3 %1%2方向键 %3 - - - + + + %1%2Axis %3 %1%2轴 %3 - - + + %1%2Axis %3,%4,%5 %1%2轴 %3,%4,%5 - - + + %1%2Motion %3 %1%2体感 %3 - - + + %1%2Button %3 %1%2按键 %3 - - + + [unused] [未使用] - + ZR ZR - + ZL ZL - + SR SR - + SL SL - + Stick L 左摇杆 - + Stick R 右摇杆 - + Plus - + Minus - - + + Home Home - + Capture 截图 - + Touch 触摸 - + Wheel Indicates the mouse wheel 鼠标滚轮 - + Backward 后退 - + Forward 前进 - + Task 任务键 - + Extra 额外按键 - + %1%2%3%4 %1%2%3%4 - - + + %1%2%3Hat %4 %1%2%3方向键 %4 - - + + %1%2%3Axis %4 %1%2%3轴 %4 - - + + %1%2%3Button %4 %1%2%3 按键 %4 - - - - Migration - + + Not playing a game + 不在玩游戏 - - - - - + + %1 is not playing a game + %1 不在玩游戏 - - - No - + + %1 is playing %2 + %1 正在玩 %2 - - You can manually re-trigger this prompt by deleting the new config directory: -%1 - + + Play Time: %1 + 游玩时间:%1 - - Migrating - + + Never Played + 未曾游玩 - - Migrating, this may take a while... - + + Version: %1 + 版本:%1 + + + + Version: 1.0.0 + 版本:1.0.0 + + + + Installed SD Titles + SD 卡中安装的项目 + + + + Installed NAND Titles + NAND 中安装的项目 + + + + System Titles + 系统项目 + + + + Add New Game Directory + 添加游戏目录 + + + + Favorites + 收藏 @@ -8864,7 +9248,7 @@ p, li { white-space: pre-wrap; } dd/MM/yyyy - dd/MM/yyyy + dd/MM/yyyy @@ -8892,31 +9276,831 @@ p, li { white-space: pre-wrap; } 文件路径 - + No game data present 没有游戏数据 - + The following amiibo data will be formatted: 将格式化以下 amiibo 数据: - + The following game data will removed: 将删除以下游戏数据: - + Set nickname and owner: 设置昵称及所有者: - + Do you wish to restore this amiibo? 您想要恢复这个 amiibo 吗? + + QtCommon::Content + + + Game Requires Firmware + 游戏需要固件 + + + + The game you are trying to launch requires firmware to boot or to get past the opening menu. Please <a href='https://yuzu-mirror.github.io/help/quickstart'>dump and install firmware</a>, or press "OK" to launch anyways. + 您正尝试启动的游戏需要固件才能启动或通过启动画面打开菜单。请 <a href='https://yuzu-mirror.github.io/help/quickstart'>转储并安装固件</a>, 或点击 "确定" 继续启动。 + + + + Installing Firmware... + 正在安装固件…… + + + + + + + + Cancel + 取消 + + + + Firmware Install Failed + 安装固件失败 + + + + Firmware Install Succeeded + 安装固件成功 + + + + Firmware integrity verification failed! + 固件完整性验证失败! + + + + + Verification failed for the following files: + +%1 + 以下文件完整性验证失败: + +%1 + + + + + Verifying integrity... + 正在验证完整性... + + + + + Integrity verification succeeded! + 完整性验证成功! + + + + + The operation completed successfully. + 操作成功完成。 + + + + + Integrity verification failed! + 完整性验证失败! + + + + File contents may be corrupt or missing. + 文件内容可能缺失或已损坏。 + + + + Integrity verification couldn't be performed + 无法执行完整性验证 + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity. + 固件安装失败。固件可能处于异常状态或已损坏,无法验证文件内容的有效性。 + + + + Select Dumped Keys Location + 选择导出的密钥文件位置 + + + + Decryption Keys install succeeded + 密钥文件安装成功 + + + + Decryption Keys install failed + 密钥文件安装失败 + + + + Orphaned Profiles Detected! + 检测到孤立的配置文件! + + + + UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br> + 如果您不阅读此内容,可能会发生意想不到的糟糕情况!<br>Eden 检测到以下存档目录没有附加的配置文件:<br>%1<br><br>下列配置是有效的:<br>%2<br><br>点击“确定”以打开您的存档文件夹并修复配置文件。<br>提示: 将最大或最近修改的文件夹内容复制到其他地方,删除所有孤立的配置文件,然后将复制的内容移到正确的配置文件中。<br><br>还是感到疑惑? 请查看 <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>帮助页</a>。<br> + + + + Really clear data? + 确实要清除数据吗? + + + + Important data may be lost! + 可能会丢失重要的数据! + + + + Are you REALLY sure? + 您真的确定吗? + + + + Once deleted, your data will NOT come back! +Only do this if you're 100% sure you want to delete this data. + 在删除后,您将无法找回数据! +仅在您 100% 确认要删除此数据时才这样做。 + + + + Clearing... + 正在清除... + + + + Select Export Location + 选择导出位置 + + + + %1.zip + %1.zip + + + + + Zipped Archives (*.zip) + 压缩档案 (*.zip) + + + + Exporting data. This may take a while... + 正在导出数据。这可能需要一些时间... + + + + Exporting + 正在导出 + + + + Exported Successfully + 导出成功 + + + + Data was exported successfully. + 数据已成功导出。 + + + + Export Cancelled + 导出已被取消 + + + + Export was cancelled by the user. + 导出已被用户取消。 + + + + Export Failed + 导出失败 + + + + Ensure you have write permissions on the targeted directory and try again. + 请确认您是否具有目标目录的写入权限然后再次尝试。 + + + + Select Import Location + 选择导入位置 + + + + Import Warning + 导入警告 + + + + All previous data in this directory will be deleted. Are you sure you wish to proceed? + 此目录中的所有先前数据将被删除。您确定要继续吗? + + + + Importing data. This may take a while... + 正在导入数据。这需要一些时间... + + + + Importing + 正在导入 + + + + Imported Successfully + 导入成功 + + + + Data was imported successfully. + 数据已导入成功。 + + + + Import Cancelled + 导入已被取消 + + + + Import was cancelled by the user. + 导入已被用户取消。 + + + + Import Failed + 导入失败 + + + + Ensure you have read permissions on the targeted directory and try again. + 请确认是否您具有目标目录的读取权限然后再次尝试。 + + + + QtCommon::FS + + + Linked Save Data + 链接存档数据 + + + + Save data has been linked. + 已链接存档数据。 + + + + Failed to link save data + 链接存档数据失败 + + + + Could not link directory: + %1 +To: + %2 + 无法链接目录: + %1 +到: + %2 + + + + Already Linked + 已链接 + + + + This title is already linked to Ryujinx. Would you like to unlink it? + 此游戏已经被链接到 Ryujinx。您要取消链接它吗? + + + + Failed to unlink old directory + 取消链接旧目录失败 + + + + + OS returned error: %1 + OS 返回错误: %1 + + + + Failed to copy save data + 复制存档数据失败 + + + + Unlink Successful + 取消链接成功 + + + + Successfully unlinked Ryujinx save data. Save data has been kept intact. + 已成功取消链接 Ryujinx 存档数据。存档数据已保持完整。 + + + + Could not find Ryujinx installation + 无法找到 Ryujinx 安装数据 + + + + Could not find a valid Ryujinx installation. This may typically occur if you are using Ryujinx in portable mode. + +Would you like to manually select a portable folder to use? + 未找到有效的 Ryujinx 安装。这通常可能发生在您以便携模式使用 Ryujinx 时。您想手动选择一个便携模式文件夹来使用吗? + + + + Ryujinx Portable Location + 便携 Ryujinx 安装位置 + + + + Not a valid Ryujinx directory + 不是有效的 Ryujinx 安装目录 + + + + The specified directory does not contain valid Ryujinx data. + 指定的目录不包含有效的 Ryujinx 数据。 + + + + + Could not find Ryujinx save data + 找不到 Ryujinx 的存档数据 + + + + QtCommon::Game + + + Error Removing Contents + 删除内容时出错 + + + + Error Removing Update + 删除更新时出错 + + + + Error Removing DLC + 删除 DLC 时出错 + + + + + + + + + Successfully Removed + 删除成功 + + + + Successfully removed the installed base game. + 已成功删除安装的基础游戏。 + + + + The base game is not installed in the NAND and cannot be removed. + 基础游戏未被安装到 NAND 中并且无法被删除。 + + + + Successfully removed the installed update. + 已成功删除安装的更新。 + + + + There is no update installed for this title. + 这个游戏没有任何已安装的更新。 + + + + There are no DLCs installed for this title. + 这个游戏没有任何已安装的 DLC。 + + + + Successfully removed %1 installed DLC. + 成功删除 %1 个已安装的 DLC。 + + + + + Error Removing Transferable Shader Cache + 删除可传输着色器缓存错误 + + + + + A shader cache for this title does not exist. + 这个游戏的着色器缓存不存在。 + + + + Successfully removed the transferable shader cache. + 成功删除可传输着色器缓存。 + + + + Failed to remove the transferable shader cache. + 删除可传输着色器缓存失败。 + + + + Error Removing Vulkan Driver Pipeline Cache + 移除 Vulkan 驱动管线缓存错误 + + + + Failed to remove the driver pipeline cache. + 删除驱动管线缓存失败。 + + + + + Error Removing Transferable Shader Caches + 删除可传输着色器缓存错误 + + + + Successfully removed the transferable shader caches. + 成功删除可传输着色器缓存。 + + + + Failed to remove the transferable shader cache directory. + 删除可传输着色器缓存失败。 + + + + + Error Removing Custom Configuration + 删除自定义配置错误 + + + + A custom configuration for this title does not exist. + 这个游戏的自定义设置不存在。 + + + + Successfully removed the custom game configuration. + 成功移除自定义游戏设置。 + + + + Failed to remove the custom game configuration. + 移除自定义游戏设置失败。 + + + + Reset Metadata Cache + 重置元数据缓存 + + + + The metadata cache is already empty. + 元数据缓存已为空。 + + + + The operation completed successfully. + 操作成功完成。 + + + + The metadata cache couldn't be deleted. It might be in use or non-existent. + 缓存数据删除失败。它可能不存在或正在被使用。 + + + + Create Shortcut + 创建快捷方式 + + + + Do you want to launch the game in fullscreen? + 您想以全屏模式启动游戏吗? + + + + Shortcut Created + 已创建快捷方式 + + + + Successfully created a shortcut to %1 + %1 的快捷方式创建成功 + + + + Shortcut may be Volatile! + 快捷方式可能不稳定! + + + + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? + 这回创建到当前 AppImage 的快捷方式。它可能会在您更新后失效。要继续吗? + + + + Failed to Create Shortcut + 创建快捷方式失败 + + + + Failed to create a shortcut to %1 + %1 的快捷方式创建失败 + + + + Create Icon + 创建图标 + + + + Cannot create icon file. Path "%1" does not exist and cannot be created. + 无法创建图标文件。路径“ %1 ”不存在且无法被创建。 + + + + No firmware available + 无可用固件 + + + + Please install firmware to use the home menu. + 请先安装固件才能使用主页菜单。 + + + + Home Menu Applet + 主页菜单小程序 + + + + Home Menu is not available. Please reinstall firmware. + 主页菜单不可用。请重新安装固件。 + + + + QtCommon::Mod + + + Mod Name + 模组名称 + + + + What should this mod be called? + 这个模组应该叫什么名字? + + + + RomFS + RomFS + + + + ExeFS/Patch + ExeFS/Patch + + + + Cheat + 作弊 + + + + Mod Type + 模组类型 + + + + Could not detect mod type automatically. Please manually specify the type of mod you downloaded. + +Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods. + 无法自动检测模组类型。请手动说明你下载的模组类型。 + +大多数模组是 RomFS 模组,但补丁(.pchtxt)通常是 ExeFS 模组。 + + + + + Mod Extract Failed + 模组提取失败 + + + + Failed to create temporary directory %1 + 未能创建临时 %1 目录 + + + + Zip file %1 is empty + 压缩文件 %1 是空的。 + + + + QtCommon::Path + + + Error Opening Shader Cache + 打开着色器缓存错误 + + + + Failed to create or open shader cache for this title, ensure your app data directory has write permissions. + 无法为此游戏创建或打开着色器缓存,请确保您的 app data 目录具有写入权限。 + + + + QtCommon::StringLookup + + + Contains game save data. DO NOT REMOVE UNLESS YOU KNOW WHAT YOU'RE DOING! + 包含游戏存档数据。除非你知道自己在做什么,否则不要删除! + + + + Contains Vulkan and OpenGL pipeline caches. Generally safe to remove. + 包含 Vulkan 和 OpenGL 管线缓存。通常可以安全删除。 + + + + Contains updates and DLC for games. + 包含游戏的更新和 DLC。 + + + + Contains firmware and applet data. + 包含固件和小程序数据。 + + + + Contains game mods, patches, and cheats. + 包含游戏 mod、补丁以及作弊。 + + + + Decryption Keys were successfully installed + 已成功安装解密密钥 + + + + Unable to read key directory, aborting + 无法读取密钥目录,正在放弃 + + + + One or more keys failed to copy. + 一个或多个密钥复制失败。 + + + + Verify your keys file has a .keys extension and try again. + 请确保密钥文件具有 .keys 的扩展名后重试。 + + + + Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. + 密钥初始化失败。请检查您的转储工具是否为最新版本并重新转储密钥。 + + + + Successfully installed firmware version %1 + 成功安装固件版本 %1 + + + + Unable to locate potential firmware NCA files + 无法定位潜在的固件 NCA 文件 + + + + Failed to delete one or more firmware files. + 删除一个或多个固件文件失败。 + + + + One or more firmware files failed to copy into NAND. + 将一个或多个固件文件复制到 NAND 失败。 + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. Restart Eden or re-install firmware. + 固件安装失败。固件可能处于异常状态或已损坏。请重新启动 Eden 或重新安装固件。 + + + + Firmware missing. Firmware is required to run certain games and use the Home Menu. + 固件缺失。需要固件才能运行某些游戏和主页。 + + + + Firmware reported as present, but was unable to be read. Check for decryption keys and redump firmware if necessary. + 固件已报告存在,但无法读取。如有必要请检查解密密钥并重新转储固件。 + + + + Eden has detected user data for the following emulators: + Eden 已检测到下列模拟器的用户数据: + + + + Would you like to migrate your data for use in Eden? +Select the corresponding button to migrate data from that emulator. +This may take a while. + 您想将数据迁移到 Eden 中使用吗? +请选择相应的按钮从该模拟器迁移数据。 +这可能需要一些时间。 + + + + Clearing shader cache is recommended for all users. +Do not uncheck unless you know what you're doing. + 建议所有用户清除着色器缓存。 +除非您知道自己在做什么,否则不要取消勾选。 + + + + Keeps the old data directory. This is recommended if you aren't +space-constrained and want to keep separate data for the old emulator. + 保留旧的数据目录。如果你的存储空间充足,并且想为旧 +模拟器保留独立的数据,这是推荐做法。 + + + + Deletes the old data directory. +This is recommended on devices with space constraints. + 删除旧的数据目录。 +建议在存储空间有限的设备上执行此操作。 + + + + Creates a filesystem link between the old directory and Eden directory. +This is recommended if you want to share data between emulators. + 在旧目录和 Eden 目录之间创建文件系统链接。 +如果您想在模拟器之间共享数据,建议这样做。 + + + + Ryujinx title database does not exist. + Ryujinx 标题数据库不存在。 + + + + Invalid header on Ryujinx title database. + Ryujinx 标题数据库头部无效。 + + + + Invalid magic header on Ryujinx title database. + Ryujinx 标题数据库 magic 头部无效。 + + + + Invalid byte alignment on Ryujinx title database. + Ryujinx 标题数据字节对齐无效。 + + + + No items found in Ryujinx title database. + 在 Ryujinx 的标题数据库中找不到项目。 + + + + Title %1 not found in Ryujinx title database. + 在 Ryujinx 的标题数据库中找不到标题 %1。 + + QtControllerSelectorDialog @@ -8953,9 +10137,9 @@ p, li { white-space: pre-wrap; } - + Pro Controller - Pro Controller + Pro 控制器 @@ -8966,7 +10150,7 @@ p, li { white-space: pre-wrap; } - + Dual Joycons 双 Joycons 手柄 @@ -8979,7 +10163,7 @@ p, li { white-space: pre-wrap; } - + Left Joycon 左 Joycon 手柄 @@ -8992,7 +10176,7 @@ p, li { white-space: pre-wrap; } - + Right Joycon 右 Joycon 手柄 @@ -9021,7 +10205,7 @@ p, li { white-space: pre-wrap; } - + Handheld 掌机模式 @@ -9142,32 +10326,32 @@ p, li { white-space: pre-wrap; } 控制器数量不足 - + GameCube Controller GameCube 控制器 - + Poke Ball Plus 精灵球 PLUS - + NES Controller NES 控制器 - + SNES Controller SNES 控制器 - + N64 Controller N64 控制器 - + Sega Genesis 世嘉创世纪 @@ -9175,28 +10359,28 @@ p, li { white-space: pre-wrap; } QtErrorDisplay - - - + + + Error Code: %1-%2 (0x%3) 错误代码: %1-%2 (0x%3) - + An error has occurred. Please try again or contact the developer of the software. 发生了一个错误。 请再试一次或联系开发者。 - + An error occurred on %1 at %2. Please try again or contact the developer of the software. %1 上的 %2 处发生了一个错误。 请再试一次或联系开发者。 - + An error has occurred. %1 @@ -9212,7 +10396,7 @@ Please try again or contact the developer of the software. QtProfileSelectionDialog - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -9220,7 +10404,7 @@ Please try again or contact the developer of the software. %2 - + Users 用户 @@ -9313,7 +10497,7 @@ Please try again or contact the developer of the software. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -9322,17 +10506,59 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - - + + OK 确定 - + Cancel 取消 + + RyujinxDialog + + + Ryujinx Link + 链接 Ryujinx + + + + Linking save data to Ryujinx lets both Ryujinx and Eden reference the same save files for your games. + +By selecting "From Eden", previous save data stored in Ryujinx will be deleted, and vice versa for "From Ryujinx". + 将存档数据链接到 Ryujinx 可以使 Ryujinx 和 Eden 都能引用相同的游戏存档文件。 + +选择 “来自 Eden” 时,Ryujinx 中存储的上一个保存数据将被删除,反之选择“从 Ryujinx 开始”时亦然。 + + + + From Eden + 来自 Eden + + + + From Ryujinx + 来自 Ryujinx + + + + Cancel + 取消 + + + + Failed to link save data + 链接存档数据失败 + + + + OS returned error: %1 + OS 返回错误: %1 + + SequenceDialog @@ -9342,143 +10568,31 @@ p, li { white-space: pre-wrap; } - WaitTreeCallstack + SetPlayTimeDialog - - Call stack - 调用栈 - - - - WaitTreeSynchronizationObject - - - [%1] %2 - [%1] %2 + + Set Play Time Data + 设置游戏时间数据 - - waited by no thread - 没有等待的线程 - - - - WaitTreeThread - - - runnable - 可运行 + + Hours: + 小时: - - paused - 已暂停 + + Minutes: + 分: - - sleeping - 睡眠中 + + Seconds: + 秒: - - waiting for IPC reply - 等待 IPC 响应 - - - - waiting for objects - 等待对象 - - - - waiting for condition variable - 等待条件变量 - - - - waiting for address arbiter - 等待 address arbiter - - - - waiting for suspend resume - 等待挂起的线程 - - - - waiting - 等待中 - - - - initialized - 初始化完毕 - - - - terminated - 线程终止 - - - - unknown - 未知 - - - - PC = 0x%1 LR = 0x%2 - PC = 0x%1 LR = 0x%2 - - - - ideal - ideal - - - - core %1 - 核心 %1 - - - - processor = %1 - 处理器 = %1 - - - - affinity mask = %1 - 关联掩码 = %1 - - - - thread id = %1 - 线程 ID = %1 - - - - priority = %1(current) / %2(normal) - 优先级 = %1 (实时) / %2 (正常) - - - - last running ticks = %1 - 最后运行频率 = %1 - - - - WaitTreeThreadList - - - waited by thread - 等待中的线程 - - - - WaitTreeWidget - - - &Wait Tree - 等待树 (&W) + + Total play time reached maximum. + 总计游戏时间已到达最大值。 diff --git a/dist/languages/zh_TW.ts b/dist/languages/zh_TW.ts index 8e8b20e963..4227f7500d 100644 --- a/dist/languages/zh_TW.ts +++ b/dist/languages/zh_TW.ts @@ -1,25 +1,15 @@ - - - + AboutDialog - - About yuzu - 關於 yuzu - - - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - <html><head/><body><p><span style=" font-size:28pt;">yuzu</span></p></body></html> - - About eden - + About Eden + 關於Eden - <html><head/><body><p><span style=" font-size:28pt;">eden</span></p></body></html> - + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> + <html><head/><body><p><span style=" font-size:28pt;">Eden</span></p></body></html> @@ -34,70 +24,57 @@ p, li { white-space: pre-wrap; } hr { height: 1px; border-width: 0; } li.unchecked::marker { content: "\2610"; } li.checked::marker { content: "\2612"; } -</style></head><body style=" font-family:'Adwaita Sans'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> - +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+ which is based on the yuzu emulator which ended development back in March 2024. <br /><br />This software should not be used to play games you have not legally obtained.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css"> +p, li { white-space: pre-wrap; } +hr { height: 1px; border-width: 0; } +li.unchecked::marker { content: "\2610"; } +li.checked::marker { content: "\2612"; } +</style></head><body style=" font-family:'Noto Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Eden是一個根據GPLv3.0+ 許可證開放原始碼的實驗性Switch模擬器,基於已在2024年三月停止開發的yuzu模擬器而來<br /><br />您不該使用此軟體遊玩非法取得的遊戲。</span></p></body></html> - <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu is an experimental open-source emulator for the Nintendo Switch licensed under GPLv3.0+.</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">This software should not be used to play games you have not legally obtained.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">yuzu 是一個實驗性的開源 Nintendo Switch 模擬器,以 GPLv3.0+ 授權。</span></p> -<p style="-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;"><br /></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">本軟體不得用於執行非法取得的遊戲。</span></p></body></html> - - - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://yuzu-emu.org/"><span style=" text-decoration: underline; color:#039be5;">官網</span></a> | <a href="https://github.com/yuzu-emu"><span style=" text-decoration: underline; color:#039be5;">原始碼</span></a> | <a href="https://github.com/yuzu-emu/yuzu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">貢獻者</span></a> | <a href="https://github.com/yuzu-emu/yuzu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">許可證</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a> | <a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a> | <a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://eden-emulator.github.io/"><span style=" text-decoration: underline; color:#039be5;">網站</span></a>|<a href="https://git.eden-emu.dev"><span style=" text-decoration: underline; color:#039be5;">原始碼</span></a>|<a href="https://git.eden-emu.dev/eden-emu/eden/activity/contributors"><span style=" text-decoration: underline; color:#039be5;">貢獻者</span></a>|<a href="https://discord.gg/HstXbPch7X"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a>|<a href="https://stt.gg/qKgFEAbH"><span style=" text-decoration: underline; color:#039be5;">Stoat</span></a>|<a href="https://nitter.poast.org/edenemuofficial"><span style=" text-decoration: underline; color:#039be5;">Twitter</span></a>|<a href="https://git.eden-emu.dev/eden-emu/eden/src/branch/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">許可證</span></a></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. eden is not affiliated with Nintendo in any way.</span></p></body></html> - <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; 是任天堂的商標。yuzu與任天堂沒有任何關係。</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;Nintendo Switch&quot; is a trademark of Nintendo. Eden is not affiliated with Nintendo in any way.</span></p></body></html> + <html><head/><body><p><span style=" font-size:7pt;">&quot;任天堂Switch&quot; 是任天堂的商標,Eden跟任天堂沒有任何關係</span></p></body></html> CalibrationConfigurationDialog - + Communicating with the server... 與伺服器連線中... - + Cancel 取消 - + Touch the top left corner <br>of your touchpad. 觸碰您的觸控板<br>左上角 - + Now touch the bottom right corner <br>of your touchpad. 接著觸碰您的觸控板<br>右下角 - + Configuration completed! 設定完成! - + OK 確定 @@ -120,78 +97,78 @@ p, li { white-space: pre-wrap; } 傳送訊息 - + Members 成員 - + %1 has joined %1 已加入 - + %1 has left %1 已離開 - + %1 has been kicked %1 已被踢出房間 - + %1 has been banned %1 已被封鎖 - + %1 has been unbanned %1 已被解除封鎖 - + View Profile 查看個人資料 - - + + Block Player 隱藏玩家 - + When you block a player, you will no longer receive chat messages from them.<br><br>Are you sure you would like to block %1? 當你隱藏玩家後,你將無法收到他們的聊天訊息。<br><br>您确定要隱藏 %1 嗎? - + Kick 踢出 - + Ban 封鎖 - + Kick Player - 踢除玩家 + 踢出玩家 - + Are you sure you would like to <b>kick</b> %1? 您確定要將 %1 <b>踢出</b>嗎? - + Ban Player 封鎖玩家 - + Are you sure you would like to <b>kick and ban</b> %1? This would ban both their forum username and their IP address. @@ -210,12 +187,12 @@ This would ban both their forum username and their IP address. Room Description - 房間敘述 + 房間介紹 Moderation... - 内容審核... + 房主審核中... @@ -226,17 +203,17 @@ This would ban both their forum username and their IP address. ClientRoomWindow - + Connected 已連線 - + Disconnected 已斷開連線 - + %1 - %2 (%3/%4 members) - connected %1 - %2 (%3/%4 個成員) - 已連線 @@ -259,14 +236,10 @@ This would ban both their forum username and their IP address. Report Game Compatibility 回報遊戲相容性 - - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of yuzu you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected yuzu account</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">如果您選擇向 </span><a href="https://yuzu-emu.org/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">yuzu 相容性清單</span></a><span style=" font-size:10pt;">上傳測試結果,以下資訊將會被收集並顯示在網站上:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">裝置硬體資訊 (CPU / GPU / 作業系統)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">您正在使用的 yuzu 版本</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">已登入的 yuzu 帳號資訊</li></ul></body></html> - <html><head/><body><p><span style=" font-size:10pt;">Should you choose to submit a test case to the </span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">eden Compatibility List</span></a><span style=" font-size:10pt;">, The following information will be collected and displayed on the site:</span></p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hardware Information (CPU / GPU / Operating System)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Which version of eden you are running</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The connected eden account</li></ul></body></html> - + <html><head/><body><span style=" font-size:10pt;">若您選擇要傳送測試範本到</span><a href="https://eden-emulator.github.io/game/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">Eden相容性清單</span></a><span style=" font-size:10pt;">,以下的資訊將會被收集而且會顯示在Eden相容性清單的網站上:</span><p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">硬體資訊(CPU/GPU/作業系統)</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">您正在使用的Eden版本</li><li style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">已連接的Eden帳號</li></ul></body></html> @@ -286,7 +259,7 @@ This would ban both their forum username and their IP address. Yes The game gets past the intro/menu and into gameplay - 是的,遊戲出現前奏/菜單頁面並進入遊戲 + 是的,遊戲可以通過開場動畫/主選單頁面並且可進行遊戲 @@ -301,17 +274,17 @@ This would ban both their forum username and their IP address. Yes The game works without crashes - 是,遊戲正常運作,並無當機 + 是,遊戲正常運作,沒有崩潰 No The game crashes or freezes during gameplay - 否,遊玩過程中會出現當機或凍結 + 否,遊玩過程中會崩潰或卡死 <html><head/><body><p>Does the game work without crashing, freezing or locking up during gameplay?</p></body></html> - <html><head/><body><p>遊戲在遊玩時有沒有當機、凍結或鎖死?</p></body></html> + <html><head/><body><p>遊戲在遊玩時有沒有崩潰、卡死或當機?</p></body></html> @@ -321,7 +294,7 @@ This would ban both their forum username and their IP address. No The game can't progress past a certain area - 有,遊戲在特定區域無法繼續 + 有,遊戲在進行到特定區域後無法繼續遊玩 @@ -346,7 +319,7 @@ This would ban both their forum username and their IP address. <html><head/><body><p>Does the game have any graphical glitches?</p></body></html> - <html><head/><body><p>遊戲運行時出現了圖形問題嗎?</p></body></html> + <html><head/><body><p>遊戲運行時有出現圖形問題嗎?</p></body></html> @@ -374,22 +347,22 @@ This would ban both their forum username and their IP address. 感謝您的回報! - + Submitting 上傳中 - + Communication error 連線錯誤 - + An error occurred while sending the Testcase 在上傳測試結果時發生錯誤 - + Next 下一步 @@ -397,1587 +370,1889 @@ This would ban both their forum username and their IP address. ConfigurationShared - + % % - + Amiibo editor - Amiibo 编辑器 + Amiibo 編輯器 - + Controller configuration - 控制器设置 + 控制器設定 - + Data erase - 清除数据 + 清除資料 - + Error 錯誤 - + Net connect - 网络连接 + 網路連接 - + Player select - 选择玩家 + 選擇玩家 - + Software keyboard 軟體鍵盤 - + Mii Edit - Mii Edit + Mii 編輯 - + Online web - 在线网站 + 線上網頁 - + Shop 商店 - + Photo viewer - 照片查看器 + 媒體瀏覽器 - + Offline web - 离线网络 + 離線網頁 - + Login share - 第三方账号登录 + 第三方帳號登入 - + Wifi web auth - Wifi 网络认证 + Wifi 網路的網頁認證 - + My page - 我的主页 + 我的主頁 - + + Enable Overlay Applet + + + + + Enables Horizon's built-in overlay applet. Press and hold the home button for 1 second to show it. + + + + Output Engine: 輸出引擎: - + Output Device: 輸出裝置: - + Input Device: 輸入裝置: - + Mute audio - 静音 + 靜音 - + Volume: 音量: - + Mute audio when in background 模擬器在背景執行時靜音 - + Multicore CPU Emulation - 多核心 CPU 模擬 + 多核心CPU模擬 - - This option increases CPU emulation thread use from 1 to the Switch’s maximum of 4. -This is mainly a debug option and shouldn’t be disabled. - 此选项将 CPU 模拟线程的数量从 1 增加到 Switch 实机的最大值 4。 -这是调试选项,不应被禁用。 + + This option increases CPU emulation thread use from 1 to the maximum of 4. +This is mainly a debug option and shouldn't be disabled. + 可選擇使用1~4核心進行CPU模擬 +這是一個偵錯用選項且不建議停用 - + Memory Layout - 内存布局 + 記憶體佈局 - - Increases the amount of emulated RAM from the stock 4GB of the retail Switch to the developer kit's 8/6GB. -It’s doesn’t improve stability or performance and is intended to let big texture mods fit in emulated RAM. -Enabling it will increase memory use. It is not recommended to enable unless a specific game with a texture mod needs it. - 提升模拟内存容量,从零售 Switch 通常的 4GB 内存增加到开发机的 6/8GB 内存。 -不会提高稳定性和性能,而是让大型纹理 Mod 适用于模拟内存。 -启用时将增加内存使用量。建议不要启用,除非具有纹理 Mod 的某些游戏需要。 + + Increases the amount of emulated RAM. +Doesn't affect performance/stability but may allow HD texture mods to load. + - + Limit Speed Percent 執行速度限制 - - Controls the game's maximum rendering speed, but it’s up to each game if it runs faster or not. + + Controls the game's maximum rendering speed, but it's up to each game if it runs faster or not. 200% for a 30 FPS game is 60 FPS, and for a 60 FPS game it will be 120 FPS. Disabling it means unlocking the framerate to the maximum your PC can reach. - 控制游戏的最大渲染速度,取决于游戏的运行速度。 -对于 30 FPS 的游戏,设置为 200% 则将最高运行速度限制为 60 FPS;对于 60 FPS 的游戏,设置为 200% 则将最高运行速度限制为 120 FPS。 -禁用此项将解锁帧率限制,尽可能快地运行游戏。 + 控制遊戲的最大渲染速度,但遊戲是否運行得更快取決於遊戲本身 +如果在一個30FPS的遊戲中將模擬速度設為200%,那遊戲的FPS將會提升到60;如果原本就是60FPS,那將會提升至120FPS +停用此功能會讓遊戲以您的電腦性能可達到的最高FPS來運行 - + + Turbo Speed + + + + + When the Turbo Speed hotkey is pressed, the speed will be limited to this percentage. + + + + + Slow Speed + + + + + When the Slow Speed hotkey is pressed, the speed will be limited to this percentage. + + + + Synchronize Core Speed - + 同步核心速度 - - Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). -Compatibility varies by game; many (especially older ones) may not respond well. + + Synchronizes CPU core speed with the game's maximum rendering speed to boost FPS without affecting game speed (animations, physics, etc.). Can help reduce stuttering at lower framerates. - + 將CPU核心的速度與遊戲所能到達的最大渲染速度同步,以在不改變遊戲實際速度的情況下提高FPS +可在較低FPS時減少卡頓的情況 - + Accuracy: - 精度: + 準確度: - - This setting controls the accuracy of the emulated CPU. -Don't change this unless you know what you are doing. - 此选项控制模拟 CPU 的精度。 -如果您不确定,就不要更改此项。 + + Change the accuracy of the emulated CPU (for debugging only). + 改變模擬CPU的準確度(僅限偵錯用) - - + + Backend: - 后端: + 後端: - - Fast CPU Time - + + CPU Overclock + - + Overclocks the emulated CPU to remove some FPS limiters. Weaker CPUs may see reduced performance, and certain games may behave improperly. Use Boost (1700MHz) to run at the Switch's highest native clock, or Fast (2000MHz) to run at 2x clock. - + 強制模擬 CPU 以更高的時脈運行,減少某些 FPS 限制。較弱的 CPU 可能會看到效能下降,特定遊戲可能會出現問題。 +使用 Boost (1700MHz) 以 Switch 的最高原生時脈運行,或 Fast (2000MHz) 以雙倍時脈運行。 - + + Custom CPU Ticks + 自訂CPU時脈 + + + + Set a custom value of CPU ticks. Higher values can increase performance, but may cause deadlocks. A range of 77-21000 is recommended. + 自訂CPU時脈。更高的值可能提高效能,但也可能導致遊戲卡死。建議範圍為77-21000。 + + + + Enable Host MMU Emulation (fastmem) + 啟用主機 MMU 模擬(fastmem) + + + + This optimization speeds up memory accesses by the guest program. +Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU. +Disabling this forces all memory accesses to use Software MMU Emulation. + 此最佳化可加速來賓程式的記憶體存取。 +啟用後,來賓記憶體讀取/寫入將直接在記憶體中執行並利用主機的 MMU。 +停用此功能將強制所有記憶體存取使用軟體 MMU 模擬。 + + + Unfuse FMA (improve performance on CPUs without FMA) - 不使用 FMA 指令集(能使不支援 FMA 指令集的 CPU 提高效能) + 解除融合FMA(能讓不支援 FMA 指令集的 CPU 提高效能) - + This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support. - 该选项通过降低积和熔加运算的精度来提高模拟器在不支持 FMA 指令集 CPU 上的运行速度。 + 透過降低積和熔加運算的準確度來提高模擬器在不支援FMA指令集CPU上的運行速度 - + Faster FRSQRTE and FRECPE 更快的 FRSQRTE 和 FRECPE - + This option improves the speed of some approximate floating-point functions by using less accurate native approximations. - 该选项通过使用精度较低的近似值来提高某些浮点函数的运算速度。 + 透過使用準確度較低的近似值來提高某些浮點函數的運算速度 - + Faster ASIMD instructions (32 bits only) 快速 ASIMD 指令(僅限 32 位元) - + This option improves the speed of 32 bits ASIMD floating-point functions by running with incorrect rounding modes. - 该选项通过不正确的舍入模式来提高 32 位 ASIMD 浮点函数的运行速度。 + 透過使用不準確的捨入模式來提高32位元ASIMD浮點函數的運算速度 - + Inaccurate NaN handling - 低精度 NaN 處理 + 低準確度NaN處理 - + This option improves speed by removing NaN checking. Please note this also reduces accuracy of certain floating-point instructions. - 该选项通过取消非数检查来提高速度。 -请注意,这也会降低某些浮点指令的精确度。 + 透過取消NaN檢查來提高速度。 +請注意,啟用後會降低些浮點指令的準確度 - + Disable address space checks 停用位址空間檢查 - - This option improves speed by eliminating a safety check before every memory read/write in guest. -Disabling it may allow a game to read/write the emulator's memory. - 此选项通过取消每次模拟内存读/写前的安全检查来提高速度。 -禁用此选项可能会允许游戏读/写模拟器自己的内存。 + + This option improves speed by eliminating a safety check before every memory operation. +Disabling it may allow arbitrary code execution. + 透過省略在每次記憶體操作前執行的安全檢查來提高速度 +停用此功能可能會允許任意程式碼執行 - + Ignore global monitor - 忽略全局监视器 + 忽略全局監視器 - + 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. - 此选项仅通过 cmpxchg 指令来提高速度,以确保独占访问指令的安全性。 -请注意,这可能会导致死锁和其他问题。 + 透過僅依賴cmpxchg指令來確保獨佔存取指令的安全性並提高速度。 +請注意,這可能會導致死鎖或其它問題 - + API: API: - - Switches between the available graphics APIs. -Vulkan is recommended in most cases. - 切换图形 API。 -大多数情况下建议使用 Vulkan。 + + Changes the output graphics API. +Vulkan is recommended. + 更改使用的圖形API +推薦使用Vulkan - + Device: 裝置: - - This setting selects the GPU to use with the Vulkan backend. - 切换图形 API 为 Vulkan 时使用的 GPU。 + + This setting selects the GPU to use (Vulkan only). + 選擇要使用的GPU(僅限Vulkan) - - Shader Backend: - 著色器後端: - - - - The shader backend to use for the OpenGL renderer. -GLSL is the fastest in performance and the best in rendering accuracy. -GLASM is a deprecated NVIDIA-only backend that offers much better shader building performance at the cost of FPS and rendering accuracy. -SPIR-V compiles the fastest, but yields poor results on most GPU drivers. - 切换 OpenGL 渲染器的着色器后端。 -GLSL 具有最好的性能和渲染精度。 -GLASM 仅限于 NVIDIA GPU,以 FPS 和渲染精度为代价提供更好的着色器构建性能。 -SPIR-V 编译速度最快,但在大多数 GPU 驱动程序上表现很差。 - - - + Resolution: 解析度: - - Forces the game to render at a different resolution. -Higher resolutions require much more VRAM and bandwidth. -Options lower than 1X can cause rendering issues. - 指定游戏画面的分辨率。 -更高的分辨率需要更多的 VRAM 和带宽。 -低于 1X 的选项可能造成渲染问题。 + + Forces to render at a different resolution. +Higher resolutions require more VRAM and bandwidth. +Options lower than 1X can cause artifacts. + 強制以不同的解析度進行渲染 +較高的解析度需要使用更多的VRAM和頻寬 +選擇低於1X的解析度可能會導致畫面異常 - + Window Adapting Filter: - 視窗濾鏡: + 視窗適應過濾器: - + FSR Sharpness: - FSR 清晰度: + FSR 銳化度: - - Determines how sharpened the image will look while using FSR’s dynamic contrast. - 指定使用 FSR 时图像的锐化程度。 + + Determines how sharpened the image will look using FSR's dynamic contrast. + 調整使用FSR的動態對比時影像的銳利度 - + Anti-Aliasing Method: - 抗鋸齒方式: + 抗鋸齒: - + The anti-aliasing method to use. SMAA offers the best quality. -FXAA has a lower performance impact and can produce a better and more stable picture under very low resolutions. - 切换抗锯齿的方式。 -子像素形态学抗锯齿提供最佳质量。 -快速近似抗锯齿对性能影响较小,可以在非常低的分辨率下生成更好、更稳定的图像。 +FXAA can produce a more stable picture in lower resolutions. + 選擇要使用的抗鋸齒方法 +SMAA的品質最佳 +FXAA在低解析度下可以產生較穩定的畫面 - + Fullscreen Mode: 全螢幕模式: - + The method used to render the window in fullscreen. Borderless offers the best compatibility with the on-screen keyboard that some games request for input. Exclusive fullscreen may offer better performance and better Freesync/Gsync support. - 指定游戏的全屏模式。 -无边框窗口对屏幕键盘具有最好的兼容性,适用于某些需要屏幕键盘进行输入的游戏。 -独占全屏提供更好的性能和 Freesync/Gsync 支持。 + 將視窗呈現為全螢幕的方式。 +無邊框視窗對虛擬鍵盤有最好的相容性,適合某些需要使用它來進行輸入的遊戲。 +獨佔全螢幕將提供更好的性能以及更佳的FreeSync/G-Sync支援 - + Aspect Ratio: 長寬比: - - Stretches the game to fit the specified aspect ratio. -Switch games only support 16:9, so custom game mods are required to get other ratios. + + Stretches the renderer to fit the specified aspect ratio. +Most games only support 16:9, so modifications are required to get other ratios. Also controls the aspect ratio of captured screenshots. - 拉伸游戏画面以适应指定的屏幕纵横比。 -Switch 游戏只支持 16:9,因此需要 Mod 才能实现其他比例。 -此选项也控制捕获的屏幕截图的纵横比。 + - - Use disk pipeline cache - 使用硬碟管線快取 + + Use persistent pipeline cache + - + Allows saving shaders to storage for faster loading on following game boots. Disabling it is only intended for debugging. - 将生成的着色器保存到硬盘,提高后续游戏过程中的着色器加载速度。 -请仅在调试时禁用此项。 + 將產生的著色器快取儲存至硬碟,讓遊戲在後續過程中不需再次產生以提高速度 +建議僅在偵錯時才停用此選項 - - Optimize SPIRV output shader - + + Optimize SPIRV output + - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. This feature is experimental. - + (實驗性)對產生的Spir-V著色器進行最佳化 +會增加編譯著色器所需的時間 +但可能會稍微提高效能 - - Use asynchronous GPU emulation - 使用非同步 CPU 模擬 - - - - Uses an extra CPU thread for rendering. -This option should always remain enabled. - 使用额外的 CPU 线程进行渲染。 -此选项应始终保持启用状态。 - - - + NVDEC emulation: - NVDEC 模擬方式: + NVDEC 模擬: - + Specifies how videos should be decoded. It can either use the CPU or the GPU for decoding, or perform no decoding at all (black screen on videos). In most cases, GPU decoding provides the best performance. - 指定解码视频的方式。 -可以使用 CPU 或 GPU 进行解码,也可以完全不进行解码(遇到视频则黑屏处理)。 -大多数情况下,使用 GPU 解码将提供最好的性能。 + 選擇影片解碼的方式 +可以使用CPU或GPU進行解碼,也可以完全不進行解碼(遇到影片會直接顯示黑螢幕) +GPU解碼在大多數情況下提供最好的性能 - + ASTC Decoding Method: - ASTC 纹理解码方式: + ASTC解碼方式: - + This option controls how ASTC textures should be decoded. -CPU: Use the CPU for decoding, slowest but safest method. -GPU: Use the GPU's compute shaders to decode ASTC textures, recommended for most games and users. -CPU Asynchronously: Use the CPU to decode ASTC textures as they arrive. Completely eliminates ASTC decoding -stuttering at the cost of rendering issues while the texture is being decoded. - 此选项控制 ASTC 纹理解码方式。 -CPU:使用 CPU 进行解码,速度最慢但最安全。 -GPU:使用 GPU 的计算着色器来解码 ASTC 纹理,建议大多数游戏和用户使用此项。 -CPU 异步模拟:使用 CPU 在 ASTC 纹理到达时对其进行解码。 -消除 ASTC 解码带来的卡顿,但在解码时可能出现渲染问题。 +CPU: Use the CPU for decoding. +GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). +CPU Asynchronously: Use the CPU to decode ASTC textures on demand. EliminatesASTC decoding +stuttering but may present artifacts. + - + ASTC Recompression Method: - ASTC 纹理重压缩方式: + ASTC重新壓縮方式: - - Almost all desktop and laptop dedicated GPUs lack support for ASTC textures, forcing the emulator to decompress to an intermediate format any card supports, RGBA8. -This option recompresses RGBA8 to either the BC1 or BC3 format, saving VRAM but negatively affecting image quality. - 几乎所有台式机和笔记本电脑 GPU 都不支持 ASTC 纹理,这迫使模拟器解压纹理到 GPU 支持的中间格式 RGBA8。 -此选项可将 RGBA8 重新压缩为 BC1 或 BC3 格式,节省 VRAM,但会对图像质量产生负面影响。 + + Most GPUs lack support for ASTC textures and must decompress to anintermediate format: RGBA8. +BC1/BC3: The intermediate format will be recompressed to BC1 or BC3 format, + saving VRAM but degrading image quality. + - + + Frame Pacing Mode (Vulkan only) + + + + + Controls how the emulator manages frame pacing to reduce stuttering and make the frame rate smoother and more consistent. + + + + VRAM Usage Mode: VRAM 使用模式: - - Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. Has no effect on integrated graphics. Aggressive mode may severely impact the performance of other applications such as recording software. - 指定模拟器倾向于节省 VRAM 或最大限度利用 VRAM 来提高性能。对核芯显卡没有影响。激进模式可能会严重影响其他应用程序(如录屏软件)的性能。 + + Selects whether the emulator should prefer to conserve memory or make maximum usage of available video memory for performance. +Aggressive mode may impact performance of other applications such as recording software. + - + + Skip CPU Inner Invalidation + 跳過CPU內部失效處理 + + + + Skips certain cache invalidations during memory updates, reducing CPU usage and improving latency. This may cause soft-crashes. + + + + VSync Mode: - 垂直同步模式: + 垂直同步: - + FIFO (VSync) does not drop frames or exhibit tearing but is limited by the screen refresh rate. -FIFO Relaxed is similar to FIFO but allows tearing as it recovers from a slow down. +FIFO Relaxed 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. - FIFO (垂直同步)不会掉帧或产生画面撕裂,但受到屏幕刷新率的限制。 -FIFO Relaxed 类似于 FIFO,但允许从低 FPS 恢复时产生撕裂。 -Mailbox 具有比 FIFO 更低的延迟,不会产生撕裂但可能会掉帧。 -Immediate (无同步)只显示可用内容,并可能产生撕裂。 +Immediate (no synchronization) presents whatever is available and can exhibit tearing. + - + + Sync Memory Operations + 同步記憶體操作 + + + + Ensures data consistency between compute and memory operations. +This option fixes issues in games, but may degrade performance. +Unreal Engine 4 games often see the most significant changes thereof. + + + + Enable asynchronous presentation (Vulkan only) - 启用异步帧提交 (仅限 Vulkan) + 啟用非同步顯示(僅限Vulkan) - + Slightly improves performance by moving presentation to a separate CPU thread. - 将帧提交移动到单独的 CPU 线程,略微提高性能。 + 透過將畫面顯示移至獨立的CPU執行緒來略微提升性能。 - + Force maximum clocks (Vulkan only) - 强制最大时钟 (仅限 Vulkan 模式) + 強制使用最大時脈(僅限Vulkan) - + Runs work in the background while waiting for graphics commands to keep the GPU from lowering its clock speed. - 在后台运行的同时等待图形命令,以防止 GPU 降低时钟速度。 + 在等待圖形命令時於背景執行任務以防GPU降低時脈 - + Anisotropic Filtering: 各向異性過濾: - + Controls the quality of texture rendering at oblique angles. -It’s a light setting and safe to set at 16x on most GPUs. - 控制斜角的纹理渲染质量。 -这是一个渲染相关的选项,在大多数 GPU 上设置为 16x 是安全的。 +Safe to set at 16x on most GPUs. + - - Accuracy Level: - 精度: + + GPU Mode: + - - GPU emulation accuracy. -Most games render fine with Normal, but High is still required for some. -Particles tend to only render correctly with High accuracy. -Extreme should only be used for debugging. -This option can be changed while playing. -Some games may require booting on high to render properly. - 指定 GPU 模拟精度。 -大多数游戏设置为“正常”时渲染效果良好,但某些游戏需要设置为“高”。 -粒子效果只能以高精度才能正确渲染。 -“极高”只用于调试。 -此选项可在游戏运行时更改。 -某些游戏可能在启动时设置为“高”才能正确渲染。 + + Controls the GPU emulation mode. +Most games render fine with Fast or Balanced modes, but Accurate is still required for some. +Particles tend to only render correctly with Accurate mode. + - - Use asynchronous shader building (Hack) - 使用非同步著色器編譯(不穩定) + + DMA Accuracy: + - - Enables asynchronous shader compilation, which may reduce shader stutter. -This feature is experimental. - 启用异步着色器编译,可能会减少着色器卡顿。 -实验性功能。 + + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. + - Use Fast GPU Time (Hack) - 使用快速 GPU 時間(不穩定) + + Enable asynchronous shader compilation + - Enables Fast GPU Time. This option will force most games to run at their highest native resolution. - 啟用快速 GPU 時間。此選項將強制大多數遊戲以其最高解析度執行。 + + May reduce shader stutter. + - + + Fast GPU Time + + + + + Overclocks the emulated GPU to increase dynamic resolution and render distance. +Use 256 for maximal performance and 512 for maximal graphics fidelity. + + + + + GPU Unswizzle + + + + + Accelerates BCn 3D texture decoding using GPU compute. +Disable if experiencing crashes or graphical glitches. + + + + + GPU Unswizzle Max Texture Size + + + + + Sets the maximum size (MiB) for GPU-based texture unswizzling. +While the GPU is faster for medium and large textures, the CPU may be more efficient for very small ones. +Adjust this to find the balance between GPU acceleration and CPU overhead. + + + + + GPU Unswizzle Stream Size + + + + + Sets the maximum amount of texture data (in MiB) processed per frame. +Higher values can reduce stutter during texture loading but may impact frame consistency. + + + + + GPU Unswizzle Chunk Size + + + + + Determines the number of depth slices processed in a single dispatch. +Increasing this can improve throughput on high-end GPUs but may cause TDR or driver timeouts on weaker hardware. + + + + Use Vulkan pipeline cache 启用 Vulkan 管线缓存 - + Enables GPU vendor-specific pipeline cache. This option can improve shader loading time significantly in cases where the Vulkan driver does not store pipeline cache files internally. 启用 GPU 供应商专用的管线缓存。 在 Vulkan 驱动程序内部不存储管线缓存的情况下,此选项可显著提高着色器加载速度。 - + Enable Compute Pipelines (Intel Vulkan Only) 启用计算管线 (仅限 Intel 显卡 Vulkan 模式) - - Enable compute pipelines, required by some games. -This setting only exists for Intel proprietary drivers, and may crash if enabled. + + 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. - 启用某些游戏所需的计算管线。 -此选项仅适用于英特尔专有驱动程序。如果启用,可能会造成崩溃。 -在其他的驱动程序上将始终启用计算管线。 + - + Enable Reactive Flushing 启用反应性刷新 - + Uses reactive flushing instead of predictive flushing, allowing more accurate memory syncing. 使用反应性刷新取代预测性刷新,从而更精确地同步内存。 - + Sync to framerate of video playback 播放视频时帧率同步 - + Run the game at normal speed during video playback, even when the framerate is unlocked. 在视频播放期间以正常速度运行游戏,即使帧率未锁定。 - + Barrier feedback loops 屏障反馈循环 - + Improves rendering of transparency effects in specific games. 改进某些游戏中透明效果的渲染。 - + + Enable buffer history + + + + + Enables access to previous buffer states. +This option may improve rendering quality and performance consistency in some games. + + + + + Fix bloom effects + + + + + Removes bloom in Burnout. + + + + + Enable Legacy Rescale Pass + + + + + May fix rescale issues in some games by relying on behavior from the previous implementation. +Legacy behavior workaround that fixes line artifacts on AMD and Intel GPUs, and grey texture flicker on Nvidia GPUs in Luigis Mansion 3. + + + + + Extended Dynamic State + + + + + Controls the number of features that can be used in Extended Dynamic State. +Higher states allow for more features and can increase performance, but may cause additional graphical issues. + + + + + Vertex Input Dynamic State + + + + + Enables vertex input dynamic state feature for better quality and performance. + + + + + Sample Shading + + + + + Allows the fragment shader to execute per sample in a multi-sampled fragment instead of once per fragment. Improves graphics quality at the cost of performance. +Higher values improve quality but degrade performance. + + + + RNG Seed 隨機種子 - + Controls the seed of the random number generator. -Mainly used for speedrunning purposes. - 控制随机数生成器的种子。 -主要用于快速通关。 +Mainly used for speedrunning. + - + Device Name 裝置名稱 - - The name of the emulated Switch. - 模拟 Switch 主机的名称。 + + The name of the console. + - + Custom RTC Date: 自定义系统时间: - - This option allows to change the emulated clock of the Switch. + + This option allows to change the clock of the console. Can be used to manipulate time in games. - 此选项允许更改 Switch 的模拟时钟。 -可用于在游戏中操纵时间。 + - + + The number of seconds from the current unix time + + + + Language: 语言: - - Note: this can be overridden when region setting is auto-select - 注意:當“區域”設定是“自動選擇”時,此設定可能會被覆寫。 + + This option can be overridden when region setting is auto-select + - + Region: 區域: - - The region of the emulated Switch. - 模拟 Switch 主机的所属地区。 + + The region of the console. + - + Time Zone: 時區: - - The time zone of the emulated Switch. - 模拟 Switch 主机的所属时区。 + + The time zone of the console. + - + Sound Output Mode: 音訊輸出模式: - + Console Mode: 控制台模式: - - Selects if the console is emulated in Docked or Handheld mode. + + Selects if the console is in Docked or Handheld mode. Games will change their resolution, details and supported controllers and depending on this setting. Setting to Handheld can help improve performance for low end systems. - 选择控制台处于主机模式还是掌机模式。 -游戏将根据此设置更改其分辨率、详细信息和支持的控制器。 -设置为掌机模式有助于提高低端 PC 上的模拟性能。 + - - Prompt for user on game boot - 啟動遊戲時提示選擇使用者 + + Unit Serial + - Ask to select a user profile on each boot, useful if multiple people use yuzu on the same PC. - 每次启动时询问用户选择一个用户配置文件。在多人使用同一台电脑上的 yuzu 时,这很有用。 + + Battery Serial + - - Pause emulation when in background - 模擬器在背景執行時暫停 + + Debug knobs + - This setting pauses yuzu when focusing other windows. - 当用户聚焦在其他窗口时暂停 yuzu。 + + Prompt for user profile on boot + - - Fast GPU Time (Hack) - + + Useful if multiple people use the same PC. + - - Overclocks the emulated GPU to increase dynamic resolution and render distance. -Use 128 for maximal performance and 512 for maximal graphics fidelity. - + + Pause when not in focus + - - Extended Dynamic State - + + Pauses emulation when focusing on other windows. + - - Enables the VkExtendedDynamicState* extensions. -Higher dynamic states will generally improve performance, but may cause issues on certain games or devices. - - - - - Provoking Vertex - - - - - Improves lighting and vertex handling in certain games. -Only Vulkan 1.0+ devices support this extension. - - - - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - - Ask to select a user profile on each boot, useful if multiple people use eden on the same PC. - - - - - This setting pauses eden when focusing other windows. - - - - + Confirm before stopping emulation 停止模拟时需要确认 - - This setting overrides game prompts asking to confirm stopping the game. + + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - 此设置将覆盖游戏中确认停止游戏的提示。 -启用此项将绕过游戏中的提示并直接退出模拟。 + - + Hide mouse on inactivity 滑鼠閒置時自動隱藏 - - This setting hides the mouse after 2.5s of inactivity. - 当鼠标停止活动超过 2.5 秒时隐藏鼠标光标。 + + Hides the mouse after 2.5s of inactivity. + - + Disable controller applet 禁用控制器程序 - - Forcibly disables the use of the controller applet by guests. -When a guest attempts to open the controller applet, it is immediately closed. - 强制禁用来宾程序使用控制器小程序。 -当来宾程序尝试打开控制器小程序时,控制器小程序会立即关闭。 + + Forcibly disables the use of the controller applet in emulated programs. +When a program attempts to open the controller applet, it is immediately closed. + - + Check for updates - + - + Whether or not to check for updates upon startup. - + - + Enable Gamemode 启用游戏模式 - + + Force X11 as Graphics Backend + + + + Custom frontend 自定义前端 - + Real applet 真实的小程序 - + Never - + - + On Load - + - + Always - + - + CPU CPU - + GPU GPU - + CPU Asynchronous CPU 异步模拟 - + Uncompressed (Best quality) 不壓縮 (最高品質) - + BC1 (Low quality) BC1 (低品質) - + BC3 (Medium quality) BC3 (中品質) - - Conservative - 保守模式(节省 VRAM) - - - - Aggressive - 激进模式 - - - - OpenGL - OpenGL - - - - Vulkan - Vulkan - - - - Null - - - - - GLSL - GLSL - - - - GLASM (Assembly Shaders, NVIDIA Only) - GLASM(組合語言著色器,僅限 NVIDIA) - - - - SPIR-V (Experimental, AMD/Mesa Only) - SPIR-V (实验性,仅限 AMD/Mesa) - - - - Normal - 標準 - - - - High - - - - - Extreme - 極高 - - - + + Auto 自動 - + + 30 FPS + + + + + 60 FPS + + + + + 90 FPS + + + + + 120 FPS + + + + + Conservative + 保守模式(节省 VRAM) + + + + Aggressive + 激进模式 + + + + Vulkan + Vulkan + + + + OpenGL GLSL + + + + + OpenGL GLASM (Assembly Shaders, NVIDIA Only) + + + + + OpenGL SPIR-V (Experimental, AMD/Mesa Only) + + + + + Null + + + + + Fast + + + + + Balanced + + + + + Accurate 高精度 - - Unsafe - 低精度 - - - - Paranoid (disables most optimizations) - 偏执模式 (禁用绝大多数优化项) - - - - Dynarmic - Dynarmic - - - - NCE - NCE - - - - Borderless Windowed - 無邊框視窗 - - - - Exclusive Fullscreen - 全螢幕獨占 - - - - No Video Output - 無視訊輸出 - - - - CPU Video Decoding - CPU 視訊解碼 - - - - GPU Video Decoding (Default) - GPU 視訊解碼(預設) - - - - 0.25X (180p/270p) [EXPERIMENTAL] - - - - - 0.5X (360p/540p) [EXPERIMENTAL] - 0.5X (360p/540p) [实验性] - - - - 0.75X (540p/810p) [EXPERIMENTAL] - 0.75X (540p/810p) [實驗性] - - - - 1X (720p/1080p) - 1X (720p/1080p) - - - - 1.5X (1080p/1620p) [EXPERIMENTAL] - 1.5X (1080p/1620p) [實驗性] - - - - 2X (1440p/2160p) - 2X (1440p/2160p) - - - - 3X (2160p/3240p) - 3X (2160p/3240p) - - - - 4X (2880p/4320p) - 4X (2880p/4320p) - - - - 5X (3600p/5400p) - 5X (3600p/5400p) - - - - 6X (4320p/6480p) - 6X (4320p/6480p) - - - - 7X (5040p/7560p) - 7X (5040p/7560p) - - - - 8X (5760p/8640p) - 8X (5760p/8640p) - - - - Nearest Neighbor - 最近鄰 - - - - Bilinear - 雙線性 - - - - Bicubic - 雙立方 - - - - Gaussian - 高斯 - - - - ScaleForce - 強制縮放 - - - - AMD FidelityFX™️ Super Resolution - AMD FidelityFX™️ 超級解析度技術 - - - - Area - - - - - None - - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Default (16:9) - 預設 (16:9) - - - - Force 4:3 - 強制 4:3 - - - - Force 21:9 - 強制 21:9 - - - - Force 16:10 - 強制 16:10 - - - - Stretch to Window - 延伸視窗 - - - - Automatic - 自動 - - - + + Default 預設 - + + Unsafe (fast) + + + + + Safe (stable) + + + + + Unsafe + 低精度 + + + + Paranoid (disables most optimizations) + 偏执模式 (禁用绝大多数优化项) + + + + Debugging + + + + + Dynarmic + Dynarmic + + + + NCE + NCE + + + + Borderless Windowed + 無邊框視窗 + + + + Exclusive Fullscreen + 全螢幕獨占 + + + + No Video Output + 無視訊輸出 + + + + CPU Video Decoding + CPU 視訊解碼 + + + + GPU Video Decoding (Default) + GPU 視訊解碼(預設) + + + + 0.25X (180p/270p) [EXPERIMENTAL] + + + + + 0.5X (360p/540p) [EXPERIMENTAL] + 0.5X (360p/540p) [实验性] + + + + 0.75X (540p/810p) [EXPERIMENTAL] + 0.75X (540p/810p) [實驗性] + + + + 1X (720p/1080p) + 1X (720p/1080p) + + + + 1.25X (900p/1350p) [EXPERIMENTAL] + + + + + 1.5X (1080p/1620p) [EXPERIMENTAL] + 1.5X (1080p/1620p) [實驗性] + + + + 2X (1440p/2160p) + 2X (1440p/2160p) + + + + 3X (2160p/3240p) + 3X (2160p/3240p) + + + + 4X (2880p/4320p) + 4X (2880p/4320p) + + + + 5X (3600p/5400p) + 5X (3600p/5400p) + + + + 6X (4320p/6480p) + 6X (4320p/6480p) + + + + 7X (5040p/7560p) + 7X (5040p/7560p) + + + + 8X (5760p/8640p) + 8X (5760p/8640p) + + + + Nearest Neighbor + 最近鄰 + + + + Bilinear + 雙線性 + + + + Bicubic + 雙立方 + + + + Gaussian + 高斯 + + + + Lanczos + + + + + ScaleForce + 強制縮放 + + + + AMD FidelityFX Super Resolution + + + + + Area + + + + + MMPX + + + + + Zero-Tangent + + + + + B-Spline + + + + + Mitchell + + + + + Spline-1 + + + + + + None + + + + + FXAA + FXAA + + + + SMAA + SMAA + + + + Default (16:9) + 預設 (16:9) + + + + Force 4:3 + 強制 4:3 + + + + Force 21:9 + 強制 21:9 + + + + Force 16:10 + 強制 16:10 + + + + Stretch to Window + 延伸視窗 + + + + Automatic + 自動 + + + 2x 2x - + 4x 4x - + 8x 8x - + 16x 16x - + + 32x + + + + + 64x + + + + Japanese (日本語) 日文 (日本語) - + American English 美式英语 - + French (français) 法文 (français) - + German (Deutsch) 德文 (Deutsch) - + Italian (italiano) 義大利文 (italiano) - + Spanish (español) 西班牙文 (español) - + Chinese 中文 - + Korean (한국어) 韓文 (한국어) - + Dutch (Nederlands) 荷蘭文 (Nederlands) - + Portuguese (português) 葡萄牙文 (português) - + Russian (Русский) 俄文 (Русский) - + Taiwanese 台灣中文 - + British English 英式英文 - + Canadian French 加拿大法文 - + Latin American Spanish 拉丁美洲西班牙文 - + Simplified Chinese 簡體中文 - + Traditional Chinese (正體中文) 正體中文 (正體中文) - + Brazilian Portuguese (português do Brasil) 巴西-葡萄牙語 (português do Brasil) - - + + Polish (polska) + + + + + Thai (แบบไทย) + + + + + Japan 日本 - + USA 美國 - + Europe 歐洲 - + Australia 澳洲 - + China 中國 - + Korea 南韓 - + Taiwan 台灣 - + Auto (%1) Auto select time zone 自動 (%1) - + Default (%1) Default time zone 預設 (%1) - + CET 中歐 - + CST6CDT CST6CDT - + Cuba 古巴 - + EET EET - + Egypt 埃及 - + Eire 愛爾蘭 - + EST 北美東部 - + EST5EDT EST5EDT - + GB GB - + GB-Eire 英國-愛爾蘭 - + GMT GMT - + GMT+0 GMT+0 - + GMT-0 GMT-0 - + GMT0 GMT0 - + Greenwich 格林威治 - + Hongkong 香港 - + HST 夏威夷 - + Iceland 冰島 - + Iran 伊朗 - + Israel 以色列 - + Jamaica 牙買加 - + Kwajalein 瓜加林環礁 - + Libya 利比亞 - + MET 中歐 - + MST 北美山區 - + MST7MDT MST7MDT - + Navajo 納瓦霍 - + NZ 紐西蘭 - + NZ-CHAT 紐西蘭-查塔姆群島 - + Poland 波蘭 - + Portugal 葡萄牙 - + PRC 中國 - + PST8PDT 太平洋 - + ROC 臺灣 - + ROK 韓國 - + Singapore 新加坡 - + Turkey 土耳其 - + UCT UCT - + Universal 世界 - + UTC UTC - + W-SU 莫斯科 - + WET 西歐 - + Zulu 協調世界時 - + Mono 單聲道 - + Stereo 立體聲 - + Surround 環繞音效 - + 4GB DRAM (Default) 4GB DRAM (默认) - + 6GB DRAM (Unsafe) 6GB DRAM (不安全) - + 8GB DRAM - + - + 10GB DRAM (Unsafe) - + - + 12GB DRAM (Unsafe) - + - - Low (128) - - - - - Medium (256) - - - - - High (512) - - - - 8GB DRAM (Unsafe) - 8GB DRAM (不安全) - - - + Docked TV - + Handheld 掌機模式 - + + + Off + + + + Boost (1700MHz) - + - + Fast (2000MHz) - + - + Always ask (Default) 总是询问 (默认) - + Only if game specifies not to stop 仅当游戏不希望停止时 - + Never ask 从不询问 + + + + Medium (256) + + + + + + High (512) + + + + + Very Small (16 MB) + + + + + Small (32 MB) + + + + + Normal (128 MB) + + + + + Large (256 MB) + + + + + Very Large (512 MB) + + + + + Very Low (4 MB) + + + + + Low (8 MB) + + + + + Normal (16 MB) + + + + + Medium (32 MB) + + + + + High (64 MB) + + + + + Very Low (32) + + + + + Low (64) + + + + + Normal (128) + + + + + Disabled + + + + + ExtendedDynamicState 1 + + + + + ExtendedDynamicState 2 + + + + + ExtendedDynamicState 3 + + + + + Tree View + + + + + Grid View + + ConfigureApplets @@ -2049,7 +2324,7 @@ When a guest attempts to open the controller applet, it is immediately closed.還原預設值 - + Auto 自動 @@ -2235,7 +2510,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all memory accesses to use Software MMU Emulation.</div> @@ -2253,7 +2528,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up exclusive memory accesses by the guest program.</div> - <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> + <div style="white-space: nowrap">Enabling it causes guest exclusive memory reads/writes to be done directly into memory and make use of Host's MMU.</div> <div style="white-space: nowrap">Disabling this forces all exclusive memory accesses to use Software MMU Emulation.</div> @@ -2287,7 +2562,7 @@ When a guest attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">This optimization speeds up memory accesses by allowing invalid memory accesses to succeed.</div> - <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> + <div style="white-space: nowrap">Enabling it reduces the overhead of all memory accesses and has no impact on programs that don't access invalid memory.</div> <div style="white-space: nowrap">此选项允许无效内存的访问从而提高内存访问速度。</div> @@ -2328,30 +2603,30 @@ When a guest attempts to open the controller applet, it is immediately closed.紀錄 - - Open Log Location - 開啟紀錄位置 - - - + Global Log Filter 全域紀錄篩選器 - + When checked, the max size of the log increases from 100 MB to 1 GB 啟用後紀錄檔案大小上限從 100MB 增加到 1GB - + Enable Extended Logging** 啟用延伸紀錄** - + Show Log in Console 在終端機中顯示紀錄 + + + Open Log Location + 開啟紀錄位置 + Homebrew @@ -2488,18 +2763,9 @@ When a guest attempts to open the controller applet, it is immediately closed.啟用所有控制器類型 - - Censor username in logs - - - - - **This will be reset automatically when eden closes. - - - - Enable Auto-Stub** - 啟用自動偵錯** + + Enable Auto-Stub + @@ -2508,8 +2774,8 @@ When a guest attempts to open the controller applet, it is immediately closed. - Enable CPU Debugging - 啟用 CPU 模擬偵錯 + Use dev.keys + @@ -2522,43 +2788,74 @@ When a guest attempts to open the controller applet, it is immediately closed.偵錯 - - Flush log output on each line - + + Battery Serial: + - - Enable FS Access Log - 啟用檔案系統存取記錄 + + Bitmask for quick development toggles + - + + Set debug knobs (bitmask) + + + + + 16-bit debug knob set for quick development toggles + + + + + (bitmask) + + + + + Debug Knobs: + + + + + Unit Serial: + + + + Enable this to output the latest generated audio command list to the console. Only affects games using the audio renderer. 啟用此選項會將最新的音訊指令列表輸出到控制台。只影響使用音訊渲染器的遊戲。 - - Enable Auto-Stub - - - - + Dump Audio Commands To Console** 將音訊指令傾印至控制台** - + + Flush log output on each line + + + + + Enable FS Access Log + 啟用檔案系統存取記錄 + + + Enable Verbose Reporting Services** 啟用詳細報告服務 - **This will be reset automatically when yuzu closes. - **當 yuzu 關閉時會自動重設。 + + Censor username in logs + - - Web applet not compiled - Web 小程式未編譯 + + **This will be reset automatically when Eden closes. + @@ -2600,14 +2897,10 @@ When a guest attempts to open the controller applet, it is immediately closed. ConfigureDialog - - yuzu Configuration - yuzu 設定 - - eden Configuration - + Eden Configuration + @@ -2615,88 +2908,88 @@ When a guest attempts to open the controller applet, it is immediately closed.某些設定僅在遊戲未執行時才能修改 - + Applets 小程序 - - + + Audio 音訊 - - + + CPU CPU - + Debug 偵錯 - + Filesystem 檔案系統 - - + + General 一般 - - + + Graphics 圖形 - + GraphicsAdvanced 進階圖形 - - GraphicsExtensions - + + GraphicsExtra + - + Hotkeys 快捷鍵 - - + + Controls 控制 - + Profiles 設定檔 - + Network 網路 - - + + System 系統 - + Game List 遊戲清單 - + Web 網路服務 @@ -2726,9 +3019,10 @@ When a guest attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2738,107 +3032,183 @@ When a guest attempts to open the controller applet, it is immediately closed.SD 卡 - + + Save Data + + + + Gamecard 遊戲卡 - + Path 路徑 - + Inserted 插入 - + Current Game 目前的遊戲 - + Patch Manager 延伸模組管理 - + Dump Decompressed NSOs 傾印已解壓縮的 NSO 檔案 - + Dump ExeFS 傾印 ExeFS - + Mod Load Root 載入模組根目錄 - + Dump Root 傾印根目錄 - + Caching 快取 - + Cache Game List Metadata 快取遊戲清單資料 - - - - + Reset Metadata Cache 重設中繼資料快取 - + Select Emulated NAND Directory... 選擇模擬內部儲存空間資料夾... - + Select Emulated SD Directory... 選擇模擬 SD 卡資料夾... - + + + Select Save Data Directory... + + + + Select Gamecard Path... 選擇遊戲卡帶路徑... - + Select Dump Directory... 選擇傾印資料夾... - + Select Mod Load Directory... 選擇載入模組資料夾... - - The metadata cache is already empty. - 無中繼資料快取 + + Save Data Directory + - - The operation completed successfully. - 動作已成功完成 + + Choose an action for the save data directory: + - - The metadata cache couldn't be deleted. It might be in use or non-existent. - 無法刪除中繼資料快取,可能因為正在使用或不存在。 + + Set Custom Path + + + + + Reset to NAND + + + + + Save data exists in both the old and new locations. + +Old: %1 +New: %2 + +Would you like to migrate saves from the old location? +WARNING: This will overwrite any conflicting saves in the new location! + + + + + Would you like to migrate your save data to the new location? + +From: %1 +To: %2 + + + + + Migrate Save Data + + + + + Migrating save data... + + + + + Cancel + + + + + + Migration Failed + + + + + Failed to create destination directory. + + + + + Failed to migrate save data: +%1 + + + + + Migration Complete + + + + + Save data has been migrated successfully. + +Would you like to delete the old save data? + @@ -2856,28 +3226,54 @@ When a guest attempts to open the controller applet, it is immediately closed. - Linux - Linux + External Content + - + + Add directories to scan for DLCs and Updates without installing to NAND + + + + + Add Directory + + + + + Remove Selected + + + + Reset All Settings 重設所有設定 - yuzu - yuzu + + Eden + - - eden - - - - + This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed? 這將重設所有遊戲的額外設定,但不會刪除遊戲資料夾、使用者設定檔、輸入設定檔,是否繼續? + + + Select External Content Directory... + + + + + Directory Already Added + + + + + This directory is already in the list. + + ConfigureGraphics @@ -2907,33 +3303,33 @@ When a guest attempts to open the controller applet, it is immediately closed.背景顏色: - + % FSR sharpening percentage (e.g. 50%) % - + Off 關閉 - + VSync Off 垂直同步關 - + Recommended 推薦 - + On 開啟 - + VSync On 垂直同步開 @@ -2951,7 +3347,7 @@ When a guest attempts to open the controller applet, it is immediately closed.進階 - + Advanced Graphics Settings 進階圖形設定 @@ -2961,24 +3357,38 @@ When a guest attempts to open the controller applet, it is immediately closed. Form - Form + - Extensions - + Extras + - - Vulkan Extension Settings - + + Hacks + - - While it's recommended to use state 3, some games may perform better on lower states. Setting to 0 (disabled) may also break games. -If your GPU is older (i.e. RX570/580 or older), it may not support these features. If this is the case, set the slider to 0 and uncheck all boxes. -These settings are experimental, and may cause black screens. If your games fail to boot or are stuck on a black screen, change these settings around. - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + + + + + % + Sample Shading percentage (e.g. 50%) + + + + + Extended Dynamic State is disabled on macOS due to MoltenVK compatibility issues that cause black screens. + @@ -3009,75 +3419,75 @@ These settings are experimental, and may cause black screens. If your games fail 還原預設值 - + Action 動作 - + Hotkey 快捷鍵 - + Controller Hotkey 控制器快捷鍵 - - - + + + Conflicting Key Sequence 按鍵衝突 - - + + The entered key sequence is already assigned to: %1 輸入的金鑰已指定給:%1 - + [waiting] [請按按鍵] - + Invalid 無效 - + Invalid hotkey settings 無效的快捷鍵設定 - + An error occurred. Please report this issue on github. 發生錯誤。請在 GitHub 回報此問題。 - + Restore Default 還原預設值 - + Clear 清除 - + Conflicting Button Sequence 按鍵衝突 - + The default button sequence is already assigned to: %1 預設的按鍵序列已分配給: %1 - + The default key sequence is already assigned to: %1 預設金鑰已指定給:%1 @@ -3397,12 +3807,8 @@ These settings are experimental, and may cause black screens. If your games fail - Requires restarting eden - - - - Requires restarting yuzu - 需要重新啟動 yuzu + Requires restarting Eden + @@ -3552,30 +3958,19 @@ These settings are experimental, and may cause black screens. If your games fail - + Left Stick 左搖桿 - - - - - - - Up - - - - - - - - - - - Left - + + + + + + + Down + @@ -3589,14 +3984,25 @@ These settings are experimental, and may cause black screens. If your games fail - - - - - - - Down - + + + + + + + + Left + + + + + + + + + + Up + @@ -3643,14 +4049,6 @@ These settings are experimental, and may cause black screens. If your games fail D-Pad 十字鍵 - - - - - - SL - SL - @@ -3660,59 +4058,55 @@ These settings are experimental, and may cause black screens. If your games fail SR - - - - L - L + + + + + SL + SL - + ZL ZL + + + + + L + L + Minus - - - - Capture - 截圖 - - + Plus - - - Home - HOME + + + + ZR + ZR - - + + R R - - - - - ZR - ZR - Motion 1 @@ -3723,6 +4117,18 @@ These settings are experimental, and may cause black screens. If your games fail Motion 2 體感 2 + + + + Capture + 截圖 + + + + + Home + HOME + Face Buttons @@ -3735,10 +4141,10 @@ These settings are experimental, and may cause black screens. If your games fail X - - - Y - Y + + + B + B @@ -3747,14 +4153,14 @@ These settings are experimental, and may cause black screens. If your games fail A - - - B - B + + + Y + Y - + Right Stick 右搖桿 @@ -3769,242 +4175,242 @@ These settings are experimental, and may cause black screens. If your games fail 設定 - - - - + + + + Clear 清除 - - - - - + + + + + [not set] [未設定] - - - + + + Invert button 無效按鈕 - - + + Toggle button 切換按鍵 - + Turbo button 连发键 - - + + Invert axis 方向反轉 - - - + + + Set threshold 設定閾值 - - + + Choose a value between 0% and 100% 選擇介於 0% 和 100% 之間的值 - + Toggle axis 切換軸 - + Set gyro threshold 陀螺仪阈值设定 - + Calibrate sensor 校正感應器 - + Map Analog Stick 搖桿映射 - + After pressing OK, first move your joystick horizontally, and then vertically. To invert the axes, first move your joystick vertically, and then horizontally. 按下確定後,先水平再上下移動您的搖桿。 要反轉方向,則先上下再水平移動您的搖桿。 - + Center axis 中心軸 - - + + Deadzone: %1% 無感帶:%1% - - + + Modifier Range: %1% 輕推靈敏度:%1% - - + + Pro Controller Pro 手把 - + Dual Joycons 雙 Joycon 手把 - + Left Joycon 左 Joycon 手把 - + Right Joycon 右 Joycon 手把 - + Handheld 掌機模式 - + GameCube Controller GameCube 手把 - + Poke Ball Plus 精靈球 PLUS - + NES Controller NES 控制器 - + SNES Controller SNES 控制器 - + N64 Controller N64 控制器 - + Sega Genesis Mega Drive - + Start / Pause 開始 / 暫停 - + Z Z - + Control Stick 控制搖桿 - + C-Stick C 搖桿 - + Shake! 搖動! - + [waiting] [等待中] - + New Profile 新增設定檔 - + Enter a profile name: 輸入設定檔名稱: - - + + Create Input Profile 建立輸入設定檔 - + The given profile name is not valid! 輸入的設定檔名稱無效! - + Failed to create the input profile "%1" 建立輸入設定檔「%1」失敗 - + Delete Input Profile 刪除輸入設定檔 - + Failed to delete the input profile "%1" 刪除輸入設定檔「%1」失敗 - + Load Input Profile 載入輸入設定檔 - + Failed to load the input profile "%1" 載入輸入設定檔「%1」失敗 - + Save Input Profile 儲存輸入設定檔 - + Failed to save the input profile "%1" 儲存輸入設定檔「%1」失敗 @@ -4027,15 +4433,6 @@ To invert the axes, first move your joystick vertically, and then horizontally.< 預設 - - ConfigureLinuxTab - - - - Linux - Linux - - ConfigureMotionTouch @@ -4061,7 +4458,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< - + Configure 設定 @@ -4091,111 +4488,93 @@ To invert the axes, first move your joystick vertically, and then horizontally.< 連線埠: - - Learn More - 了解更多 - - - - + + Test 測試 - + Add Server 新增伺服器 - + Remove Server 移除伺服器 - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - <a href='https://yuzu-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">了解更多</span></a> - - - + %1:%2 %1:%2 - yuzu - yuzu + + + + + + + Eden + - - <a href='https://eden-emulator.github.io/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - - - - + Port number has invalid characters 連線埠中包含無效字元 - - - - - - - eden - - - - + Port has to be in range 0 and 65353 連線埠必須為 0 到 65353 之間 - + IP address is not valid 無效的 IP 位址 - + This UDP server already exists 此 UDP 伺服器已存在 - + Unable to add more than 8 servers 最多只能新增 8 個伺服器 - + Testing 測試中 - + Configuring 設定中 - + Test Successful 測試成功 - + Successfully received data from the server. 已成功從伺服器取得資料 - + Test Failed 測試失敗 - + Could not receive valid data from the server.<br>Please verify that the server is set up correctly and the address and port are correct. 無法從伺服器取得有效的資料。<br>請檢查伺服器是否正確設定以及位址和連接埠是否正確。 - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. UDP 測試或觸控校正進行中。<br>請耐心等候。 @@ -4322,9 +4701,9 @@ Current values are %1% and %2% respectively. 網路卡 - - None - + + Enable Airplane Mode + @@ -4380,49 +4759,54 @@ Current values are %1% and %2% respectively. 某些設定僅在遊戲未執行時才能修改 - + Add-Ons 延伸模組 - + System 系統 - + CPU CPU - + Graphics 圖形 - + Adv. Graphics 進階圖形 - - GPU Extensions - + + Ext. Graphics + - + Audio 音訊 - + Input Profiles 輸入設定檔 - Linux - Linux + Network + + + + + Applets + @@ -4443,15 +4827,110 @@ Current values are %1% and %2% respectively. 延伸模組 - + + Import Mod from ZIP + + + + + Import Mod from Folder + + + + Patch Name 延伸模組名稱 - + Version 版本 + + + Mod Install Succeeded + + + + + Successfully installed all mods. + + + + + Mod Install Failed + + + + + Failed to install the following mods: + %1 +Check the log for details. + + + + + Mod Folder + + + + + Zipped Mod Location + + + + + Zipped Archives (*.zip) + + + + + Invalid Selection + + + + + Only mods, cheats, and patches can be deleted. +To delete NAND-installed updates, right-click the game in the game list and click Remove -> Remove Installed Update. + + + + + You are about to delete the following installed mods: + + + + + + +Once deleted, these can NOT be recovered. Are you 100% sure you want to delete them? + + + + + Delete add-on(s)? + + + + + Successfully deleted + + + + + Successfully deleted all selected mods. + + + + + &Delete + + + + + &Open in File Manager + + ConfigureProfileManager @@ -4481,32 +4960,17 @@ Current values are %1% and %2% respectively. 使用者名稱 - - Set Image - 選擇圖片 - - - + Add 新增 - - Rename - 重新命名 - - - - Remove - 移除 - - - + Profile management is available only when game is not running. 僅在遊戲未執行時才能修改使用者設定檔 - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -4514,100 +4978,80 @@ Current values are %1% and %2% respectively. %2 - - Enter Username - 輸入使用者名稱 - - - + Users 使用者 - - Enter a username for the new user: - 輸入新使用者的名稱 - - - - Enter a new username: - 輸入新的使用者名稱 - - - - Select User Image - 選擇使用者圖片 - - - - JPEG Images (*.jpg *.jpeg) - JPEG圖片 (*.jpg *.jpeg) - - - + Error deleting image 刪除圖片時發生錯誤 - + Error occurred attempting to overwrite previous image at: %1. 嘗試覆寫之前的圖片時發生錯誤:%1 - + Error deleting file 刪除檔案時發生錯誤 - + Unable to delete existing file: %1. 無法刪除檔案:%1 - + Error creating user image directory 建立使用者圖片資料夾時發生錯誤 - + Unable to create directory %1 for storing user images. 無法建立儲存使用者圖片的資料夾 %1 - - Error copying user image - 複製使用者圖片時發生錯誤 + + Error saving user image + - - Unable to copy image from %1 to %2 - 無法將圖片從 %1 複製到 %2 + + Unable to save image to file + - - Error resizing user image - 調整使用者圖片大小時發生錯誤 + + &Edit + - - Unable to resize image - 無法調整圖片大小 + + &Delete + + + + + Edit User + ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. 删除此用户?此用户保存的所有数据都将被删除。 - + Confirm Delete 確認刪除 - + Name: %1 UUID: %2 名稱: %1 @@ -4660,7 +5104,7 @@ UUID: %2 - + Enable 啟用 @@ -4671,7 +5115,7 @@ UUID: %2 - + Not connected 尚未連線 @@ -4681,63 +5125,63 @@ UUID: %2 還原預設值 - + Clear 清除 - + [not set] [未設定] - + Invert axis 方向反轉 - - + + Deadzone: %1% 無感帶:%1% - + Error enabling ring input 启用健身环输入时出错 - + Direct Joycon driver is not enabled 未启用 Joycon 直接驱动 - + Configuring 設定中 - + The current mapped device doesn't support the ring controller 当前映射的输入设备不支持健身环控制器 - + The current mapped device doesn't have a ring attached 当前映射的设备未连接健身环控制器 - + The current mapped device is not connected 目前映射的裝置未連線 - + Unexpected driver result %1 意外的驅動程式結果: %1 - + [waiting] [請按按鍵] @@ -4761,7 +5205,7 @@ UUID: %2 核心 - + Warning: "%1" is not a valid language for region "%2" 警告:“ %1 ”并不是“ %2 ”地区的有效语言。 @@ -4773,14 +5217,10 @@ UUID: %2 TAS TAS - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the yuzu website.</p></body></html> - <html><head/><body><p>通過讀取與 TAS-nx 腳本具有相同格式的腳本來讀取控制器的輸入。<br/>有關詳細資訊,請參閱 yuzu 官方網站的<a href="https://yuzu-emu.org/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">說明網頁</span></a>。</p></body></html> - - <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the <a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">help page</span></a> on the eden website.</p></body></html> - + <html><head/><body><p>Reads controller input from scripts in the same format as TAS-nx scripts.<br/>For a more detailed explanation, please consult the user handbook.</p></body></html> + @@ -4813,17 +5253,22 @@ UUID: %2 載入畫面時暫停執行 - + + Show recording dialog + + + + Script Directory 腳本資料夾 - + Path 路徑 - + ... ... @@ -4831,12 +5276,12 @@ UUID: %2 ConfigureTasDialog - + TAS Configuration TAS 設定 - + Select TAS Load Directory... 選擇 TAS 載入資料夾... @@ -4940,14 +5385,10 @@ Drag points to change position, or double-click table cells to edit values.Configure Touchscreen 觸控螢幕設定 - - Warning: The settings in this page affect the inner workings of yuzu's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - 警告:此處設定會影響 yuzu 模擬觸控螢幕的內部運作。修改設定可能會導致非預期結果,例如觸控螢幕完全或部分失效。請在充分了解的情況下修改此處設定。 - - Warning: The settings in this page affect the inner workings of eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. - + Warning: The settings in this page affect the inner workings of Eden's emulated touchscreen. Changing them may result in undesirable behavior, such as the touchscreen partially or not working. You should only use this page if you know what you are doing. + @@ -4978,64 +5419,43 @@ Drag points to change position, or double-click table cells to edit values. ConfigureUI - - - + + None - - - Small (32x32) - 小 (32x32) - - Standard (64x64) - 中 (64x64) - - - - Large (128x128) - 大 (128x128) - - - - Full Size (256x256) - 更大 (256x256) - - - Small (24x24) 小 (24x24) - + Standard (48x48) 中 (48x48) - + Large (72x72) 大 (72x72) - + Filename 檔案名稱 - + Filetype 檔案類型 - + Title ID 遊戲 ID - + Title Name 遊戲名稱 @@ -5104,71 +5524,66 @@ Drag points to change position, or double-click table cells to edit values. - Game Icon Size: - 遊戲圖示大小: - - - Folder Icon Size: 資料夾圖示大小: - + Row 1 Text: 第一行顯示文字: - + Row 2 Text: 第二行顯示文字: - + Screenshots 螢幕截圖 - + Ask Where To Save Screenshots (Windows Only) 詢問儲存螢幕截圖的位置(僅限 Windows) - + Screenshots Path: 螢幕截圖位置 - + ... ... - + TextLabel 文字標籤 - + Resolution: 解析度: - + Select Screenshots Path... 選擇儲存螢幕截圖位置... - + <System> <System> - + English English - + Auto (%1 x %2, %3 x %4) Screenshot width value 自動 (%1 x %2, %3 x %4) @@ -5266,170 +5681,178 @@ Drag points to change position, or double-click table cells to edit values.Web 網路服務 - - yuzu Web Service - yuzu 網路服務 - - - By providing your username and token, you agree to allow yuzu to collect additional usage data, which may include user identifying information. - 提供您的使用者名稱和 Token 代表您同意讓 yuzu 收集額外的使用統計資訊,其中可能包含使用者識別訊息。 - - eden Web Service - + Eden Web Service + - - By providing your username and token, you agree to allow eden to collect additional usage data, which may include user identifying information. - - - - - Verify - 驗證 - - - - Sign up - 註冊 - - - + Token: Token: - + Username: 使用者名稱: - - What is my token? - Token 說明 + + Generate + - + Web Service configuration can only be changed when a public room isn't being hosted. 公共房间未被开放时,才能更改 Web 服务配置项。 - Telemetry - 遙測 - - - Share anonymous usage data with the yuzu team - 與 yuzu 團隊分享匿名使用統計資料 - - - Learn more - 了解更多 - - - Telemetry ID: - 遙測 ID: - - - Regenerate - 重新產生 - - - + Discord Presence Discord 狀態 - + Show Current Game in your Discord Status 在 Discord 遊戲狀態上顯示目前的遊戲 - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">Learn more</span></a> - <a href='https://yuzu-emu.org/help/feature/telemetry/'><span style="text-decoration: underline; color:#039be5;">了解更多</span></a> - - - - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">Sign up</span></a> - <a href='https://profile.yuzu-emu.org/'><span style="text-decoration: underline; color:#039be5;">註冊</span></a> - - - - <a href='https://evilperson1337.notion.site/Hosting-a-Room-Inside-of-Eden-20457c2edaf680108abac6215a79acdb'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - - - - - Warning - - - + - Verification is currently nonfunctional, instead generate a random 48-character string with only lowercase a-z. - - - - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">What is my token?</span></a> - <a href='https://yuzu-emu.org/wiki/yuzu-web-service/'><span style="text-decoration: underline; color:#039be5;">我的 Token 是什麼?</span></a> - - - Telemetry ID: 0x%1 - 遙測 ID:0x%1 - - - Unspecified - 未指定 - - - Token not verified - Token 未驗證 - - - Token was not verified. The change to your token has not been saved. - Token 未驗證,因此未儲存您對使用者名稱和 Token 的修改。 - - - - Unverified, please click Verify before saving configuration + All Good Tooltip - 令牌未验证,请在保存配置之前进行验证。 + - Verifying... - 驗證中... - - - Verified + + Must be between 4-20 characters Tooltip - 已驗證 + - Verification failed + + Must be 48 characters, and lowercase a-z Tooltip - 驗證失敗 - - - Verification failed - 驗證失敗 - - - Verification failed. Check that you have entered your token correctly, and that your internet connection is working. - 驗證失敗。請檢查您输入的 Token 是否正確,並確保您的網路連線正常。 + ControllerDialog - + Controller P1 Controller P1 - + &Controller P1 &Controller P1 + + DataDialog + + + Data Manager + + + + + Deleting ANY data is IRREVERSABLE! + + + + + Shaders + + + + + UserNAND + + + + + SysNAND + + + + + Mods + + + + + Saves + + + + + DataWidget + + + Form + + + + + Tooltip + + + + + Open with your system file manager + + + + + Delete all data in this directory. THIS IS 100% IRREVERSABLE! + + + + + Export all data in this directory. This may take a while! + + + + + Import data for this directory. This may take a while, and will delete ALL EXISTING DATA! + + + + + Calculating... + + + + + DepsDialog + + + Eden Dependencies + + + + + <html><head/><body><p><span style=" font-size:28pt;">Eden Dependencies</span></p></body></html> + + + + + <html><head/><body><p>The projects that make Eden possible</p></body></html> + + + + + Dependency + + + + + Version + + + DirectConnect @@ -5491,1510 +5914,152 @@ Drag points to change position, or double-click table cells to edit values. Username is not valid. Must be 4 to 20 alphanumeric characters. - 用户名无效。必须是 4 - 20 个数字和英文字符。 + Room name is not valid. Must be 4 to 20 alphanumeric characters. - 房间名称无效。必须是 4 - 20 个数字和英文字符。 + Username is already in use or not valid. Please choose another. - 用户名无效或已被他人使用。请选择其他的用户名。 + IP is not a valid IPv4 address. - 此 IP 不是有效的 IPv4 地址。 + Port must be a number between 0 to 65535. - 端口号必须位于 0 至 65535 之间。 + You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - 建立房間需要確定偏好遊戲。 如果您的遊戲清單中沒有任何遊戲,請輕觸遊戲清單的加號圖示以新增遊戲資料夾。 + Unable to find an internet connection. Check your internet settings. - 找不到網路連線。請檢查您的網路設定。 + Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - 無法連到伺服器。 請驗證連線設定是否正確。 如果仍然無法連線,請聯絡房主並驗證伺服器是否正確配置了外部連接埠轉發。 + Unable to connect to the room because it is already full. - 無法連線到房間,因為房間已滿。 + - Creating a room failed. Please retry. Restarting eden might be necessary. - + Creating a room failed. Please retry. Restarting Eden might be necessary. + The host of the room has banned you. Speak with the host to unban you or try a different room. - 此房间的主人已将您封禁。请联系房主进行解封或选择其他房间。 + - Version mismatch! Please update to the latest version of eden. If the problem persists, contact the room host and ask them to update the server. - + Version mismatch! Please update to the latest version of Eden. If the problem persists, contact the room host and ask them to update the server. + Incorrect password. - 密碼錯誤。 + An unknown error occurred. If this error continues to occur, please open an issue - 发生未知错误。如果此错误依然存在,请及时反馈问题。 + Connection to room lost. Try to reconnect. - 與房間的連線中斷。嘗試重新連線。 + You have been kicked by the room host. - 您已被房主踢出房间。 + IP address is already in use. Please choose another. - 此 IP 地址已在使用中。请选择其他地址。 + You do not have enough permission to perform this action. - 您没有足够的权限执行此操作。 + The user you are trying to kick/ban could not be found. They may have left the room. - 找不到您试图踢出房间/封禁的用户。 -他们可能已经离开了房间。 + No valid network interface is selected. Please go to Configure -> System -> Network and make a selection. - 未選擇有效的網路卡。 -請在設定 -> 系統 -> 網路中進行相關設定。 + Error - 錯誤 - - - - GMainWindow - - <a href='https://yuzu-emu.org/help/feature/telemetry/'>Anonymous data is collected</a> to help improve yuzu. <br/><br/>Would you like to share your usage data with us? - 我們<a href='https://yuzu-emu.org/help/feature/telemetry/'>蒐集匿名的資料</a>以幫助改善 yuzu。<br/><br/>您願意和我們分享您的使用資料嗎? - - - Telemetry - 遙測 - - - - Broken Vulkan Installation Detected - 檢查到 Vulkan 的安裝已損毀 - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - Vulkan 初始化失败。<br><br>点击<a href='https://yuzu-emu.org/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>这里</a>获取此问题的相关信息。 - - - - Running a game - TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping - 正在執行遊戲 - - - - Loading Web Applet... - 載入 Web 小程式.. - - - - - Disable Web Applet - 停用 Web 小程式 - - - - 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.) - 停用 Web 小程式可能會導致未定義的行為,且只能在《超級瑪利歐 3D收藏輯》中使用。您確定要停用 Web 小程式? -(您可以在偵錯設定中重新啟用它。) - - - - The amount of shaders currently being built - 目前正在建構的著色器數量 - - - - The current selected resolution scaling multiplier. - 目前選擇的解析度縮放比例。 - - - - Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. - 目前的模擬速度。高於或低於 100% 表示比實際 Switch 執行速度更快或更慢。 - - - - How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. - 遊戲即時 FPS。會因遊戲和場景的不同而改變。 - - - - 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. - 在不考慮幀數限制和垂直同步的情況下模擬一個 Switch 畫格的實際時間,若要全速模擬,此數值不得超過 16.67 毫秒。 - - - - Unmute - 取消靜音 - - - - Mute - 靜音 - - - - Reset Volume - 重設音量 - - - - &Clear Recent Files - 清除最近的檔案(&C) - - - - &Continue - 繼續(&C) - - - - &Pause - &暫停 - - - - Warning Outdated Game Format - 過時遊戲格式警告 - - - 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.<br><br>For an explanation of the various Switch formats yuzu supports, <a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - 此遊戲為解構的 ROM 資料夾格式,這是一種過時的格式,已被其他格式取代,如 NCA、NAX、XCI、NSP。解構的 ROM 目錄缺少圖示、中繼資料和更新支援。<br><br>有關 yuzu 支援的各種 Switch 格式說明,<a href='https://yuzu-emu.org/wiki/overview-of-switch-game-formats'>請參閱我們的 wiki </a>。此訊息將不再顯示。 - - - - - Error while loading ROM! - 載入 ROM 時發生錯誤! - - - - The ROM format is not supported. - 此 ROM 格式不支援 - - - - An error occurred initializing the video core. - 初始化視訊核心時發生錯誤 - - - 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: <a href='https://yuzu-emu.org/help/reference/log-files/'>How to Upload the Log File</a>. - yuzu 在執行視訊核心時發生錯誤。 這可能是 GPU 驅動程序過舊造成的。 詳細資訊請查閱日誌檔案。 關於日誌檔案的更多資訊,請參考以下頁面:<a href='https://yuzu-emu.org/help/reference/log-files/'>如何上傳日誌檔案</a>。 - - - - Error while loading ROM! %1 - %1 signifies a numeric error code. - 載入 ROM 時發生錯誤!%1 - - - %1<br>Please follow <a href='https://yuzu-emu.org/help/quickstart/'>the yuzu quickstart guide</a> to redump your files.<br>You can refer to the yuzu wiki</a> or the yuzu Discord</a> for help. - %1 signifies an error string. - %1<br>請參閱 <a href='https://yuzu-emu.org/help/quickstart/'>yuzu 快速指引</a>以重新傾印檔案。<br>您可以前往 yuzu 的 wiki</a> 或 Discord 社群</a>以獲得幫助。 - - - - Vulkan initialization failed during boot.<br><br>Click <a href='https://eden-emulator.github.io/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>here for instructions to fix the issue</a>. - - - - - Game Updates Warning - - - - - The game you are trying to launch is known to have performance or booting issues when updates are applied. Please try increasing the memory layout to 6GB or 8GB if any issues occur.<br><br>Press "OK" to continue launching, or "Cancel" to cancel the launch. - - - - - Don't show again for this game - - - - - 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.<br><br>For an explanation of the various Switch formats eden supports, <a href='https://eden-emulator.github.io/wiki/overview-of-switch-game-formats'>check out our wiki</a>. This message will not be shown again. - - - - - eden 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: <a href='https://eden-emulator.github.io/help/reference/log-files/'>How to Upload the Log File</a>. - - - - - %1<br>Please redump your files or ask on Discord for help. - %1 signifies an error string. - - - - - An unknown error occurred. Please see the log for more details. - 發生未知錯誤,請檢視紀錄了解細節。 - - - - (64-bit) - (64-bit) - - - - (32-bit) - (32-bit) - - - - %1 %2 - %1 is the title name. %2 indicates if the title is 64-bit or 32-bit - %1 %2 - - - - Closing software... - 正在關閉軟體… - - - - Save Data - 儲存資料 - - - - Mod Data - 模組資料 - - - - Error Opening %1 Folder - 開啟資料夾 %1 時發生錯誤 - - - - - Folder does not exist! - 資料夾不存在 - - - - Error Opening Transferable Shader Cache - 開啟通用著色器快取位置時發生錯誤 - - - - Failed to create the shader cache directory for this title. - 無法新增此遊戲的著色器快取資料夾。 - - - - Error Removing Contents - 移除內容時發生錯誤 - - - - Error Removing Update - 移除更新時發生錯誤 - - - - Error Removing DLC - 移除 DLC 時發生錯誤 - - - - Remove Installed Game Contents? - 移除已安裝的遊戲內容? - - - - Remove Installed Game Update? - 移除已安裝的遊戲更新? - - - - Remove Installed Game DLC? - 移除已安裝的遊戲 DLC? - - - - Remove Entry - 移除項目 - - - - - - - - - Successfully Removed - 移除成功 - - - - Successfully removed the installed base game. - 成功移除已安裝的遊戲。 - - - - The base game is not installed in the NAND and cannot be removed. - 此遊戲並非安裝在內部儲存空間,因此無法移除。 - - - - Successfully removed the installed update. - 成功移除已安裝的遊戲更新。 - - - - There is no update installed for this title. - 此遊戲沒有已安裝的更新。 - - - - There are no DLC installed for this title. - 此遊戲沒有已安裝的 DLC。 - - - - Successfully removed %1 installed DLC. - 成功移除遊戲 %1 已安裝的 DLC。 - - - - Delete OpenGL Transferable Shader Cache? - 刪除 OpenGL 模式的著色器快取? - - - - Delete Vulkan Transferable Shader Cache? - 刪除 Vulkan 模式的著色器快取? - - - - Delete All Transferable Shader Caches? - 刪除所有的著色器快取? - - - - Remove Custom Game Configuration? - 移除額外遊戲設定? - - - - Remove Cache Storage? - 移除快取儲存空間? - - - - Remove File - 刪除檔案 - - - - Remove Play Time Data - 清除遊玩時間 - - - - Reset play time? - 重設遊玩時間? - - - - - Error Removing Transferable Shader Cache - 刪除通用著色器快取時發生錯誤 - - - - - A shader cache for this title does not exist. - 此遊戲沒有著色器快取 - - - - Successfully removed the transferable shader cache. - 成功刪除著色器快取。 - - - - Failed to remove the transferable shader cache. - 刪除通用著色器快取失敗。 - - - - Error Removing Vulkan Driver Pipeline Cache - 移除 Vulkan 驅動程式管線快取時發生錯誤 - - - - Failed to remove the driver pipeline cache. - 無法移除驅動程式管線快取。 - - - - - Error Removing Transferable Shader Caches - 刪除通用著色器快取時發生錯誤 - - - - Successfully removed the transferable shader caches. - 成功刪除通用著色器快取。 - - - - Failed to remove the transferable shader cache directory. - 無法刪除著色器快取資料夾。 - - - - - Error Removing Custom Configuration - 移除額外遊戲設定時發生錯誤 - - - - A custom configuration for this title does not exist. - 此遊戲沒有額外設定。 - - - - Successfully removed the custom game configuration. - 成功移除額外遊戲設定。 - - - - Failed to remove the custom game configuration. - 移除額外遊戲設定失敗。 - - - - - RomFS Extraction Failed! - RomFS 抽取失敗! - - - - There was an error copying the RomFS files or the user cancelled the operation. - 複製 RomFS 檔案時發生錯誤或使用者取消動作。 - - - - Full - 全部 - - - - Skeleton - 部分 - - - - Select RomFS Dump Mode - 選擇RomFS傾印模式 - - - - Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. - 請選擇如何傾印 RomFS。<br>「全部」會複製所有檔案到新資料夾中,而<br>「部分」只會建立資料夾結構。 - - - - There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root - %1 沒有足夠的空間用於抽取 RomFS。請確保有足夠的空間或於模擬 > 設定 >系統 >檔案系統 > 傾印根目錄中選擇其他資料夾。 - - - - Extracting RomFS... - 抽取 RomFS 中... - - - - - - - - Cancel - 取消 - - - - RomFS Extraction Succeeded! - RomFS 抽取完成! - - - - - - The operation completed successfully. - 動作已成功完成 - - - - Integrity verification couldn't be performed! - 無法執行完整性驗證! - - - - File contents were not checked for validity. - 未檢查檔案內容的完整性。 - - - - - Verifying integrity... - 正在驗證完整性... - - - - - Integrity verification succeeded! - 完整性驗證成功! - - - - - Integrity verification failed! - 完整性驗證失敗! - - - - File contents may be corrupt. - 檔案可能已經損毀。 - - - - - - - Create Shortcut - 建立捷徑 - - - - Do you want to launch the game in fullscreen? - 您想以全屏模式启动游戏吗? - - - - Successfully created a shortcut to %1 - 已成功在 %1 建立捷徑 - - - - This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - 這將會為目前的應用程式映像建立捷徑,可能在其更新後無法運作,仍要繼續嗎? - - - - Failed to create a shortcut to %1 - 为 %1 创建快捷方式时失败 - - - - Create Icon - 建立圖示 - - - - Cannot create icon file. Path "%1" does not exist and cannot be created. - 無法建立圖示檔案,路徑「%1」不存在且無法建立。 - - - - Error Opening %1 - 開啟 %1 時發生錯誤 - - - - Select Directory - 選擇資料夾 - - - - Properties - 屬性 - - - - The game properties could not be loaded. - 無法載入遊戲屬性 - - - - Switch Executable (%1);;All Files (*.*) - %1 is an identifier for the Switch executable file extensions. - Switch 執行檔 (%1);;所有檔案 (*.*) - - - - Load File - 開啟檔案 - - - - Open Extracted ROM Directory - 開啟已抽取的 ROM 資料夾 - - - - Invalid Directory Selected - 選擇的資料夾無效 - - - - The directory you have selected does not contain a 'main' file. - 選擇的資料夾未包含「main」檔案。 - - - - Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) - 可安裝的 Switch 檔案 (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX 卡帶映像 (*.xci) - - - - Install Files - 安裝檔案 - - - - %n file(s) remaining - - 剩餘 %n 個檔案 - - - - - Installing file "%1"... - 正在安裝檔案「%1」... - - - - - Install Results - 安裝結果 - - - - To avoid possible conflicts, we discourage users from installing base games to the NAND. -Please, only use this feature to install updates and DLC. - 為了避免潛在的衝突,不建議將遊戲本體安裝至內部儲存空間。 -此功能僅用於安裝遊戲更新和 DLC。 - - - - %n file(s) were newly installed - - - 最近安裝了 %n 個檔案 - - - - - - %n file(s) were overwritten - - - %n 個檔案被取代 - - - - - - %n file(s) failed to install - - - %n 個檔案安裝失敗 - - - - - System Application - 系統應用程式 - - - - System Archive - 系統檔案 - - - - System Application Update - 系統應用程式更新 - - - - Firmware Package (Type A) - 韌體包(A型) - - - - Firmware Package (Type B) - 韌體包(B型) - - - - Game - 遊戲 - - - - Game Update - 遊戲更新 - - - - Game DLC - 遊戲 DLC - - - - Delta Title - Delta Title - - - - Select NCA Install Type... - 選擇 NCA 安裝類型... - - - - Please select the type of title you would like to install this NCA as: -(In most instances, the default 'Game' is fine.) - 請選擇此 NCA 的安裝類型: -(在多數情況下,選擇預設的「遊戲」即可。) - - - - Failed to Install - 安裝失敗 - - - - The title type you selected for the NCA is invalid. - 選擇的 NCA 安裝類型無效。 - - - - File not found - 找不到檔案 - - - - File "%1" not found - 找不到「%1」檔案 - - - - OK - 確定 - - - - - Hardware requirements not met - 硬體不符合需求 - - - - - Your system does not meet the recommended hardware requirements. Compatibility reporting has been disabled. - 您的系統不符合建議的硬體需求,相容性回報已停用。 - - - - Missing yuzu Account - 未設定 yuzu 帳號 - - - - In order to submit a game compatibility test case, you must link your eden account.<br><br/>To link your eden account, go to Emulation &gt; Configuration &gt; Web. - - - - - Install decryption keys and restart eden before attempting to install firmware. - - - - - Firmware installation cancelled, firmware may be in bad state, restart eden or re-install firmware. - - - - - Encryption keys are missing. - - - - - Are you sure you want to close eden? - - - - - - - eden - - - - - The currently running application has requested eden to not exit. - -Would you like to bypass this and exit anyway? - - - - In order to submit a game compatibility test case, you must link your yuzu account.<br><br/>To link your yuzu account, go to Emulation &gt; Configuration &gt; Web. - 為了上傳相容性測試結果,您必須登入 yuzu 帳號。<br><br/>欲登入 yuzu 帳號請至模擬 &gt; 設定 &gt; 網路。 - - - - Error opening URL - 開啟 URL 時發生錯誤 - - - - Unable to open the URL "%1". - 無法開啟 URL:「%1」。 - - - - TAS Recording - TAS 錄製 - - - - Overwrite file of player 1? - 覆寫玩家 1 的檔案? - - - - Invalid config detected - 偵測到無效設定 - - - - Handheld controller can't be used on docked mode. Pro controller will be selected. - 掌機手把無法在主機模式中使用。將會選擇 Pro 手把。 - - - - - Amiibo - Amiibo - - - - - The current amiibo has been removed - 目前 Amiibo 已被移除。 - - - - Error - 錯誤 - - - - - The current game is not looking for amiibos - 目前遊戲並未在尋找 Amiibos - - - - Amiibo File (%1);; All Files (*.*) - Amiibo 檔案 (%1);; 所有檔案 (*.*) - - - - Load Amiibo - 開啟 Amiibo - - - - Error loading Amiibo data - 載入 Amiibo 資料時發生錯誤 - - - - The selected file is not a valid amiibo - 選取的檔案不是有效的 Amiibo - - - - The selected file is already on use - 選取的檔案已在使用中 - - - - An unknown error occurred - 發生了未知錯誤 - - - - - Verification failed for the following files: - -%1 - 以下檔案驗證失敗: - -%1 - - - - Keys not installed - 密钥未安装 - - - Install decryption keys and restart yuzu before attempting to install firmware. - 在安装固件之前,请先安装密钥并重新启动 yuzu。 - - - - Select Dumped Firmware Source Location - 选择固件位置 - - - - Installing Firmware... - 正在安装固件... - - - - - - - Firmware install failed - 固件安装失败 - - - - Unable to locate potential firmware NCA files - 无法定位某些固件 NCA 文件 - - - - Failed to delete one or more firmware file. - 无法删除某些固件文件。 - - - Firmware installation cancelled, firmware may be in bad state, restart yuzu or re-install firmware. - 固件安装被取消,安装的固件可能已经损坏。请重新启动 yuzu,或重新安装固件。 - - - - One or more firmware files failed to copy into NAND. - 某些固件文件未能复制到 NAND。 - - - - Firmware integrity verification failed! - 固件完整性验证失败! - - - - Select Dumped Keys Location - 选择密钥文件位置 - - - - - - Decryption Keys install failed - 密钥文件安装失败 - - - - prod.keys is a required decryption key file. - prod.keys 是必需的解密密钥文件。 - - - - One or more keys failed to copy. - 某些密钥文件复制失败。 - - - - Decryption Keys install succeeded - 密钥文件安装成功 - - - - Decryption Keys were successfully installed - 密钥文件已成功安装 - - - - Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. - 密钥文件无法初始化。请检查您的转储工具是否为最新版本,然后重新转储密钥文件。 - - - - - - - - - - No firmware available - 無可用韌體 - - - - Please install the firmware to use the Album applet. - 請安裝韌體以使用相簿小程式。 - - - - Album Applet - 相簿小程式 - - - - Album applet is not available. Please reinstall firmware. - 無法使用相簿小程式。請安裝韌體。 - - - - Please install the firmware to use the Cabinet applet. - 請安裝韌體以使用 Cabinet 小程式。 - - - - Cabinet Applet - Cabinet 小程式 - - - - Cabinet applet is not available. Please reinstall firmware. - 無法使用 Cabinet 小程式。請安裝韌體。 - - - - Please install the firmware to use the Mii editor. - 請安裝韌體以使用 Mii 編輯器。 - - - - Mii Edit Applet - Mii 編輯器小程式 - - - - Mii editor is not available. Please reinstall firmware. - Mii 編輯器無法使用。請安裝韌體。 - - - - Please install the firmware to use the Controller Menu. - 请安装固件以使用控制器菜单。 - - - - Controller Applet - 控制器設定 - - - - Controller Menu is not available. Please reinstall firmware. - 控制器菜单不可用。请重新安装固件。 - - - - Please install the firmware to use the Home Menu. - - - - - - Home Menu Applet - - - - - - Home Menu is not available. Please reinstall firmware. - - - - - Please install the firmware to use Starter. - - - - - Starter Applet - - - - - Starter is not available. Please reinstall firmware. - - - - - Please install firmware to use the home menu. - - - - - Capture Screenshot - 截圖 - - - - PNG Image (*.png) - PNG 圖片 (*.png) - - - - Update Available - - - - - Update %1 for Eden is available. -Would you like to download it? - - - - - TAS state: Running %1/%2 - TAS 狀態:正在執行 %1/%2 - - - - TAS state: Recording %1 - TAS 狀態:正在錄製 %1 - - - - TAS state: Idle %1/%2 - TAS 狀態:閒置 %1/%2 - - - - TAS State: Invalid - TAS 狀態:無效 - - - - &Stop Running - &停止執行 - - - - &Start - 開始(&S) - - - - Stop R&ecording - 停止錄製 - - - - R&ecord - 錄製 (&E) - - - - Building: %n shader(s) - - 正在編譯 %n 個著色器檔案 - - - - - Scale: %1x - %1 is the resolution scaling factor - 縮放比例:%1x - - - - Speed: %1% / %2% - 速度:%1% / %2% - - - - Speed: %1% - 速度:%1% - - - Game: %1 FPS (Unlocked) - 遊戲: %1 FPS(未限制) - - - - Game: %1 FPS - 遊戲:%1 FPS - - - - Frame: %1 ms - 畫格延遲:%1 ms - - - - %1 %2 - %1 %2 - - - - - FSR - FSR - - - - NO AA - 抗鋸齒關 - - - - VOLUME: MUTE - 音量: 靜音 - - - - VOLUME: %1% - Volume percentage (e.g. 50%) - 音量:%1% - - - - Derivation Components Missing - 遺失產生元件 - - - Encryption keys are missing. <br>Please follow <a href='https://yuzu-emu.org/help/quickstart/'>the yuzu quickstart guide</a> to get all your keys, firmware and games. - 密钥缺失。<br>请查看<a href='https://yuzu-emu.org/help/quickstart/'>yuzu 快速导航</a>以获得你的密钥、固件和游戏。 - - - - Select RomFS Dump Target - 選擇 RomFS 傾印目標 - - - - Please select which RomFS you would like to dump. - 請選擇希望傾印的 RomFS。 - - - Are you sure you want to close yuzu? - 您確定要關閉 yuzu 嗎? - - - yuzu - yuzu - - - - Are you sure you want to stop the emulation? Any unsaved progress will be lost. - 您確定要停止模擬嗎?未儲存的進度將會遺失。 - - - The currently running application has requested yuzu to not exit. - -Would you like to bypass this and exit anyway? - 目前執行的應用程式要求 yuzu 不要退出。 - -您希望忽略並退出嗎? - - - - None - - - - - FXAA - FXAA - - - - SMAA - SMAA - - - - Nearest - 最近鄰 - - - - Bilinear - 雙線性 - - - - Bicubic - 雙立方 - - - - Gaussian - 高斯 - - - - ScaleForce - 強制縮放 - - - - Area - - - - - Docked - TV - - - - Handheld - 掌機模式 - - - - Normal - 標準 - - - - High - - - - - Extreme - 極高 - - - - Vulkan - Vulkan - - - - OpenGL - OpenGL - - - - Null - - - - - GLSL - GLSL - - - - GLASM - GLASM - - - - SPIRV - SPIRV + GRenderWindow - - + + OpenGL not available! 無法使用 OpenGL 模式! - + OpenGL shared contexts are not supported. 不支援 OpenGL 共用的上下文。 - yuzu has not been compiled with OpenGL support. - yuzu 未以支援 OpenGL 的方式編譯。 + + Eden has not been compiled with OpenGL support. + - - eden has not been compiled with OpenGL support. - - - - - + + Error while initializing OpenGL! 初始化 OpenGL 時發生錯誤! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. 您的 GPU 可能不支援 OpenGL,或是未安裝最新的圖形驅動程式 - + Error while initializing OpenGL 4.6! 初始化 OpenGL 4.6 時發生錯誤! - + Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 您的 GPU 可能不支援 OpenGL 4.6,或是未安裝最新的圖形驅動程式<br><br>GL 渲染器:<br>%1 - + Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2 您的 GPU 可能不支援某些必需的 OpenGL 功能。請確保您已安裝最新的圖形驅動程式。<br><br>GL 渲染器:<br>%1<br><br>不支援的功能:<br>%2 @@ -7002,192 +6067,208 @@ Would you like to bypass this and exit anyway? GameList - + + &Add New Game Directory + + + + Favorite 我的最愛 - + Start Game 開始遊戲 - + Start Game without Custom Configuration 開始遊戲(不使用額外設定) - + Open Save Data Location 開啟存檔位置 - + Open Mod Data Location 開啟模組位置 - + Open Transferable Pipeline Cache 開啟通用著色器管線快取位置 - + + Link to Ryujinx + + + + Remove 移除 - + Remove Installed Update 移除已安裝的遊戲更新 - + Remove All Installed DLC 移除所有安裝的DLC - + Remove Custom Configuration 移除額外設定 - - Remove Play Time Data - 清除遊玩時間 - - - + Remove Cache Storage 移除快取儲存空間 - + Remove OpenGL Pipeline Cache 刪除 OpenGL 著色器管線快取 - + Remove Vulkan Pipeline Cache 刪除 Vulkan 著色器管線快取 - + Remove All Pipeline Caches 刪除所有著色器管線快取 - + Remove All Installed Contents 移除所有安裝項目 - - + + Manage Play Time + + + + + Edit Play Time Data + + + + + Remove Play Time Data + 清除遊玩時間 + + + + Dump RomFS 傾印 RomFS - + Dump RomFS to SDMC 傾印 RomFS 到 SDMC - + Verify Integrity 完整性驗證 - + Copy Title ID to Clipboard 複製遊戲 ID 到剪貼簿 - + Navigate to GameDB entry 檢視遊戲相容性報告 - + Create Shortcut 建立捷徑 - + Add to Desktop 新增至桌面 - + Add to Applications Menu 新增至應用程式選單 - + Configure Game - + - Properties - 屬性 - - - + Scan Subfolders 包含子資料夾 - + Remove Game Directory 移除遊戲資料夾 - + ▲ Move Up ▲ 向上移動 - + ▼ Move Down ▼ 向下移動 - + Open Directory Location 開啟資料夾位置 - + Clear 清除 - + Name 名稱 - + Compatibility 相容性 - + Add-ons 延伸模組 - + File type 檔案格式 - + Size 大小 - + Play time 遊玩時間 @@ -7195,62 +6276,62 @@ Would you like to bypass this and exit anyway? GameListItemCompat - + Ingame 遊戲內 - + Game starts, but crashes or major glitches prevent it from being completed. 遊戲可以執行,但可能會出現當機或故障導致遊戲無法正常運作。 - + Perfect 完美 - + Game can be played without issues. 遊戲可以毫無問題的遊玩。 - + Playable 可遊玩 - + Game functions with minor graphical or audio glitches and is playable from start to finish. 遊戲自始至終可以正常遊玩,但可能會有一些輕微的圖形或音訊故障。 - + Intro/Menu 開始畫面/選單 - + Game loads, but is unable to progress past the Start Screen. 遊戲可以載入,但無法通過開始畫面。 - + Won't Boot 無法啟動 - + The game crashes when attempting to startup. 啟動遊戲時異常關閉 - + Not Tested 未測試 - + The game has not yet been tested. 此遊戲尚未經過測試 @@ -7258,7 +6339,7 @@ Would you like to bypass this and exit anyway? GameListPlaceholder - + Double-click to add a new folder to the game list 連點兩下以新增資料夾至遊戲清單 @@ -7266,19 +6347,17 @@ Would you like to bypass this and exit anyway? GameListSearchField - + %1 of %n result(s) - - %1 / %n 個結果 - + - + Filter: 搜尋: - + Enter pattern to filter 輸入文字以搜尋 @@ -7354,233 +6433,241 @@ Would you like to bypass this and exit anyway? HostRoomWindow - + Error 錯誤 - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. + + Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid Eden account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. Debug Message: - - - - Failed to announce the room to the public lobby. In order to host a room publicly, you must have a valid yuzu account configured in Emulation -> Configure -> Web. If you do not want to publish a room in the public lobby, then select Unlisted instead. -Debug Message: - 向公共大厅公开房间时失败。为了管理公开房间,您必须在模拟 -> 设置 -> 网络中配置有效的 yuzu 帐户。如果不想在公共大厅中公开房间,请选择“未列出”。 -调试消息: + Hotkeys - + Audio Mute/Unmute 靜音/取消靜音 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Main Window 主要視窗 - + Audio Volume Down 音訊音量降低 - + Audio Volume Up 音訊音量提高 - + Capture Screenshot 截圖 - + Change Adapting Filter 變更自適性過濾器 - + Change Docked Mode 變更底座模式 - - Change GPU Accuracy - 變更 GPU 精確度 + + Change GPU Mode + - + Configure - 設定 + - + Configure Current Game - + - + Continue/Pause Emulation 繼續/暫停模擬 - + Exit Fullscreen 離開全螢幕 - Exit yuzu - 離開 yuzu + + Exit Eden + - - Exit eden - - - - + Fullscreen 全螢幕 - + Load File 開啟檔案 - + Load/Remove Amiibo 載入/移除 Amiibo - - Multiplayer Browse Public Game Lobby - 浏览公共游戏大厅 + + Browse Public Game Lobby + - - Multiplayer Create Room - 创建房间 + + Create Room + - - Multiplayer Direct Connect to Room - 直接连接到房间 + + Direct Connect to Room + - - Multiplayer Leave Room - 离开房间 + + Leave Room + - - Multiplayer Show Current Room - 显示当前房间 + + Show Current Room + - + Restart Emulation 重新啟動模擬 - + Stop Emulation 停止模擬 - + TAS Record TAS 錄製 - + TAS Reset TAS 重設 - + TAS Start/Stop TAS 開始/停止 - + Toggle Filter Bar 切換搜尋列 - + Toggle Framerate Limit 切換影格速率限制 - + + Toggle Turbo Speed + + + + + Toggle Slow Speed + + + + Toggle Mouse Panning 切換滑鼠移動 - + Toggle Renderdoc Capture 切換到 Renderdoc 截圖 - + Toggle Status Bar 切換狀態列 + + + Toggle Performance Overlay + + InstallDialog - + Please confirm these are the files you wish to install. 請確認您想安裝的檔案 - + Installing an Update or DLC will overwrite the previously installed one. 安裝遊戲更新或 DLC 時會覆寫之前的安裝 - + Install 安裝 - + Install Files to NAND 安裝檔案至內部儲存空間 @@ -7588,8 +6675,8 @@ Debug Message: LimitableInputDialog - - The text can't contain any of the following characters: + + The text can't contain any of the following characters: %1 文字中不能包含以下字元:%1 @@ -7612,22 +6699,22 @@ Debug Message: 預估時間:5 分 4 秒 - + Loading... 載入中... - + Loading Shaders %1 / %2 載入著色器:%1 / %2 - + Launching... 啟動中... - + Estimated Time %1 預估時間:%1 @@ -7676,42 +6763,42 @@ Debug Message: 重新整理遊戲大廳 - + Password Required to Join 加入需要密碼 - + Password: 密碼: - + Players 玩家 - + Room Name 房間名稱 - + Preferred Game 偏好遊戲 - + Host 主機 - + Refreshing 正在重新整理 - + Refresh List 重新整理清單 @@ -7734,362 +6821,1424 @@ Debug Message: 開啟最近的檔案(&R) - + + Open &Eden Folders + + + + &Emulation 模擬 (&E) - + &View 檢視 (&V) - + &Reset Window Size 重設視窗大小(&R) - + &Debugging 偵錯 (&D) - + + &Game List Mode + + + + + Game &Icon Size + + + + Reset Window Size to &720p 重設視窗大小為 &720p - + Reset Window Size to 720p 重設視窗大小為 720p - + Reset Window Size to &900p 重設視窗大小為 &900p - + Reset Window Size to 900p 重設視窗大小為 900p - + Reset Window Size to &1080p 重設視窗大小為 &1080p - + Reset Window Size to 1080p 重設視窗大小為 1080p - + &Multiplayer 多人遊戲 (&M) - + &Tools 工具 (&T) - - &Amiibo - &Amiibo + + Am&iibo + - + + Launch &Applet + + + + &TAS TAS (&T) - + &Create Home Menu Shortcut - + - + + Install &Firmware + + + + &Help 說明 (&H) - + &Install Files to NAND... &安裝檔案至內部儲存空間 - + L&oad File... 開啟檔案(&O)... - + Load &Folder... 開啟資料夾(&F)... - + E&xit 結束(&X) - + + &Pause 暫停(&P) - + &Stop 停止(&S) - + &Verify Installed Contents 驗證已安裝內容的完整性 (&V) - - &About eden - + + &About Eden + - - Open &eden Folder - - - - - Open Home Menu - - - - - &Discord - - - - - Open &Setup - - - - - &Desktop - - - - - &Application Menu - - - - &About yuzu - 關於 yuzu(&A) - - - + Single &Window Mode 單一視窗模式(&W) - + Con&figure... 設定 (&F) - + Ctrl+, - + - - Display D&ock Widget Headers - 顯示 Dock 小工具標題 (&O) + + Enable Overlay Display Applet + - + Show &Filter Bar 顯示搜尋列(&F) - + Show &Status Bar 顯示狀態列(&S) - + Show Status Bar 顯示狀態列 - + &Browse Public Game Lobby 瀏覽公用遊戲大廳 (&B) - + &Create Room 建立房間 (&C) - + &Leave Room 離開房間 (&L) - + &Direct Connect to Room 直接連線到房間 (&D) - + &Show Current Room 顯示目前的房間 (&S) - + F&ullscreen 全螢幕(&U) - + &Restart 重新啟動(&R) - + Load/Remove &Amiibo... 載入/移除 Amiibo... (&A) - + &Report Compatibility 回報相容性(&R) - + Open &Mods Page 模組資訊 (&M) - + Open &Quickstart Guide 快速入門 (&Q) - + &FAQ 常見問題 (&F) - Open &yuzu Folder - 開啟 yuzu 資料夾(&Y) - - - + &Capture Screenshot 截圖 (&C) - - Open &Album - 開啟相簿 (&A) + + &Album + - + &Set Nickname and Owner 登錄持有者和暱稱 (&S) - + &Delete Game Data 清除遊戲資料 (&D) - + &Restore Amiibo 復原資料 (&R) - + &Format Amiibo 初始化 Amiibo (&F) - - Open &Mii Editor - 開啟 &Mii 編輯器 + + &Mii Editor + - + &Configure TAS... 設定 &TAS… - + Configure C&urrent Game... 目前遊戲設定...(&U) - + + &Start 開始(&S) - + &Reset 重設 (&R) - + + R&ecord 錄製 (&E) - + Open &Controller Menu 打开控制器菜单 (&C) - - Install Firmware - 安装固件 + + Install Decryption &Keys + - - Install Decryption Keys - 安装密钥文件 + + &Home Menu + - - - MicroProfileDialog - - &MicroProfile - &MicroProfile + + &Desktop + + + + + &Application Menu + + + + + &Root Data Folder + + + + + &NAND Folder + + + + + &SDMC Folder + + + + + &Mod Folder + + + + + &Log Folder + + + + + From Folder + + + + + From ZIP + + + + + &Eden Dependencies + + + + + &Data Manager + + + + + &Tree View + + + + + &Grid View + + + + + Game Icon Size + + + + + + + None + + + + + Show Game &Name + + + + + Show &Performance Overlay + + + + + Small (32x32) + + + + + Standard (64x64) + + + + + Large (128x128) + + + + + Full Size (256x256) + + + + + Broken Vulkan Installation Detected + + + + + Vulkan initialization failed during boot. + + + + + Running a game + TRANSLATORS: This string is shown to the user to explain why yuzu needs to prevent the computer from sleeping + + + + + Loading Web Applet... + + + + + + Disable Web Applet + + + + + 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.) + + + + + The amount of shaders currently being built + + + + + The current selected resolution scaling multiplier. + + + + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a Switch. + + + + + How many frames per second the game is currently displaying. This will vary from game to game and scene to scene. + + + + + 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. + + + + + Unmute + + + + + Mute + + + + + Reset Volume + + + + + &Clear Recent Files + + + + + &Continue + + + + + Warning: Outdated Game Format + + + + + 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.<br>For an explanation of the various Switch formats Eden supports, out our user handbook. This message will not be shown again. + + + + + + Error while loading ROM! + + + + + The ROM format is not supported. + + + + + An error occurred initializing the video core. + + + + + Eden 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: <a href='https://yuzu-mirror.github.io/help/reference/log-files/'>How to Upload the Log File</a>. + + + + + Error while loading ROM! %1 + %1 signifies a numeric error code. + + + + + %1<br>Please redump your files or ask on Discord/Stoat for help. + %1 signifies an error string. + + + + + An unknown error occurred. Please see the log for more details. + + + + + (64-bit) + + + + + (32-bit) + + + + + %1 %2 + %1 is the title name. %2 indicates if the title is 64-bit or 32-bit + + + + + Closing software... + + + + + Save Data + + + + + Mod Data + + + + + Error Opening %1 Folder + + + + + + Folder does not exist! + + + + + Remove Installed Game Contents? + + + + + Remove Installed Game Update? + + + + + Remove Installed Game DLC? + + + + + Remove Entry + + + + + Delete OpenGL Transferable Shader Cache? + + + + + Delete Vulkan Transferable Shader Cache? + + + + + Delete All Transferable Shader Caches? + + + + + Remove Custom Game Configuration? + + + + + Remove Cache Storage? + + + + + Remove File + + + + + Remove Play Time Data + + + + + Reset play time? + + + + + + RomFS Extraction Failed! + + + + + There was an error copying the RomFS files or the user cancelled the operation. + + + + + Full + + + + + Skeleton + + + + + Select RomFS Dump Mode + + + + + Please select the how you would like the RomFS dumped.<br>Full will copy all of the files into the new directory while <br>skeleton will only create the directory structure. + + + + + There is not enough free space at %1 to extract the RomFS. Please free up space or select a different dump directory at Emulation > Configure > System > Filesystem > Dump Root + + + + + Extracting RomFS... + + + + + + Cancel + + + + + RomFS Extraction Succeeded! + + + + + The operation completed successfully. + + + + + Error Opening %1 + + + + + Select Directory + + + + + Properties + + + + + The game properties could not be loaded. + + + + + Switch Executable (%1);;All Files (*.*) + %1 is an identifier for the Switch executable file extensions. + + + + + Load File + + + + + Open Extracted ROM Directory + + + + + Invalid Directory Selected + + + + + The directory you have selected does not contain a 'main' file. + + + + + Installable Switch File (*.nca *.nsp *.xci);;Nintendo Content Archive (*.nca);;Nintendo Submission Package (*.nsp);;NX Cartridge Image (*.xci) + + + + + Install Files + + + + + %n file(s) remaining + + + + + Installing file "%1"... + + + + + + Install Results + + + + + To avoid possible conflicts, we discourage users from installing base games to the NAND. +Please, only use this feature to install updates and DLC. + + + + + %n file(s) were newly installed + + + + + + %n file(s) were overwritten + + + + + + %n file(s) failed to install + + + + + + System Application + + + + + System Archive + + + + + System Application Update + + + + + Firmware Package (Type A) + + + + + Firmware Package (Type B) + + + + + Game + + + + + Game Update + + + + + Game DLC + + + + + Delta Title + + + + + Select NCA Install Type... + + + + + Please select the type of title you would like to install this NCA as: +(In most instances, the default 'Game' is fine.) + + + + + Failed to Install + + + + + The title type you selected for the NCA is invalid. + + + + + File not found + + + + + File "%1" not found + + + + + OK + + + + + Function Disabled + + + + + Compatibility list reporting is currently disabled. Check back later! + + + + + Error opening URL + + + + + Unable to open the URL "%1". + + + + + TAS Recording + + + + + Overwrite file of player 1? + + + + + Invalid config detected + + + + + Handheld controller can't be used on docked mode. Pro controller will be selected. + + + + + + Amiibo + + + + + + The current amiibo has been removed + + + + + Error + + + + + + The current game is not looking for amiibos + + + + + Amiibo File (%1);; All Files (*.*) + + + + + Load Amiibo + + + + + Error loading Amiibo data + + + + + The selected file is not a valid amiibo + + + + + The selected file is already on use + + + + + An unknown error occurred + + + + + + Keys not installed + + + + + + Install decryption keys and restart Eden before attempting to install firmware. + + + + + Select Dumped Firmware Source Location + + + + + Select Dumped Firmware ZIP + + + + + Zipped Archives (*.zip) + + + + + Firmware cleanup failed + + + + + Failed to clean up extracted firmware cache. +Check write permissions in the system temp directory and try again. +OS reported error: %1 + + + + + No firmware available + + + + + Firmware Corrupted + + + + + Unknown applet + + + + + Applet doesn't map to a known value. + + + + + Record not found + + + + + Applet not found. Please reinstall firmware. + + + + + Capture Screenshot + + + + + PNG Image (*.png) + + + + + Update Available + + + + + Download %1? + + + + + TAS state: Running %1/%2 + + + + + TAS state: Recording %1 + + + + + TAS state: Idle %1/%2 + + + + + TAS State: Invalid + + + + + &Stop Running + + + + + Stop R&ecording + + + + + Building: %n shader(s) + + + + + Scale: %1x + %1 is the resolution scaling factor + + + + + Speed: %1% / %2% + + + + + Speed: %1% + + + + + Game: %1 FPS + + + + + Frame: %1 ms + + + + + + FSR + + + + + NO AA + + + + + VOLUME: MUTE + + + + + VOLUME: %1% + Volume percentage (e.g. 50%) + + + + + Derivation Components Missing + + + + + Decryption keys are missing. Install them now? + + + + + Wayland Detected! + + + + + Wayland is known to have significant performance issues and mysterious bugs. +It's recommended to use X11 instead. + +Would you like to force it for future launches? + + + + + Use X11 + + + + + Continue with Wayland + + + + + Don't show again + + + + + Restart Required + + + + + Restart Eden to apply the X11 backend. + + + + + Slow + + + + + Turbo + + + + + Unlocked + + + + + Select RomFS Dump Target + + + + + Please select which RomFS you would like to dump. + + + + + Are you sure you want to close Eden? + + + + + + + Eden + + + + + Are you sure you want to stop the emulation? Any unsaved progress will be lost. + + + + + The currently running application has requested Eden to not exit. + +Would you like to bypass this and exit anyway? + + + + + FXAA + + + + + SMAA + + + + + Nearest + + + + + Bilinear + + + + + Bicubic + + + + + Zero-Tangent + + + + + B-Spline + + + + + Mitchell + + + + + Spline-1 + + + + + Gaussian + + + + + Lanczos + + + + + ScaleForce + + + + + Area + + + + + MMPX + + + + + Docked + + + + + Handheld + + + + + Fast + + + + + Balanced + + + + + Accurate + + + + + Vulkan + + + + + OpenGL GLSL + + + + + OpenGL SPIRV + + + + + OpenGL GLASM + + + + + Null + MigrationWorker - - Data was migrated successfully. - - - - + Linking the old directory failed. You may need to re-run with administrative privileges on Windows. OS gave error: %1 - + - + + + +Note that your configuration and data will be shared with %1. +If this is not desirable, delete the following files: +%2 +%3 +%4 + + + + If you wish to clean up the files which were left in the old data location, you can do so by deleting the following directory: %1 - + + + + + Data was migrated successfully. + + + + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + @@ -8106,7 +8255,7 @@ If you wish to clean up the files which were left in the old data location, you - + Refreshing 正在重新整理 @@ -8116,27 +8265,27 @@ If you wish to clean up the files which were left in the old data location, you 解除封鎖 - + Subject 主旨 - + Type 類型 - + Forum Username 論壇使用者名稱 - + IP Address IP 位址 - + Refresh 重新整理 @@ -8144,37 +8293,37 @@ If you wish to clean up the files which were left in the old data location, you MultiplayerState - + Current connection status 目前連線狀態 - + Not Connected. Click here to find a room! 尚未連線,按一下這裡以尋找房間! - + Not Connected 尚未連線 - + Connected 已連線 - + New Messages Received 收到了新訊息 - + Error 錯誤 - + Failed to update the room information. Please check your Internet connection and try hosting the room again. Debug Message: 更新房間資訊失敗。請檢查您的網路連線並嘗試重開房間。 @@ -8183,90 +8332,6 @@ Debug Message: NetworkMessage - - Username is not valid. Must be 4 to 20 alphanumeric characters. - 用户名无效。必须是 4 - 20 个数字和英文字符。 - - - Room name is not valid. Must be 4 to 20 alphanumeric characters. - 房间名称无效。必须是 4 - 20 个数字和英文字符。 - - - Username is already in use or not valid. Please choose another. - 用户名无效或已被他人使用。请选择其他的用户名。 - - - IP is not a valid IPv4 address. - 此 IP 不是有效的 IPv4 地址。 - - - Port must be a number between 0 to 65535. - 端口号必须位于 0 至 65535 之间。 - - - You must choose a Preferred Game to host a room. If you do not have any games in your game list yet, add a game folder by clicking on the plus icon in the game list. - 建立房間需要確定偏好遊戲。 如果您的遊戲清單中沒有任何遊戲,請輕觸遊戲清單的加號圖示以新增遊戲資料夾。 - - - Unable to find an internet connection. Check your internet settings. - 找不到網路連線。請檢查您的網路設定。 - - - Unable to connect to the host. Verify that the connection settings are correct. If you still cannot connect, contact the room host and verify that the host is properly configured with the external port forwarded. - 無法連到伺服器。 請驗證連線設定是否正確。 如果仍然無法連線,請聯絡房主並驗證伺服器是否正確配置了外部連接埠轉發。 - - - Unable to connect to the room because it is already full. - 無法連線到房間,因為房間已滿。 - - - Creating a room failed. Please retry. Restarting yuzu might be necessary. - 建立房間失敗。請重試。可能需要重新啟動 yuzu。 - - - The host of the room has banned you. Speak with the host to unban you or try a different room. - 此房间的主人已将您封禁。请联系房主进行解封或选择其他房间。 - - - Version mismatch! Please update to the latest version of yuzu. If the problem persists, contact the room host and ask them to update the server. - 版本过低!请更新 yuzu 至最新版本。如果问题仍然存在,请联系房主更新服务器。 - - - Incorrect password. - 密碼錯誤。 - - - An unknown error occurred. If this error continues to occur, please open an issue - 发生未知错误。如果此错误依然存在,请及时反馈问题。 - - - Connection to room lost. Try to reconnect. - 與房間的連線中斷。嘗試重新連線。 - - - You have been kicked by the room host. - 您已被房主踢出房间。 - - - IP address is already in use. Please choose another. - 此 IP 地址已在使用中。请选择其他地址。 - - - You do not have enough permission to perform this action. - 您没有足够的权限执行此操作。 - - - The user you are trying to kick/ban could not be found. -They may have left the room. - 找不到您试图踢出房间/封禁的用户。 -他们可能已经离开了房间。 - - - No valid network interface is selected. -Please go to Configure -> System -> Network and make a selection. - 未選擇有效的網路卡。 -請在設定 -> 系統 -> 網路中進行相關設定。 - Game already running @@ -8301,10 +8366,132 @@ Proceed anyway? - NetworkMessage::ErrorManager + NewUserDialog - Error - 錯誤 + + + New User + + + + + Change Avatar + + + + + Set Image + + + + + UUID + + + + + Eden + + + + + Username + + + + + UUID must be 32 hex characters (0-9, A-F) + + + + + Generate + + + + + Select User Image + + + + + Image Formats (*.jpg *.jpeg *.png *.bmp) + + + + + No firmware available + + + + + Please install the firmware to use firmware avatars. + + + + + + Error loading archive + + + + + Archive is not available. Please install/reinstall firmware. + + + + + Could not locate RomFS. Your file or decryption keys may be corrupted. + + + + + Error extracting archive + + + + + Could not extract RomFS. Your file or decryption keys may be corrupted. + + + + + Error finding image directory + + + + + Failed to find image directory in the archive. + + + + + No images found + + + + + No avatar images were found in the archive. + + + + + + All Good + Tooltip + + + + + Must be 32 hex characters (0-9, a-f) + Tooltip + + + + + Must be between 1 and 32 characters + Tooltip + @@ -8331,7 +8518,7 @@ Proceed anyway? <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:18pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -8340,83 +8527,196 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> + + PerformanceOverlay + + + Form + + + + + Frametime + + + + + 0 ms + + + + + + Min: 0 + + + + + + Max: 0 + + + + + + Avg: 0 + + + + + FPS + + + + + 0 fps + + + + + %1 fps + + + + + + Avg: %1 + + + + + + Min: %1 + + + + + + Max: %1 + + + + + %1 ms + + + PlayerControlPreview - + START/PAUSE 開始 / 暫停 + + ProfileAvatarDialog + + + Select + + + + + Cancel + + + + + Background Color + + + + + Select Firmware Avatar + + + QObject - - %1 is not playing a game - %1 不在玩遊戲 + + + + Migration + - - %1 is playing %2 - %1 正在玩 %2 + + Clear Shader Cache + - - Not playing a game - 不在玩遊戲 + + Keep Old Data + - - Installed SD Titles - 安裝在 SD 卡中的遊戲 + + Clear Old Data + - - Installed NAND Titles - 安裝在內部儲存空間中的遊戲 + + Link Old Directory + - - System Titles - 系統項目 + + + + + - - Add New Game Directory - 加入遊戲資料夾 + + + No + - - Favorites - 我的最愛 + + You can manually re-trigger this prompt by deleting the new config directory: +%1 + + + + + Migrating + + + + + Migrating, this may take a while... + - - + + Shift Shift - - + + Ctrl Ctrl - - + + Alt Alt - - - - + + + + [not set] [未設定] @@ -8426,15 +8726,15 @@ p, li { white-space: pre-wrap; } 方向鍵 %1 %2 - - - - - - - - + + + + + + + + Axis %1%2 軸 %1%2 @@ -8444,359 +8744,383 @@ p, li { white-space: pre-wrap; } 按鍵 %1 - - - - - - + + + + + + [unknown] [未知] - - - + + + Left - - - + + + Right - - - + + + Down - - - + + + Up - - + + Z Z - - + + R R - - + + L L - - + + A A - - + + B B - - + + X X - - + + Y Y - - + + Start 開始 - - + + L1 L1 - - + + L2 L2 - - + + L3 L3 - - + + R1 R1 - - + + R2 R2 - - + + R3 R3 - - + + Circle - - + + Cross - - + + Square - - + + Triangle Δ - - + + Share 分享 - - + + Options 選項 - - + + [undefined] [未指定] - + %1%2 %1%2 - - + + [invalid] [無效] - - + + %1%2Hat %3 %1%2Hat 控制器 %3 - - - + + + %1%2Axis %3 %1%2軸 %3 - - + + %1%2Axis %3,%4,%5 %1%2軸 %3,%4,%5 - - + + %1%2Motion %3 %1%2體感 %3 - - + + %1%2Button %3 %1%2按鈕 %3 - - + + [unused] [未使用] - + ZR ZR - + ZL ZL - + SR SR - + SL SL - + Stick L 左搖桿 - + Stick R 右搖桿 - + Plus - + Minus - - + + Home HOME - + Capture 截圖 - + Touch 觸控 - + Wheel Indicates the mouse wheel 滑鼠滾輪 - + Backward 後退 - + Forward 前進 - + Task 任務鍵 - + Extra 額外按鍵 - + %1%2%3%4 %1%2%3%4 - - + + %1%2%3Hat %4 %1%2%3 控制器 %4 - - + + %1%2%3Axis %4 %1%2%3軸 %4 - - + + %1%2%3Button %4 %1%2%3 按鍵 %4 - - - - Migration - + + Not playing a game + 不在玩遊戲 - - - - - + + %1 is not playing a game + %1 不在玩遊戲 - - - No - + + %1 is playing %2 + %1 正在玩 %2 - - You can manually re-trigger this prompt by deleting the new config directory: -%1 - + + Play Time: %1 + - - Migrating - + + Never Played + - - Migrating, this may take a while... - + + Version: %1 + + + + + Version: 1.0.0 + + + + + Installed SD Titles + 安裝在 SD 卡中的遊戲 + + + + Installed NAND Titles + 安裝在內部儲存空間中的遊戲 + + + + System Titles + 系統項目 + + + + Add New Game Directory + 加入遊戲資料夾 + + + + Favorites + 我的最愛 @@ -8887,31 +9211,817 @@ p, li { white-space: pre-wrap; } 檔案路徑 - + No game data present 沒有遊戲資料 - + The following amiibo data will be formatted: 將初始化以下 amiibo 資料: - + The following game data will removed: 將刪除以下遊戲資料: - + Set nickname and owner: 登錄持有者和暱稱: - + Do you wish to restore this amiibo? 您想要復原這個 amiibo 嗎? + + QtCommon::Content + + + Game Requires Firmware + + + + + The game you are trying to launch requires firmware to boot or to get past the opening menu. Please <a href='https://yuzu-mirror.github.io/help/quickstart'>dump and install firmware</a>, or press "OK" to launch anyways. + + + + + Installing Firmware... + + + + + + + + + Cancel + + + + + Firmware Install Failed + + + + + Firmware Install Succeeded + + + + + Firmware integrity verification failed! + + + + + + Verification failed for the following files: + +%1 + + + + + + Verifying integrity... + + + + + + Integrity verification succeeded! + + + + + + The operation completed successfully. + + + + + + Integrity verification failed! + + + + + File contents may be corrupt or missing. + + + + + Integrity verification couldn't be performed + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. File contents could not be checked for validity. + + + + + Select Dumped Keys Location + + + + + Decryption Keys install succeeded + + + + + Decryption Keys install failed + + + + + Orphaned Profiles Detected! + + + + + UNEXPECTED BAD THINGS MAY HAPPEN IF YOU DON'T READ THIS!<br>Eden has detected the following save directories with no attached profile:<br>%1<br><br>The following profiles are valid:<br>%2<br><br>Click "OK" to open your save folder and fix up your profiles.<br>Hint: copy the contents of the largest or last-modified folder elsewhere, delete all orphaned profiles, and move your copied contents to the good profile.<br><br>Still confused? See the <a href='https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/Orphaned.md'>help page</a>.<br> + + + + + Really clear data? + + + + + Important data may be lost! + + + + + Are you REALLY sure? + + + + + Once deleted, your data will NOT come back! +Only do this if you're 100% sure you want to delete this data. + + + + + Clearing... + + + + + Select Export Location + + + + + %1.zip + + + + + + Zipped Archives (*.zip) + + + + + Exporting data. This may take a while... + + + + + Exporting + + + + + Exported Successfully + + + + + Data was exported successfully. + + + + + Export Cancelled + + + + + Export was cancelled by the user. + + + + + Export Failed + + + + + Ensure you have write permissions on the targeted directory and try again. + + + + + Select Import Location + + + + + Import Warning + + + + + All previous data in this directory will be deleted. Are you sure you wish to proceed? + + + + + Importing data. This may take a while... + + + + + Importing + + + + + Imported Successfully + + + + + Data was imported successfully. + + + + + Import Cancelled + + + + + Import was cancelled by the user. + + + + + Import Failed + + + + + Ensure you have read permissions on the targeted directory and try again. + + + + + QtCommon::FS + + + Linked Save Data + + + + + Save data has been linked. + + + + + Failed to link save data + + + + + Could not link directory: + %1 +To: + %2 + + + + + Already Linked + + + + + This title is already linked to Ryujinx. Would you like to unlink it? + + + + + Failed to unlink old directory + + + + + + OS returned error: %1 + + + + + Failed to copy save data + + + + + Unlink Successful + + + + + Successfully unlinked Ryujinx save data. Save data has been kept intact. + + + + + Could not find Ryujinx installation + + + + + Could not find a valid Ryujinx installation. This may typically occur if you are using Ryujinx in portable mode. + +Would you like to manually select a portable folder to use? + + + + + Ryujinx Portable Location + + + + + Not a valid Ryujinx directory + + + + + The specified directory does not contain valid Ryujinx data. + + + + + + Could not find Ryujinx save data + + + + + QtCommon::Game + + + Error Removing Contents + + + + + Error Removing Update + + + + + Error Removing DLC + + + + + + + + + + Successfully Removed + + + + + Successfully removed the installed base game. + + + + + The base game is not installed in the NAND and cannot be removed. + + + + + Successfully removed the installed update. + + + + + There is no update installed for this title. + + + + + There are no DLCs installed for this title. + + + + + Successfully removed %1 installed DLC. + + + + + + Error Removing Transferable Shader Cache + + + + + + A shader cache for this title does not exist. + + + + + Successfully removed the transferable shader cache. + + + + + Failed to remove the transferable shader cache. + + + + + Error Removing Vulkan Driver Pipeline Cache + + + + + Failed to remove the driver pipeline cache. + + + + + + Error Removing Transferable Shader Caches + + + + + Successfully removed the transferable shader caches. + + + + + Failed to remove the transferable shader cache directory. + + + + + + Error Removing Custom Configuration + + + + + A custom configuration for this title does not exist. + + + + + Successfully removed the custom game configuration. + + + + + Failed to remove the custom game configuration. + + + + + Reset Metadata Cache + + + + + The metadata cache is already empty. + + + + + The operation completed successfully. + + + + + The metadata cache couldn't be deleted. It might be in use or non-existent. + + + + + Create Shortcut + + + + + Do you want to launch the game in fullscreen? + + + + + Shortcut Created + + + + + Successfully created a shortcut to %1 + + + + + Shortcut may be Volatile! + + + + + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? + + + + + Failed to Create Shortcut + + + + + Failed to create a shortcut to %1 + + + + + Create Icon + + + + + Cannot create icon file. Path "%1" does not exist and cannot be created. + + + + + No firmware available + + + + + Please install firmware to use the home menu. + + + + + Home Menu Applet + + + + + Home Menu is not available. Please reinstall firmware. + + + + + QtCommon::Mod + + + Mod Name + + + + + What should this mod be called? + + + + + RomFS + + + + + ExeFS/Patch + + + + + Cheat + + + + + Mod Type + + + + + Could not detect mod type automatically. Please manually specify the type of mod you downloaded. + +Most mods are RomFS mods, but patches (.pchtxt) are typically ExeFS mods. + + + + + + Mod Extract Failed + + + + + Failed to create temporary directory %1 + + + + + Zip file %1 is empty + + + + + QtCommon::Path + + + Error Opening Shader Cache + + + + + Failed to create or open shader cache for this title, ensure your app data directory has write permissions. + + + + + QtCommon::StringLookup + + + Contains game save data. DO NOT REMOVE UNLESS YOU KNOW WHAT YOU'RE DOING! + + + + + Contains Vulkan and OpenGL pipeline caches. Generally safe to remove. + + + + + Contains updates and DLC for games. + + + + + Contains firmware and applet data. + + + + + Contains game mods, patches, and cheats. + + + + + Decryption Keys were successfully installed + + + + + Unable to read key directory, aborting + + + + + One or more keys failed to copy. + + + + + Verify your keys file has a .keys extension and try again. + + + + + Decryption Keys failed to initialize. Check that your dumping tools are up to date and re-dump keys. + + + + + Successfully installed firmware version %1 + + + + + Unable to locate potential firmware NCA files + + + + + Failed to delete one or more firmware files. + + + + + One or more firmware files failed to copy into NAND. + + + + + Firmware installation cancelled, firmware may be in a bad state or corrupted. Restart Eden or re-install firmware. + + + + + Firmware missing. Firmware is required to run certain games and use the Home Menu. + + + + + Firmware reported as present, but was unable to be read. Check for decryption keys and redump firmware if necessary. + + + + + Eden has detected user data for the following emulators: + + + + + Would you like to migrate your data for use in Eden? +Select the corresponding button to migrate data from that emulator. +This may take a while. + + + + + Clearing shader cache is recommended for all users. +Do not uncheck unless you know what you're doing. + + + + + Keeps the old data directory. This is recommended if you aren't +space-constrained and want to keep separate data for the old emulator. + + + + + Deletes the old data directory. +This is recommended on devices with space constraints. + + + + + Creates a filesystem link between the old directory and Eden directory. +This is recommended if you want to share data between emulators. + + + + + Ryujinx title database does not exist. + + + + + Invalid header on Ryujinx title database. + + + + + Invalid magic header on Ryujinx title database. + + + + + Invalid byte alignment on Ryujinx title database. + + + + + No items found in Ryujinx title database. + + + + + Title %1 not found in Ryujinx title database. + + + QtControllerSelectorDialog @@ -8948,7 +10058,7 @@ p, li { white-space: pre-wrap; } - + Pro Controller Pro 手把 @@ -8961,7 +10071,7 @@ p, li { white-space: pre-wrap; } - + Dual Joycons 雙 Joycon 手把 @@ -8974,7 +10084,7 @@ p, li { white-space: pre-wrap; } - + Left Joycon 左 Joycon 手把 @@ -8987,7 +10097,7 @@ p, li { white-space: pre-wrap; } - + Right Joycon 右 Joycon 手把 @@ -9016,7 +10126,7 @@ p, li { white-space: pre-wrap; } - + Handheld 掌機模式 @@ -9137,32 +10247,32 @@ p, li { white-space: pre-wrap; } 控制器數量不足 - + GameCube Controller GameCube 手把 - + Poke Ball Plus 精靈球 PLUS - + NES Controller NES 控制手把 - + SNES Controller SNES 控制手把 - + N64 Controller N64 控制手把 - + Sega Genesis Mega Drive @@ -9170,28 +10280,28 @@ p, li { white-space: pre-wrap; } QtErrorDisplay - - - + + + Error Code: %1-%2 (0x%3) 錯誤碼: %1-%2 (0x%3) - + An error has occurred. Please try again or contact the developer of the software. 發生錯誤。 請再試一次或聯絡開發者。 - + An error occurred on %1 at %2. Please try again or contact the developer of the software. 在 %2 處的 %1 上發生錯誤。 請再試一次或聯絡開發者。 - + An error has occurred. %1 @@ -9207,7 +10317,7 @@ Please try again or contact the developer of the software. QtProfileSelectionDialog - + %1 %2 %1 is the profile username, %2 is the formatted UUID (e.g. 00112233-4455-6677-8899-AABBCCDDEEFF)) @@ -9215,7 +10325,7 @@ Please try again or contact the developer of the software. %2 - + Users 使用者 @@ -9308,7 +10418,7 @@ Please try again or contact the developer of the software. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:26pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -9317,17 +10427,57 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> - - + + OK 確定 - + Cancel 取消 + + RyujinxDialog + + + Ryujinx Link + + + + + Linking save data to Ryujinx lets both Ryujinx and Eden reference the same save files for your games. + +By selecting "From Eden", previous save data stored in Ryujinx will be deleted, and vice versa for "From Ryujinx". + + + + + From Eden + + + + + From Ryujinx + + + + + Cancel + + + + + Failed to link save data + + + + + OS returned error: %1 + + + SequenceDialog @@ -9337,143 +10487,31 @@ p, li { white-space: pre-wrap; } - WaitTreeCallstack + SetPlayTimeDialog - - Call stack - Call stack - - - - WaitTreeSynchronizationObject - - - [%1] %2 - [%1] %2 + + Set Play Time Data + - - waited by no thread - waited by no thread - - - - WaitTreeThread - - - runnable - runnable + + Hours: + - - paused - paused + + Minutes: + - - sleeping - sleeping + + Seconds: + - - waiting for IPC reply - waiting for IPC reply - - - - waiting for objects - waiting for objects - - - - waiting for condition variable - waiting for condition variable - - - - waiting for address arbiter - waiting for address arbiter - - - - waiting for suspend resume - waiting for suspend resume - - - - waiting - waiting - - - - initialized - initialized - - - - terminated - terminated - - - - unknown - unknown - - - - PC = 0x%1 LR = 0x%2 - PC = 0x%1 LR = 0x%2 - - - - ideal - ideal - - - - core %1 - core %1 - - - - processor = %1 - processor = %1 - - - - affinity mask = %1 - affinity mask = %1 - - - - thread id = %1 - thread id = %1 - - - - priority = %1(current) / %2(normal) - priority = %1(current) / %2(normal) - - - - last running ticks = %1 - last running ticks = %1 - - - - WaitTreeThreadList - - - waited by thread - waited by thread - - - - WaitTreeWidget - - - &Wait Tree - &Wait Tree + + Total play time reached maximum. + diff --git a/dist/org.eden_emu.eden.metainfo.xml b/dist/org.eden_emu.eden.metainfo.xml deleted file mode 100644 index cfd1741748..0000000000 --- a/dist/org.eden_emu.eden.metainfo.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - org.yuzu_emu.yuzu - CC0-1.0 - yuzu - Nintendo Switch emulator - -

yuzu is the world's most popular, open-source, Nintendo Switch emulator — started by the creators of Citra.

-

The emulator is capable of running most commercial games at full speed, provided you meet the necessary hardware requirements.

-

For a full list of games yuzu support, please visit our Compatibility page.

-

Check out our website for the latest news on exciting features, monthly progress reports, and more!

-
- - Game - Emulator - - - switch - emulator - - https://yuzu-emu.org/ - https://github.com/yuzu-emu/yuzu/issues - https://yuzu-emu.org/wiki/faq/ - https://yuzu-emu.org/wiki/home/ - https://yuzu-emu.org/donate/ - https://www.transifex.com/projects/p/yuzu - https://community.citra-emu.org/ - https://github.com/yuzu-emu/yuzu - https://yuzu-emu.org/wiki/contributing/ - org.yuzu_emu.yuzu.desktop - - yuzu - yuzu-cmd - - - pointing - keyboard - gamepad - - - 8192 - - - 16384 - - GPL-3.0-or-later - yuzu Emulator Team - - - https://raw.githubusercontent.com/yuzu-emu/yuzu-emu.github.io/master/images/screenshots/001-Super%20Mario%20Odyssey%20.png - https://raw.githubusercontent.com/yuzu-emu/yuzu-emu.github.io/master/images/screenshots/004-The%20Legend%20of%20Zelda%20Skyward%20Sword%20HD.png - https://raw.githubusercontent.com/yuzu-emu/yuzu-emu.github.io/master/images/screenshots/007-Pokemon%20Sword.png - https://raw.githubusercontent.com/yuzu-emu/yuzu-emu.github.io/master/images/screenshots/010-Hyrule%20Warriors%20Age%20of%20Calamity.png - https://raw.githubusercontent.com/yuzu-emu/yuzu-emu.github.io/master/images/screenshots/039-Pok%C3%A9mon%20Mystery%20Dungeon%20Rescue%20Team%20DX.png.png.png - -
diff --git a/dist/qt_themes/colorful/icons/16x16/checked.png b/dist/qt_themes/colorful/icons/16x16/checked.png index b9e64e9e08..0694e3d405 100644 Binary files a/dist/qt_themes/colorful/icons/16x16/checked.png and b/dist/qt_themes/colorful/icons/16x16/checked.png differ diff --git a/dist/qt_themes/colorful/icons/16x16/info.png b/dist/qt_themes/colorful/icons/16x16/info.png index 8b9330f4c8..e7ffc60830 100644 Binary files a/dist/qt_themes/colorful/icons/16x16/info.png and b/dist/qt_themes/colorful/icons/16x16/info.png differ diff --git a/dist/qt_themes/colorful/icons/256x256/plus_folder.png b/dist/qt_themes/colorful/icons/256x256/plus_folder.png index 760fe6245e..92539549ee 100644 Binary files a/dist/qt_themes/colorful/icons/256x256/plus_folder.png and b/dist/qt_themes/colorful/icons/256x256/plus_folder.png differ diff --git a/dist/qt_themes/colorful/icons/48x48/chip.png b/dist/qt_themes/colorful/icons/48x48/chip.png index 6fa1589995..42b016592e 100644 Binary files a/dist/qt_themes/colorful/icons/48x48/chip.png and b/dist/qt_themes/colorful/icons/48x48/chip.png differ diff --git a/dist/qt_themes/colorful/icons/48x48/download.png b/dist/qt_themes/colorful/icons/48x48/download.png new file mode 100644 index 0000000000..baceb7ae99 Binary files /dev/null and b/dist/qt_themes/colorful/icons/48x48/download.png differ diff --git a/dist/qt_themes/colorful/icons/48x48/folder.png b/dist/qt_themes/colorful/icons/48x48/folder.png index 498de4c629..f4d459b053 100644 Binary files a/dist/qt_themes/colorful/icons/48x48/folder.png and b/dist/qt_themes/colorful/icons/48x48/folder.png differ diff --git a/dist/qt_themes/colorful/icons/48x48/list-add.png b/dist/qt_themes/colorful/icons/48x48/list-add.png index 74e4882aae..27a6f47c97 100644 Binary files a/dist/qt_themes/colorful/icons/48x48/list-add.png and b/dist/qt_themes/colorful/icons/48x48/list-add.png differ diff --git a/dist/qt_themes/colorful/icons/48x48/sd_card.png b/dist/qt_themes/colorful/icons/48x48/sd_card.png index 652d61bc32..fcc4c2a5fa 100644 Binary files a/dist/qt_themes/colorful/icons/48x48/sd_card.png and b/dist/qt_themes/colorful/icons/48x48/sd_card.png differ diff --git a/dist/qt_themes/colorful/icons/48x48/star.png b/dist/qt_themes/colorful/icons/48x48/star.png index 19d55a0a80..2ff57696d4 100644 Binary files a/dist/qt_themes/colorful/icons/48x48/star.png and b/dist/qt_themes/colorful/icons/48x48/star.png differ diff --git a/dist/qt_themes/colorful/icons/48x48/upload.png b/dist/qt_themes/colorful/icons/48x48/upload.png new file mode 100644 index 0000000000..053b8c3fea Binary files /dev/null and b/dist/qt_themes/colorful/icons/48x48/upload.png differ diff --git a/dist/qt_themes/colorful/icons/48x48/user-trash.png b/dist/qt_themes/colorful/icons/48x48/user-trash.png new file mode 100644 index 0000000000..19ce265069 Binary files /dev/null and b/dist/qt_themes/colorful/icons/48x48/user-trash.png differ diff --git a/dist/qt_themes/colorful/style.qrc b/dist/qt_themes/colorful/style.qrc index 82cd367be9..f64d405707 100644 --- a/dist/qt_themes/colorful/style.qrc +++ b/dist/qt_themes/colorful/style.qrc @@ -18,6 +18,9 @@ SPDX-License-Identifier: GPL-2.0-or-later icons/48x48/bad_folder.png icons/48x48/chip.png icons/48x48/folder.png + icons/48x48/user-trash.png + icons/48x48/download.png + icons/48x48/upload.png icons/48x48/list-add.png icons/48x48/no_avatar.png icons/48x48/sd_card.png diff --git a/dist/qt_themes/colorful_midnight_blue/style.qrc b/dist/qt_themes/colorful_midnight_blue/style.qrc index b9821c6722..18f8a6b823 100644 --- a/dist/qt_themes/colorful_midnight_blue/style.qrc +++ b/dist/qt_themes/colorful_midnight_blue/style.qrc @@ -11,6 +11,9 @@ SPDX-License-Identifier: GPL-2.0-or-later ../colorful/icons/48x48/bad_folder.png ../colorful/icons/48x48/chip.png ../colorful/icons/48x48/folder.png + ../colorful/icons/48x48/user-trash.png + ../colorful/icons/48x48/download.png + ../colorful/icons/48x48/upload.png ../colorful/icons/48x48/list-add.png ../colorful/icons/48x48/sd_card.png ../colorful/icons/256x256/plus_folder.png diff --git a/dist/qt_themes/default/default.qrc b/dist/qt_themes/default/default.qrc index 0d8af20fc1..e59f0ade9c 100644 --- a/dist/qt_themes/default/default.qrc +++ b/dist/qt_themes/default/default.qrc @@ -14,6 +14,9 @@ SPDX-License-Identifier: GPL-2.0-or-later icons/48x48/bad_folder.png icons/48x48/chip.png icons/48x48/folder.png + icons/48x48/user-trash.png + icons/48x48/download.png + icons/48x48/upload.png icons/48x48/list-add.png icons/48x48/sd_card.png icons/48x48/star.png diff --git a/dist/qt_themes/default/icons/256x256/eden.png b/dist/qt_themes/default/icons/256x256/eden.png index 32a2eebe8b..3c4bd566a1 100644 Binary files a/dist/qt_themes/default/icons/256x256/eden.png and b/dist/qt_themes/default/icons/256x256/eden.png differ diff --git a/dist/qt_themes/default/icons/256x256/eden_named.png b/dist/qt_themes/default/icons/256x256/eden_named.png deleted file mode 100644 index c77d32c380..0000000000 Binary files a/dist/qt_themes/default/icons/256x256/eden_named.png and /dev/null differ diff --git a/dist/qt_themes/default/icons/48x48/bad_folder.png b/dist/qt_themes/default/icons/48x48/bad_folder.png index 364ec646f6..b0cc440b84 100644 Binary files a/dist/qt_themes/default/icons/48x48/bad_folder.png and b/dist/qt_themes/default/icons/48x48/bad_folder.png differ diff --git a/dist/qt_themes/default/icons/48x48/download.png b/dist/qt_themes/default/icons/48x48/download.png new file mode 100644 index 0000000000..c0e3213655 Binary files /dev/null and b/dist/qt_themes/default/icons/48x48/download.png differ diff --git a/dist/qt_themes/default/icons/48x48/list-add.png b/dist/qt_themes/default/icons/48x48/list-add.png index fd8a06132c..ce34ce5522 100644 Binary files a/dist/qt_themes/default/icons/48x48/list-add.png and b/dist/qt_themes/default/icons/48x48/list-add.png differ diff --git a/dist/qt_themes/default/icons/48x48/sd_card.png b/dist/qt_themes/default/icons/48x48/sd_card.png index 6bcb7f6b1d..083566404b 100644 Binary files a/dist/qt_themes/default/icons/48x48/sd_card.png and b/dist/qt_themes/default/icons/48x48/sd_card.png differ diff --git a/dist/qt_themes/default/icons/48x48/upload.png b/dist/qt_themes/default/icons/48x48/upload.png new file mode 100644 index 0000000000..46120cbdaf Binary files /dev/null and b/dist/qt_themes/default/icons/48x48/upload.png differ diff --git a/dist/qt_themes/default/icons/48x48/user-trash.png b/dist/qt_themes/default/icons/48x48/user-trash.png new file mode 100644 index 0000000000..ef360a4775 Binary files /dev/null and b/dist/qt_themes/default/icons/48x48/user-trash.png differ diff --git a/dist/qt_themes/default/style.qss b/dist/qt_themes/default/style.qss index db55b9b490..c56ca54ce3 100644 --- a/dist/qt_themes/default/style.qss +++ b/dist/qt_themes/default/style.qss @@ -2,6 +2,12 @@ QAbstractSpinBox { min-height: 19px; } +QComboBox { + padding: 0px 4px 0px 4px; + min-width: 60px; + min-height: 19px; +} + QPushButton#TogglableStatusBarButton { color: #959595; border: 1px solid transparent; @@ -95,6 +101,60 @@ QPushButton#button_reset_defaults { padding: 4px 8px; } +/* QGroupBox -------------------------------------------------------------- + +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qgroupbox + +--------------------------------------------------------------------------- */ +QGroupBox { + border: 1px solid #32414B; + border-radius: 4px; + margin-top: 20px; + padding: 2px; +} + +QGroupBox::title { + subcontrol-origin: margin; + subcontrol-position: top left; + padding-left: 3px; + padding-right: 5px; + padding-top: 2px; +} + +QGroupBox::indicator { + margin-left: 2px; + height: 16px; + width: 16px; +} + +QGroupBox::indicator:unchecked { + border: none; + image: url(":/qss_icons/rc/checkbox_unchecked.png"); +} + +QGroupBox::indicator:unchecked:hover, QGroupBox::indicator:unchecked:focus, QGroupBox::indicator:unchecked:pressed { + border: none; + image: url(":/qss_icons/rc/checkbox_unchecked_focus.png"); +} + +QGroupBox::indicator:unchecked:disabled { + image: url(":/qss_icons/rc/checkbox_unchecked_disabled.png"); +} + +QGroupBox::indicator:checked { + border: none; + image: url(":/qss_icons/rc/checkbox_checked.png"); +} + +QGroupBox::indicator:checked:hover, QGroupBox::indicator:checked:focus, QGroupBox::indicator:checked:pressed { + border: none; + image: url(":/qss_icons/rc/checkbox_checked_focus.png"); +} + +QGroupBox::indicator:checked:disabled { + image: url(":/qss_icons/rc/checkbox_checked_disabled.png"); +} + QWidget#bottomPerGameInput, QWidget#topControllerApplet, QWidget#bottomControllerApplet, diff --git a/dist/qt_themes/default_dark/style.qrc b/dist/qt_themes/default_dark/style.qrc index 7de4737c2c..b76f9a0bda 100644 --- a/dist/qt_themes/default_dark/style.qrc +++ b/dist/qt_themes/default_dark/style.qrc @@ -13,6 +13,9 @@ SPDX-License-Identifier: GPL-2.0-or-later ../colorful/icons/48x48/bad_folder.png ../colorful/icons/48x48/chip.png ../colorful/icons/48x48/folder.png + ../colorful/icons/48x48/user-trash.png + ../colorful/icons/48x48/download.png + ../colorful/icons/48x48/upload.png ../qdarkstyle/icons/48x48/no_avatar.png ../colorful/icons/48x48/list-add.png ../colorful/icons/48x48/sd_card.png diff --git a/dist/qt_themes/default_dark/style.qss b/dist/qt_themes/default_dark/style.qss index 6a3f517cb6..9f8de4c5b8 100644 --- a/dist/qt_themes/default_dark/style.qss +++ b/dist/qt_themes/default_dark/style.qss @@ -6,6 +6,12 @@ QAbstractSpinBox { min-height: 19px; } +QComboBox { + padding: 0px 4px 0px 4px; + min-width: 60px; + min-height: 19px; +} + QPushButton#TogglableStatusBarButton { color: #959595; border: 1px solid transparent; @@ -697,3 +703,29 @@ QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:disabled, QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:disabled { image: url(:/overlay/osk_button_Y_disabled.png); } + +/* QGroupBox -------------------------------------------------------------- + +https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qgroupbox + +--------------------------------------------------------------------------- */ +QGroupBox { + border: 1px solid #32414B; + border-radius: 4px; + margin-top: 22px; + padding: 2px; +} + +QGroupBox::title { + subcontrol-origin: margin; + subcontrol-position: top left; + padding-left: 10px; + padding-right: 10px; + padding-top: 2px; +} + +QGroupBox::indicator { + margin-left: 2px; + height: 16px; + width: 16px; +} diff --git a/dist/qt_themes/qdarkstyle/icons/16x16/lock.png b/dist/qt_themes/qdarkstyle/icons/16x16/lock.png index 7e63927b2c..d187110ab3 100644 Binary files a/dist/qt_themes/qdarkstyle/icons/16x16/lock.png and b/dist/qt_themes/qdarkstyle/icons/16x16/lock.png differ diff --git a/dist/qt_themes/qdarkstyle/icons/48x48/bad_folder.png b/dist/qt_themes/qdarkstyle/icons/48x48/bad_folder.png index 245f96c7ba..42fee9ced2 100644 Binary files a/dist/qt_themes/qdarkstyle/icons/48x48/bad_folder.png and b/dist/qt_themes/qdarkstyle/icons/48x48/bad_folder.png differ diff --git a/dist/qt_themes/qdarkstyle/icons/48x48/chip.png b/dist/qt_themes/qdarkstyle/icons/48x48/chip.png index db0cadac13..9a727e7451 100644 Binary files a/dist/qt_themes/qdarkstyle/icons/48x48/chip.png and b/dist/qt_themes/qdarkstyle/icons/48x48/chip.png differ diff --git a/dist/qt_themes/qdarkstyle/icons/48x48/download.png b/dist/qt_themes/qdarkstyle/icons/48x48/download.png new file mode 100644 index 0000000000..d4d26fe2ea Binary files /dev/null and b/dist/qt_themes/qdarkstyle/icons/48x48/download.png differ diff --git a/dist/qt_themes/qdarkstyle/icons/48x48/list-add.png b/dist/qt_themes/qdarkstyle/icons/48x48/list-add.png index 8fbe780116..fdc39d6ba4 100644 Binary files a/dist/qt_themes/qdarkstyle/icons/48x48/list-add.png and b/dist/qt_themes/qdarkstyle/icons/48x48/list-add.png differ diff --git a/dist/qt_themes/qdarkstyle/icons/48x48/sd_card.png b/dist/qt_themes/qdarkstyle/icons/48x48/sd_card.png index 15e5e40245..d03d13a379 100644 Binary files a/dist/qt_themes/qdarkstyle/icons/48x48/sd_card.png and b/dist/qt_themes/qdarkstyle/icons/48x48/sd_card.png differ diff --git a/dist/qt_themes/qdarkstyle/icons/48x48/upload.png b/dist/qt_themes/qdarkstyle/icons/48x48/upload.png new file mode 100644 index 0000000000..ce255fb467 Binary files /dev/null and b/dist/qt_themes/qdarkstyle/icons/48x48/upload.png differ diff --git a/dist/qt_themes/qdarkstyle/icons/48x48/user-trash.png b/dist/qt_themes/qdarkstyle/icons/48x48/user-trash.png new file mode 100644 index 0000000000..e273528101 Binary files /dev/null and b/dist/qt_themes/qdarkstyle/icons/48x48/user-trash.png differ diff --git a/dist/qt_themes/qdarkstyle/rc/Hmovetoolbar.png b/dist/qt_themes/qdarkstyle/rc/Hmovetoolbar.png index cead99ed10..a0782ef97a 100644 Binary files a/dist/qt_themes/qdarkstyle/rc/Hmovetoolbar.png and b/dist/qt_themes/qdarkstyle/rc/Hmovetoolbar.png differ diff --git a/dist/qt_themes/qdarkstyle/rc/Vmovetoolbar.png b/dist/qt_themes/qdarkstyle/rc/Vmovetoolbar.png index 512edcecd6..25db314c17 100644 Binary files a/dist/qt_themes/qdarkstyle/rc/Vmovetoolbar.png and b/dist/qt_themes/qdarkstyle/rc/Vmovetoolbar.png differ diff --git a/dist/qt_themes/qdarkstyle/rc/checkbox_indeterminate.png b/dist/qt_themes/qdarkstyle/rc/checkbox_indeterminate.png index 830cfee656..56e8c49849 100644 Binary files a/dist/qt_themes/qdarkstyle/rc/checkbox_indeterminate.png and b/dist/qt_themes/qdarkstyle/rc/checkbox_indeterminate.png differ diff --git a/dist/qt_themes/qdarkstyle/rc/checkbox_indeterminate_disabled.png b/dist/qt_themes/qdarkstyle/rc/checkbox_indeterminate_disabled.png index cb63cc2fac..8ddbdabd4c 100644 Binary files a/dist/qt_themes/qdarkstyle/rc/checkbox_indeterminate_disabled.png and b/dist/qt_themes/qdarkstyle/rc/checkbox_indeterminate_disabled.png differ diff --git a/dist/qt_themes/qdarkstyle/rc/checkbox_indeterminate_focus.png b/dist/qt_themes/qdarkstyle/rc/checkbox_indeterminate_focus.png index 671be273b0..6111a28fc9 100644 Binary files a/dist/qt_themes/qdarkstyle/rc/checkbox_indeterminate_focus.png and b/dist/qt_themes/qdarkstyle/rc/checkbox_indeterminate_focus.png differ diff --git a/dist/qt_themes/qdarkstyle/rc/checkbox_unchecked.png b/dist/qt_themes/qdarkstyle/rc/checkbox_unchecked.png index 2159aca9a1..166f5aa049 100644 Binary files a/dist/qt_themes/qdarkstyle/rc/checkbox_unchecked.png and b/dist/qt_themes/qdarkstyle/rc/checkbox_unchecked.png differ diff --git a/dist/qt_themes/qdarkstyle/rc/checkbox_unchecked_disabled.png b/dist/qt_themes/qdarkstyle/rc/checkbox_unchecked_disabled.png index ade721e81b..789a03b356 100644 Binary files a/dist/qt_themes/qdarkstyle/rc/checkbox_unchecked_disabled.png and b/dist/qt_themes/qdarkstyle/rc/checkbox_unchecked_disabled.png differ diff --git a/dist/qt_themes/qdarkstyle/rc/checkbox_unchecked_focus.png b/dist/qt_themes/qdarkstyle/rc/checkbox_unchecked_focus.png index e4258cc470..4b6981b268 100644 Binary files a/dist/qt_themes/qdarkstyle/rc/checkbox_unchecked_focus.png and b/dist/qt_themes/qdarkstyle/rc/checkbox_unchecked_focus.png differ diff --git a/dist/qt_themes/qdarkstyle/rc/close-hover.png b/dist/qt_themes/qdarkstyle/rc/close-hover.png index 657943a668..afddf97a79 100644 Binary files a/dist/qt_themes/qdarkstyle/rc/close-hover.png and b/dist/qt_themes/qdarkstyle/rc/close-hover.png differ diff --git a/dist/qt_themes/qdarkstyle/rc/close-pressed.png b/dist/qt_themes/qdarkstyle/rc/close-pressed.png index 937d005983..605ac0e6bf 100644 Binary files a/dist/qt_themes/qdarkstyle/rc/close-pressed.png and b/dist/qt_themes/qdarkstyle/rc/close-pressed.png differ diff --git a/dist/qt_themes/qdarkstyle/rc/close.png b/dist/qt_themes/qdarkstyle/rc/close.png index bc0f576109..3f843b8bcc 100644 Binary files a/dist/qt_themes/qdarkstyle/rc/close.png and b/dist/qt_themes/qdarkstyle/rc/close.png differ diff --git a/dist/qt_themes/qdarkstyle/rc/radio_checked.png b/dist/qt_themes/qdarkstyle/rc/radio_checked.png index 235e6b0ba7..edaf3f2228 100644 Binary files a/dist/qt_themes/qdarkstyle/rc/radio_checked.png and b/dist/qt_themes/qdarkstyle/rc/radio_checked.png differ diff --git a/dist/qt_themes/qdarkstyle/rc/radio_checked_disabled.png b/dist/qt_themes/qdarkstyle/rc/radio_checked_disabled.png index bf0051ede5..f2a4ce1df3 100644 Binary files a/dist/qt_themes/qdarkstyle/rc/radio_checked_disabled.png and b/dist/qt_themes/qdarkstyle/rc/radio_checked_disabled.png differ diff --git a/dist/qt_themes/qdarkstyle/rc/radio_checked_focus.png b/dist/qt_themes/qdarkstyle/rc/radio_checked_focus.png index 700c6b525e..d6b540408d 100644 Binary files a/dist/qt_themes/qdarkstyle/rc/radio_checked_focus.png and b/dist/qt_themes/qdarkstyle/rc/radio_checked_focus.png differ diff --git a/dist/qt_themes/qdarkstyle/rc/radio_unchecked.png b/dist/qt_themes/qdarkstyle/rc/radio_unchecked.png index 9a4def65c6..f69d92df09 100644 Binary files a/dist/qt_themes/qdarkstyle/rc/radio_unchecked.png and b/dist/qt_themes/qdarkstyle/rc/radio_unchecked.png differ diff --git a/dist/qt_themes/qdarkstyle/rc/radio_unchecked_disabled.png b/dist/qt_themes/qdarkstyle/rc/radio_unchecked_disabled.png index 6ece890e75..c3f29da053 100644 Binary files a/dist/qt_themes/qdarkstyle/rc/radio_unchecked_disabled.png and b/dist/qt_themes/qdarkstyle/rc/radio_unchecked_disabled.png differ diff --git a/dist/qt_themes/qdarkstyle/rc/radio_unchecked_focus.png b/dist/qt_themes/qdarkstyle/rc/radio_unchecked_focus.png index 564e022d33..81323f4150 100644 Binary files a/dist/qt_themes/qdarkstyle/rc/radio_unchecked_focus.png and b/dist/qt_themes/qdarkstyle/rc/radio_unchecked_focus.png differ diff --git a/dist/qt_themes/qdarkstyle/rc/stylesheet-branch-end.png b/dist/qt_themes/qdarkstyle/rc/stylesheet-branch-end.png index cb5d3b51f8..a50d541878 100644 Binary files a/dist/qt_themes/qdarkstyle/rc/stylesheet-branch-end.png and b/dist/qt_themes/qdarkstyle/rc/stylesheet-branch-end.png differ diff --git a/dist/qt_themes/qdarkstyle/rc/stylesheet-vline.png b/dist/qt_themes/qdarkstyle/rc/stylesheet-vline.png index 87536cce16..baf9bd8437 100644 Binary files a/dist/qt_themes/qdarkstyle/rc/stylesheet-vline.png and b/dist/qt_themes/qdarkstyle/rc/stylesheet-vline.png differ diff --git a/dist/qt_themes/qdarkstyle/rc/undock.png b/dist/qt_themes/qdarkstyle/rc/undock.png index 88691d7795..b7975a2b89 100644 Binary files a/dist/qt_themes/qdarkstyle/rc/undock.png and b/dist/qt_themes/qdarkstyle/rc/undock.png differ diff --git a/dist/qt_themes/qdarkstyle/style.qrc b/dist/qt_themes/qdarkstyle/style.qrc index a89fb26c68..3902996058 100644 --- a/dist/qt_themes/qdarkstyle/style.qrc +++ b/dist/qt_themes/qdarkstyle/style.qrc @@ -9,6 +9,9 @@ icons/48x48/bad_folder.png icons/48x48/chip.png icons/48x48/folder.png + icons/48x48/user-trash.png + icons/48x48/download.png + icons/48x48/upload.png icons/48x48/no_avatar.png icons/48x48/list-add.png icons/48x48/sd_card.png diff --git a/dist/qt_themes/qdarkstyle/style.qss b/dist/qt_themes/qdarkstyle/style.qss index 32610b131e..aaf1abed6d 100644 --- a/dist/qt_themes/qdarkstyle/style.qss +++ b/dist/qt_themes/qdarkstyle/style.qss @@ -307,7 +307,7 @@ QAbstractItemView QLineEdit { QGroupBox { border: 1px solid #54575B; border-radius: 2px; - margin-top: 12px; + margin-top: 20px; padding-top: 2px; } @@ -821,31 +821,6 @@ QTabBar QToolButton::left-arrow:disabled { image: url(:/qss_icons/rc/left_arrow_disabled.png); } -QDockWidget { - background: #31363b; - border: 1px solid #403F3F; - titlebar-close-icon: url(:/qss_icons/rc/close.png); - titlebar-normal-icon: url(:/qss_icons/rc/undock.png); -} - -QDockWidget::close-button, -QDockWidget::float-button { - border: 1px solid transparent; - border-radius: 2px; - background: transparent; -} - -QDockWidget::close-button:hover, -QDockWidget::float-button:hover { - background: rgba(255, 255, 255, 10); -} - -QDockWidget::close-button:pressed, -QDockWidget::float-button:pressed { - padding: 1px -1px -1px 1px; - background: rgba(255, 255, 255, 10); -} - QTreeView, QListView { border: 1px solid #54575B; diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/Hmovetoolbar.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/Hmovetoolbar.png index cead99ed10..a0782ef97a 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/Hmovetoolbar.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/Hmovetoolbar.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/Vmovetoolbar.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/Vmovetoolbar.png index 512edcecd6..25db314c17 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/Vmovetoolbar.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/Vmovetoolbar.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_down.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_down.png index c4e6894ba9..76232456f6 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_down.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_down.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_down@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_down@2x.png index bb8cbed0d6..4238e31d73 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_down@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_down@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_down_disabled.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_down_disabled.png index aa1d06c084..f286fb7605 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_down_disabled.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_down_disabled.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_down_disabled@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_down_disabled@2x.png index 86bf434b84..924f9951f9 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_down_disabled@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_down_disabled@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_down_focus.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_down_focus.png index 1c42ee8f6a..310cdf0ae3 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_down_focus.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_down_focus.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_down_focus@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_down_focus@2x.png index 7374637c5e..c1fa23192d 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_down_focus@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_down_focus@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_down_pressed.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_down_pressed.png index 8139ee3e83..87cef99e61 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_down_pressed.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_down_pressed.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_down_pressed@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_down_pressed@2x.png index 5e9d225ff6..47b87f55aa 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_down_pressed@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_down_pressed@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_left.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_left.png index ef929fdf04..e71a93cf0e 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_left.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_left.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_left@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_left@2x.png index c8923d6f4c..37362f331e 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_left@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_left@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_left_disabled.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_left_disabled.png index 9c69561a7f..67cbd8c203 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_left_disabled.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_left_disabled.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_left_disabled@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_left_disabled@2x.png index e521143121..c33c0e50a4 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_left_disabled@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_left_disabled@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_left_focus.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_left_focus.png index a1f0704550..58daf567b5 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_left_focus.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_left_focus.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_left_focus@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_left_focus@2x.png index c4267e856b..59d58ab753 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_left_focus@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_left_focus@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_left_pressed.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_left_pressed.png index bd706cbdd6..54ab848e87 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_left_pressed.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_left_pressed.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_left_pressed@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_left_pressed@2x.png index 341b2e5410..a61de7f5ff 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_left_pressed@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_left_pressed@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_right.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_right.png index 4f33885057..649da834ba 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_right.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_right.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_right@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_right@2x.png index 94b2609658..a16fe6d1ee 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_right@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_right@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_right_disabled.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_right_disabled.png index 0fbc6b04c5..3d7f3c080e 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_right_disabled.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_right_disabled.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_right_disabled@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_right_disabled@2x.png index 8e9272a5b9..723de13ce1 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_right_disabled@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_right_disabled@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_right_focus.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_right_focus.png index 7649409451..a0c45d83b0 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_right_focus.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_right_focus.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_right_focus@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_right_focus@2x.png index 6d52b5fa37..a34b45b35a 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_right_focus@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_right_focus@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_right_pressed.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_right_pressed.png index a5f04522a6..a6bdecbf28 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_right_pressed.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_right_pressed.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_right_pressed@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_right_pressed@2x.png index 6f6a8130c1..b650e3271b 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_right_pressed@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_right_pressed@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_up.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_up.png index 61d7574a4d..751c95411b 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_up.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_up.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_up@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_up@2x.png index d711fae16a..b5375c7cb2 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_up@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_up@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_up_disabled.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_up_disabled.png index 18e8ecd8d3..fde7ba3f01 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_up_disabled.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_up_disabled.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_up_disabled@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_up_disabled@2x.png index fb4defb522..c09291ab13 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_up_disabled@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_up_disabled@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_up_focus.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_up_focus.png index a7acd9b668..3dadfe4220 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_up_focus.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_up_focus.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_up_focus@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_up_focus@2x.png index 9cd982a1d4..0ed72401e7 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_up_focus@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_up_focus@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_up_pressed.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_up_pressed.png index 390a80e21b..fac7fdb9e8 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_up_pressed.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_up_pressed.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_up_pressed@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_up_pressed@2x.png index dd352cff39..70689f752a 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_up_pressed@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/arrow_up_pressed@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/base_icon.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/base_icon.png index 37a6158cc4..492cc2724e 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/base_icon.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/base_icon.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/base_icon@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/base_icon@2x.png index e6e5cb9160..19fbf8d5af 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/base_icon@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/base_icon@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/base_icon_disabled.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/base_icon_disabled.png index 37a6158cc4..492cc2724e 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/base_icon_disabled.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/base_icon_disabled.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/base_icon_disabled@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/base_icon_disabled@2x.png index e6e5cb9160..19fbf8d5af 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/base_icon_disabled@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/base_icon_disabled@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/base_icon_focus.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/base_icon_focus.png index 37a6158cc4..492cc2724e 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/base_icon_focus.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/base_icon_focus.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/base_icon_focus@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/base_icon_focus@2x.png index e6e5cb9160..19fbf8d5af 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/base_icon_focus@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/base_icon_focus@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/base_icon_pressed.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/base_icon_pressed.png index 37a6158cc4..492cc2724e 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/base_icon_pressed.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/base_icon_pressed.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/base_icon_pressed@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/base_icon_pressed@2x.png index e6e5cb9160..19fbf8d5af 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/base_icon_pressed@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/base_icon_pressed@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_closed.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_closed.png index 53e2c51f57..df389d19fa 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_closed.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_closed.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_closed@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_closed@2x.png index 06cdefa5f1..606f905309 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_closed@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_closed@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_closed_disabled.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_closed_disabled.png index 5106a1438b..43d7b70185 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_closed_disabled.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_closed_disabled.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_closed_disabled@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_closed_disabled@2x.png index 180bae9e61..86dbc5bc69 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_closed_disabled@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_closed_disabled@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_closed_focus.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_closed_focus.png index c227f9f71c..c530d0ee3c 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_closed_focus.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_closed_focus.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_closed_focus@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_closed_focus@2x.png index ad23d0d332..954592f027 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_closed_focus@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_closed_focus@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_closed_pressed.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_closed_pressed.png index 90845a81fa..4e7831ed41 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_closed_pressed.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_closed_pressed.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_closed_pressed@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_closed_pressed@2x.png index 60aaeb7fb3..61b924e9f2 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_closed_pressed@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_closed_pressed@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_end.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_end.png index 08b5559b21..4372be7a06 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_end.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_end.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_end@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_end@2x.png index ae6dbe9913..a5c0485530 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_end@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_end@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_end_disabled.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_end_disabled.png index 027a8894a6..e748e2e728 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_end_disabled.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_end_disabled.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_end_disabled@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_end_disabled@2x.png index 43c1b0c769..fe12891a7e 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_end_disabled@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_end_disabled@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_end_focus.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_end_focus.png index fdb3160bb8..7a283b46b9 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_end_focus.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_end_focus.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_end_focus@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_end_focus@2x.png index 3ca8904498..c1a173e418 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_end_focus@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_end_focus@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_end_pressed.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_end_pressed.png index 1c2432dd4b..12afd7b17a 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_end_pressed.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_end_pressed.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_end_pressed@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_end_pressed@2x.png index af0f8fa5a9..cb781ab4dc 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_end_pressed@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_end_pressed@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_line.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_line.png index a3a564e447..5bdb43fd41 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_line.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_line.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_line@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_line@2x.png index 1dbf71fc72..b5dced34e2 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_line@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_line@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_line_disabled.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_line_disabled.png index ecc7e6d932..d0ad0e07ec 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_line_disabled.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_line_disabled.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_line_disabled@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_line_disabled@2x.png index adc6446c97..4bd61d377b 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_line_disabled@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_line_disabled@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_line_focus.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_line_focus.png index 0037f175ad..08ec6d12fe 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_line_focus.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_line_focus.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_line_focus@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_line_focus@2x.png index cb257a9143..53a3164aa3 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_line_focus@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_line_focus@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_line_pressed.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_line_pressed.png index 2d08565278..4d1e85a178 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_line_pressed.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_line_pressed.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_line_pressed@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_line_pressed@2x.png index 803708fb45..102b287c28 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_line_pressed@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_line_pressed@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_more.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_more.png index 31b6cee873..e676e28e46 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_more.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_more.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_more@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_more@2x.png index f1f7a67f16..7bf47a36af 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_more@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_more@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_more_disabled.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_more_disabled.png index d4b6049055..f9b714eba9 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_more_disabled.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_more_disabled.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_more_disabled@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_more_disabled@2x.png index 3ef752108d..212b56ec5d 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_more_disabled@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_more_disabled@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_more_focus.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_more_focus.png index 943c13d0b2..8a74cad89c 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_more_focus.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_more_focus.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_more_focus@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_more_focus@2x.png index 9f53ef1fa5..6b3c2b8fbb 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_more_focus@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_more_focus@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_more_pressed.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_more_pressed.png index 9037ed3b3f..dafad3dcf3 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_more_pressed.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_more_pressed.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_more_pressed@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_more_pressed@2x.png index 675d52c761..b1a5d22842 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_more_pressed@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_more_pressed@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_open.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_open.png index 0861d0bc76..b9e2719214 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_open.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_open.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_open@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_open@2x.png index 8850f7367b..541786551f 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_open@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_open@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_open_disabled.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_open_disabled.png index b6c80243b6..0f2e2e6cbf 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_open_disabled.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_open_disabled.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_open_disabled@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_open_disabled@2x.png index 15ce9f2650..cbd1f2823f 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_open_disabled@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_open_disabled@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_open_focus.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_open_focus.png index eadb0962a5..c7f8089abb 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_open_focus.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_open_focus.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_open_focus@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_open_focus@2x.png index 7dfcbbe8ab..5d08b01c8c 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_open_focus@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_open_focus@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_open_pressed.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_open_pressed.png index 2b22e8d08d..361b1bff04 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_open_pressed.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_open_pressed.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_open_pressed@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_open_pressed@2x.png index 269a0cbee8..bde4b37e8d 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_open_pressed@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/branch_open_pressed@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_checked.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_checked.png index e7ed080810..2a698618b5 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_checked.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_checked.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_checked@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_checked@2x.png index 35f2ade589..eebc45b172 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_checked@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_checked@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_checked_disabled.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_checked_disabled.png index 512b0a3e4c..414e315d04 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_checked_disabled.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_checked_disabled.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_checked_disabled@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_checked_disabled@2x.png index 557383ec88..fc7973ccb6 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_checked_disabled@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_checked_disabled@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_checked_focus.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_checked_focus.png index 0b90412f29..1a9894a616 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_checked_focus.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_checked_focus.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_checked_focus@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_checked_focus@2x.png index 7aee03cbb2..d2f515b4cd 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_checked_focus@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_checked_focus@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_checked_pressed.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_checked_pressed.png index 3d4c869b79..8b5d23177b 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_checked_pressed.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_checked_pressed.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_checked_pressed@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_checked_pressed@2x.png index bfbc14b94d..0279f750f5 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_checked_pressed@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_checked_pressed@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_indeterminate.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_indeterminate.png index c21ab99bfb..158038aa55 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_indeterminate.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_indeterminate.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_indeterminate@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_indeterminate@2x.png index 2fc29cee62..cf63ceab7f 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_indeterminate@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_indeterminate@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_indeterminate_disabled.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_indeterminate_disabled.png index 1d3c214923..b8602ab3c7 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_indeterminate_disabled.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_indeterminate_disabled.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_indeterminate_disabled@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_indeterminate_disabled@2x.png index bb8e7a7477..0aecf329a5 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_indeterminate_disabled@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_indeterminate_disabled@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_indeterminate_focus.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_indeterminate_focus.png index 13ca4a7a40..2f3a5c098d 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_indeterminate_focus.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_indeterminate_focus.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_indeterminate_focus@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_indeterminate_focus@2x.png index 3907eb8d46..3f5e08f884 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_indeterminate_focus@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_indeterminate_focus@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_indeterminate_pressed.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_indeterminate_pressed.png index 12f83ceba3..34fc686b9c 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_indeterminate_pressed.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_indeterminate_pressed.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_indeterminate_pressed@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_indeterminate_pressed@2x.png index 5ff4f66298..344d2fe47b 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_indeterminate_pressed@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_indeterminate_pressed@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_unchecked.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_unchecked.png index e2da452faa..f569143fe8 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_unchecked.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_unchecked.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_unchecked@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_unchecked@2x.png index 3732d5406e..883cd95814 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_unchecked@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_unchecked@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_unchecked_disabled.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_unchecked_disabled.png index c2e30c690a..de85ec5e87 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_unchecked_disabled.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_unchecked_disabled.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_unchecked_disabled@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_unchecked_disabled@2x.png index c4bddb6eb1..eac24e56b7 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_unchecked_disabled@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_unchecked_disabled@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_unchecked_focus.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_unchecked_focus.png index c57f04d9f8..ee8eb5650a 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_unchecked_focus.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_unchecked_focus.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_unchecked_focus@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_unchecked_focus@2x.png index 1776ad0486..6421b2f75c 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_unchecked_focus@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_unchecked_focus@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_unchecked_pressed.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_unchecked_pressed.png index be41236e1b..54f7917304 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_unchecked_pressed.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_unchecked_pressed.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_unchecked_pressed@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_unchecked_pressed@2x.png index b1ad7c72fe..136d9f6b77 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_unchecked_pressed@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/checkbox_unchecked_pressed@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/close-hover.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/close-hover.png index 657943a668..afddf97a79 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/close-hover.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/close-hover.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/close-pressed.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/close-pressed.png index 937d005983..605ac0e6bf 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/close-pressed.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/close-pressed.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/close.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/close.png index bc0f576109..3f843b8bcc 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/close.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/close.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_horizontal@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_horizontal@2x.png index c229ac963d..41a3a1ef0a 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_horizontal@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_horizontal@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_horizontal_disabled@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_horizontal_disabled@2x.png index a4713c565e..12f07fbb9d 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_horizontal_disabled@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_horizontal_disabled@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_horizontal_focus@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_horizontal_focus@2x.png index 84397efdbf..0c26376506 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_horizontal_focus@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_horizontal_focus@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_horizontal_pressed@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_horizontal_pressed@2x.png index 140552e4ff..a6aeed8754 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_horizontal_pressed@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_horizontal_pressed@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_vertical.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_vertical.png index a3a564e447..5bdb43fd41 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_vertical.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_vertical.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_vertical@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_vertical@2x.png index 1dbf71fc72..b5dced34e2 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_vertical@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_vertical@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_vertical_disabled.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_vertical_disabled.png index ecc7e6d932..d0ad0e07ec 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_vertical_disabled.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_vertical_disabled.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_vertical_disabled@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_vertical_disabled@2x.png index adc6446c97..4bd61d377b 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_vertical_disabled@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_vertical_disabled@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_vertical_focus.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_vertical_focus.png index 0037f175ad..08ec6d12fe 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_vertical_focus.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_vertical_focus.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_vertical_focus@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_vertical_focus@2x.png index cb257a9143..53a3164aa3 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_vertical_focus@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_vertical_focus@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_vertical_pressed.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_vertical_pressed.png index 2d08565278..4d1e85a178 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_vertical_pressed.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_vertical_pressed.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_vertical_pressed@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_vertical_pressed@2x.png index 803708fb45..102b287c28 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_vertical_pressed@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/line_vertical_pressed@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_checked.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_checked.png index 6f1fd6ca69..4e5cc4445b 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_checked.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_checked.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_checked@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_checked@2x.png index 228ffdbf21..94f0939ba1 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_checked@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_checked@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_checked_disabled.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_checked_disabled.png index 27788530d1..74fd0faae7 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_checked_disabled.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_checked_disabled.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_checked_disabled@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_checked_disabled@2x.png index 930bfaf70d..ee6fab7c00 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_checked_disabled@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_checked_disabled@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_checked_focus.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_checked_focus.png index ca8e8bc9a7..183930162f 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_checked_focus.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_checked_focus.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_checked_focus@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_checked_focus@2x.png index aa0f1152be..4fd15f7f7d 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_checked_focus@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_checked_focus@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_checked_pressed.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_checked_pressed.png index 6e391a0ff3..24ecf6781d 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_checked_pressed.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_checked_pressed.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_checked_pressed@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_checked_pressed@2x.png index 0512731ae5..f816f32387 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_checked_pressed@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_checked_pressed@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_unchecked.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_unchecked.png index 763306bdcc..391acb69e8 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_unchecked.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_unchecked.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_unchecked@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_unchecked@2x.png index 28b6a07842..8bae28f3fb 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_unchecked@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_unchecked@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_unchecked_disabled.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_unchecked_disabled.png index fc0b12f781..300d86068a 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_unchecked_disabled.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_unchecked_disabled.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_unchecked_disabled@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_unchecked_disabled@2x.png index d31f2b4b9d..16d595ccee 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_unchecked_disabled@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_unchecked_disabled@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_unchecked_focus.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_unchecked_focus.png index 9c87b01e49..edd78cb43b 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_unchecked_focus.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_unchecked_focus.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_unchecked_focus@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_unchecked_focus@2x.png index 4b4c7321dd..7ab8c79fba 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_unchecked_focus@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_unchecked_focus@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_unchecked_pressed.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_unchecked_pressed.png index 709e316336..9046c4b764 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_unchecked_pressed.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_unchecked_pressed.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_unchecked_pressed@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_unchecked_pressed@2x.png index b014de5f01..a6c3cd9b0f 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_unchecked_pressed@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/radio_unchecked_pressed@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/stylesheet-branch-end.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/stylesheet-branch-end.png index cb5d3b51f8..a50d541878 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/stylesheet-branch-end.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/stylesheet-branch-end.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/stylesheet-vline.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/stylesheet-vline.png index 87536cce16..baf9bd8437 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/stylesheet-vline.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/stylesheet-vline.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_horizontal.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_horizontal.png index 012ea2dfb1..fd0cf328b4 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_horizontal.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_horizontal.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_horizontal@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_horizontal@2x.png index 520c34f98d..0b07144fdd 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_horizontal@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_horizontal@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_horizontal_disabled.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_horizontal_disabled.png index 1f91df98fd..bba0cf74b7 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_horizontal_disabled.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_horizontal_disabled.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_horizontal_disabled@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_horizontal_disabled@2x.png index 738008f92e..3162df8c18 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_horizontal_disabled@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_horizontal_disabled@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_horizontal_focus.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_horizontal_focus.png index 999b3c7d82..fd021e97ec 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_horizontal_focus.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_horizontal_focus.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_horizontal_focus@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_horizontal_focus@2x.png index f8e40b7d19..d9aae5ecdd 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_horizontal_focus@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_horizontal_focus@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_horizontal_pressed.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_horizontal_pressed.png index c31b69deb6..1e170e9a73 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_horizontal_pressed.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_horizontal_pressed.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_horizontal_pressed@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_horizontal_pressed@2x.png index 2f4cb41c7e..bedb94a89e 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_horizontal_pressed@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_horizontal_pressed@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_vertical@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_vertical@2x.png index 90a5caee37..ab7e0a52f1 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_vertical@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_vertical@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_vertical_disabled.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_vertical_disabled.png index 2d240edb52..e2e2afce86 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_vertical_disabled.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_vertical_disabled.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_vertical_disabled@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_vertical_disabled@2x.png index fd1df30f11..7eccab8513 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_vertical_disabled@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_vertical_disabled@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_vertical_focus.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_vertical_focus.png index 58cda1f805..82b2482ef5 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_vertical_focus.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_vertical_focus.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_vertical_focus@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_vertical_focus@2x.png index 9222b4fd8e..66504f977f 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_vertical_focus@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_vertical_focus@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_vertical_pressed.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_vertical_pressed.png index e7d6419261..013bc2d3f0 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_vertical_pressed.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_vertical_pressed.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_vertical_pressed@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_vertical_pressed@2x.png index 9c438faf42..6ad8b47f16 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_vertical_pressed@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_move_vertical_pressed@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_horizontal.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_horizontal.png index 3c0acbdcc0..71f79e7c18 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_horizontal.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_horizontal.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_horizontal@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_horizontal@2x.png index fb4e24c88f..4049b34530 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_horizontal@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_horizontal@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_horizontal_disabled.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_horizontal_disabled.png index 32f7e8ca6f..eb5944bba0 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_horizontal_disabled.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_horizontal_disabled.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_horizontal_disabled@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_horizontal_disabled@2x.png index f7bec188bb..12df69aad9 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_horizontal_disabled@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_horizontal_disabled@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_horizontal_focus.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_horizontal_focus.png index 91c19d65c3..d05adc4a58 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_horizontal_focus.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_horizontal_focus.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_horizontal_focus@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_horizontal_focus@2x.png index c4829918d6..70556d96c7 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_horizontal_focus@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_horizontal_focus@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_horizontal_pressed.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_horizontal_pressed.png index 7a7f917374..1ade9619f5 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_horizontal_pressed.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_horizontal_pressed.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_horizontal_pressed@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_horizontal_pressed@2x.png index d65773b487..1c2f542ecf 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_horizontal_pressed@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_horizontal_pressed@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_vertical@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_vertical@2x.png index fe97c0de36..4cced09e9b 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_vertical@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_vertical@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_vertical_disabled@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_vertical_disabled@2x.png index 7acc6d33ea..7975862422 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_vertical_disabled@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_vertical_disabled@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_vertical_focus.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_vertical_focus.png index 6e3c121433..a0c764d010 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_vertical_focus.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_vertical_focus.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_vertical_focus@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_vertical_focus@2x.png index cac3a56c28..1088091c5e 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_vertical_focus@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_vertical_focus@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_vertical_pressed.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_vertical_pressed.png index b777784b88..dd8529c4b6 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_vertical_pressed.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_vertical_pressed.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_vertical_pressed@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_vertical_pressed@2x.png index 7ed878fd3f..11007b6fca 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_vertical_pressed@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/toolbar_separator_vertical_pressed@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/undock.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/undock.png index 88691d7795..b7975a2b89 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/undock.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/undock.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_close.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_close.png index 6f55c3ae77..72af3edd36 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_close.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_close.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_close@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_close@2x.png index ff644f2e81..41a82e7a5b 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_close@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_close@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_close_disabled.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_close_disabled.png index 22694e31dd..6e5f534d55 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_close_disabled.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_close_disabled.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_close_disabled@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_close_disabled@2x.png index ebc97db707..d6d3a6127c 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_close_disabled@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_close_disabled@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_close_focus.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_close_focus.png index f017eda31f..23b0129b85 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_close_focus.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_close_focus.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_close_focus@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_close_focus@2x.png index 5a354d7963..f1f2a8271a 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_close_focus@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_close_focus@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_close_pressed.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_close_pressed.png index 04b922dd08..a7924de6f9 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_close_pressed.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_close_pressed.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_close_pressed@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_close_pressed@2x.png index 58c0bf592c..92e7a86e2b 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_close_pressed@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_close_pressed@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_grip.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_grip.png index 0528049bbd..a5b556fefa 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_grip.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_grip.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_grip@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_grip@2x.png index 1ca1b073c9..e2a91a6b57 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_grip@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_grip@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_grip_disabled.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_grip_disabled.png index 15f55c0560..509c335897 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_grip_disabled.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_grip_disabled.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_grip_disabled@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_grip_disabled@2x.png index 33a4588e8e..cb18102c61 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_grip_disabled@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_grip_disabled@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_grip_focus.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_grip_focus.png index 06e76c31f2..ef4abe6215 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_grip_focus.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_grip_focus.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_grip_focus@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_grip_focus@2x.png index 58c2d06e4f..f4b7479e71 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_grip_focus@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_grip_focus@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_grip_pressed.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_grip_pressed.png index b3a566cdb9..9a365bfc3f 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_grip_pressed.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_grip_pressed.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_grip_pressed@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_grip_pressed@2x.png index e9da940497..e299648d08 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_grip_pressed@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_grip_pressed@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_minimize.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_minimize.png index f609816153..6f85fb6489 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_minimize.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_minimize.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_minimize@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_minimize@2x.png index 30f728f022..2a53538b34 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_minimize@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_minimize@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_minimize_disabled.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_minimize_disabled.png index 29db1c9b18..e498972494 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_minimize_disabled.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_minimize_disabled.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_minimize_disabled@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_minimize_disabled@2x.png index 1572ca2fea..063c8f635d 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_minimize_disabled@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_minimize_disabled@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_minimize_focus.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_minimize_focus.png index cb592f5988..561039af1a 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_minimize_focus.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_minimize_focus.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_minimize_focus@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_minimize_focus@2x.png index 6f6465169d..1f0c2e1b90 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_minimize_focus@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_minimize_focus@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_minimize_pressed.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_minimize_pressed.png index 6962440ace..c1cb9fcb77 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_minimize_pressed.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_minimize_pressed.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_minimize_pressed@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_minimize_pressed@2x.png index cb028272b8..588baf4336 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_minimize_pressed@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_minimize_pressed@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_undock.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_undock.png index 616da991a5..70c4dbcad5 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_undock.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_undock.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_undock@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_undock@2x.png index 511036bf2d..db805412b5 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_undock@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_undock@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_undock_disabled.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_undock_disabled.png index a2b3d25b23..0156d0be80 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_undock_disabled.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_undock_disabled.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_undock_disabled@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_undock_disabled@2x.png index 638ec8104a..ce1909f2c4 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_undock_disabled@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_undock_disabled@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_undock_focus.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_undock_focus.png index ae6dc4a606..746a4d1909 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_undock_focus.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_undock_focus.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_undock_focus@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_undock_focus@2x.png index d06dd1eac8..603d3966cc 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_undock_focus@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_undock_focus@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_undock_pressed.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_undock_pressed.png index e9142ded2c..0b6fc91950 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_undock_pressed.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_undock_pressed.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_undock_pressed@2x.png b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_undock_pressed@2x.png index a597420f36..736707afc1 100644 Binary files a/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_undock_pressed@2x.png and b/dist/qt_themes/qdarkstyle_midnight_blue/rc/window_undock_pressed@2x.png differ diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/style.qrc b/dist/qt_themes/qdarkstyle_midnight_blue/style.qrc index dc3d7fecbd..75212008a3 100644 --- a/dist/qt_themes/qdarkstyle_midnight_blue/style.qrc +++ b/dist/qt_themes/qdarkstyle_midnight_blue/style.qrc @@ -6,6 +6,9 @@ ../qdarkstyle/icons/48x48/bad_folder.png ../qdarkstyle/icons/48x48/chip.png ../qdarkstyle/icons/48x48/folder.png + ../qdarkstyle/icons/48x48/user-trash.png + ../qdarkstyle/icons/48x48/download.png + ../qdarkstyle/icons/48x48/upload.png ../qdarkstyle/icons/48x48/no_avatar.png ../qdarkstyle/icons/48x48/list-add.png ../qdarkstyle/icons/48x48/sd_card.png diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/style.qss b/dist/qt_themes/qdarkstyle_midnight_blue/style.qss index 43db5ad0b5..f968ad18b7 100644 --- a/dist/qt_themes/qdarkstyle_midnight_blue/style.qss +++ b/dist/qt_themes/qdarkstyle_midnight_blue/style.qss @@ -235,10 +235,9 @@ https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qgroupbox --------------------------------------------------------------------------- */ QGroupBox { - font-weight: bold; border: 1px solid #32414B; border-radius: 4px; - margin-top: 12px; + margin-top: 20px; padding: 2px; } @@ -1686,54 +1685,6 @@ QTabBar QToolButton::right-arrow:disabled { image: url(":/qss_icons/rc/arrow_right_disabled.png"); } -/* QDockWiget ------------------------------------------------------------- - ---------------------------------------------------------------------------- */ -QDockWidget { - outline: 1px solid #32414B; - background-color: #19232D; - border: 1px solid #32414B; - border-radius: 4px; - titlebar-close-icon: url(":/qss_icons/rc/window_close.png"); - titlebar-normal-icon: url(":/qss_icons/rc/window_undock.png"); -} - -QDockWidget::title { - /* Better size for title bar */ - padding: 6px; - spacing: 4px; - border: none; - background-color: #32414B; -} - -QDockWidget::close-button { - background-color: #32414B; - border-radius: 4px; - border: none; -} - -QDockWidget::close-button:hover { - image: url(":/qss_icons/rc/window_close_focus.png"); -} - -QDockWidget::close-button:pressed { - image: url(":/qss_icons/rc/window_close_pressed.png"); -} - -QDockWidget::float-button { - background-color: #32414B; - border-radius: 4px; - border: none; -} - -QDockWidget::float-button:hover { - image: url(":/qss_icons/rc/window_undock_focus.png"); -} - -QDockWidget::float-button:pressed { - image: url(":/qss_icons/rc/window_undock_pressed.png"); -} - /* QTreeView QListView QTableView ----------------------------------------- https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qtreeview diff --git a/dist/yuzu.bmp b/dist/yuzu.bmp deleted file mode 100644 index 6b2b248cc3..0000000000 Binary files a/dist/yuzu.bmp and /dev/null differ diff --git a/dist/yuzu.icns b/dist/yuzu.icns deleted file mode 100644 index 97aed94020..0000000000 Binary files a/dist/yuzu.icns and /dev/null differ diff --git a/docs/Build.md b/docs/Build.md new file mode 100644 index 0000000000..394fe4871d --- /dev/null +++ b/docs/Build.md @@ -0,0 +1,176 @@ +# Building Eden + +> [!WARNING] +> This guide is intended for developers ONLY. If you are not a developer or packager, you are unlikely to receive support. + +This is a full-fledged guide to build Eden on all supported platforms. + +## Dependencies + +First, you must [install some dependencies](Deps.md). + +## Clone + +Next, you will want to clone Eden via the terminal: + +```sh +git clone https://git.eden-emu.dev/eden-emu/eden.git +cd eden +``` + +Or use Qt Creator (Create Project -> Import Project -> Git Clone). + +## Android + +Android has a completely different build process than other platforms. See its [dedicated page](build/Android.md). + +## Initial Configuration + +If the configure phase fails, see the `Troubleshooting` section below. Usually, as long as you followed the dependencies guide, the defaults *should* successfully configure and build. + +### Option A: Qt Creator + +This is the recommended GUI method for Linux, macOS, and Windows. + +
+Click to Open + +> [!WARNING] +> On MSYS2, to use Qt Creator you are recommended to *also* install Qt from the online installer, ensuring to select the "MinGW" version. + +Open the CMakeLists.txt file in your cloned directory via File -> Open File or Project (Ctrl+O), if you didn't clone Eden via the project import tool. + +Select your desired "kit" (usually, the default is okay). RelWithDebInfo or Release is recommended: + +![Qt Creator kits](img/creator-1.png) + +Hit "Configure Project", then wait for CMake to finish configuring (may take a while on Windows). + +
+ +### Option B: Command Line + +
+Click to Open + +> [!WARNING] +>For all systems: +> +>- *CMake* **MUST** be in your PATH (and also *ninja*, if you are using it as ``) +>- You *MUST* be in the cloned *Eden* directory +> +>On Windows: +> +> - It's recommended to install **[Ninja](https://ninja-build.org/)** +> - You must load **Visual C++ development environment**, this can be done by running our convenience script: +> - `tools/windows/load-msvc-env.ps1` (for PowerShell 5+) +> - `tools/windows/load-msvc-env.sh` (for MSYS2, Git Bash, etc) + +Available ``: + +- MSYS2: `MSYS Makefiles` +- MSVC: `Ninja` (preferred) or `Visual Studio 17 2022` +- macOS: `Ninja` (preferred) or `Xcode` +- Others: `Ninja` (preferred) or `UNIX Makefiles` + +Available ``: + +- `Release` (default) +- `RelWithDebInfo` (debug symbols--compiled executable will be large) +- `Debug` (if you are using a debugger and annoyed with stuff getting optimized out) + +Caveat for Debug Builds: + +- If you're building with CCache, you will need to add the environment variable `CL` with the `/FS` flag ([Reference](https://learn.microsoft.com/pt-br/cpp/build/reference/fs-force-synchronous-pdb-writes?view=msvc-170)) + +Also see the root CMakeLists.txt for more build options. Usually the default will provide the best experience, however. + +```sh +cmake -S . -B build -G "" -DCMAKE_BUILD_TYPE= -DYUZU_TESTS=OFF +``` + +If you are on Windows and prefer to use Clang: + +```sh +cmake -S . -B build -G "" -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPILER=clang-cl +``` + +
+ +### Option C: [CLion](https://www.jetbrains.com/clion/) + +
+Click to Open + +- Clone the Repository: + + + + + +--- + +### Building & Setup + +- Once Cloned, You will be taken to a prompt like the image below: + + + +- Set the settings to the image below: +- Change `Build type: Release` +- Change `Name: Release` +- Change `Toolchain Visual Studio` +- Change `Generator: Let CMake decide` +- Change `Build directory: build` + + + +- Click OK; now Clion will build a directory and index your code to allow for IntelliSense. Please be patient. +- Once this process has been completed (No loading bar bottom right), you can now build eden +- In the top right, click on the drop-down menu, select all configurations, then select eden + + + +- Now run by clicking the play button or pressing Shift+F10, and eden will auto-launch once built. + + +
+ +## Troubleshooting + +If your initial configure failed: + +- *Carefully* re-read the [dependencies guide](Deps.md) +- Clear the CPM cache (`.cache/cpm`) and CMake cache (`/CMakeCache.txt`) +- Evaluate the error and find any related settings +- See the [CPM docs](CPM.md) to see if you may need to forcefully bundle any packages + +Otherwise, feel free to ask for help in Stoat or Discord. + +## Caveats + +Many platforms have quirks, bugs, and other fun stuff that may cause issues when building OR running. See the [Caveats page](Caveats.md) before continuing. + +## Building & Running + +### On Qt Creator + +Simply hit Ctrl+B, or the "hammer" icon in the bottom left. To run, hit the "play" icon, or Ctrl+R. + +### On Command Line + +If you are using the `UNIX Makefiles` or `Visual Studio 17 2022` as ``, you should also add `--parallel` for faster build times. + +```sh +cmake --build build +``` + +Your compiled executable will be in: + +- `build/bin/eden.exe` for Windows, +- `build/bin/eden.app/Contents/MacOS/eden` for macOS, +- and `build/bin/eden` for others. + +## Scripts + +Take a look at our [CI scripts](https://github.com/Eden-CI/Workflow). You can use `.ci/common/configure.sh` on any POSIX-compliant shell, but you are heavily encouraged to instead write your own based. It's not really that hard, provided you can read CMake. diff --git a/docs/CODEOWNERS b/docs/CODEOWNERS new file mode 100644 index 0000000000..8da1f3d949 --- /dev/null +++ b/docs/CODEOWNERS @@ -0,0 +1,27 @@ +# ui stuff +/src/android @AleksandrPopovich @kleidis @Producdevity +/src/yuzu @crueter +/src/eden @crueter +/src/frontend_common @crueter +/src/qt_common @crueter + +# docs, meta +/docs @Lizzie @crueter +/.ci @crueter + +# cmake +*.cmake @crueter +*CMakeLists.txt @crueter +*.in @crueter + +# individual stuff +src/web_service @AleksandrPopovich +src/dynarmic @Lizzie +src/core @Lizzie @Maufeat @PavelBARABANOV @MrPurple666 @JPikachu +src/core/hle @Maufeat @PavelBARABANOV +src/core/arm @Lizzie @MrPurple666 +src/*_room @AleksandrPopovich +src/video_core @CamilleLaVey @MaranBr @Wildcard @weakboson + +# Global owners/triage +* @CamilleLaVey @Maufeat @crueter @MrPurple666 @MaranBr @Lizzie \ No newline at end of file diff --git a/docs/CPMUtil/AddCIPackage.md b/docs/CPMUtil/AddCIPackage.md new file mode 100644 index 0000000000..bc7c1ccfad --- /dev/null +++ b/docs/CPMUtil/AddCIPackage.md @@ -0,0 +1,20 @@ +# AddPackage + +- `VERSION` (required): The version to get (the tag will be `v${VERSION}`) +- `NAME` (required): Name used within the artifacts +- `REPO` (required): CI repository, e.g. `crueter-ci/OpenSSL` +- `PACKAGE` (required): `find_package` package name +- `EXTENSION`: Artifact extension (default `tar.zst`) +- `MIN_VERSION`: Minimum version for `find_package`. Only used if platform does not support this package as a bundled artifact +- `DISABLED_PLATFORMS`: List of platforms that lack artifacts for this package. Options: + - `windows-amd64` + - `windows-arm64` + - `mingw-amd64` + - `mingw-arm64` + - `android-x86_64` + - `android-aarch64` + - `solaris-amd64` + - `freebsd-amd64` + - `linux-amd64` + - `linux-aarch64` + - `macos-universal` diff --git a/docs/CPMUtil/AddDependentPackage.md b/docs/CPMUtil/AddDependentPackage.md new file mode 100644 index 0000000000..bb6651e4b8 --- /dev/null +++ b/docs/CPMUtil/AddDependentPackage.md @@ -0,0 +1,41 @@ +# AddDependentPackage + +Use `AddDependentPackage` when you have multiple packages that are required to all be from the system, OR bundled. This is useful in cases where e.g. versions must absolutely match. + +## Versioning + +Versioning must be handled by the package itself. + +## Examples + +### Vulkan + +`cpmfile.json` + +```json +{ + "vulkan-headers": { + "repo": "KhronosGroup/Vulkan-Headers", + "package": "VulkanHeaders", + "version": "1.4.317", + "hash": "26e0ad8fa34ab65a91ca62ddc54cc4410d209a94f64f2817dcdb8061dc621539a4262eab6387e9b9aa421db3dbf2cf8e2a4b041b696d0d03746bae1f25191272", + "git_version": "1.4.342", + "tag": "v%VERSION%" + }, + "vulkan-utility-libraries": { + "repo": "KhronosGroup/Vulkan-Utility-Libraries", + "package": "VulkanUtilityLibraries", + "hash": "8147370f964fd82c315d6bb89adeda30186098427bf3efaa641d36282d42a263f31e96e4586bfd7ae0410ff015379c19aa4512ba160630444d3d8553afd1ec14", + "git_version": "1.4.342", + "tag": "v%VERSION%" + } +} +``` + +`CMakeLists.txt`: + +```cmake +AddDependentPackages(vulkan-headers vulkan-utility-libraries) +``` + +If Vulkan Headers are installed, but NOT Vulkan Utility Libraries, then CPMUtil will throw an error. diff --git a/docs/CPMUtil/AddJsonPackage.md b/docs/CPMUtil/AddJsonPackage.md new file mode 100644 index 0000000000..464cd1731b --- /dev/null +++ b/docs/CPMUtil/AddJsonPackage.md @@ -0,0 +1,104 @@ +# AddJsonPackage + +In each directory that utilizes `CPMUtil`, there must be a `cpmfile.json` that defines dependencies in a similar manner to the individual calls. + +The cpmfile is an object of objects, with each sub-object being named according to the package's identifier, e.g. `openssl`, which can then be fetched with `AddJsonPackage()`. Options are designed to map closely to the argument names, and are always strings unless otherwise specified. + +- [Options](#options) +- [Examples](#examples) + + +## Options + +- `package` -> `NAME` (`PACKAGE` for CI), defaults to the object key +- `repo` -> `REPO` +- `version` -> `VERSION` +- `ci` (bool) + +If `ci` is `false`: + +- `hash` -> `HASH` +- `hash_suffix` -> `HASH_SUFFIX` +- `sha` -> `SHA` +- `key` -> `KEY` +- `tag` -> `TAG` + - If the tag contains `%VERSION%`, that part will be replaced by the `git_version`, OR `version` if `git_version` is not specified +- `url` -> `URL` +- `artifact` -> `ARTIFACT` + - If the artifact contains `%VERSION%`, that part will be replaced by the `git_version`, OR `version` if `git_version` is not specified + - If the artifact contains `%TAG%`, that part will be replaced by the `tag` (with its replacement already done) +- `git_version` -> `GIT_VERSION` +- `git_host` -> `GIT_HOST` +- `source_subdir` -> `SOURCE_SUBDIR` +- `bundled` -> `BUNDLED_PACKAGE` +- `find_args` -> `FIND_PACKAGE_ARGUMENTS` +- `download_only` -> `DOWNLOAD_ONLY` +- `patches` -> `PATCHES` (array) +- `options` -> `OPTIONS` (array) +- `skip_updates`: Tells `check-updates.sh` to not check for new updates on this package. + +Other arguments aren't currently supported. If you wish to add them, see the `AddJsonPackage` function in `CMakeModules/CPMUtil.cmake`. + +If `ci` is `true`: + +- `name` -> `NAME`, defaults to the object key +- `extension` -> `EXTENSION`, defaults to `tar.zst` +- `min_version` -> `MIN_VERSION` +- `extension` -> `EXTENSION` +- `disabled_platforms` -> `DISABLED_PLATFORMS` (array) + +## Examples + +In order: OpenSSL CI, Boost (tag + artifact), Opus (options + find_args), discord-rpc (sha + options + patches). + +```json +{ + "openssl": { + "ci": true, + "package": "OpenSSL", + "name": "openssl", + "repo": "crueter-ci/OpenSSL", + "version": "3.6.0", + "min_version": "1.1.1", + "disabled_platforms": [ + "macos-universal" + ] + }, + "boost": { + "package": "Boost", + "repo": "boostorg/boost", + "tag": "boost-%VERSION%", + "artifact": "%TAG%-cmake.7z", + "hash": "e5b049e5b61964480ca816395f63f95621e66cb9bcf616a8b10e441e0e69f129e22443acb11e77bc1e8170f8e4171b9b7719891efc43699782bfcd4b3a365f01", + "git_version": "1.88.0", + "version": "1.57" + }, + "opus": { + "package": "Opus", + "repo": "xiph/opus", + "sha": "5ded705cf4", + "hash": "0dc89e58ddda1f3bc6a7037963994770c5806c10e66f5cc55c59286fc76d0544fe4eca7626772b888fd719f434bc8a92f792bdb350c807968b2ac14cfc04b203", + "version": "1.3", + "find_args": "MODULE", + "options": [ + "OPUS_BUILD_TESTING OFF", + "OPUS_BUILD_PROGRAMS OFF", + "OPUS_INSTALL_PKG_CONFIG_MODULE OFF", + "OPUS_INSTALL_CMAKE_CONFIG_MODULE OFF" + ] + }, + "discord-rpc": { + "repo": "discord/discord-rpc", + "sha": "963aa9f3e5", + "hash": "386e1344e9a666d730f2d335ee3aef1fd05b1039febefd51aa751b705009cc764411397f3ca08dffd46205c72f75b235c870c737b2091a4ed0c3b061f5919bde", + "options": [ + "BUILD_EXAMPLES OFF" + ], + "patches": [ + "0001-cmake-version.patch", + "0002-no-clang-format.patch", + "0003-fix-cpp17.patch" + ] + } +} +``` diff --git a/docs/CPMUtil/AddPackage.md b/docs/CPMUtil/AddPackage.md new file mode 100644 index 0000000000..6e9ae1b775 --- /dev/null +++ b/docs/CPMUtil/AddPackage.md @@ -0,0 +1,118 @@ +# `AddPackage` + + +- [Identification/Fetching](#identificationfetching) +- [Hashing](#hashing) +- [Other Options](#other-options) +- [Extra Variables](#extra-variables) +- [System/Bundled Packages](#systembundled-packages) +- [Identification](#identification) + + +## Identification/Fetching + +- `NAME` (required): The package name (must be the same as the `find_package` name if applicable) +- `VERSION`: The minimum version of this package that can be used on the system +- `GIT_VERSION`: The "version" found within git +- `URL`: The URL to fetch. +- `REPO`: The repo to use (`owner/repo`). +- `GIT_HOST`: The Git host to use + - Defaults to `github.com`. Do not include the protocol, as HTTPS is enforced. +- `TAG`: The tag to fetch, if applicable. +- `ARTIFACT`: The name of the artifact, if applicable. +- `SHA`: Commit sha to fetch, if applicable. +- `BRANCH`: Branch to fetch, if applicable. + +The following configurations are supported, in descending order of precedence: + +- `URL`: Bare URL download, useful for custom artifacts + - If this is set, `GIT_URL` or `REPO` should be set to allow the dependency viewer to link to the project's Git repository. + - If this is NOT set, `REPO` must be defined. +- `REPO + TAG + ARTIFACT`: GitHub release artifact + - The final download URL will be `https://github.com/${REPO}/releases/download/${TAG}/${ARTIFACT}` + - Useful for prebuilt libraries and prefetched archives +- `REPO + TAG`: GitHub tag archive + - The final download URL will be `https://github.com/${REPO}/archive/refs/tags/${TAG}.tar.gz` + - Useful for pinning to a specific tag, better for build identification +- `REPO + SHA`: GitHub commit archive + - The final download URL will be `https://github.com/${REPO}/archive/${SHA}.zip` + - Useful for pinning to a specific commit +- `REPO + BRANCH`: GitHub branch archive + - The final download URL will be `https://github.com/${REPO}/archive/refs/heads/${BRANCH}.zip` + - Generally not recommended unless the branch is frozen +- `REPO`: GitHub master archive + - The final download URL will be `https://github.com/${REPO}/archive/refs/heads/master.zip` + - Generally not recommended unless the project is dead + +## Hashing + +Hashing is used for verifying downloads. It's highly recommended to use these. + +- `HASH_ALGO` (default `SHA512`): Hash algorithm to use + +Hashing strategies, descending order of precedence: + +- `HASH`: Bare hash verification, useful for static downloads e.g. commit archives +- `HASH_SUFFIX`: Download the hash as `${DOWNLOAD_URL}.${HASH_SUFFIX}` + - The downloaded hash *must* match the hash algorithm and contain nothing but the hash; no filenames or extra content. +- `HASH_URL`: Download the hash from a separate URL + +## Other Options + +- `KEY`: Custom cache key to use (stored as `.cache/cpm/${packagename_lower}/${key}`) + - Default is based on, in descending order of precedence: + - First 4 characters of the sha + - `GIT_VERSION` + - Tag + - `VERSION` + - Otherwise, CPM defaults will be used. This is not recommended as it doesn't produce reproducible caches +- `DOWNLOAD_ONLY`: Whether or not to configure the downloaded package via CMake + - Useful to turn `OFF` if the project doesn't use CMake +- `SOURCE_SUBDIR`: Subdirectory of the project containing a CMakeLists.txt file +- `FIND_PACKAGE_ARGUMENTS`: Arguments to pass to the `find_package` call +- `BUNDLED_PACKAGE`: Set to `ON` to default to the bundled package +- `FORCE_BUNDLED_PACKAGE`: Set to `ON` to force the usage of the bundled package, regardless of CPMUTIL_FORCE_SYSTEM or `_FORCE_SYSTEM` +- `OPTIONS`: Options to pass to the configuration of the package +- `PATCHES`: Patches to apply to the package, stored in `.patch/${packagename_lower}/0001-patch-name.patch` and so on +- Other arguments can be passed to CPM as well + +## Extra Variables + +For each added package, users may additionally force usage of the system/bundled package. + +- `${package}_DIR`: Path to a separately-downloaded copy of the package. Note that versioning is not checked! +- `${package}_FORCE_SYSTEM`: Require the package to be installed on the system +- `${package}_FORCE_BUNDLED`: Force the package to be fetched and use the bundled version + +## System/Bundled Packages + +Descending order of precedence: + +- If `${package}_FORCE_SYSTEM` is true, requires the package to be on the system +- If `${package}_FORCE_BUNDLED` is true, forcefully uses the bundled package +- If `CPMUTIL_FORCE_SYSTEM` is true, requires the package to be on the system +- If `CPMUTIL_FORCE_BUNDLED` is true, forcefully uses the bundled package +- If the `BUNDLED_PACKAGE` argument is true, forcefully uses the bundled package +- Otherwise, CPM will search for the package first, and if not found, will use the bundled package + +## Identification + +All dependencies must be identifiable in some way for usage in the dependency viewer. Lists are provided in descending order of precedence. + +URLs: + +- `GIT_URL` +- `REPO` as a Git repository + - You may optionally specify `GIT_HOST` to use a custom host, e.g. `GIT_HOST git.crueter.xyz`. Note that the git host MUST be GitHub-like in its artifact/archive downloads, e.g. Forgejo + - If `GIT_HOST` is unspecified, defaults to `github.com` +- `URL` + +Versions (bundled): + +- `SHA` +- `GIT_VERSION` +- `VERSION` +- `TAG` +- "unknown" + +If the package is a system package, AddPackage will attempt to determine the package version and append `(system)` to the identifier. Otherwise, it will be marked as `unknown (system)` diff --git a/docs/CPMUtil/AddQt.md b/docs/CPMUtil/AddQt.md new file mode 100644 index 0000000000..e9595b8004 --- /dev/null +++ b/docs/CPMUtil/AddQt.md @@ -0,0 +1,28 @@ +# AddQt + +Simply call `AddQt()` before any Qt `find_package` calls and everything will be set up for you. On Linux, the bundled Qt library is built as a shared library, and provided you have OpenSSL and X11, everything should just work. + +On Windows, MinGW, and MacOS, Qt is bundled as a static library. No further action is needed, as the provided libraries automatically integrate the Windows/Cocoa plugins, alongside the corresponding Multimedia and Network plugins. + +## Modules + +The following modules are bundled into these Qt builds: + +- Base (Gui, Core, Widgets, Network) +- Multimedia +- Declarative (Quick, QML) +- Linux: Wayland client + +Each platform has the corresponding QPA built in and set as the default as well. This means you don't need to add `Q_IMPORT_PLUGIN`! + +## Example + +See an example in the [`tests/qt`](https://git.crueter.xyz/CMake/CPMUtil/src/branch/master/tests/qt/CMakeLists.txt) directory. + +## Versions + +The following versions have available builds: + +- 6.9.3 + +See [`crueter-ci/Qt`](https://github.com/crueter-ci/Qt) for an updated list at any time. diff --git a/docs/CPMUtil/README.md b/docs/CPMUtil/README.md new file mode 100644 index 0000000000..dbc5f0922a --- /dev/null +++ b/docs/CPMUtil/README.md @@ -0,0 +1,70 @@ +# CPMUtil + +CPMUtil is a wrapper around CPM that aims to reduce boilerplate and add useful utility functions to make dependency management a piece of cake. + +Global Options: + +- `CPMUTIL_FORCE_SYSTEM` (default `OFF`): Require all CPM dependencies to use system packages. NOT RECOMMENDED! + - You may optionally override this (section) +- `CPMUTIL_FORCE_BUNDLED` (default `ON` on MSVC and Android, `OFF` elsewhere): Require all CPM dependencies to use bundled packages. + +You are highly encouraged to read AddPackage first, even if you plan to only interact with CPMUtil via `AddJsonPackage`. + +- [AddPackage](#addpackage) +- [AddCIPackage](#addcipackage) +- [AddJsonPackage](#addjsonpackage) +- [AddQt](#addqt) +- [Lists](#lists) +- [For Packagers](#for-packagers) + - [Network Sandbox](#network-sandbox) + - [Unsandboxed](#unsandboxed) + +## AddPackage + +The core of CPMUtil is the [`AddPackage`](./AddPackage.md) function. [`AddPackage`](./AddPackage.md) itself is fully CMake-based, and largely serves as an interface between CPM and the rest of CPMUtil. + +## AddCIPackage + +[`AddCIPackage`](./AddCIPackage.md) adds a package that follows [crueter's CI repository spec](https://github.com/crueter-ci). + +## AddJsonPackage + +[`AddJsonPackage`](./AddJsonPackage.md) is the recommended method of usage for CPMUtil. + +## AddDependentPackage + +[`AddDependentPackage`](./AddDependentPackage.md) allows you to add multiple packages such that all of them must be from the system OR bundled. + +## AddQt + +[`AddQt`](./AddQt.md) adds a specific version of Qt to your project. + +## Lists + +CPMUtil will create three lists of dependencies where `AddPackage` or similar was used. Each is in order of addition. + +- `CPM_PACKAGE_NAMES`: The names of packages included by CPMUtil +- `CPM_PACKAGE_URLS`: The URLs to project/repo pages of packages +- `CPM_PACKAGE_SHAS`: Short version identifiers for each package + - If the package was included as a system package, `(system)` is appended thereafter + - Packages whose versions can't be deduced will be left as `unknown`. + +For an example of how this might be implemented in an application, see Eden's implementation: + +- [`dep_hashes.h.in`](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/src/dep_hashes.h.in) +- [`GenerateDepHashes.cmake`](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/CMakeModules/GenerateDepHashes.cmake) +- [`deps_dialog.cpp`](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/src/yuzu/deps_dialog.cpp) + +## For Packagers + +If you are packaging a project that uses CPMUtil, read this! + +### Network Sandbox + +For sandboxed environments (e.g. Gentoo, nixOS) you must install all dependencies to the system beforehand and set `-DCPMUTIL_FORCE_SYSTEM=ON`. If a dependency is missing, get creating! + +Alternatively, if CPMUtil pulls in a package that has no suitable way to install or use a system version, download it separately and pass `-DPackageName_DIR=/path/to/downloaded/dir` (e.g. shaders) + +### Unsandboxed + +For others (AUR, MPR, etc). CPMUtil will handle everything for you, including if some of the project's dependencies are missing from your distribution's repositories. That is pretty much half the reason I created this behemoth, after all. diff --git a/docs/Caveats.md b/docs/Caveats.md new file mode 100644 index 0000000000..d554f3ff77 --- /dev/null +++ b/docs/Caveats.md @@ -0,0 +1,237 @@ +# Caveats + + +- [Arch Linux](#arch-linux) +- [Gentoo Linux](#gentoo-linux) +- [macOS](#macos) +- [Solaris](#solaris) +- [HaikuOS](#haikuos) +- [OpenBSD](#openbsd) +- [FreeBSD](#freebsd) +- [NetBSD](#netbsd) +- [MSYS2](#msys2) +- [RedoxOS](#redoxos) +- [Windows](#windows) + - [Windows 7, Windows 8 and Windows 8.1](#windows-7-windows-8-and-windows-81) + - [Windows Vista and below](#windows-vista-and-below) + - [Windows on ARM](#windows-on-arm) + + +## Arch Linux + +Eden is also available as an [AUR package](https://aur.archlinux.org/packages/eden-git). If you are unable to build, either use that or compare your process to the PKGBUILD. + +## Gentoo Linux + +[`games-emulation/eden`](https://gitweb.gentoo.org/repo/proj/guru.git/tree/games-emulation/eden) is available in the GURU. This repository also contains some additional dependencies, such as mcl, sirit, oaknut, etc. + +If you're having issues with building, always consult that ebuild. + +## macOS + +macOS is largely untested. Expect crashes, significant Vulkan issues, and other fun stuff. + +## Solaris + +Always consult [the OpenIndiana package list](https://pkg.openindiana.org/hipster/en/index.shtml) to cross-verify availability. + +Run the usual update + install of essential toolings: `sudo pkg update && sudo pkg install git cmake`. + +- **gcc**: `sudo pkg install developer/gcc-14`. +- **clang**: Version 20 is broken, use `sudo pkg install developer/clang-19`. + +Qt Widgets appears to be broken. For now, add `-DENABLE_QT=OFF` to your configure command. In the meantime, a Qt Quick frontend is in the works--check back later! + +This is needed for some dependencies that call cc directly (tz): + +```sh +echo '#!/bin/sh' >cc +echo 'gcc $@' >>cc +chmod +x cc +export PATH="$PATH:$PWD" +``` + +Default MESA is a bit outdated, the following environment variables should be set for a smoother experience: + +```sh +export MESA_GL_VERSION_OVERRIDE=4.6 +export MESA_GLSL_VERSION_OVERRIDE=460 +export MESA_EXTENSION_MAX_YEAR=2025 +export MESA_DEBUG=1 +export MESA_VK_VERSION_OVERRIDE=1.3 +# Only if nvidia/intel drm drivers cause crashes, will severely hinder performance +export LIBGL_ALWAYS_SOFTWARE=1 +``` + +- Modify the generated ffmpeg.make (in build dir) if using multiple threads (base system `make` doesn't use `-j4`, so change for `gmake`). +- If using OpenIndiana, due to a bug in SDL2's CMake configuration, audio driver defaults to SunOS ``, which does not exist on OpenIndiana. Using external or bundled SDL2 may solve this. +- System OpenSSL generally does not work. Instead, use `-DYUZU_USE_BUNDLED_OPENSSL=ON` to use a bundled static OpenSSL, or build a system dependency from source. + +## HaikuOS + +It's recommended to do a `pkgman full-sync` before installing. See [HaikuOS: Installing applications](https://www.haiku-os.org/guides/daily-tasks/install-applications/). Sometimes the process may be interrupted by an error like "Interrupted syscall". Simply firing the command again fixes the issue. By default `g++` is included on the default installation. + +GPU support is generally lacking/buggy, hence it's recommended to only install `pkgman install mesa_lavapipe`. Performance is acceptable for most homebrew applications and even some retail games. + +For reasons unberknownst to any human being, `glslangValidator` will crash upon trying to be executed, the solution to this is to build `glslang` yourself. Apply the patch in `.patch/glslang/0001-haikuos-fix.patch`. The main issue is `ShFinalize()` is deallocating already destroyed memory; the "fix" in question is allowing the program to just leak memory and the OS will take care of the rest. See [this issue](https://web.archive.org/web/20251021183604/https://github.com/haikuports/haikuports/issues/13083). + +For this reason this patch is NOT applied to default on all platforms (for obvious reasons) - instead this is a HaikuOS specific patch, apply with `git apply ` after cloning SPIRV-Tools then `make -C build` and add the resulting binary (in `build/StandAlone/glslang`) into PATH. + +`cubeb_devel` will also not work, either disable cubeb or uninstall it. + +Still will not run flawlessly until `mesa-24` is available. Modify CMakeCache.txt with the `.so` of libGL and libGLESv2 by doing the incredibly difficult task of copy pasting them (`cp /boot/system/lib/libGL.so .`) + +If you have `quazip1_qt6_devel`, uninstall it. It may call `Core5Compat` on CMake which is wrongly packaged. + +## OpenBSD + +System boost doesn't have `context` (as of 7.8); so you may need to specify `-DYUZU_USE_CPM=ON -DBoost_FORCE_BUNDLED=ON`. + +After configuration, you may need to modify `externals/ffmpeg/CMakeFiles/ffmpeg-build/build.make` to use `-j$(nproc)` instead of just `-j`. + +`-lc++-experimental` doesn't exist in OpenBSD but the LLVM driver still tries to link against it, to solve just symlink `ln -s /usr/lib/libc++.a /usr/lib/libc++experimental.a`. Builds are currently not working due to lack of `std::jthread` and such, either compile libc++ manually or wait for ports to catch up. + +If clang has errors, try using `g++11`. + +## FreeBSD + +Eden is not currently available as a port on FreeBSD, though it is in the works. For now, the recommended method of usage is to compile it yourself. + +The available OpenSSL port (3.0.17) is out-of-date, and using a bundled static library instead is recommended; to do so, add `-DYUZU_USE_BUNDLED_OPENSSL=ON` to your CMake configure command. + +Gamepad/controllers may not work on 15.0, this is due to an outdated SDL not responding well to the new `usbhid(2)` driver. To workaround this simply disable `usbhid(2)` (add the following to `/boot/loader.conf`): + +```sh +hw.usb.usbhid.enable="0" +``` + +## NetBSD + +2026-02-07: `vulkan-headers` must not be installed, since the version found in `pkgsrc` is older than required. Either wait for binary packages to update or build newer versions from source. + +Install `pkgin` if not already `pkg_add pkgin`, see also the general [pkgsrc guide](https://www.netbsd.org/docs/pkgsrc/using.html). For NetBSD 10.1 provide `echo 'PKG_PATH="https://cdn.netbsd.org/pub/pkgsrc/packages/NetBSD/amd64/10.1/All/"' >/etc/pkg_install.conf`. If `pkgin` is taking too much time consider adding the following to `/etc/rc.conf`: + +```sh +ip6addrctl=YES +ip6addrctl_policy=ipv4_prefer +``` + +System provides a default `g++-10` which doesn't support the current C++ codebase; install `clang-19` with `pkgin install clang-19`. Or install `gcc14` (or `gcc15` with current pkgsrc). Provided that, the following CMake commands may work: + +- `cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -Bbuild` (Recommended) +- `cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/usr/pkg/gcc14/bin/gcc -DCMAKE_CXX_COMPILER=/usr/pkg/gcc14/bin/g++ -Bbuild` +- `cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/usr/pkg/gcc15/bin/gcc -DCMAKE_CXX_COMPILER=/usr/pkg/gcc15/bin/g++ -Bbuild` + +Make may error out when generating C++ headers of SPIRV shaders, hence it's recommended to use `gmake` over the default system one. + +[parallel/spirv-tools](https://iso.us.netbsd.org/pub/pkgsrc/current/pkgsrc/parallel/spirv-tools/index.html) isn't available in binary form and must be built from source. + +glslang is not available on NetBSD, to circumvent this simply build glslang by yourself: + +```sh +pkgin python313 +git clone --depth=1 https://github.com/KhronosGroup/glslang.git +cd glslang +python3.13 ./update_glslang_sources.py +cmake -B build -DCMAKE_BUILD_TYPE=Release +cmake --build build -- -j`nproc` +cmake --install build +``` + +However, pkgsrc is highly recommended, see [getting pkgsrc](https://iso.us.netbsd.org/pub/pkgsrc/current/pkgsrc/doc/pkgsrc.html#getting). You must get `current` not the `2025Q2` version. + +`QtCore` on NetBSD is included, but due to misconfigurations(!) we MUST include one of the standard headers that include `bits/c++config.h`, since source_location (required by `QtCore`) isn't properly configured to intake `bits/c++config.h` (none of the experimental library is). This is a bug with NetBSD packaging and not our fault, but alas. + +## DragonFlyBSD + +2026-02-07: `vulkan-headers` and `vulkan-utility-libraries` must NOT be uninstalled, since they're too old: `1.3.289`. Either wait for binary packages to update or build newer versions from source. + +If `libstdc++.so.6` is not found (`GLIBCXX_3.4.30`) then attempt: + +```sh +rm /usr/local/lib/gcc11/libstdc++.so.6 +ln -s /usr/local/lib/gcc14/libstdc++.so /usr/local/lib/gcc11/libstdc++.so.6 +``` + +This may have unforeseen consequences of which we don't need to worry about for now. + +Default `g++` (and the libstdc++) is too outdated - so install `gcc14` and redirect CMake to the new compiler toolchain `-DCMAKE_CXX_COMPILER=gcc14 -DCMAKE_C_COMPILER=g++14`. + +There is also `llvm18` and use `-DCMAKE_CXX_COMPILER=clang++18 -DCMAKE_C_COMPILER=clang18` (note the `18` suffix at the end). NOTE: It doesn't have an updated libcxx so `` will be missing, either build it manually or use gcc. + +If build hangs, use `hammer2 bulkfree`. + +## MSYS2 + +Only the `MINGW64` environment is tested (or `CLANGARM64` on ARM); however, all of the others should work (in theory) sans `MINGW32`. + +When packaging an MSYS2 build that is NOT fully static, you will need to copy all dependent DLLs recursively alongside the `windeployqt6`; for example: + +```sh +# MSYS_TOOLCHAIN is typically just mingw64 +# since Windows is case-insensitive, you can set this to $MSYSTEM +# or, if cross-compiling from Linux, set it to usr/x86_64-w64-mingw32 +export PATH="/${MSYS_TOOLCHAIN}/bin:$PATH" + +# grab deps of a dll or exe and place them in the current dir +deps() { + # string parsing is fun + objdump -p "$1" | awk '/DLL Name:/ {print $3}' | while read -r dll; do + [ -z "$dll" ] && continue + + # bin directory is used for DLLs, so we can do a quick "hack" + # and use command to find the path of the DLL + dllpath=$(command -v "$dll" 2>/dev/null || true) + + [ -z "$dllpath" ] && continue + + # explicitly exclude system32/syswow64 deps + # these aren't needed to be bundled, as all systems already have them + case "$dllpath" in + *System32* | *SysWOW64*) continue ;; + esac + + # avoid copying deps multiple times + if [ ! -f "$dll" ]; then + echo "$dllpath" + cp "$dllpath" "$dll" + + # also grab the dependencies of the dependent DLL; e.g. + # double-conversion is a dep of Qt6Core.dll but NOT eden.exe + deps "$dllpath" + fi + done +} + +# NB: must be done in a directory containing eden.exe +deps eden.exe + +# deploy Qt plugins and such +windeployqt6 --no-compiler-runtime --no-opengl-sw --no-system-dxc-compiler \ + --no-system-d3d-compiler eden.exe + +# grab deps for Qt plugins +find ./*/ -name "*.dll" | while read -r dll; do deps "$dll"; done +``` + +## RedoxOS + +The package install may randomly hang at times, in which case it has to be restarted. ALWAYS do a `sudo pkg update` or the chances of it hanging will be close to 90%. If "multiple" installs fail at once, try installing 1 by 1 the packages. + +When CMake invokes certain file syscalls - it may sometimes cause crashes or corruptions on the (kernel?) address space - so reboot the system if there is a "hang" in CMake. + +## Windows + +### Windows 7, Windows 8 and Windows 8.1 + +DirectX 12 is not available - simply copy and paste a random DLL and name it `d3d12.dll`. + +Install [Qt6 compatibility libraries](github.com/ANightly/qt6windows7) specifically Qt 6.9.5. + +### Windows Vista and below + +No support for Windows Vista (or below) is present at the moment. Check back later. + +### Windows on ARM + +If you're using Snapdragon X or 8CX, use the [the Vulkan translation layer](https://apps.microsoft.com/detail/9nqpsl29bfff?hl=en-us&gl=USE) only if the stock drivers do not work. And of course always keep your system up-to-date. diff --git a/docs/CrossCompile.md b/docs/CrossCompile.md new file mode 100644 index 0000000000..1f6ef447e6 --- /dev/null +++ b/docs/CrossCompile.md @@ -0,0 +1,12 @@ +# Cross compiling + +General guide for cross compiling. + +## Debian ARM64 + +A painless guide for cross compilation (or to test NCE) from a x86_64 system without polluting your main. + +- Install QEMU: `sudo pkg install qemu` +- Download Debian 13: `wget https://cdimage.debian.org/debian-cd/current/arm64/iso-cd/debian-13.0.0-arm64-netinst.iso` +- Create a system disk: `qemu-img create -f qcow2 debian-13-arm64-ci.qcow2 30G` +- Run the VM: `qemu-system-aarch64 -M virt -m 2G -cpu max -bios /usr/local/share/qemu/edk2-aarch64-code.fd -drive if=none,file=debian-13.0.0-arm64-netinst.iso,format=raw,id=cdrom -device scsi-cd,drive=cdrom -drive if=none,file=debian-13-arm64-ci.qcow2,id=hd0,format=qcow2 -device virtio-blk-device,drive=hd0 -device virtio-gpu-pci -device usb-ehci -device usb-kbd -device intel-hda -device hda-output -nic user,model=virtio-net-pci` diff --git a/docs/Debug.md b/docs/Debug.md new file mode 100644 index 0000000000..f384918fe2 --- /dev/null +++ b/docs/Debug.md @@ -0,0 +1,94 @@ +# Debug Guidelines + +## Issue reports + +When reporting issues or finding bugs, we often need backtraces, debug logs, or both in order to track down the issue. + +### Graphics Debugging + +If your bug is related to a graphical issue--e.g. mismatched colors, vertex explosions, flickering, etc.--then you are required to include graphical debugging logs in your issue reports. + +Graphics Debugging is found in General -> Debug on desktop, and Advanced Settings -> Debug on Android. Android users are all set; however, desktop users may need to install the Vulkan Validation Layers: +- Windows: Install the [Vulkan SDK](https://vulkan.lunarg.com/sdk/home) +- Linux, BSD, etc: Install `vulkan-validation-layers`, `vulkan-layers`, or similar from your package manager. It should be located in e.g. `/usr/lib64/libVkLayer_khronos_validation.so` + +Once Graphics Debugging is enabled, run the problematic game again and continue. Note that the game may run extremely slow on weak hardware. + +### Debug Logs + +Debug logs can be found in General -> Debug -> Open Log Location on desktop, and Share Debug Logs on Android. This MUST be included in all bug reports, except for certain UI bugs--but we still highly recommend them even for UI bugs. + +## Debugging (host code) + +Ignoring SIGSEGV when debugging in host: + +- **gdb**: `handle SIGSEGV nostop pass`. +- **lldb**: `pro hand -p true -s false -n false SIGSEGV`. + +## Debugging (guest code) + +### gdb + +You must have GDB installed for aarch64 to debug the target. Install it through your package manager, e.g.: +* On Arch: + * `sudo pacman -Syu aarch64-linux-gnu-gdb` +* On Gentoo: + * `sudo emerge --ask crossdev` + * `sudo crossdev -t aarch64-unknown-linux-gnu --ex-gdb` + +Run `./build/bin/eden-cli -c -d -g ` +Or `Enable GDB Stub` at General > Debug, then hook up an aarch64-gdb: +* `target remote localhost:6543` + +Type `c` (for continue) and then if it crashes just do a `bt` (backtrace) and `layout asm` + +### gdb cheatsheet + +- `mo `: Monitor commands, `get info`, `get fastmem` and `get mappings` are available. Type `mo help` for more info. +- `detach`: Detach from remote (i.e restarting the emulator). +- `c`: Continue +- `p `: Print variable, `p/x ` for hexadecimal. +- `r`: Run +- `bt`: Print backtrace +- `info threads`: Print all active threads +- `thread `: Switch to the given thread (see `info threads`) +- `layout asm`: Display in assembly mode (TUI) +- `si`: Step assembly instruction +- `s` or `step`: Step over LINE OF CODE (not assembly) +- `display `: Display variable each step. +- `n`: Next (skips over call frame of a function) +- `frame `: Switches to the given frame (from `bt`) +- `br `: Set breakpoint at ``. +- `delete`: Deletes all breakpoints. +- `catch throw`: Breakpoint at throw. Can also use `br __cxa_throw` +- `br _mesa_error`: Break on mesa errors (set environment variable `MESA_DEBUG=1` beforehand), see [MESA_DEBUG](https://mesa-docs.readthedocs.io/en/latest/debugging.html). + +Expressions can be `variable_names` or `1234` (numbers) or `*var` (dereference of a pointer) or `*(1 + var)` (computed expression). + +For more information type `info gdb` and read [the man page](https://man7.org/linux/man-pages/man1/gdb.1.html). + +## Simple checklist for debugging black screens using Renderdoc + +Renderdoc is a free, cross platform, multi-graphics API debugger. It is an invaluable tool for diagnosing issues with graphics applications, and includes support for Vulkan. Get it [here](https://renderdoc.org). + +Before using renderdoc to diagnose issues, it is always good to make sure there are no validation errors. Any errors means the behavior of the application is undefined. That said, renderdoc can help debug validation errors if you do have them. + +When debugging a black screen, there are many ways the application could have setup Vulkan wrong. +Here is a short checklist of items to look at to make sure are appropriate: +* Draw call counts are correct (aka not zero, or if rendering many triangles, not 3) +* Vertex buffers are bound +* vertex attributes are correct - Make sure the size & offset of each attribute matches what should it should be +* Any bound push constants and descriptors have the right data - including: + * Matrices have correct values - double check the model, view, & projection matrices are uploaded correctly +* Pipeline state is correct + * viewport range is correct - x,y are 0,0; width & height are screen dimensions, minDepth is 0, maxDepth is 1, NDCDepthRange is 0,1 + * Fill mode matches expected - usually solid + * Culling mode makes sense - commonly back or none + * The winding direction is correct - typically CCW (counter clockwise) + * Scissor region is correct - usually same as viewport's x,y,width, &height +* Blend state is correct +* Depth state is correct - typically enabled with Function set to Less than or Equal +* Swapchain images are bound when rendering to the swapchain +* Image being rendered to is the same as the one being presented when rendering to the swapchain + +Alternatively, a [RenderDoc Extension](https://github.com/baldurk/renderdoc-contrib/tree/main/baldurk/whereismydraw) ([Archive](https://web.archive.org/web/20250000000000*/https://github.com/baldurk/renderdoc-contrib/tree/main/baldurk/whereismydraw)) exists which automates doing a lot of these manual steps. diff --git a/docs/Deps.md b/docs/Deps.md new file mode 100644 index 0000000000..80caf1685f --- /dev/null +++ b/docs/Deps.md @@ -0,0 +1,357 @@ +# Dependencies + +To build Eden, you MUST have a C++ compiler. + +* On Linux, this is usually [GCC](https://gcc.gnu.org/) 11+ or [Clang](https://clang.llvm.org/) v14+ + * GCC 12 also requires Clang 14+ +* On Windows, we support: + * **[MSVC](https://visualstudio.microsoft.com/downloads/)** (default) + * It's STRONGLY RECOMMENDED to use the **Community** option and **Visual Studio 2022** + * You need to install: **[Desktop development with C++](https://learn.microsoft.com/en-us/cpp/build/vscpp-step-0-installation?view=msvc-170)** + * **[clang-cl](https://learn.microsoft.com/en-us/cpp/build/clang-support-msbuild?view=msvc-180)** + * You need to install: **C++ Clang tools for Windows** + * **[MSYS2](https://www.msys2.org)** +* On macOS, this is Apple Clang + * This can be installed with `xcode-select --install` + +The following additional tools are also required: + +* **[CMake](https://www.cmake.org/)** 3.22+ - already included with the Android SDK +* **[Git](https://git-scm.com/)** for version control + * **[Windows installer](https://gitforwindows.org)** +* **[Python3](https://www.python.org/downloads/)** 3.10+ - necessary to download external repositories +* On Windows, you must install the **[Vulkan SDK](https://vulkan.lunarg.com/sdk/home#windows)** as well + * *A convenience script to install the latest SDK is provided in:* + * `tools/windows/install-vulkan-sdk.ps1` (for PowerShell 5+) + * `tools/windows/install-vulkan-sdk.sh` (for Git Bash, etc) + +If you are on desktop and plan to use the Qt frontend, you *must* install Qt 6, and optionally Qt Creator (the **RECOMMENDED** IDE for building) + +* On Linux, *BSD and macOS, this can be done by the package manager + * If you wish to use Qt Creator, append `qtcreator` or `qt-creator` to the commands seen below. +* MSVC/clang-cl users on Windows must install through the official [Qt](https://www.qt.io/download-qt-installer-oss) installer +* Linux and macOS users may choose to use the installer as well. +* MSYS2 can also install Qt 6 via the package manager + +* For help setting up Qt Creator, run `./install.sh -h qtcreator` + +If you are on **Windows** and building with **MSVC** or **clang-cl**, you may go [back home](Build.md) and continue. + +## Externals + +The following are handled by Eden's externals: + +* [FFmpeg](https://ffmpeg.org/) (should use `-DYUZU_USE_EXTERNAL_FFMPEG=ON`) +* [SDL2](https://www.libsdl.org/download-2.0.php) 2.0.18+ (should use `-DYUZU_USE_EXTERNAL_SDL2=ON` OR `-DYUZU_USE_BUNDLED_SDL2=ON` to reduce compile time) + +All other dependencies will be downloaded and built by [CPM](https://github.com/cpm-cmake/CPM.cmake/) if `YUZU_USE_CPM` is on, but will always use system dependencies if available (UNIX-like only): + +* [Boost](https://www.boost.org/users/download/) 1.57.0+ +* [Catch2](https://github.com/catchorg/Catch2) 3.0.1 if `YUZU_TESTS` or `DYNARMIC_TESTS` are on +* [fmt](https://fmt.dev/) 8.0.1+ +* [lz4](http://www.lz4.org) +* [nlohmann\_json](https://github.com/nlohmann/json) 3.8+ +* [OpenSSL](https://www.openssl.org/source/) 3+ +* [ZLIB](https://www.zlib.net/) 1.2+ +* [zstd](https://facebook.github.io/zstd/) 1.5+ +* [enet](http://enet.bespin.org/) 1.3+ +* [Opus](https://opus-codec.org/) 1.3+ + +Vulkan 1.3.274+ is also needed: + +* [VulkanUtilityLibraries](https://github.com/KhronosGroup/Vulkan-Utility-Libraries) +* [VulkanHeaders](https://github.com/KhronosGroup/Vulkan-Headers) +* [SPIRV-Tools](https://github.com/KhronosGroup/SPIRV-Tools) +* [SPIRV-Headers](https://github.com/KhronosGroup/SPIRV-Headers) + +Certain other dependencies will be fetched by CPM regardless. System packages *can* be used for these libraries, but many are either not packaged by most distributions OR have issues when used by the system: + +* [SimpleIni](https://github.com/brofield/simpleini) +* [DiscordRPC](https://github.com/eden-emulator/discord-rpc) +* [cubeb](https://github.com/mozilla/cubeb) +* [libusb](https://github.com/libusb/libusb) +* [VulkanMemoryAllocator](https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator) +* [sirit](https://github.com/eden-emulator/sirit) +* [httplib](https://github.com/yhirose/cpp-httplib) - if `ENABLE_UPDATE_CHECKER` or `ENABLE_WEB_SERVICE` are on + * This package is known to be broken on the AUR. +* [cpp-jwt](https://github.com/arun11299/cpp-jwt) 1.4+ - if `ENABLE_WEB_SERVICE` is on +* [unordered-dense](https://github.com/martinus/unordered_dense) + +On amd64: + +* [xbyak](https://github.com/herumi/xbyak) - 7.22 or earlier is recommended + +On aarch64 OR if `DYNARMIC_TESTS` is on: + +* [oaknut](https://github.com/merryhime/oaknut) 2.0.1+ + +On riscv64: + +* [biscuit](https://github.com/lioncash/biscuit) 0.9.1+ + +## Commands + +These are commands to install all necessary dependencies on various Linux and BSD distributions, as well as macOS. Always review what you're running before you hit Enter! + +Notes for writers: Include build tools as well, assume user has NOTHING installed (i.e a fresh install) but that they have updated beforehand so no `upgrade && update` or equivalent should be mentioned - except for rolling release systems like Arch. + +Click on the arrows to expand. + +
+Gentoo Linux + +GURU must be enabled: + +```sh +sudo emerge -a app-eselect/eselect-repository +sudo eselect repository enable guru +sudo emaint sync -r guru +``` + +Now, install all deps: + +```sh +sudo emerge -a \ + app-arch/lz4 app-arch/zstd app-arch/unzip \ + dev-libs/libfmt dev-libs/libusb dev-libs/mcl dev-libs/sirit \ + dev-libs/unordered_dense dev-libs/boost dev-libs/openssl dev-libs/discord-rpc \ + dev-util/spirv-tools dev-util/spirv-headers dev-util/vulkan-headers \ + dev-util/vulkan-utility-libraries dev-util/glslang \ + media-gfx/renderdoc media-libs/libva media-libs/opus media-video/ffmpeg \ + media-libs/VulkanMemoryAllocator media-libs/libsdl2 media-libs/cubeb \ + net-libs/enet \ + sys-libs/zlib \ + dev-cpp/nlohmann_json dev-cpp/simpleini dev-cpp/cpp-httplib dev-cpp/cpp-jwt \ + games-util/gamemode \ + net-wireless/wireless-tools \ + dev-qt/qtbase:6 dev-libs/quazip \ + virtual/pkgconfig +``` + +* On `amd64`, also add `dev-libs/xbyak` +* On `riscv64`, also add `dev-libs/biscuit` (currently unavailable) +* On `aarch64`, also add `dev-libs/oaknut` +* If tests are enabled, also add `dev-libs/oaknut` and `dev-cpp/catch` + +Required USE flags: + +* `dev-qt/qtbase network concurrent dbus gui widgets` +* `dev-libs/quazip qt6` +* `media-libs/libsdl2 haptic joystick sound video` +* `dev-cpp/cpp-httplib ssl` + +[Caveats](./Caveats.md#gentoo-linux) + +
+ +
+Arch Linux + +```sh +sudo pacman -Syu --needed base-devel boost catch2 cmake enet ffmpeg fmt git glslang libzip lz4 ninja nlohmann-json openssl opus qt6-base qt6-multimedia qt6-charts sdl2 zlib zstd zip unzip vulkan-headers vulkan-utility-libraries libusb spirv-tools spirv-headers +``` + +* Building with QT Web Engine requires `qt6-webengine` as well. +* Proper Wayland support requires `qt6-wayland` +* GCC 11 or later is required. + +
+ +
+Ubuntu, Debian, Mint Linux + +```sh +sudo apt-get install autoconf cmake g++ gcc git glslang-tools libglu1-mesa-dev libhidapi-dev libpulse-dev libtool libudev-dev libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-xinerama0 libxcb-xkb1 libxext-dev libxkbcommon-x11-0 mesa-common-dev nasm ninja-build qt6-base-private-dev catch2 libfmt-dev liblz4-dev nlohmann-json3-dev libzstd-dev libssl-dev libavfilter-dev libavcodec-dev libswscale-dev pkg-config zlib1g-dev libva-dev libvdpau-dev qt6-tools-dev qt6-charts-dev libvulkan-dev spirv-tools spirv-headers libusb-1.0-0-dev libxbyak-dev libboost-dev libboost-fiber-dev libboost-context-dev libsdl2-dev libopus-dev libasound2t64 vulkan-utility-libraries-dev +``` + +* Ubuntu 22.04, Linux Mint 20, or Debian 12 or later is required. +* To enable QT Web Engine, add `-DYUZU_USE_QT_WEB_ENGINE=ON` when running CMake. + +
+ +
+AlmaLinux, Fedora, Red Hat Linux + +Fedora: + +```sh +sudo dnf install autoconf cmake fmt-devel gcc{,-c++} glslang hidapi-devel json-devel libtool libusb1-devel libzstd-devel lz4-devel nasm ninja-build openssl-devel pulseaudio-libs-devel qt6-linguist qt6-qtbase{-private,}-devel qt6-qtwebengine-devel qt6-qtmultimedia-devel qt6-charts-devel speexdsp-devel wayland-devel zlib-devel ffmpeg-devel libXext-devel boost jq +``` + +AlmaLinux (use `YUZU_USE_CPM=ON`): + +```sh +# vvv - Only if RPMfusion is not installed or EPEL isn't either +sudo dnf install epel-release dnf-utils +# (run rpmfusion installation afterwards) +# vvv - This will work for most systems +sudo dnf install autoconf cmake libtool libudev cmake gcc gcc-c++ qt6-qtbase-devel zlib-devel openssl-devel boost SDL2 ffmpeg-devel libdrm glslang jq patch +# Qt6 private GUI must be taken from CRB repos +sudo dnf config-manager --enable crb +sudo dnf install qt6-qtbase-private-devel +``` + +For systems like OpenEuler or derivates, don't forget to also install: `SDL2-devel pkg-config fmt-dev nlohmann-json-dev`. + +* [RPM Fusion](https://rpmfusion.org/Configuration) is required for `ffmpeg-devel` +* Fedora 32 or later is required. +* Fedora 36+ users with GCC 12 need Clang and should configure CMake with: `cmake -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -B build` + +
+ +
+Alpine Linux + +First, enable the community repository; [see here](https://wiki.alpinelinux.org/wiki/Repositories#Enabling_the_community_repository). + +```sh +# Enable the community repository +setup-apkrepos -c +# Install +apk add g++ git cmake make mesa-dev qt6-qtbase-dev qt6-qtbase-private-dev libquazip1-qt6 ffmpeg-dev qt6-charts-dev libusb-dev libtool boost-dev sdl2-dev zstd-dev vulkan-utility-libraries spirv-tools-dev openssl-dev nlohmann-json lz4-dev opus-dev jq patch +``` + +
+
+Void Linux + +```sh +xbps-install -Su git make cmake clang pkg-config patch SPIRV-Tools-devel SPIRV-Headers lz4 liblz4-devel boost-devel ffmpeg6-devel catch2 Vulkan-Utility-Libraries Vulkan-Headers glslang openssl-devel SDL2-devel quazip-qt6-devel qt6-base-devel qt6-qt5compat-devel qt6-charts-devel fmt-devel json-c++ libenet-devel libusb-devel +``` + +Yes, `nlohmann-json` is just named `json-c++`. Why? + +
+ +
+NixOS + +A convenience script is provided on the root of this project [shell.nix](../shell.nix). Run the usual `nix-shell`. + +If you're going for a pure build (i.e no downloaded deps), use `-DYUZU_USE_CPM=ON -DCPMUTIL_FORCE_SYSTEM=ON`. + +
+
+macOS + +Install dependencies from **[Homebrew](https://brew.sh/)** + +```sh +brew install autoconf automake boost ffmpeg fmt glslang hidapi libtool libusb lz4 ninja nlohmann-json openssl pkg-config qt@6 sdl2 speexdsp zlib zstd cmake Catch2 molten-vk vulkan-loader spirv-tools +``` + +If you are compiling on Intel Mac, or are using a Rosetta Homebrew installation, you must replace all references of `/opt/homebrew` with `/usr/local`. + +To run with MoltenVK, install additional dependencies: + +```sh +brew install molten-vk +``` + +[Caveats](./Caveats.md#macos). + +
+
+FreeBSD + +As root run: `pkg install devel/cmake devel/sdl20 devel/boost-libs devel/catch2 devel/libfmt devel/nlohmann-json devel/ninja devel/nasm devel/autoconf devel/pkgconf devel/qt6-base devel/qt6-charts devel/simpleini net/enet multimedia/ffnvcodec-headers multimedia/ffmpeg audio/opus archivers/liblz4 lang/gcc12 graphics/glslang graphics/vulkan-utility-libraries graphics/spirv-tools www/cpp-httplib devel/unordered-dense vulkan-headers quazip-qt6` + +If using FreeBSD 12 or prior, use `devel/pkg-config` instead. + +[Caveats](./Caveats.md#freebsd). + +
+
+NetBSD + +For NetBSD +10.1: `pkgin install git cmake boost fmtlib SDL2 catch2 libjwt spirv-headers spirv-tools ffmpeg7 libva nlohmann-json jq libopus qt6 cpp-httplib lz4 vulkan-headers nasm autoconf enet pkg-config libusb1 libcxx`. + +[Caveats](./Caveats.md#netbsd). + +
+
+OpenBSD + +```sh +pkg_add -u +pkg_add cmake nasm git boost unzip--iconv autoconf-2.72p0 bash ffmpeg glslang gmake qt6 jq fmt nlohmann-json enet boost vulkan-utility-libraries vulkan-headers spirv-headers spirv-tools catch2 sdl2 libusb1-1.0.29 +``` + +[Caveats](./Caveats.md#openbsd). + +
+
+DragonFlyBSD + +```sh +pkg install gcc14 git cmake unzip nasm autoconf bash pkgconf ffmpeg glslang gmake jq nlohmann-json enet spirv-tools sdl2 vulkan-utility-libraries vulkan-headers catch2 libfmt openssl liblz4 boost-libs cpp-httplib qt6-base qt6-charts quazip-qt6 unordered-dense libva-vdpau-driver libva-utils libva-intel-driver +``` + +[Caveats](./Caveats.md#dragonflybsd). + +
+
+Solaris / OpenIndiana + +```sh +sudo pkg install qt6 boost glslang libzip library/lz4 libusb-1 nlohmann-json openssl opus sdl2 zlib compress/zstd unzip pkg-config nasm autoconf mesa library/libdrm header-drm developer/fmt +``` + +[Caveats](./Caveats.md#solaris). + +
+
+MSYS2 + +* Open the `MSYS2 MinGW 64-bit` shell (`mingw64.exe`) +* Download and install all dependencies: + +```sh +BASE="git make autoconf libtool automake-wrapper jq patch" +MINGW="qt6-base qt6-charts qt6-tools qt6-translations qt6-svg cmake toolchain clang python-pip openssl vulkan-memory-allocator vulkan-devel glslang boost fmt lz4 nlohmann-json zlib zstd enet opus libusb unordered_dense openssl SDL2" +# Either x86_64 or clang-aarch64 (Windows on ARM) +packages="$BASE" +for pkg in $MINGW; do + packages="$packages mingw-w64-x86_64-$pkg" + #packages="$packages mingw-w64-clang-aarch64-$pkg" +done +pacman -Syuu --needed --noconfirm $packages +``` + +* Notes: + * Using `qt6-static` is possible as well, provided you build with `-DYUZU_STATIC_BUILD=ON`. + * Other environments are entirely untested, but should theoretically work provided you install all the necessary packages. + * GCC is proven to work better with the MinGW environment. On ARM, only Clang is available through the CLANGARM64 environment, so use that until a GNU ARM environment is available. + * Add `qt-creator` to the `MINGW` variable to install Qt Creator. You can then create a Start Menu shortcut to the MinGW Qt Creator by running `powershell "\$s=(New-Object -COM WScript.Shell).CreateShortcut('C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Qt Creator.lnk');\$s.TargetPath='C:\\msys64\\mingw64\\bin\\qtcreator.exe';\$s.Save()"` in Git Bash or MSYS2. +* Add MinGW binaries to the PATH if they aren't already: + * `echo 'PATH=/mingw64/bin:$PATH' >> ~/.bashrc` + * or `echo 'PATH=/mingw64/bin:$PATH' >> ~/.zshrc` + +[Caveats](./Caveats.md#msys2). + +
+
+HaikuOS + +```sh +pkgman install git cmake patch libfmt_devel nlohmann_json lz4_devel opus_devel boost1.90_devel vulkan_devel qt6_base_devel qt6_declarative_devel libsdl2_devel ffmpeg7_devel libx11_devel enet_devel catch2_devel quazip1_qt5_devel qt6_5compat_devel glslang qt6_devel qt6_charts_devel +``` + +[Caveats](./Caveats.md#haikuos). + +
+
+RedoxOS + +```sh +sudo pkg update +sudo pkg install git cmake ffmpeg6 sdl2 zlib llvm18 +``` + +[Caveats](./Caveats.md#redoxos). + +
+ +## All Done + +You may now return to the **[root build guide](Build.md)**. diff --git a/docs/Development.md b/docs/Development.md index e60384e8ab..eb9f4159b5 100644 --- a/docs/Development.md +++ b/docs/Development.md @@ -1,23 +1,4 @@ -# Development - -* **Windows**: [Windows Building Guide](./build/Windows.md) -* **Linux**: [Linux Building Guide](./build/Linux.md) -* **Android**: [Android Building Guide](./build/Android.md) -* **Solaris**: [Solaris Building Guide](./build/Solaris.md) -* **FreeBSD**: [FreeBSD Building Guide](./build/FreeBSD.md) -* **macOS**: [macOS Building Guide](./build/macOS.md) - -# CPM - -CPM (CMake Package Manager) is the preferred method of managing dependencies within Eden. Documentation on adding dependencies/using CPMUtil is in the works. - -Notes: -- `YUZU_USE_CPM` is set by default on MSVC and Android. Other platforms should use this if certain "required" system dependencies (e.g. OpenSSL) are broken or missing -- `CPMUTIL_DEFAULT_SYSTEM` can be set to `OFF` to force the usage of bundled dependencies. This can marginally decrease the final package size. -- When adding new prebuilt dependencies a la OpenSSL, SDL2, or FFmpeg, there *must* be a CMake option made available to forcefully download this bundle. See the OpenSSL implementation in the root CMakeLists for an example. - * This is necessary to allow for creation of fully-qualified source packs that allow for offline builds after download (some package managers and distros enforce this) - -# Guidelines +# Development guidelines ## License Headers All commits must have proper license header accreditation. @@ -25,17 +6,21 @@ All commits must have proper license header accreditation. You can easily add all necessary license headers by running: ```sh git fetch origin master:master -FIX=true COMMIT=true .ci/license-header.sh +.ci/license-header.sh -u -c git push ``` -Alternatively, you may omit `COMMIT=true` and do an amend commit: +Alternatively, you may omit `-c` and do an amend commit: ```sh git fetch origin master:master -FIX=true .ci/license-header.sh +.ci/license-header.sh git commit --amend -a --no-edit ``` +If the work is licensed/vendored from other people or projects, you may omit the license headers. Additionally, if you wish to retain authorship over a piece of code, you may attribute it to yourself; however, the code may be changed at any given point and brought under the attribution of Eden. + +For more information on the license header script, run `.ci/license-header.sh -h`. + ## Pull Requests Pull requests are only to be merged by core developers when properly tested and discussions conclude on Discord or other communication channels. Labels are recommended but not required. However, all PRs MUST be namespaced and optionally typed: ``` @@ -48,11 +33,33 @@ Pull requests are only to be merged by core developers when properly tested and - The level of namespacing is generally left to the committer's choice. - However, we never recommend going more than two levels *except* in `hle`, in which case you may go as many as four levels depending on the specificity of your changes. -- Ocassionally, up to two namespaces may be provided for more clarity. +- Ocassionally, up to two additional namespaces may be provided for more clarity. * Changes that affect the entire project (sans CMake changes) should be namespaced as `meta`. - Maintainers are permitted to change namespaces at will. - Commits within PRs are not required to be namespaced, but it is highly recommended. +## Adding new settings + +When adding new settings, use `tr("Setting:")` if the setting is meant to be a field, otherwise use `tr("Setting")` if the setting is meant to be a Yes/No or checkmark type of setting, see [this short style guide](https://learn.microsoft.com/en-us/style-guide/punctuation/colons#in-ui). + +- The majority of software must work with the default option selected for such setting. Unless the setting significantly degrades performance. +- Debug settings must never be turned on by default. +- Provide reasonable bounds (for example, a setting controlling the amount of VRAM should never be 0). +- The description of the setting must be short and concise, if the setting "does a lot of things" consider splitting the setting into multiple if possible. +- Try to avoid excessive/redundant explainations "recommended for most users and games" can just be "(recommended)". +- Try to not write "slow/fast" options unless it clearly degrades/increases performance for a given case, as most options may modify behaviour that result in different metrics accross different systems. If for example the option is an "accuracy" option, writing "High" is sufficient to imply "Slow". No need to write "High (Slow)". + +Some examples: +- "[...] negatively affecting image quality", "[...] degrading image quality": Same wording but with less filler. +- "[...] this may cause some glitches or crashes in some games", "[...] this may cause soft-crashes": Crashes implies there may be glitches (as crashes are technically a form of a fatal glitch). The entire sentence is structured as "may cause [...] on some games", which is redundant, because "may cause [...] in games" has the same semantic meaning ("may" is a chance that it will occur on "some" given set). +- "FIFO Relaxed is similar to FIFO [...]", "FIFO Relaxed [...]": The name already implies similarity. +- "[...] but may also reduce performance in some cases", "[...] but may degrade performance": Again, "some cases" and "may" implies there is a probability. +- "[...] it can [...] in some cases", "[...] it can [...]": Implied probability. + +Before adding a new setting, consider: +- Does the piece of code that the setting pertains to, make a significant difference if it's on/off? +- Can it be auto-detected? + # IDE setup ## VSCode @@ -75,57 +82,26 @@ You may additionally need the `Qt Extension Pack` extension if building Qt. # Build speedup -If you have an HDD, use ramdisk (build in RAM): +If you have an HDD, use ramdisk (build in RAM), approximatedly you need 4GB for a full build with debug symbols: ```sh -sudo mkdir /tmp/ramdisk -sudo chmod 777 /tmp/ramdisk +mkdir /tmp/ramdisk +chmod 777 /tmp/ramdisk # about 8GB needed -sudo mount -t tmpfs -o size=8G myramdisk /tmp/ramdisk +mount -t tmpfs -o size=4G myramdisk /tmp/ramdisk cmake -B /tmp/ramdisk cmake --build /tmp/ramdisk -- -j32 -sudo umount /tmp/ramdisk +umount /tmp/ramdisk ``` -## Debugging (host code) +# Assets and large files -Ignoring SIGSEGV when debugging in host: +A general rule of thumb, before uploading files: +- PNG files: Use [optipng](https://web.archive.org/web/20240325055059/https://optipng.sourceforge.net/). +- SVG files: Use [svgo](https://github.com/svg/svgo). -- **gdb**: `handle all nostop pass`. -- **lldb**: `pro hand -p true -s false -n false SIGSEGV`. - -## Debugging (guest code) - -### gdb - -Run `./build/bin/eden-cli -c -d -g ` - -Then hook up an aarch64-gdb (use `yay aarch64-gdb` or `sudo pkg in arch64-gdb` to install) -Then type `target remote localhost:1234` and type `c` (for continue) - and then if it crashes just do a `bt` (backtrace) and `layout asm`. - -### gdb cheatsheet - -- `mo `: Monitor commands, `get info`, `get fastmem` and `get mappings` are available. Type `mo help` for more info. -- `detach`: Detach from remote (i.e restarting the emulator). -- `c`: Continue -- `p `: Print variable, `p/x ` for hexadecimal. -- `r`: Run -- `bt`: Print backtrace -- `info threads`: Print all active threads -- `thread `: Switch to the given thread (see `info threads`) -- `layout asm`: Display in assembly mode (TUI) -- `si`: Step assembly instruction -- `s` or `step`: Step over LINE OF CODE (not assembly) -- `display `: Display variable each step. -- `n`: Next (skips over call frame of a function) -- `frame `: Switches to the given frame (from `bt`) -- `br `: Set breakpoint at ``. -- `delete`: Deletes all breakpoints. -- `catch throw`: Breakpoint at throw. Can also use `br __cxa_throw` -- `br _mesa_error`: Break on mesa errors (set environment variable `MESA_DEBUG=1` beforehand), see [MESA_DEBUG](https://mesa-docs.readthedocs.io/en/latest/debugging.html). - -Expressions can be `variable_names` or `1234` (numbers) or `*var` (dereference of a pointer) or `*(1 + var)` (computed expression). - -For more information type `info gdb` and read [the man page](https://man7.org/linux/man-pages/man1/gdb.1.html). +May not be used but worth mentioning nonethless: +- OGG files: Use [OptiVorbis](https://github.com/OptiVorbis/OptiVorbis). +- Video files: Use ffmpeg, preferably re-encode as AV1. # Bisecting older commits diff --git a/docs/DriverBugs.md b/docs/DriverBugs.md new file mode 100644 index 0000000000..a577d4810d --- /dev/null +++ b/docs/DriverBugs.md @@ -0,0 +1,114 @@ +# Driver bugs + +Non-exhaustive list of known drivers bugs. + +See also: [Dolphin emulator](hhttps://github.com/dolphin-emu/dolphin/blob/cdbea8867df3d0a6fc375e78726dae95612fb1fd/Source/Core/VideoCommon/DriverDetails.h#L84) own list of driver bugs (which are also included here). + +## Vulkan + +| Vendor/GPU | OS | Drivers | Version | Bug | +|---|---|---|---|---| +| AMD | All | Proprietary | ? | `VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT` on GCN4 and lower is broken. | +| AMD | All | Proprietary | ? | GCN4 and earlier have broken `VK_EXT_sampler_filter_minmax`. | +| AMD | All | Proprietary | ? | If offset + stride * count is greater than the size, then the last attribute will have the wrong value for vertex buffers. | +| AMD | All | Proprietary | ? | On GCN, 2D mipmapped texture arrays (with width == height) where there are more than 6 layers causes broken corrupt mipmaps. | +| AMD | All | RADV, MESA | ? | Using LLVM emitter causes corrupt FP16, proprietary drivers unaffected. | +| AMD | All | Proprietary | ? | Incorrect implementation of VK_EXT_depth_clamp_control causes incorrect depth values to be written to the depth buffer. | +| AMD | macOS | Proprietary | ? | `gl_HelperInvocation` is actually `!gl_HelperInvocation`. | +| NVIDIA | All | Proprietary | ? | Drivers for ampere and newer have broken float16 math. | +| NVIDIA | All | Proprietary | >=510.0.0 | Versions >= 510 do not support MSAA->MSAA image blits. | +| NVIDIA | All | Proprietary | ? | Shader stencil export not supported. | +| NVIDIA | All | Proprietary | ? | Doesn't properly support conditional barriers. | +| NVIDIA | All | Proprietary | ? | GPUs pre-turing doesn't properly work with push descriptors. | +| NVIDIA | All | All | ? | Calling `vkCmdClearAttachments` with a partial rect, or specifying a render area in a render pass with the load op set to clear can cause the GPU to lock up, or raise a bounds violation. This only occurs on MSAA framebuffers, and it seems when there are multiple clears in a single command buffer. Worked around by back to the slow path (drawing quads) when MSAA is enabled. | +| Intel | All | Proprietary | <27.20.100.0 | Intel Windows versions before 27.20.100.0 has broken `VK_EXT_vertex_input_dynamic_state`. | +| Intel | All | Proprietary | ? | Intel proprietary drivers do not support MSAA->MSAA image blits. | +| Intel | All | Proprietary | 0.405.0
until
0.405.286 | Intel proprietary drivers 0.405.0 until 0.405.286 have broken compute. | +| Intel | macOS | Proprietary | ? | Using dynamic sampler indexing locks up the GPU. | +| Intel | macOS | Proprietary | ? | Using subgroupMax in a shader that can discard results in garbage data. | +| Intel | All | Mesa | ? | Broken lines in geometry shaders when writing to `gl_ClipDistance` in the vertex shader. | +| Qualcomm | All | Proprietary | ? | Using too many samplers (on A8XX is `65536`) can cause heap exhaustion, recommended to use 75% of total available samplers. | +| Qualcomm | All | Proprietary | ? | Qualcomm Adreno GPUs doesn't handle scaled vertex attributes `VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME`. | +| Qualcomm | All | Proprietary | ? | 64-bit integer extensions (`VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME`) cause nondescriptive crashes and stability issues. | +| Qualcomm | All | All | ? | Driver requires higher-than-reported binding limits (32). | +| Qualcomm | All | All | ? | On Adreno, enabling rasterizer discard somehow corrupts the viewport state; a workaround is forcing it to be updated on next use. | +| Qualcomm | All | Proprietary | ? | Concurrent fence waits are unsupported. | +| Qualcomm | All | Proprietary | ? | `vkCmdCopyImageToBuffer` allocates a staging image when used to copy from an image with optimal tiling; which results in overall slower performance. | +| Qualcomm | All | Proprietary | ? | 32-bit depth clears are broken in the Adreno Vulkan driver, and have no effect. | +| Qualcomm | All | Proprietary | ? | It should be safe to release the resources before actually resetting the VkCommandPool. However, devices running R drivers there was a few months period where the driver had a bug which it incorrectly was accessing objects on the command buffer while it was being reset. If these objects were already destroyed (which is a valid thing to do) it would crash. | +| Qualcomm | All | Proprietary | ? | On Pixel and Pixel2XL's with Adreno 530 and 540s, setting width and height to 10s reliably triggers what appears to be a driver race condition. | +| Qualcomm | All | Proprietary | ? | Non-descriptive broken OpPhi SPIRV lowering, originally using OpPhi to choose the result is crashing on Adreno 4xx. Switched to storing the result in a temp variable as glslang does. | +| Qualcomm | All | Proprietary | ? | See crbug.com/1241134. The bug appears on Adreno 5xx devices with OS PQ3A. It does not repro on the earlier PPR1 version since the extend blend func extension was not present on the older driver. | +| Mali | Android | Proprietary | ? | Non-descriptive green screen on various locations. | +| Mali | Android | Proprietary | ? | Cached memory is significantly slower for readbacks than coherent memory in the Mali Vulkan driver, causing high CPU usage in the `__pi___inval_cache_range` kernel function. | +| Mali | Android | Proprietary | ? | On some old ARM driver versions, dynamic state for stencil write mask doesn't work correctly in the presence of discard or alpha to coverage, if the static state provided when creating the pipeline has a value of 0 (`alphaToCoverageEnable` and `rasterizerDiscardEnable`). | +| Mali | Android | Proprietary | ? | Failing to submit because of a device loss still needs to wait for the fence to signal before deleting. However, there is an ARM bug (b/359822580) where the driver early outs on the fence wait if in a device lost state and thus we can't wait on it. Instead, we just wait on the queue to finish. | +| Mali | Android | Proprietary | ? | With Galaxy S7 we see lots of rendering issues when we suballocate VkImages. | +| Mali | Android | Proprietary | ? | With Galaxy S7 and S9 we see lots of rendering issues with image filters dropping out when using only primary command buffers. We also see issues on the P30 running Android 28. | +| Mali | Android | Proprietary | ? | `RGBA_F32` mipmaps appear to be broken on some Mali devices. | +| Mali | Android | Proprietary | ? | Matrix IR lowering for matrix swizzle, scalar multiplication and unary `(+m)`/`(-m)` present extraneous unexplained bugs with more than 32 matrix temporals. | +| Apple | All | MoltenVK | ? | Driver breaks when using more than 16 vertex attributes/bindings. | +| Apple | macOS | Proprietary | >4 | Some driver and Apple Silicon GPU combinations have problems with fragment discard when early depth test is enabled. Discarded fragments may appear corrupted. | +| Apple | iOS | MoltenVK | ? | Null descriptors cause non-descriptive issues. | +| Apple | iOS | MoltenVK | ? | Push descriptors cause non-descriptive issues. | +| Imagination | Android | Proprietary | ? | Some vulkan implementations don't like the 'clear' loadop renderpass if you try to use a framebuffer with a different load/store op than that which it was created with, despite the spec saying they should be compatible. | +| Intel
Qualcomm
AMD
Apple | All | All
MoltenVK (Apple) | ? | Reversed viewport depth range does not work as intended on some Vulkan drivers. The Vulkan spec allows the `minDepth`/`maxDepth` fields in the viewport to be reversed, however the implementation is broken on some drivers. | + +AMD: List of driver IDs: +- Proprietary: `VK_DRIVER_ID_AMD_PROPRIETARY` +- OSS: `VK_DRIVER_ID_AMD_OPEN_SOURCE` +- MESA: `VK_DRIVER_ID_MESA_RADV` + +NVIDIA: List of driver IDs: +- Proprietary: `VK_DRIVER_ID_NVIDIA_PROPRIETARY`. +- MESA: `VK_DRIVER_ID_MESA_NVK`. + +Intel: List of driver IDs: +- Proprietary: `VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS`. +- MESA: `VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA`. + +Qualcomm: List of driver IDs: +- Proprietary: `VK_DRIVER_ID_QUALCOMM_PROPRIETARY`. +- MESA: `VK_DRIVER_ID_MESA_TURNIP`. + +Mali: List of driver IDs: +- Proprietary: `VK_DRIVER_ID_ARM_PROPRIETARY`. +- MESA: `VK_DRIVER_ID_MESA_PANVK`. + +Samsung: List of driver IDs: +- Proprietary: `VK_DRIVER_ID_SAMSUNG_PROPRIETARY`. + +Apple: List of driver IDs: +- MoltenVK/MVK: `VK_DRIVER_ID_MOLTENVK`. +- KosmicKrisp: `VK_DRIVER_ID_MESA_KOSMICKRISP`. +- HoneyKrisp: `VK_DRIVER_ID_MESA_HONEYKRISP`. + +PowerVR: List of driver IDs: +- Proprietary: `VK_DRIVER_ID_IMAGINATION_PROPRIETARY`. +- MESA: `VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA`. + +Software Rasterizers: List of driver IDs: +- SwiftShader: `VK_DRIVER_ID_GOOGLE_SWIFTSHADER`. +- LLVMPipe: `VK_DRIVER_ID_MESA_LLVMPIPE`. + +Broadcom: List of driver IDs: +- Proprietary: `VK_DRIVER_ID_BROADCOM_PROPRIETARY`. +- MESA: `VK_DRIVER_ID_MESA_V3DV`. + +Verisilicon: List of driver IDs: +- Proprietary: `VK_DRIVER_ID_VERISILICON_PROPRIETARY`. + +Other: List of driver IDs: +- SC: `VK_DRIVER_ID_VULKAN_SC_EMULATION_ON_VULKAN`. +- GGP (Stadia): `VK_DRIVER_ID_GGP_PROPRIETARY`. +- CoreAVI (Cars): `VK_DRIVER_ID_COREAVI_PROPRIETARY`. +- Juice (Remote GPU): `VK_DRIVER_ID_JUICE_PROPRIETARY`. +- Venus (Virtio GPU): `VK_DRIVER_ID_MESA_VENUS`. +- Dozen (Vulkan on DirectX): `VK_DRIVER_ID_MESA_DOZEN`. + +## OpenGL + +| Vendor/GPU | OS | Drivers | Version | Bug | +|---|---|---|---|---| +| All | Android | All | ? | In OpenGL, multi-threaded shader pre-compilation sometimes crashes. | +| All | All | Mesa | ? | https://github.com/KhronosGroup/glslang/pull/2646 | diff --git a/docs/NvidiaGpu.md b/docs/NvidiaGpu.md new file mode 100644 index 0000000000..d7fe3d86d3 --- /dev/null +++ b/docs/NvidiaGpu.md @@ -0,0 +1,874 @@ +# The NVIDIA SM86 (Maxwell) GPU - Instruction set + + +[AL2P](#AL2P) +[ALD](#ALD) +[AST](#AST) +[ATOM](#ATOM) +[ATOMS](#ATOMS) +[B2R](#B2R) +[BAR](#BAR) +[BFE](#BFE) +[BFI](#BFI) +[BPT](#BPT) +[BRA](#BRA) +[BRK](#BRK) +[BRX](#BRX) +[CAL](#CAL) +[CCTL](#CCTL) +[CCTLL](#CCTLL) +[CONT](#CONT) +[CS2R](#CS2R) +[CSET](#CSET) +[CSETP](#CSETP) +[DADD](#DADD) +[DEPBAR](#DEPBAR) +[DFMA](#DFMA) +[DMNMX](#DMNMX) +[DMUL](#DMUL) +[DSET](#DSET) +[DSETP](#DSETP) +[EXIT](#EXIT) +[F2F](#F2F) +[F2I](#F2I) +[FADD](#FADD) +[FCHK](#FCHK) +[FCMP](#FCMP) +[FFMA](#FFMA) +[FLO](#FLO) +[FMNMX](#FMNMX) +[FMUL](#FMUL) +[FSET](#FSET) +[FSETP](#FSETP) +[FSWZADD](#FSWZADD) +[GETCRSPTR](#GETCRSPTR) +[GETLMEMBASE](#GETLMEMBASE) +[HADD2](#HADD2) +[HFMA2](#HFMA2) +[HMUL2](#HMUL2) +[HSET2](#HSET2) +[HSETP2](#HSETP2) +[I2F](#I2F) +[I2I](#I2I) +[IADD](#IADD) +[IADD3](#IADD3) +[ICMP](#ICMP) +[IDE](#IDE) +[IDP](#IDP) +[IMAD](#IMAD) +[IMADSP](#IMADSP) +[IMNMX](#IMNMX) +[IMUL](#IMUL) +[IPA](#IPA) +[ISBERD](#ISBERD) +[ISCADD](#ISCADD) +[ISET](#ISET) +[ISETP](#ISETP) +[JCAL](#JCAL) +[JMP](#JMP) +[JMX](#JMX) +[KIL](#KIL) +[LD](#LD) +[LDC](#LDC) +[LDG](#LDG) +[LDL](#LDL) +[LDS](#LDS) +[LEA](#LEA) +[LEPC](#LEPC) +[LONGJMP](#LONGJMP) +[LOP](#LOP) +[LOP3](#LOP3) +[MEMBAR](#MEMBAR) +[MOV](#MOV) +[MUFU](#MUFU) +[NOP](#NOP) +[OUT](#OUT) +[P2R](#P2R) +[PBK](#PBK) +[PCNT](#PCNT) +[PEXIT](#PEXIT) +[PIXLD](#PIXLD) +[PLONGJMP](#PLONGJMP) +[POPC](#POPC) +[PRET](#PRET) +[PRMT](#PRMT) +[PSET](#PSET) +[PSETP](#PSETP) +[R2B](#R2B) +[R2P](#R2P) +[RAM](#RAM) +[RED](#RED) +[RET](#RET) +[RRO](#RRO) +[RTT](#RTT) +[S2R](#S2R) +[SAM](#SAM) +[SEL](#SEL) +[SETCRSPTR](#SETCRSPTR) +[SETLMEMBASE](#SETLMEMBASE) +[SHF](#SHF) +[SHFL](#SHFL) +[SHL](#SHL) +[SHR](#SHR) +[SSY](#SSY) +[ST](#ST) +[STG](#STG) +[STL](#STL) +[STP](#STP) +[STS](#STS) +[SUATOM](#SUATOM) +[SULD](#SULD) +[SURED](#SURED) +[SUST](#SUST) +[SYNC](#SYNC) +[TEX](#TEX) +[TLD](#TLD) +[TLD4](#TLD4) +[TMML](#TMML) +[TXA](#TXA) +[TXD](#TXD) +[TXQ](#TXQ) +[VABSDIFF](#VABSDIFF) +[VABSDIFF4](#VABSDIFF4) +[VADD](#VADD) +[VMAD](#VMAD) +[VMNMX](#VMNMX) +[VOTE](#VOTE) +[VSET](#VSET) +[VSETP](#VSETP) +[VSHL](#VSHL) +[VSHR](#VSHR) +[XMAD](#XMAD) + + +NOTE: Regenerate TOC with `cat docs/gpu/README.md | grep '#' | cut -d '#' -f 2 | tr -d ' ' | awk '{print "["$1"](#"$1")"}'`. + +The numbers (in binary) represent the opcodes; `-` signifies "don't care". + +# AL2P +`1110 1111 1010 0---` + +# ALD +`1110 1111 1101 1---` + +# AST +`1110 1111 1111 0---` + +# ATOM +- **ATOM_cas**: `1110 1110 1111 ----` +- **ATOM**: `1110 1101 ---- ----` + +Atomic operation. + +- INC, DEC for U32/S32/U64 does nothing. +- ADD, INC, DEC for S64 does nothing. +- Only ADD does something for F32. +- Only ADD, MIN and MAX does something for F16x2. + +# ATOMS +- **ATOMS_cas**: `1110 1110 ---- ----` +- **ATOMS**: `1110 1100 ---- ----` + +# B2R +`1111 0000 1011 1---` + +# BAR +`1111 0000 1010 1---` + +# BFE +- **BFE_reg**: `0101 1100 0000 0---` +- **BFE_cbuf**: `0100 1100 0000 0---` +- **BFE_imm**: `0011 100- 0000 0---` + +Bit Field Extract. + +# BFI +- **BFI_reg**: `0101 1011 1111 0---` +- **BFI_rc**: `0101 0011 1111 0---` +- **BFI_cr**: `0100 1011 1111 0---` +- **BFI_imm**: `0011 011- 1111 0---` + +Bit Field Insert. + +# BPT +`1110 0011 1010 ----` + +Breakpoint trap. + +# BRA +`1110 0010 0100 ----` + +Relative branch. + +# BRK +`1110 0011 0100 ----` + +Break. + +# BRX +`1110 0010 0101 ----` + +# CAL +`1110 0010 0110 ----` + +# CCTL +`1110 1111 011- ----` + +Cache Control. + +# CCTLL +`1110 1111 100- ----` + +Texture Cache Control. + +# CONT +`1110 0011 0101 ----` + +Continue. + +# CS2R +`0101 0000 1100 1---` + +Move Special Register to Register. + +# CSET +`0101 0000 1001 1---` + +Test Condition Code And Set. + +# CSETP +`0101 0000 1010 0---` + +Test Condition Code and Set Predicate. + +# DADD +- **DADD_reg**: `0101 1100 0111 0---` +- **DADD_cbuf**: `0100 1100 0111 0---` +- **DADD_imm**: `0011 100- 0111 0---` + +# DEPBAR +`1111 0000 1111 0---` + +# DFMA +- **DFMA_reg**: `0101 1011 0111 ----` +- **DFMA_rc**: `0101 0011 0111 ----` +- **DFMA_cr**: `0100 1011 0111 ----` +- **DFMA_imm**: `0011 011- 0111 ----` + +FP64 Fused Mutiply Add. + +# DMNMX +- **DMNMX_reg**: `0101 1100 0101 0---` +- **DMNMX_cbuf**: `0100 1100 0101 0---` +- **DMNMX_imm**: `0011 100- 0101 0---` + +FP64 Minimum/Maximum. + +# DMUL +- **DMUL_reg**: `0101 1100 1000 0---` +- **DMUL_cbuf**: `0100 1100 1000 0---` +- **DMUL_imm**: `0011 100- 1000 0---` + +FP64 Multiply. + +# DSET +- **DSET_reg**: `0101 1001 0--- ----` +- **DSET_cbuf**: `0100 1001 0--- ----` +- **DSET_imm**: `0011 001- 0--- ----` + +FP64 Compare And Set. + +# DSETP +- **DSETP_reg**: `0101 1011 1000 ----` +- **DSETP_cbuf**: `0100 1011 1000 ----` +- **DSETP_imm**: `0011 011- 1000 ----` + +FP64 Compare And Set Predicate. + +# EXIT +`1110 0011 0000 ----` + +# F2F +- **F2F_reg**: `0101 1100 1010 1---` +- **F2F_cbuf**: `0100 1100 1010 1---` +- **F2F_imm**: `0011 100- 1010 1---` + +# F2I +- **F2I_reg**: `0101 1100 1011 0---` +- **F2I_cbuf**: `0100 1100 1011 0---` +- **F2I_imm**: `0011 100- 1011 0---` + +# FADD +- **FADD_reg**: `0101 1100 0101 1---` +- **FADD_cbuf**: `0100 1100 0101 1---` +- **FADD_imm**: `0011 100- 0101 1---` +- **FADD32I**: `0000 10-- ---- ----` + +FP32 Add. + +# FCHK +- **FCHK_reg**: `0101 1100 1000 1---` +- **FCHK_cbuf**: `0100 1100 1000 1---` +- **FCHK_imm**: `0011 100- 1000 1---` + +Single Precision FP Divide Range Check. + +# FCMP +- **FCMP_reg**: `0101 1011 1010 ----` +- **FCMP_rc**: `0101 0011 1010 ----` +- **FCMP_cr**: `0100 1011 1010 ----` +- **FCMP_imm**: `0011 011- 1010 ----` + +FP32 Compare to Zero and Select Source. + +# FFMA +- **FFMA_reg**: `0101 1001 1--- ----` +- **FFMA_rc**: `0101 0001 1--- ----` +- **FFMA_cr**: `0100 1001 1--- ----` +- **FFMA_imm**: `0011 001- 1--- ----` +- **FFMA32I**: `0000 11-- ---- ----` + +FP32 Fused Multiply and Add. + +# FLO +- **FLO_reg**: `0101 1100 0011 0---` +- **FLO_cbuf**: `0100 1100 0011 0---` +- **FLO_imm**: `0011 100- 0011 0---` + +# FMNMX +- **FMNMX_reg**: `0101 1100 0110 0---` +- **FMNMX_cbuf**: `0100 1100 0110 0---` +- **FMNMX_imm**: `0011 100- 0110 0---` + +FP32 Minimum/Maximum. + +# FMUL +- **FMUL_reg**: `0101 1100 0110 1---` +- **FMUL_cbuf**: `0100 1100 0110 1---` +- **FMUL_imm**: `0011 100- 0110 1---` +- **FMUL32I**: `0001 1110 ---- ----` + +FP32 Multiply. + +# FSET +- **FSET_reg**: `0101 1000 ---- ----` +- **FSET_cbuf**: `0100 1000 ---- ----` +- **FSET_imm**: `0011 000- ---- ----` + +FP32 Compare And Set. + +# FSETP +- **FSETP_reg**: `0101 1011 1011 ----` +- **FSETP_cbuf**: `0100 1011 1011 ----` +- **FSETP_imm**: `0011 011- 1011 ----` + +FP32 Compare And Set Predicate. + +# FSWZADD +`0101 0000 1111 1---` + +FP32 Add used for FSWZ emulation. + +# GETCRSPTR +`1110 0010 1100 ----` + +# GETLMEMBASE +`1110 0010 1101 ----` + +# HADD2 +- **HADD2_reg**: `0101 1101 0001 0---` +- **HADD2_cbuf**: `0111 101- 1--- ----` +- **HADD2_imm**: `0111 101- 0--- ----` +- **HADD2_32I**: `0010 110- ---- ----` + +FP16 Add. + +# HFMA2 +- **HFMA2_reg**: `0101 1101 0000 0---` +- **HFMA2_rc**: `0110 0--- 1--- ----` +- **HFMA2_cr**: `0111 0--- 1--- ----` +- **HFMA2_imm**: `0111 0--- 0--- ----` +- **HFMA2_32I**: `0010 100- ---- ----` + +FP16 Fused Mutiply Add. + +# HMUL2 +- **HMUL2_reg**: `0101 1101 0000 1---` +- **HMUL2_cbuf**: `0111 100- 1--- ----` +- **HMUL2_imm**: `0111 100- 0--- ----` +- **HMUL2_32I**: `0010 101- ---- ----` + +FP16 Multiply. + +# HSET2 +- **HSET2_reg**: `0101 1101 0001 1---` +- **HSET2_cbuf**: `0111 110- 1--- ----` +- **HSET2_imm**: `0111 110- 0--- ----` + +FP16 Compare And Set. + +# HSETP2 +- **HSETP2_reg**: `0101 1101 0010 0---` +- **HSETP2_cbuf**: `0111 111- 1--- ----` +- **HSETP2_imm**: `0111 111- 0--- ----` + +FP16 Compare And Set Predicate. + +# I2F +- **I2F_reg**: `0101 1100 1011 1---` +- **I2F_cbuf**: `0100 1100 1011 1---` +- **I2F_imm**: `0011 100- 1011 1---` + +# I2I +- **I2I_reg**: `0101 1100 1110 0---` +- **I2I_cbuf**: `0100 1100 1110 0---` +- **I2I_imm**: `0011 100- 1110 0---` + +# IADD +- **IADD_reg**: `0101 1100 0001 0---` +- **IADD_cbuf**: `0100 1100 0001 0---` +- **IADD_imm**: `0011 100- 0001 0---` + +Integer Addition. + +# IADD3 +- **IADD3_reg**: `0101 1100 1100 ----` +- **IADD3_cbuf**: `0100 1100 1100 ----` +- **IADD3_imm**: `0011 100- 1100 ----` +- **IADD32I**: `0001 110- ---- ----` + +3-input Integer Addition. + +# ICMP +- **ICMP_reg**: `0101 1011 0100 ----` +- **ICMP_rc**: `0101 0011 0100 ----` +- **ICMP_cr**: `0100 1011 0100 ----` +- **ICMP_imm**: `0011 011- 0100 ----` + +Integer Compare to Zero and Select Source. + +# IDE +`1110 0011 1001 ----` + +# IDP +- **IDP_reg**: `0101 0011 1111 1---` +- **IDP_imm**: `0101 0011 1101 1---` + +# IMAD +- **IMAD_reg**: `0101 1010 0--- ----` +- **IMAD_rc**: `0101 0010 0--- ----` +- **IMAD_cr**: `0100 1010 0--- ----` +- **IMAD_imm**: `0011 010- 0--- ----` +- **IMAD32I**: `1000 00-- ---- ----` + +Integer Multiply And Add. + +# IMADSP +- **IMADSP_reg**: `0101 1010 1--- ----` +- **IMADSP_rc**: `0101 0010 1--- ----` +- **IMADSP_cr**: `0100 1010 1--- ----` +- **IMADSP_imm**: `0011 010- 1--- ----` + +Extracted Integer Multiply And Add.. + +# IMNMX +- **IMNMX_reg**: `0101 1100 0010 0---` +- **IMNMX_cbuf**: `0100 1100 0010 0---` +- **IMNMX_imm**: `0011 100- 0010 0---` + +Integer Minimum/Maximum. + +# IMUL +- **IMUL_reg**: `0101 1100 0011 1---` +- **IMUL_cbuf**: `0100 1100 0011 1---` +- **IMUL_imm**: `0011 100- 0011 1---` +- **IMUL32I**: `0001 1111 ---- ----` + +Integer Multiply. + +# IPA +`1110 0000 ---- ----` + +# ISBERD +`1110 1111 1101 0---` + +In-Stage-Buffer Entry Read. + +# ISCADD +- **ISCADD_reg**: `0101 1100 0001 1---` +- **ISCADD_cbuf**: `0100 1100 0001 1---` +- **ISCADD_imm**: `0011 100- 0001 1---` +- **ISCADD32I**: `0001 01-- ---- ----` + +Scaled Integer Addition. + +# ISET +- **ISET_reg**: `0101 1011 0101 ----` +- **ISET_cbuf**: `0100 1011 0101 ----` +- **ISET_imm**: `0011 011- 0101 ----` + +Integer Compare And Set. + +# ISETP +- **ISETP_reg**: `0101 1011 0110 ----` +- **ISETP_cbuf**: `0100 1011 0110 ----` +- **ISETP_imm**: `0011 011- 0110 ----` + +Integer Compare And Set Predicate. + +# JCAL +`1110 0010 0010 ----` + +Absolute Call. + +# JMP +`1110 0010 0001 ----` + +Absolute Jump. + +# JMX +`1110 0010 0000 ----` + +Absolute Jump Indirect. + +# KIL +`1110 0011 0011 ----` + +# LD +`100- ---- ---- ----` + +Load from generic Memory. + +# LDC +`1110 1111 1001 0---` + +Load Constant. + +# LDG +`1110 1110 1101 0---` + +Load from Global Memory. + +# LDL +`1110 1111 0100 0---` + +Load within Local Memory Window. + +# LDS +`1110 1111 0100 1---` + +Load within Shared Memory Window. + +# LEA +- **LEA_hi_reg**: `0101 1011 1101 1---` +- **LEA_hi_cbuf**: `0001 10-- ---- ----` +- **LEA_lo_reg**: `0101 1011 1101 0---` +- **LEA_lo_cbuf**: `0100 1011 1101 ----` +- **LEA_lo_imm**: `0011 011- 1101 0---` + +# LEPC +`0101 0000 1101 0---` + +# LONGJMP +`1110 0011 0001 ----` + +# LOP +- **LOP_reg**: `0101 1100 0100 0---` +- **LOP_cbuf**: `0100 1100 0100 0---` +- **LOP_imm**: `0011 100- 0100 0---` + +# LOP3 +- **LOP3_reg**: `0101 1011 1110 0---` +- **LOP3_cbuf**: `0000 001- ---- ----` +- **LOP3_imm**: `0011 11-- ---- ----` +- **LOP32I**: `0000 01-- ---- ----` + +# MEMBAR +`1110 1111 1001 1---` + +Memory Barrier. + +# MOV +- **MOV_reg**: `0101 1100 1001 1---` +- **MOV_cbuf**: `0100 1100 1001 1---` +- **MOV_imm**: `0011 100- 1001 1---` +- **MOV32I**: `0000 0001 0000 ----` + +# MUFU +`0101 0000 1000 0---` + +Multi Function Operation. + +# NOP +`0101 0000 1011 0---` + +No operation. + +# OUT +- **OUT_reg**: `1111 1011 1110 0---` +- **OUT_cbuf**: `1110 1011 1110 0---` +- **OUT_imm**: `1111 011- 1110 0---` + +# P2R +- **P2R_reg**: `0101 1100 1110 1---` +- **P2R_cbuf**: `0100 1100 1110 1---` +- **P2R_imm**: `0011 1000 1110 1---` + +Move Predicate Register To Register. + +# PBK +`1110 0010 1010 ----` + +Pre-break. + +# PCNT +`1110 0010 1011 ----` + +Pre-continue. + +# PEXIT +`1110 0010 0011 ----` + +Pre-exit. + +# PIXLD +`1110 1111 1110 1---` + +# PLONGJMP +`1110 0010 1000 ----` + +Pre-long jump. + +# POPC +- **POPC_reg**: `0101 1100 0000 1---` +- **POPC_cbuf**: `0100 1100 0000 1---` +- **POPC_imm**: `0011 100- 0000 1---` + +Population/Bit count. + +# PRET +`1110 0010 0111 ----` + +Pre-return from subroutine. Pushes the return address to the CRS stack. + +# PRMT +- **PRMT_reg**: `0101 1011 1100 ----` +- **PRMT_rc**: `0101 0011 1100 ----` +- **PRMT_cr**: `0100 1011 1100 ----` +- **PRMT_imm**: `0011 011- 1100 ----` + +# PSET +`0101 0000 1000 1---` + +Combine Predicates and Set. + +# PSETP +`0101 0000 1001 0---` + +Combine Predicates and Set Predicate. + +# R2B +`1111 0000 1100 0---` + +Move Register to Barrier. + +# R2P +- **R2P_reg**: `0101 1100 1111 0---` +- **R2P_cbuf**: `0100 1100 1111 0---` +- **R2P_imm**: `0011 100- 1111 0---` + +Move Register To Predicate/CC Register. + +# RAM +`1110 0011 1000 ----` + +# RED +`1110 1011 1111 1---` + +Reduction Operation on Generic Memory. + +# RET +`1110 0011 0010 ----` + +Return. + +# RRO +- **RRO_reg**: `0101 1100 1001 0---` +- **RRO_cbuf**: `0100 1100 1001 0---` +- **RRO_imm**: `0011 100- 1001 0---` + +# RTT +`1110 0011 0110 ----` + +# S2R +`1111 0000 1100 1---` + +# SAM +`1110 0011 0111 ----` + +# SEL +- **SEL_reg**: `0101 1100 1010 0---` +- **SEL_cbuf**: `0100 1100 1010 0---` +- **SEL_imm**: `0011 100- 1010 0---` + +# SETCRSPTR +`1110 0010 1110 ----` + +# SETLMEMBASE +`1110 0010 1111 ----` + +# SHF +- **SHF_l_reg**: `0101 1011 1111 1---` +- **SHF_l_imm**: `0011 011- 1111 1---` +- **SHF_r_reg**: `0101 1100 1111 1---` +- **SHF_r_imm**: `0011 100- 1111 1---` + +# SHFL +`1110 1111 0001 0---` + +# SHL +- **SHL_reg**: `0101 1100 0100 1---` +- **SHL_cbuf**: `0100 1100 0100 1---` +- **SHL_imm**: `0011 100- 0100 1---` + +# SHR +- **SHR_reg**: `0101 1100 0010 1---` +- **SHR_cbuf**: `0100 1100 0010 1---` +- **SHR_imm**: `0011 100- 0010 1---` + +# SSY +`1110 0010 1001 ----` + +Set Synchronization Point. + +# ST +`101- ---- ---- ----` + +Store to generic Memory. + +# STG +`1110 1110 1101 1---` + +Store to global Memory. + +# STL +`1110 1111 0101 0---` + +Store within Local or Shared Window. + +# STP +`1110 1110 1010 0---` + +Store to generic Memory and Predicate. + +# STS +`1110 1111 0101 1---` + +Store within Local or Shared Window. + +# SUATOM +- **SUATOM**: `1110 1010 0--- ----` +- **SUATOM_cas**: `1110 1010 1--- ----` + +Atomic Op on Surface Memory. + +# SULD +`1110 1011 000- ----` + +Surface Load. + +# SURED +`1110 1011 010- ----` + +Reduction Op on Surface Memory. + +# SUST +`1110 1011 001- ----` + +Surface Store. + +# SYNC +`1111 0000 1111 1---` + +# TEX +- **TEX**: `1100 0--- ---- ----` +- **TEX_b**: `1101 1110 10-- ----` +- **TEXS**: `1101 -00- ---- ----` + +Texture Fetch with scalar/non-vec4 source/destinations. + +# TLD +- **TLD**: `1101 1100 ---- ----` +- **TLD_b**: `1101 1101 ---- ----` +- **TLDS**: `1101 -01- ---- ----` + +Texture Load with scalar/non-vec4 source/destinations. + +# TLD4 +- **TLD4**: `1100 10-- ---- ----` +- **TLD4_b**: `1101 1110 11-- ----` +- **TLD4S**: `1101 1111 -0-- ----` + +Texture Load 4 with scalar/non-vec4 source/destinations. + +# TMML +- **TMML**: `1101 1111 0101 1---` +- **TMML_b**: `1101 1111 0110 0---` + +Texture MipMap Level. + +# TXA +`1101 1111 0100 0---` + +# TXD +- **TXD**: `1101 1110 00-- ----` +- **TXD_b**: `1101 1110 01-- ----` + +Texture Fetch With Derivatives. + +# TXQ +- **TXQ**: `1101 1111 0100 1---` +- **TXQ_b**: `1101 1111 0101 0---` + +Texture Query. + +# VABSDIFF +`0101 0100 ---- ----` + +# VABSDIFF4 +`0101 0000 0--- ----` + +# VADD +`0010 00-- ---- ----` + +# VMAD +`0101 1111 ---- ----` + +# VMNMX +`0011 101- ---- ----` + +# VOTE +- **VOTE**: `0101 0000 1101 1---` +- **VOTE_vtg**: `0101 0000 1110 0---` + +Vote Across SIMD Thread Group + +# VSET +`0100 000- ---- ----` + +# VSETP +`0101 0000 1111 0---` + +# VSHL +`0101 0111 ---- ----` + +# VSHR +`0101 0110 ---- ----` + +# XMAD +- **XMAD_reg**: `0101 1011 00-- ----` +- **XMAD_rc**: `0101 0001 0--- ----` +- **XMAD_cr**: `0100 111- ---- ----` +- **XMAD_imm**: `0011 011- 00-- ----` + +Integer Short Multiply Add. diff --git a/docs/Options.md b/docs/Options.md new file mode 100644 index 0000000000..3eb6effe92 --- /dev/null +++ b/docs/Options.md @@ -0,0 +1,100 @@ +# CMake Options + +To change these options, add `-DOPTION_NAME=NEWVALUE` to the command line. + +- On Qt Creator, go to Project -> Current Configuration + +Notes: + +- Defaults are marked per-platform. +- "Non-UNIX" just means Windows/MSVC and Android (yes, macOS is UNIX +- Android generally doesn't need to change anything; if you do, go to `src/android/app/build.gradle.kts` +- To set a boolean variable to on, use `ON` for the value; to turn it off, use `OFF` +- If a variable is mentioned as being e.g. "ON" for a specific platform(s), that means it is defaulted to OFF on others +- TYPE is always boolean unless otherwise specified +- Format: + - `OPTION_NAME` (TYPE DEFAULT) DESCRIPTION + +## Options + +### Dependencies + +These options control dependencies. + +- `YUZU_USE_BUNDLED_FFMPEG` (ON for non-UNIX) Download a pre-built and configured FFmpeg +- `YUZU_USE_EXTERNAL_FFMPEG` (ON for Solaris) Build FFmpeg from source +- `YUZU_DOWNLOAD_ANDROID_VVL` (ON) Download validation layer binary for Android +- `YUZU_DOWNLOAD_TIME_ZONE_DATA` (ON) Always download time zone binaries + - Currently, build fails without this +- `YUZU_TZDB_PATH` (string) Path to a pre-downloaded timezone database (useful for nixOS and Gentoo) +- `YUZU_USE_BUNDLED_MOLTENVK` (ON, macOS only) Download bundled MoltenVK lib +- `YUZU_USE_BUNDLED_OPENSSL` (ON for MSVC, Android, Solaris, and OpenBSD) Download bundled OpenSSL build +- `YUZU_USE_EXTERNAL_SDL2` (OFF) Compiles SDL2 from source +- `YUZU_USE_BUNDLED_SDL2` (ON for MSVC) Download a prebuilt SDL2 + +### Miscellaneous + +- `ENABLE_WEB_SERVICE` (ON) Enable multiplayer service +- `ENABLE_WIFI_SCAN` (OFF) Enable WiFi scanning (requires iw on Linux) - experimental +- `ENABLE_CUBEB` (ON) Enables the cubeb audio backend + - This option is subject for removal. +- `YUZU_TESTS` (ON) Compile tests - requires Catch2 +- `ENABLE_LTO` (OFF) Enable link-time optimization + - Not recommended on Windows + - UNIX may be better off appending `-flto=thin` to compiler args +- `USE_FASTER_LINKER` (OFF) Check if a faster linker is available + - Not recommended outside of Linux + +### Flavors + +These options control executables and build flavors. + +- `YUZU_LEGACY` (OFF): Apply patches to improve compatibility on some older GPUs at the cost of performance +- `NIGHTLY_BUILD` (OFF): This is only used by CI. Do not use this unless you're making your own distribution and know what you're doing. +- `YUZU_STATIC_BUILD` (OFF) Attempt to build using static libraries if possible + - Not supported on Linux + - Automatically set if `YUZU_USE_BUNDLED_QT` is on for non-Linux +- `ENABLE_UPDATE_CHECKER` (OFF) Enable update checking functionality +- `YUZU_DISABLE_LLVM` (OFF) Do not attempt to link to the LLVM demangler + - Really only useful for CI or distribution builds + +**Desktop only**: + +- `YUZU_CMD` (ON) Compile the SDL2 frontend (eden-cli) +- `YUZU_ROOM` (OFF) Compile dedicated room functionality into the main executable +- `YUZU_ROOM_STANDALONE` (OFF) Compile a separate executable for room functionality +- `YUZU_STATIC_ROOM` (OFF) Compile the room executable *only* as a static, portable executable + - This is only usable on Alpine Linux. + +### Desktop + +The following options are desktop only. + +- `ENABLE_LIBUSB` (ON) Enable the use of the libusb input backend (HIGHLY RECOMMENDED) +- `ENABLE_OPENGL` (ON) Enable the OpenGL graphics backend + - Unavailable on Windows/ARM64 + - You probably shouldn't turn this off. + +### Qt + +Also desktop-only, but apply strictly to Qt + +- `ENABLE_QT` (ON) Enable the Qt frontend (recommended) +- `ENABLE_QT_TRANSLATION` (OFF) Enable translations for the Qt frontend +- `YUZU_USE_BUNDLED_QT` (ON for MSVC) Download bundled Qt binaries + - Not recommended on Linux. For Windows and macOS, the provided build is statically linked. +- `YUZU_QT_MIRROR` (string) What mirror to use for downloading the bundled Qt libraries +- `YUZU_USE_QT_MULTIMEDIA` (OFF) Use QtMultimedia for camera support +- `YUZU_USE_QT_WEB_ENGINE` (OFF) Use QtWebEngine for web applet implementation (requires the huge QtWebEngine dependency; not recommended) +- `USE_DISCORD_PRESENCE` (OFF) Enables Discord Rich Presence (Qt frontend only) + +### Retired Options + +The following options were a part of Eden at one point, but have since been retired. + +- `ENABLE_OPENSSL` - MbedTLS was fully replaced with OpenSSL in [#3606](https://git.eden-emu.dev/eden-emu/eden/pulls/3606), because OpenSSL straight-up performs better. +- `ENABLE_SDL2` - While technically possible to *not* use SDL2 on desktop, this is **NOT** a supported configuration under any means, and adding this matrix to our build system was not worth the effort. +- `YUZU_USE_CPM` - This option once had a purpose, but that purpose has long since passed us by. *All* builds use CPMUtil to manage dependencies now. + - If you want to *force* the usage of system dependencies, use `-DCPMUTIL_FORCE_SYSTEM=ON`. + +See `src/dynarmic/CMakeLists.txt` for additional options--usually, these don't need changed diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000000..68775f99d8 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,27 @@ +# Eden Build Documentation + +Are you just a casual user? Take a look at our [User Handbook](./user) then! + +This contains documentation created by developers. This contains build instructions, guidelines, instructions/layouts for [cool stuff we made](./CPMUtil), and more. + +- **[General Build Instructions](Build.md)** +- **[CMake Options](Options.md)** +- **[Cross Compiling](CrossCompile.md)** +- **[Development Guidelines](Development.md)** +- **[Dependencies](Deps.md)** +- **[Debug Guidelines](./Debug.md)** +- **[CPM - CMake Package Manager](./CPMUtil)** +- **[Platform-Specific Caveats](Caveats.md)** +- **[The NVIDIA SM86 (Maxwell) GPU](./NvidiaGpu.md)** +- **[Dynarmic](./dynarmic)** +- **[Cross compilation](./CrossCompile.md)** +- **[Driver Bugs](./DriverBugs.md)** +- **[Building Older Commits](./build/OlderCommits.md)** + +## Policies + +Policies and information on development. + +- **[AI and LLM Usage](./policies/AI.md)** +- **[Release Policy](./policies/Release.md)** +- **[Coding guidelines](./policies/Coding.md)** diff --git a/docs/SIGNUP.md b/docs/SIGNUP.md new file mode 100644 index 0000000000..5e5f7cebf6 --- /dev/null +++ b/docs/SIGNUP.md @@ -0,0 +1,76 @@ +# Signup + +To prevent spam and reduce bandwidth usage, registration is closed, and will likely remain this way. + +## Valid Reasons + +First of all, you MUST have a valid reason to sign up for our Git. Valid reasons include (but are not limited to): + +- I want to add feature XYZ... +- I want to improve the macOS version... +- I want to improve the Vulkan backend... +- I want to fix bug XYZ... +- I have experience in XYZ... +- I can provide insight on XYZ... + +## Invalid Reasons + +The following are not valid reasons to sign up: + +- I want to contribute to Eden. + * Be at least somewhat specific! We always welcome contributors and developers, but generic "I want to contribute" messages don't give us enough information. +- I want to support Eden. + * If you wish to support us through development, be more specific; otherwise, to support us, check out our [donations page](https://eden-emu.dev/donations). +- I want to report issues. + * Most of our issue tracking is handled on [GitHub](https://github.com/eden-emulator/Issue-Reports) for the time being. This is subject to change. +- I want to play/use Eden. + * To download and use Eden, see our [Releases page](https://github.com/eden-emulator/Releases/releases)! +- I want to see the source code. + * To see Eden's source code, go [here](https://git.eden-emu.dev/eden-emu/eden). + +## Other Information + +Requests that appear suspicious, automated, OR blank will generally be automatically filtered. In cases of suspicion, or any of the invalid reasons listed above, you may receive an email back asking for clarification. + +You MUST use the following format: + +``` +Subject: [Eden Git] Registration Request +Username: +Email: +I wish to sign up because... +``` + +Email notifications are disabled for the time being, so you don't have to use a real email. If you wish to remain anonymous, either send a separate email asking for access to a shared anonymous account, *or* create a fake username and email. Do note that the email you sign up with is used to accredit commits on the web UI, and *must* match your configured GPG key. + +## Patches + +In general, PRs are the preferred method of tracking patches, as they allow us to go through our standard triage, CI, and testing process without having to deal with the minutiae of incremental patches. However, we also understand that many people prefer to use raw patches, and that's totally okay! While we currently don't have a mailing list, we do accept email patches. To do so: + +1. Make your changes on a clean copy of the master branch +2. Commit your changes with a descriptive, well-formed message (see the [commit message docs](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/Development.md#pull-requests)), and a proper description thoroughly explaining your changes. + * Note that we don't need to know all the individual details about your code. A description explaining the motivation and general implementation of your changes is enough, alongside caveats and any potential blockers. +3. Format your patch with `git format-patch -1 HEAD`. +4. Email us with the subject `[Eden] [PATCH] `, with a brief description of your patch, and the previously-formatted patch file as an attachment. + * If you don't include the first two bracketed parts, your email may be lost! + +The following emails are currently set up to receive and process patches: + +- [eden@eden-emu.dev](mailto:eden@eden-emu.dev] +- [crueter@eden-emu.dev](mailto:eden@eden-emu.dev) + +## Instructions + +If you have read everything above and affirm that you will not abuse your access, click the summary below to get the email to send your request to. + +
+I affirm that I have read ALL of the information above, and will not abuse my access to Eden, nor will I send unnecessary spam to the following email. + +Email [crueter@crueter.xyz](mailto:crueter@crueter.xyz) with the format above. + +Once your request is processed, you should receive a confirmation email from crueter with your password alongside a link to a repository containing instructions on SSH, etc. Note that you are required to change your password. If your request is rejected, you will receive a notice as such, asking for clarification if needed. If you do not receive a response in 48 hours, you may send another email. + +> [!WARNING] +> Some email providers may place the response email in your spam/junk folder; notable offenders include Gmail and Outlook. *Always* ensure to check your Spam/Junk folder, until Google/Microsoft finally end their vendetta against the great evil of my `.xyz` domain. + +
diff --git a/docs/build/Android.md b/docs/build/Android.md index 4bb1c868b6..60ec31a678 100644 --- a/docs/build/Android.md +++ b/docs/build/Android.md @@ -1,42 +1,88 @@ -# Note: These build instructions are a work-in-progress. - -## Dependencies -* [Android Studio](https://developer.android.com/studio) -* [NDK 25.2.9519653 and CMake 3.22.1](https://developer.android.com/studio/projects/install-ndk#default-version) -* [Git](https://git-scm.com/download) - -### WINDOWS ONLY - Additional Dependencies - * **[Visual Studio 2022 Community](https://visualstudio.microsoft.com/downloads/)** - **Make sure to select "Desktop development with C++" support in the installer. Make sure to update to the latest version if already installed.** - * **[Vulkan SDK](https://vulkan.lunarg.com/sdk/home#windows)** - **Make sure to select Latest SDK.** - - A convenience script to install the latest SDK is provided in `.ci\windows\install-vulkan-sdk.ps1`. - -## Cloning Eden with Git -``` -git clone --recursive https://git.eden-emu.dev/eden-emu/eden.git -``` -Eden by default will be cloned into - -* `C:\Users\\eden` on Windows -* `~/eden` on Linux -* And wherever on macOS - -## Building -1. Start Android Studio, on the startup dialog select `Open`. -2. Navigate to the `eden/src/android` directory and click on `OK`. -3. In `Build > Select Build Variant`, select `release` or `relWithDebInfo` as the "Active build variant". -4. Build the project with `Build > Make Project` or run it on an Android device with `Run > Run 'app'`. - -## Building with Terminal -1. Download the SDK and NDK from Android Studio. -2. Navigate to SDK and NDK paths. -3. Then set ANDROID_SDK_ROOT and ANDROID_NDK_ROOT in terminal via -`export ANDROID_SDK_ROOT=path/to/sdk` -`export ANDROID_NDK_ROOT=path/to/ndk`. -4. Navigate to `eden/src/android`. -5. Then Build with `./gradlew assemblerelWithDebInfo`. -6. To build the optimised build use `./gradlew assembleGenshinSpoofRelWithDebInfo`. - -### Script -A convenience script for building is provided in `.ci/android/build.sh`. The built APK can be put into an `artifacts` directory via `.ci/android/package.sh`. On Windows, these must be done in the Git Bash or MinGW terminal. - -### Additional Resources -https://developer.android.com/studio/intro +# Android + +## Dependencies + +* [Android Studio](https://developer.android.com/studio) +* [NDK 27+ and CMake 3.22.1](https://developer.android.com/studio/projects/install-ndk#default-version) +* [Git](https://git-scm.com/download) + +## WINDOWS ONLY - Additional Dependencies + +* **[Visual Studio 2022 Community](https://visualstudio.microsoft.com/downloads/)** - **Make sure to select "Desktop development with C++" support in the installer. Make sure to update to the latest version if already installed.** +* **[Vulkan SDK](https://vulkan.lunarg.com/sdk/home#windows)** - **Make sure to select Latest SDK.** + * A convenience script to install the latest SDK is provided in `.ci\windows\install-vulkan-sdk.ps1`. + +## Cloning Eden with Git + +```sh +git clone --recursive https://git.eden-emu.dev/eden-emu/eden.git +``` + +Eden by default will be cloned into: + +* `C:\Users\\eden` on Windows +* `~/eden` on Linux and macOS + +## Building + +1. Start Android Studio, on the startup dialog select `Open`. +2. Navigate to the `eden/src/android` directory and click on `OK`. +3. In `Build > Select Build Variant`, select `release` or `relWithDebInfo` as the "Active build variant". +4. Build the project with `Build > Make Project` or run it on an Android device with `Run > Run 'app'`. + +## Building with Terminal + +1. Download the SDK and NDK from Android Studio. +2. Navigate to SDK and NDK paths. +3. Then set ANDROID_SDK_ROOT and ANDROID_NDK_ROOT in terminal via +`export ANDROID_SDK_ROOT=path/to/sdk` +`export ANDROID_NDK_ROOT=path/to/ndk`. +4. Navigate to `eden/src/android`. +5. Then Build with `./gradlew assembleRelWithDebInfo`. +6. To build the optimised build use `./gradlew assembleGenshinSpoofRelWithDebInfo`. +7. You can pass extra variables to cmake via `-PYUZU_ANDROID_ARGS="-D..."` + +Remember to have a Java SDK installed if not already, on Debian and similar this is done with `sudo apt install openjdk-17-jdk`. + +### Script + +A convenience script for building is provided in `.ci/android/build.sh`. On Windows, this must be run in Git Bash or MSYS2. This script provides the following options: + +```txt +Usage: build.sh [-c|--chromeos] [-t|--target FLAVOR] [-b|--build-type BUILD_TYPE] + [-h|--help] [-r|--release] [extra options] + +Build script for Android. +Associated variables can be set outside the script, +and will apply both to this script and the packaging script. +bool values are "true" or "false" + +Options: + -c, --chromeos Build for ChromeOS (x86_64) (variable: CHROMEOS, bool) + Default: false + -r, --release Enable update checker. If set, sets the DEVEL bool variable to false. + By default, DEVEL is true. + -t, --target Build flavor (variable: TARGET) + Valid values are: legacy, optimized, standard + Default: standard + -b, --build-type Build type (variable: TYPE) + Valid values are: Release, RelWithDebInfo, Debug + Default: Debug + +Extra arguments are passed to CMake (e.g. -DCMAKE_OPTION_NAME=VALUE) +Set the CCACHE variable to "true" to enable build caching. +The APK and AAB will be output into "artifacts". +``` + +Examples: + +* Build legacy release with update checker: + * `.ci/android/build.sh -r -t legacy` +* Build standard release with debug info without update checker for phones: + * `.ci/android/build.sh -b RelWithDebInfo` +* Build optimized release with update checker for ChromeOS: + * `.ci/android/build.sh -c -r -t optimized` + +### Additional Resources + + diff --git a/docs/build/FreeBSD.md b/docs/build/FreeBSD.md deleted file mode 100644 index 475378125c..0000000000 --- a/docs/build/FreeBSD.md +++ /dev/null @@ -1,85 +0,0 @@ -## One word of caution before proceeding. - -This is not the usual or preferred way to build programs on FreeBSD. -As of writing there is no official fresh port available for Eden, but it is in the works. -After it is available you can find a link to the eden-emu fresh port here and on Escary's github repo. -See this build as an AppImage alternative for FreeBSD. - -## Dependencies. -Before we start we need some dependencies. -These dependencies are generally needed to build Eden on FreeBSD. - -``` -devel/cmake -devel/sdl20 -devel/boost-libs -devel/catch2 -devel/libfmt -devel/nlohmann-json -devel/ninja -devel/nasm -devel/autoconf -devel/pkgconf -devel/qt6-base - -multimedia/ffnvcodec-headers -multimedia/ffmpeg - -audio/opus - -archivers/liblz4 - -lang/gcc12 - -graphics/glslang -graphics/vulkan-utility-libraries -``` - -If using FreeBSD 12 or prior, use `devel/pkg-config` instead. - ---- - -### Build preparations: -Run the following command to clone eden with git: -```sh -git clone --recursive https://git.eden-emu.dev/eden-emu/eden -``` -You usually want to add the `--recursive` parameter as it also takes care of the external dependencies for you. - -Now change into the eden directory and create a build directory there: -```sh -cd eden -mkdir build -``` - -Change into that build directory: -```sh -cd build -``` - -#### 1. Building in Release Mode (usually preferred and the most performant choice): -```sh -cmake .. -GNinja -DYUZU_TESTS=OFF -``` - -#### 2. Building in Release Mode with debugging symbols (useful if you want to debug errors for a eventual fix): -```sh -cmake .. -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DYUZU_TESTS=ON -``` - -Build the emulator locally: -```sh -ninja -``` - -Optional: If you wish to install eden globally onto your system issue the following command: -```sh -sudo ninja install -``` -OR -```sh -doas -- ninja install -``` - -## OpenSSL -The available OpenSSL port (3.0.17) is out-of-date, and using a bundled static library instead is recommended; to do so, add `-DYUZU_USE_CPM=ON` to your CMake configure command. \ No newline at end of file diff --git a/docs/build/Linux.md b/docs/build/Linux.md deleted file mode 100644 index ab653dad00..0000000000 --- a/docs/build/Linux.md +++ /dev/null @@ -1,138 +0,0 @@ -### Dependencies - -You'll need to download and install the following to build Eden: - - * [GCC](https://gcc.gnu.org/) v11+ (for C++20 support) & misc - * If GCC 12 is installed, [Clang](https://clang.llvm.org/) v14+ is required for compiling - * [CMake](https://www.cmake.org/) 3.22+ - -The following are handled by Eden's externals: - - * [FFmpeg](https://ffmpeg.org/) - * [SDL2](https://www.libsdl.org/download-2.0.php) 2.0.18+ - * [opus](https://opus-codec.org/downloads/) 1.3+ - -All other dependencies will be downloaded and built by [CPM](https://github.com/cpm-cmake/CPM.cmake/) if `YUZU_USE_CPM` is on, but will always use system dependencies if available: - - * [Boost](https://www.boost.org/users/download/) 1.79.0+ - * [Catch2](https://github.com/catchorg/Catch2) 2.13.7 - 2.13.9 - * [fmt](https://fmt.dev/) 8.0.1+ - * [lz4](http://www.lz4.org) 1.8+ - * [nlohmann_json](https://github.com/nlohmann/json) 3.8+ - * [OpenSSL](https://www.openssl.org/source/) 1.1.1+ - * [ZLIB](https://www.zlib.net/) 1.2+ - * [zstd](https://facebook.github.io/zstd/) 1.5+ - * [enet](http://enet.bespin.org/) 1.3+ - * [cubeb](https://github.com/mozilla/cubeb) - * [SimpleIni](https://github.com/brofield/simpleini) - -Certain other dependencies (httplib, jwt, sirit, etc.) will be fetched by CPM regardless. System packages *can* be used for these libraries but this is generally not recommended. - -Dependencies are listed here as commands that can be copied/pasted. Of course, they should be inspected before being run. - -- Arch / Manjaro: - - `sudo pacman -Syu --needed base-devel boost catch2 cmake enet ffmpeg fmt git glslang libzip lz4 mbedtls ninja nlohmann-json openssl opus qt6-base qt6-multimedia sdl2 zlib zstd zip unzip` - - Building with QT Web Engine requires `qt6-webengine` as well. - - Proper wayland support requires `qt6-wayland` - - GCC 11 or later is required. - -- Ubuntu / Linux Mint / Debian: - - `sudo apt-get install autoconf cmake g++ gcc git glslang-tools libasound2 libboost-context-dev libglu1-mesa-dev libhidapi-dev libpulse-dev libtool libudev-dev libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-xinerama0 libxcb-xkb1 libxext-dev libxkbcommon-x11-0 mesa-common-dev nasm ninja-build qt6-base-private-dev libmbedtls-dev catch2 libfmt-dev liblz4-dev nlohmann-json3-dev libzstd-dev libssl-dev libavfilter-dev libavcodec-dev libswscale-dev pkg-config zlib1g-dev` - - Ubuntu 22.04, Linux Mint 20, or Debian 12 or later is required. - - Users need to manually specify building with QT Web Engine enabled. This is done using the parameter `-DYUZU_USE_QT_WEB_ENGINE=ON` when running CMake. - - Users need to manually disable building SDL2 from externals if they intend to use the version provided by their system by adding the parameters `-DYUZU_USE_EXTERNAL_SDL2=OFF` - -```sh -git submodule update --init --recursive -cmake .. -GNinja -DCMAKE_C_COMPILER=gcc-11 -DCMAKE_CXX_COMPILER=g++-11 -``` - -- Fedora: - - `sudo dnf install autoconf ccache cmake fmt-devel gcc{,-c++} glslang hidapi-devel json-devel libtool libusb1-devel libzstd-devel lz4-devel nasm ninja-build openssl-devel pulseaudio-libs-devel qt6-linguist qt6-qtbase{-private,}-devel qt6-qtwebengine-devel qt6-qtmultimedia-devel speexdsp-devel wayland-devel zlib-devel ffmpeg-devel libXext-devel` - - Fedora 32 or later is required. - - Due to GCC 12, Fedora 36 or later users need to install `clang`, and configure CMake to use it via `-DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang` - - CMake arguments to force system libraries: - - SDL2: `-DYUZU_USE_BUNDLED_SDL2=OFF -DYUZU_USE_EXTERNAL_SDL2=OFF` - - FFmpeg: `-DYUZU_USE_EXTERNAL_FFMPEG=OFF` - - [RPM Fusion](https://rpmfusion.org/) (free) is required to install `ffmpeg-devel` - -### Cloning Eden with Git - -**Master:** - -```bash -git clone --recursive https://git.eden-emu.dev/eden-emu/eden -cd eden -``` - -The `--recursive` option automatically clones the required Git submodules. - -### Building Eden in Release Mode (Optimised) - -If you need to run ctests, you can disable `-DYUZU_TESTS=OFF` and install Catch2. - -```bash -mkdir build && cd build -cmake .. -GNinja -DYUZU_TESTS=OFF -ninja -sudo ninja install -``` -You may also want to include support for Discord Rich Presence by adding `-DUSE_DISCORD_PRESENCE=ON` after `cmake ..` - -`-DYUZU_USE_EXTERNAL_VULKAN_SPIRV_TOOLS=OFF` might be needed if ninja command failed with `undefined reference to symbol 'spvOptimizerOptionsCreate`, reason currently unknown - -Optionally, you can use `cmake-gui ..` to adjust various options (e.g. disable the Qt GUI). - -### Building Eden in Debug Mode (Slow) - -```bash -mkdir build && cd build -cmake .. -GNinja -DCMAKE_BUILD_TYPE=Debug -DYUZU_TESTS=OFF -ninja -``` - -### Building with debug symbols - -```bash -mkdir build && cd build -cmake .. -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DYUZU -DYUZU_TESTS=OFF -ninja -``` - -### Building with Scripts -A convenience script for building is provided in `.ci/linux/build.sh`. You must provide an arch target for optimization, e.g. `.ci/linux/build.sh amd64`. Valid targets: -- `legacy`: x86_64 generic, only needed for CPUs older than 2013 or so -- `amd64`: x86_64-v3, for CPUs newer than 2013 or so -- `steamdeck` / `zen2`: For Steam Deck or Zen >= 2 AMD CPUs (untested on Intel) -- `rog-ally` / `allyx` / `zen4`: For ROG Ally X or Zen >= 4 AMD CPUs (untested on Intel) -- `aarch64`: For armv8-a CPUs, older than mid-2021 or so -- `armv9`: For armv9-a CPUs, newer than mid-2021 or so -- `native`: Optimize to your native host architecture - -Extra flags to pass to CMake should be passed after the arch target. - -Additional environment variables can be used to control building: -- `NPROC`: Number of threads to use for compilation (defaults to all) -- `TARGET`: Set to `appimage` to disable standalone `eden-cli` and `eden-room` executables -- `BUILD_TYPE`: Sets the build type to use. Defaults to `Release` - -The following environment variables are boolean flags. Set to `true` to enable or `false` to disable: -- `DEVEL` (default FALSE): Disable Qt update checker -- `USE_WEBENGINE` (default FALSE): Enable Qt WebEngine -- `USE_MULTIMEDIA` (default TRUE): Enable Qt Multimedia - -After building, an AppImage can be packaged via `.ci/linux/package.sh`. This script takes the same arch targets as the build script. If the build was created in a different directory, you can specify its path relative to the source directory, e.g. `.ci/linux/package.sh amd64 build-appimage`. Additionally, set the `DEVEL` environment variable to `true` to change the app name to `Eden Nightly`. - -### Running without installing - -After building, the binaries `eden` and `eden-cmd` (depending on your build options) will end up in `build/bin/`. - -```bash -# SDL -cd build/bin/ -./eden-cmd - -# Qt -cd build/bin/ -./eden -``` diff --git a/docs/build/OlderCommits.md b/docs/build/OlderCommits.md new file mode 100644 index 0000000000..91e267213e --- /dev/null +++ b/docs/build/OlderCommits.md @@ -0,0 +1,40 @@ +# Building Older Commits + +Bisecting and debugging older versions of Eden can be difficult, as many of our submodules have been deleted or removed. However, work has been done to make this process as simple as possible for users. + +## Script + +Copy the following script and store it in `fix.sh`: + +```sh +#!/bin/sh -e + +git -C externals/discord-rpc checkout 0d8b2d6a37c6e47d62b37caa14708bf747c883bb +git add externals/discord-rpc + +git -C externals/dynarmic checkout 05b7ba50588d1004e23ef91f1bda8be234be68f4 +git add externals/dynarmic + +git -C externals/mbedtls checkout ce4f81f4a926a0e0dcadd0128e016baba416e8ea +git add externals/mbedtls + +git -C externals/oboe checkout e4f06f2143eb0173bf4a2bd15aae5e8cc3179405 +git add externals/oboe + +git -C externals/sirit checkout b870b062998244231a4f08004d3b25151732c5c5 +git add externals/sirit +``` + +Then, run `chmod +x fix.sh` + +## Submodules + +To check out submodules successfully, use this order of operations: + +```sh +git submodule update --init --recursive --depth 1 --jobs 8 --progress +./fix.sh +git submodule update --init --recursive --depth 1 --jobs 8 --progress +``` + +And you should be good to go! If you check out a different commit that changes submodule commits, run the above command list again. diff --git a/docs/build/Solaris.md b/docs/build/Solaris.md deleted file mode 100644 index d4cfdbb6a9..0000000000 --- a/docs/build/Solaris.md +++ /dev/null @@ -1,51 +0,0 @@ -# Building for Solaris - -## Dependencies. -Always consult [the OpenIndiana package list](https://pkg.openindiana.org/hipster/en/index.shtml) to cross-verify availability. - -Run the usual update + install of essential toolings: `sudo pkg update && sudo pkg install git cmake`. - -- **gcc**: `sudo pkg install developer/gcc-14`. -- **clang**: Version 20 is broken, use `sudo pkg install developer/clang-19`. - -Then install the libraies: `sudo pkg install qt6 boost glslang libzip library/lz4 nlohmann-json openssl opus sdl2 zlib compress/zstd unzip pkg-config nasm autoconf mesa library/libdrm header-drm developer/fmt`. - -### Building - -Clone eden with git `git clone --recursive https://git.eden-emu.dev/eden-emu/eden` - -```sh -# Needed for some dependencies that call cc directly (tz) -echo '#!/bin/sh' >cc -echo 'gcc $@' >>cc -chmod +x cc -export PATH="$PATH:$PWD" -``` - -Patch for FFmpeg: -```sh -sed -i 's/ make / gmake /' externals/ffmpeg/CMakeFiles/ffmpeg-build.dir/build.make -``` - -- **Configure**: `cmake -B build -DYUZU_USE_CPM=ON -DCMAKE_CXX_FLAGS="-I/usr/include/SDL2" -DCMAKE_C_FLAGS="-I/usr/include/SDL2"`. -- **Build**: `cmake --build build`. -- **Installing**: `sudo cmake --install build`. - -### Running - -Default Mesa is a bit outdated, the following environment variables should be set for a smoother experience: -```sh -export MESA_GL_VERSION_OVERRIDE=4.6 -export MESA_GLSL_VERSION_OVERRIDE=460 -export MESA_EXTENSION_MAX_YEAR=2025 -export MESA_DEBUG=1 -export MESA_VK_VERSION_OVERRIDE=1.3 -# Only if nvidia/intel drm drivers cause crashes, will severely hinder performance -export LIBGL_ALWAYS_SOFTWARE=1 -``` - -### Notes - -- Modify the generated ffmpeg.make (in build dir) if using multiple threads (base system `make` doesn't use `-j4`, so change for `gmake`). -- If using OpenIndiana, due to a bug in SDL2 cmake configuration; Audio driver defaults to SunOS ``, which does not exist on OpenIndiana. -- System OpenSSL generally does not work. Instead, use `-DYUZU_USE_CPM=ON` to use a bundled static OpenSSL, or build a system dependency from source. \ No newline at end of file diff --git a/docs/build/Windows.md b/docs/build/Windows.md deleted file mode 100644 index 3b8c459073..0000000000 --- a/docs/build/Windows.md +++ /dev/null @@ -1,193 +0,0 @@ -# THIS GUIDE IS INTENDED FOR DEVELOPERS ONLY, SUPPORT WILL ONLY BE GIVEN IF YOU'RE A DEVELOPER. - -## Method I: MSVC Build for Windows - -### Minimal Dependencies - -On Windows, all library dependencies are automatically included within the `externals` folder, or can be downloaded on-demand. To build Eden, you need to install: - - * **[Visual Studio 2022 Community](https://visualstudio.microsoft.com/downloads/)** - **Make sure to select C++ support in the installer. Make sure to update to the latest version if already installed.** - * **[CMake](https://cmake.org/download/)** - Used to generate Visual Studio project files. Does not matter if either 32-bit or 64-bit version is installed. - * **[Vulkan SDK](https://vulkan.lunarg.com/sdk/home#windows)** - **Make sure to select Latest SDK.** - - A convenience script to install the latest SDK is provided in `.ci\windows\install-vulkan-sdk.ps1`. - - ![2](https://i.imgur.com/giDwuTm.png) - - * **Git** - We recommend [Git for Windows](https://gitforwindows.org). - - ![3](https://i.imgur.com/UeSzkBw.png) - - * While installing Git Bash, you should tell it to include Git in your system path. (Choose the "Git from the command line and also from 3rd-party software" option.) If you missed that, don't worry, you'll just have to manually tell CMake where your git.exe is, since it's used to include version info into the built executable. - - ![4](https://i.imgur.com/x0rRs1t.png) - -### Cloning Eden with Git - -**Master:** - ```cmd - git clone --recursive https://git.eden-emu.dev/eden-emu/eden - cd eden - ``` - - ![9](https://i.imgur.com/CcxIAht.png) - -* *(Note: eden by default downloads to `C:\Users\\eden` (Master) - -### Building - -* Open the CMake GUI application and point it to the `eden` (Master) - - ![10](https://i.imgur.com/qOslIWv.png) - -* For the build directory, use a `/build` subdirectory inside the source directory or some other directory of your choice. (Tell CMake to create it.) - -* Click the "Configure" button and choose `Visual Studio 17 2022`, with `x64` for the optional platform. - - ![12](https://i.imgur.com/DKiREaK.png) - - * *(Note: If you used GitHub's own app to clone, run `git submodule update --init --recursive` to get the remaining dependencies)* - - * *(You may also want to disable `YUZU_TESTS` in this case since Catch2 is not yet supported with this.)* - - ![13](https://user-images.githubusercontent.com/22451773/180585999-07316d6e-9751-4d11-b957-1cf57cd7cd58.png) - -* Click "Generate" to create the project files. - - ![15](https://i.imgur.com/5LKg92k.png) - -* Open the solution file `yuzu.sln` in Visual Studio 2022, which is located in the build folder. - - ![16](https://i.imgur.com/208yMml.png) - -* Depending if you want a graphical user interface or not (`eden` has the graphical user interface, while `eden-cmd` doesn't), select `eden` or `eden-cmd` in the Solution Explorer, right-click and `Set as StartUp Project`. - - ![17](https://i.imgur.com/nPMajnn.png) ![18](https://i.imgur.com/BDMLzRZ.png) - -* Select the appropriate build type, Debug for debug purposes or Release for performance (in case of doubt choose Release). - - ![19](https://i.imgur.com/qxg4roC.png) - -* Right-click the project you want to build and press Build in the submenu or press F5. - - ![20](https://i.imgur.com/CkQgOFW.png) - -## Method II: MinGW-w64 Build with MSYS2 - -### Prerequisites to install - -* [MSYS2](https://www.msys2.org) -* [Vulkan SDK](https://vulkan.lunarg.com/sdk/home#windows) - **Make sure to select Latest SDK.** -* Make sure to follow the instructions and update to the latest version by running `pacman -Syu` as many times as needed. - -### Install eden dependencies for MinGW-w64 - -* Open the `MSYS2 MinGW 64-bit` (mingw64.exe) shell -* Download and install all dependencies using: `pacman -Syu git make mingw-w64-x86_64-SDL2 mingw-w64-x86_64-cmake mingw-w64-x86_64-python-pip mingw-w64-x86_64-qt6 mingw-w64-x86_64-toolchain autoconf libtool automake-wrapper` -* Add MinGW binaries to the PATH: `echo 'PATH=/mingw64/bin:$PATH' >> ~/.bashrc` -* Add glslangValidator to the PATH: `echo 'PATH=$(readlink -e /c/VulkanSDK/*/Bin/):$PATH' >> ~/.bashrc` - -### Clone the eden repository with Git - - ```bash - git clone --recursive https://git.eden-emu.dev/eden-emu/eden - cd eden - ``` - -### Run the following commands to build eden (dynamically linked build) - -```bash -mkdir build && cd build -cmake -G "MSYS Makefiles" -DYUZU_TESTS=OFF .. -make -j$(nproc) -# test eden out with -./bin/eden.exe -``` - -* *(Note: This build is not a static build meaning that you need to include all of the DLLs with the .exe in order to use it!)* - -e.g. -```Bash -cp externals/ffmpeg-*/bin/*.dll bin/ -``` - -Bonus Note: Running programs from inside `MSYS2 MinGW x64` shell has a different %PATH% than directly from explorer. This different %PATH% has the locations of the other DLLs required. -![image](https://user-images.githubusercontent.com/190571/165000848-005e8428-8a82-41b1-bb4d-4ce7797cdac8.png) - - -### Building without Qt (Optional) - -Doesn't require the rather large Qt dependency, but you will lack a GUI frontend: - - * Pass the `-DENABLE_QT=no` flag to cmake - -## Method III: CLion Environment Setup - -### Minimal Dependencies - -To build eden, you need to install the following: - -* [CLion](https://www.jetbrains.com/clion/) - This IDE is not free; for a free alternative, check Method I -* [Vulkan SDK](https://vulkan.lunarg.com/sdk/home#windows) - Make sure to select the Latest SDK. - -### Cloning eden with CLion - -* Clone the Repository: - -![1](https://user-images.githubusercontent.com/42481638/216899046-0d41d7d6-8e4d-4ed2-9587-b57088af5214.png) -![2](https://user-images.githubusercontent.com/42481638/216899061-b2ea274a-e88c-40ae-bf0b-4450b46e9fea.png) -![3](https://user-images.githubusercontent.com/42481638/216899076-0e5988c4-d431-4284-a5ff-9ecff973db76.png) - - - -### Building & Setup - -* Once Cloned, You will be taken to a prompt like the image below: - -![4](https://user-images.githubusercontent.com/42481638/216899092-3fe4cec6-a540-44e3-9e1e-3de9c2fffc2f.png) - -* Set the settings to the image below: -* Change `Build type: Release` -* Change `Name: Release` -* Change `Toolchain Visual Studio` -* Change `Generator: Let CMake decide` -* Change `Build directory: build` - -![5](https://user-images.githubusercontent.com/42481638/216899164-6cee8482-3d59-428f-b1bc-e6dc793c9b20.png) - -* Click OK; now Clion will build a directory and index your code to allow for IntelliSense. Please be patient. -* Once this process has been completed (No loading bar bottom right), you can now build eden -* In the top right, click on the drop-down menu, select all configurations, then select eden - -![6](https://user-images.githubusercontent.com/42481638/216899226-975048e9-bc6d-4ec1-bc2d-bd8a1e15ed04.png) - -* Now run by clicking the play button or pressing Shift+F10, and eden will auto-launch once built. - -![7](https://user-images.githubusercontent.com/42481638/216899275-d514ec6a-e563-470e-81e2-3e04f0429b68.png) - -## Building from the command line with MSVC - -```cmd -git clone --recursive https://git.eden-emu.dev/eden-emu/eden -cd eden -mkdir build -cd build -cmake .. -G "Visual Studio 17 2022" -A x64 -cmake --build . --config Release -``` - -### Building with Scripts -A convenience script for building is provided in `.ci/windows/build.sh`. You must run this with Bash, e.g. Git Bash or MinGW TTY. To use this script, you must have windeployqt installed (usually bundled with Qt) and set the `WINDEPLOYQT` environment variable to its canonical Bash location, e.g. `WINDEPLOYQT="/c/Qt/6.9.1/msvc2022_64/bin/windeployqt6.exe" .ci/windows/build.sh`. - -Extra CMake flags should be placed in the arguments of the script. - -Additional environment variables can be used to control building: -- `BUILD_TYPE`: Sets the build type to use. Defaults to `Release` - -The following environment variables are boolean flags. Set to `true` to enable or `false` to disable: -- `DEVEL` (default FALSE): Disable Qt update checker -- `USE_WEBENGINE` (default FALSE): Enable Qt WebEngine -- `USE_MULTIMEDIA` (default TRUE): Enable Qt Multimedia -- `BUNDLE_QT` (default FALSE): Use bundled Qt - * Note that using system Qt requires you to include the Qt CMake directory in `CMAKE_PREFIX_PATH`, e.g. `.ci/windows/build.sh -DCMAKE_PREFIX_PATH=C:/Qt/6.9.0/msvc2022_64/lib/cmake/Qt6` - -After building, a zip can be packaged via `.ci/windows/package.sh`. Note that you must have 7-zip installed and in your PATH. The resulting zip will be placed into `artifacts` in the source directory. diff --git a/docs/build/macOS.md b/docs/build/macOS.md deleted file mode 100644 index 6cb62273cb..0000000000 --- a/docs/build/macOS.md +++ /dev/null @@ -1,105 +0,0 @@ -Please note this article is intended for development, and eden on macOS is not currently ready for regular use. - -This article was written for developers. eden support for macOS is not ready for casual use. - -## Method I: ninja ---- -If you are compiling on Intel Mac or are using a Rosetta Homebrew installation, you must replace all references of `/opt/homebrew` to `/usr/local`. - -Install dependencies from Homebrew: -```sh -brew install autoconf automake boost ccache ffmpeg fmt glslang hidapi libtool libusb lz4 ninja nlohmann-json openssl pkg-config qt@6 sdl2 speexdsp zlib zlib zstd cmake Catch2 molten-vk vulkan-loader -``` - -Clone the repo -```sh -git clone --recursive https://git.eden-emu.dev/eden-emu/eden - -cd eden -``` - -Build for release -```sh -mkdir build && cd build - -export Qt6_DIR="/opt/homebrew/opt/qt@6/lib/cmake" - -export LIBVULKAN_PATH=/opt/homebrew/lib/libvulkan.dylib - -cmake .. -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DYUZU_USE_BUNDLED_VCPKG=OFF -DYUZU_TESTS=OFF -DENABLE_WEB_SERVICE=ON -DENABLE_LIBUSB=OFF -DCLANG_FORMAT=ON -DSDL2_DISABLE_INSTALL=ON -DSDL_ALTIVEC=ON - -ninja -``` - -You may also want to include support for Discord Rich Presence by adding `-DUSE_DISCORD_PRESENCE=ON` after `cmake ..` - -Build with debug symbols (vcpkg is not currently used due to broken boost-context library): -```sh -mkdir build && cd build -export Qt6_DIR="/opt/homebrew/opt/qt@6/lib/cmake" -cmake .. -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DYUZU_USE_BUNDLED_VCPKG=OFF -DYUZU_TESTS=OFF -DENABLE_WEB_SERVICE=OFF -DENABLE_LIBUSB=OFF -ninja -``` - -Run the output: -``` -bin/eden.app/Contents/MacOS/eden -``` - -## Method II: Xcode - ---- -If you are compiling on Intel Mac or are using a Rosetta Homebrew installation, you must replace all references of `/opt/homebrew` to `/usr/local`. - -Install dependencies from Homebrew: -```sh -brew install autoconf automake boost ccache ffmpeg fmt glslang hidapi libtool libusb lz4 ninja nlohmann-json openssl pkg-config qt@6 sdl2 speexdsp zlib zlib zstd cmake Catch2 molten-vk vulkan-loader -``` - -Clone the repo -```sh -git clone --recursive https://git.eden-emu.dev/eden-emu/eden - -cd eden -``` - -Build for release -```sh -mkdir build && cd build - -export Qt6_DIR="/opt/homebrew/opt/qt@6/lib/cmake" - -export LIBVULKAN_PATH=/opt/homebrew/lib/libvulkan.dylib - -cmake .. -GXcode -DCMAKE_BUILD_TYPE=RelWithDebInfo -DYUZU_USE_BUNDLED_VCPKG=OFF -DYUZU_TESTS=OFF -DENABLE_WEB_SERVICE=ON -DENABLE_LIBUSB=OFF -DCLANG_FORMAT=ON -DSDL2_DISABLE_INSTALL=ON -DSDL_ALTIVEC=ON - -xcodebuild build -project eden.xcodeproj -scheme "eden" -configuration "RelWithDebInfo" -``` - -You may also want to include support for Discord Rich Presence by adding `-DUSE_DISCORD_PRESENCE=ON` after `cmake ..` - -Build with debug symbols (vcpkg is not currently used due to broken boost-context library): -```sh -mkdir build && cd build -export Qt6_DIR="/opt/homebrew/opt/qt@6/lib/cmake" -cmake .. -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DYUZU_USE_BUNDLED_VCPKG=OFF -DYUZU_TESTS=OFF -DENABLE_WEB_SERVICE=OFF -DENABLE_LIBUSB=OFF -ninja -``` - -Run the output: -``` -bin/eden.app/Contents/MacOS/eden -``` - ---- - -To run with MoltenVK, install additional dependencies: -```sh -brew install molten-vk vulkan-loader -``` - -Run with Vulkan loader path: -```sh -export LIBVULKAN_PATH=/opt/homebrew/lib/libvulkan.dylib -bin/eden.app/Contents/MacOS/eden -``` \ No newline at end of file diff --git a/docs/dynarmic/Design.md b/docs/dynarmic/Design.md new file mode 100644 index 0000000000..020cfd65bd --- /dev/null +++ b/docs/dynarmic/Design.md @@ -0,0 +1,612 @@ +# Dynarmic Design Documentation + +Dynarmic is a dynamic recompiler for the ARMv6K architecture. Future plans for dynarmic include +support for other versions of the ARM architecture, having a interpreter mode, and adding support +for other architectures. + +Users of this library interact with it primarily through the interface provided in +[`src/dynarmic/interface`](../src/dynarmic/interface). Users specify how dynarmic's CPU core interacts with +the rest of their system providing an implementation of the relevant `UserCallbacks` interface. +Users setup the CPU state using member functions of `Jit`, then call `Jit::Execute` to start CPU +execution. The callbacks defined on `UserCallbacks` may be called from dynamically generated code, +so users of the library should not depend on the stack being in a walkable state for unwinding. + +* A32: [`Jit`](../src/dynarmic/interface/A32/a32.h), [`UserCallbacks`](../src/dynarmic/interface/A32/config.h) +* A64: [`Jit`](../src/dynarmic/interface/A64/a64.h), [`UserCallbacks`](../src/dynarmic/interface/A64/config.h) + +Dynarmic reads instructions from memory by calling `UserCallbacks::MemoryReadCode`. These +instructions then pass through several stages: + +1. Decoding (Identifying what type of instruction it is and breaking it up into fields) +2. Translation (Generation of high-level IR from the instruction) +3. Optimization (Eliminiation of redundant microinstructions, other speed improvements) +4. Emission (Generation of host-executable code into memory) +5. Execution (Host CPU jumps to the start of emitted code and runs it) + +Using the A32 frontend with the x64 backend as an example: + +* Decoding is done by [double dispatch](https://en.wikipedia.org/wiki/Visitor_pattern) in + [`src/frontend/A32/decoder/{arm.h,thumb16.h,thumb32.h}`](../src/dynarmic/frontend/A32/decoder/). +* Translation is done by the visitors in [`src/dynarmic/frontend/A32/translate/translate_{arm,thumb}.cpp`](../src/dynarmic/frontend/A32/translate/). + The function [`Translate`](../src/dynarmic/frontend/A32/translate/translate.h) takes a starting memory location, + some CPU state, and memory reader callback and returns a basic block of IR. +* The IR can be found under [`src/frontend/ir/`](../src/dynarmic/ir/). +* Optimizations can be found under [`src/ir_opt/`](../src/dynarmic/ir/opt/). +* Emission is done by `EmitX64` which can be found in [`src/dynarmic/backend/x64/emit_x64.{h,cpp}`](../src/dynarmic/backend/x64/). +* Execution is performed by calling `BlockOfCode::RunCode` in [`src/dynarmic/backend/x64/block_of_code.{h,cpp}`](../src/dynarmic/backend/x64/). + +## Decoder + +The decoder is a double dispatch decoder. Each instruction is represented by a line in the relevant +instruction table. Here is an example line from [`arm.h`](../src/dynarmic/frontend/A32/decoder/arm.h): + + INST(&V::arm_ADC_imm, "ADC (imm)", "cccc0010101Snnnnddddrrrrvvvvvvvv") + +(Details on this instruction can be found in section A8.8.1 of the ARMv7-A manual. This is encoding A1.) + +The first argument to INST is the member function to call on the visitor. The second argument is a user-readable +instruction name. The third argument is a bit-representation of the instruction. + +### Instruction Bit-Representation + +Each character in the bitstring represents a bit. A `0` means that that bitposition **must** contain a zero. A `1` +means that that bitposition **must** contain a one. A `-` means we don't care about the value at that bitposition. +A string of the same character represents a field. In the above example, the first four bits `cccc` represent the +four-bit-long cond field of the ARM Add with Carry (immediate) instruction. + +The visitor would have to have a function named `arm_ADC_imm` with 6 arguments, one for each field (`cccc`, `S`, +`nnnn`, `dddd`, `rrrr`, `vvvvvvvv`). If there is a mismatch of field number with argument number, a compile-time +error results. + +## Translator + +The translator is a visitor that uses the decoder to decode instructions. The translator generates IR code with the +help of the [`IREmitter` class](../src/dynarmic/ir/ir_emitter.h). An example of a translation function follows: + + bool ArmTranslatorVisitor::arm_ADC_imm(Cond cond, bool S, Reg n, Reg d, int rotate, Imm8 imm8) { + u32 imm32 = ArmExpandImm(rotate, imm8); + + // ADC{S} , , # + + if (ConditionPassed(cond)) { + auto result = ir.AddWithCarry(ir.GetRegister(n), ir.Imm32(imm32), ir.GetCFlag()); + + if (d == Reg::PC) { + ASSERT(!S); + ir.ALUWritePC(result.result); + ir.SetTerm(IR::Term::ReturnToDispatch{}); + return false; + } + + ir.SetRegister(d, result.result); + if (S) { + ir.SetNFlag(ir.MostSignificantBit(result.result)); + ir.SetZFlag(ir.IsZero(result.result)); + ir.SetCFlag(result.carry); + ir.SetVFlag(result.overflow); + } + } + + return true; + } + +where `ir` is an instance of the `IRBuilder` class. Each member function of the `IRBuilder` class constructs +an IR microinstruction. + +## Intermediate Representation + +Dynarmic uses an ordered SSA intermediate representation. It is very vaguely similar to those found in other +similar projects like redream, nucleus, and xenia. Major differences are: (1) the abundance of context +microinstructions whereas those projects generally only have two (`load_context`/`store_context`), (2) the +explicit handling of flags as their own values, and (3) very different basic block edge handling. + +The intention of the context microinstructions and explicit flag handling is to allow for future optimizations. The +differences in the way edges are handled are a quirk of the current implementation and dynarmic will likely add a +function analyser in the medium-term future. + +Dynarmic's intermediate representation is typed. Each microinstruction may take zero or more arguments and may +return zero or more arguments. A subset of the microinstructions available is documented below. + +A complete list of microinstructions can be found in [src/dynarmic/ir/opcodes.inc](../src/dynarmic/ir/opcodes.inc). + +The below lists some commonly used microinstructions. + +### Immediate: Imm{U1,U8,U32,RegRef} + + ImmU1(u1 value) + ImmU8(u8 value) + ImmU32(u32 value) + ImmRegRef(Arm::Reg gpr) + +These instructions take a `bool`, `u8` or `u32` value and wraps it up in an IR node so that they can be used +by the IR. + +### Context: {Get,Set}Register + + GetRegister( reg) + SetRegister( reg, value) + +Gets and sets `JitState::Reg[reg]`. Note that `SetRegister(Arm::Reg::R15, _)` is disallowed by IRBuilder. +Use `{ALU,BX}WritePC` instead. + +Note that sequences like `SetRegister(R4, _)` followed by `GetRegister(R4)` are +optimized away. + +### Context: {Get,Set}{N,Z,C,V}Flag + + GetNFlag() + SetNFlag( value) + GetZFlag() + SetZFlag( value) + GetCFlag() + SetCFlag( value) + GetVFlag() + SetVFlag( value) + +Gets and sets bits in `JitState::Cpsr`. Similarly to registers redundant get/sets are optimized away. + +### Context: BXWritePC + + BXWritePC( value) + +This should probably be the last instruction in a translation block unless you're doing something fancy. + +This microinstruction sets R15 and CPSR.T as appropriate. + +### Callback: CallSupervisor + + CallSupervisor( svc_imm32) + +This should probably be the last instruction in a translation block unless you're doing something fancy. + +### Calculation: LastSignificant{Half,Byte} + + LeastSignificantHalf( value) + LeastSignificantByte( value) + +Extract a u16 and u8 respectively from a u32. + +### Calculation: MostSignificantBit, IsZero + + MostSignificantBit( value) + IsZero( value) + +These are used to implement ARM flags N and Z. These can often be optimized away by the backend into a host flag read. + +### Calculation: LogicalShiftLeft + + ( result, carry_out) LogicalShiftLeft( operand, shift_amount, carry_in) + +Pseudocode: + + if shift_amount == 0: + return (operand, carry_in) + + x = operand * (2 ** shift_amount) + result = Bits<31,0>(x) + carry_out = Bit<32>(x) + + return (result, carry_out) + +This follows ARM semantics. Note `shift_amount` is not masked to 5 bits (like `SHL` does on x64). + +### Calculation: LogicalShiftRight + + ( result, carry_out) LogicalShiftLeft( operand, shift_amount, carry_in) + +Pseudocode: + + if shift_amount == 0: + return (operand, carry_in) + + x = ZeroExtend(operand, from_size: 32, to_size: shift_amount+32) + result = Bits(x) + carry_out = Bit(x) + + return (result, carry_out) + +This follows ARM semantics. Note `shift_amount` is not masked to 5 bits (like `SHR` does on x64). + +### Calculation: ArithmeticShiftRight + + ( result, carry_out) ArithmeticShiftRight( operand, shift_amount, carry_in) + +Pseudocode: + + if shift_amount == 0: + return (operand, carry_in) + + x = SignExtend(operand, from_size: 32, to_size: shift_amount+32) + result = Bits(x) + carry_out = Bit(x) + + return (result, carry_out) + +This follows ARM semantics. Note `shift_amount` is not masked to 5 bits (like `SAR` does on x64). + +### Calcuation: RotateRight + + ( result, carry_out) RotateRight( operand, shift_amount, carry_in) + +Pseudocode: + + if shift_amount == 0: + return (operand, carry_in) + + shift_amount %= 32 + result = (operand << shift_amount) | (operand >> (32 - shift_amount)) + carry_out = Bit<31>(result) + + return (result, carry_out) + +### Calculation: AddWithCarry + + ( result, carry_out, overflow) AddWithCarry( a, b, carry_in) + +a + b + carry_in + +### Calculation: SubWithCarry + + ( result, carry_out, overflow) SubWithCarry( a, b, carry_in) + +This has equivalent semantics to `AddWithCarry(a, Not(b), carry_in)`. + +a - b - !carry_in + +### Calculation: And + + And( a, b) + +### Calculation: Eor + + Eor( a, b) + +Exclusive OR (i.e.: XOR) + +### Calculation: Or + + Or( a, b) + +### Calculation: Not + + Not( value) + +### Callback: {Read,Write}Memory{8,16,32,64} + +```c++ + ReadMemory8( vaddr) + ReadMemory16( vaddr) + ReadMemory32( vaddr) + ReadMemory64( vaddr) + WriteMemory8( vaddr, value_to_store) + WriteMemory16( vaddr, value_to_store) + WriteMemory32( vaddr, value_to_store) + WriteMemory64( vaddr, value_to_store) +``` + +Memory access. + +### Terminal: ReturnToDispatch + +```c++ +SetTerm(IR::Term::ReturnToDispatch{}) +``` + +This terminal instruction returns control to the dispatcher. +The dispatcher will use the value in R15 to determine what comes next. + +### Terminal: LinkBlock + +```c++ +SetTerm(IR::Term::LinkBlock{next}) +``` + +This terminal instruction jumps to the basic block described by `next` if we have enough +cycles remaining. If we do not have enough cycles remaining, we return to the +dispatcher, which will return control to the host. + +### Terminal: LinkBlockFast + +```c++ +SetTerm(IR::Term::LinkBlockFast{next}) +``` + +This terminal instruction jumps to the basic block described by `next` unconditionally. +This promises guarantees that must be held at runtime - i.e that the program wont hang, + +### Terminal: PopRSBHint + +```c++ +SetTerm(IR::Term::PopRSBHint{}) +``` + +This terminal instruction checks the top of the Return Stack Buffer against R15. +If RSB lookup fails, control is returned to the dispatcher. +This is an optimization for faster function calls. A backend that doesn't support +this optimization or doesn't have a RSB may choose to implement this exactly as +`ReturnToDispatch`. + +### Terminal: If + +```c++ +SetTerm(IR::Term::If{cond, term_then, term_else}) +``` + +This terminal instruction conditionally executes one terminal or another depending +on the run-time state of the ARM flags. + +# Register Allocation (x64 Backend) + +`HostLoc`s contain values. A `HostLoc` ("host value location") is either a host CPU register or a host spill location. + +Values once set cannot be changed. Values can however be moved by the register allocator between `HostLoc`s. This is +handled by the register allocator itself and code that uses the register allocator need not and should not move values +between registers. + +The register allocator is based on three concepts: `Use`, `Def` and `Scratch`. + +* `Use`: The use of a value. +* `Define`: The definition of a value, this is the only time when a value is set. +* `Scratch`: Allocate a register that can be freely modified as one wishes. + +Note that `Use`ing a value decrements its `use_count` by one. When the `use_count` reaches zero the value is discarded and no longer exists. + +The member functions on `RegAlloc` are just a combination of the above concepts. + +The following registers are reserved for internal use and should NOT participate in register allocation: +- `%xmm0`, `%xmm1`, `%xmm2`: Used as scratch in exclusive memory access. +- `%rsp`: Stack pointer. +- `%r15`: JIT pointer +- `%r14`: Page table pointer. +- `%r13`: Fastmem pointer. + +The layout convenes `%r15` as the JIT state pointer - while it may be tempting to turn it into a synthetic pointer, keeping an entire register (out of 12 available) is preferable over inlining a directly computed immediate. + +Do NEVER modify `%r15`, we must make it clear that this register is "immutable" for the entirety of the JIT block duration. + +### `Scratch` + +```c++ +Xbyak::Reg64 ScratchGpr(HostLocList desired_locations = any_gpr); +Xbyak::Xmm ScratchXmm(HostLocList desired_locations = any_xmm); +``` + +At runtime, allocate one of the registers in `desired_locations`. You are free to modify the register. The register is discarded at the end of the allocation scope. + +### Pure `Use` + +```c++ +Xbyak::Reg64 UseGpr(Argument& arg); +Xbyak::Xmm UseXmm(Argument& arg); +OpArg UseOpArg(Argument& arg); +void Use(Argument& arg, HostLoc host_loc); +``` + +At runtime, the value corresponding to `arg` will be placed a register. The actual register is determined by +which one of the above functions is called. `UseGpr` places it in an unused GPR, `UseXmm` places it +in an unused XMM register, `UseOpArg` might be in a register or might be a memory location, and `Use` allows +you to specify a specific register (GPR or XMM) to use. + +This register **must not** have it's value changed. + +### `UseScratch` + +```c++ +Xbyak::Reg64 UseScratchGpr(Argument& arg); +Xbyak::Xmm UseScratchXmm(Argument& arg); +void UseScratch(Argument& arg, HostLoc host_loc); +``` + +At runtime, the value corresponding to `arg` will be placed a register. The actual register is determined by +which one of the above functions is called. `UseScratchGpr` places it in an unused GPR, `UseScratchXmm` places it +in an unused XMM register, and `UseScratch` allows you to specify a specific register (GPR or XMM) to use. + +The return value is the register allocated to you. + +You are free to modify the value in the register. The register is discarded at the end of the allocation scope. + +### `Define` as register + +A `Define` is the defintion of a value. This is the only time when a value may be set. + +```c++ +void DefineValue(IR::Inst* inst, const Xbyak::Reg& reg); +``` + +By calling `DefineValue`, you are stating that you wish to define the value for `inst`, and you have written the +value to the specified register `reg`. + +### `Define`ing as an alias of a different value + +Adding a `Define` to an existing value. + +```c++ +void DefineValue(IR::Inst* inst, Argument& arg); +``` + +You are declaring that the value for `inst` is the same as the value for `arg`. No host machine instructions are +emitted. + +## When to use each? + +* Prefer `Use` to `UseScratch` where possible. +* Prefer the `OpArg` variants where possible. +* Prefer to **not** use the specific `HostLoc` variants where possible. + +# Return Stack Buffer Optimization (x64 Backend) + +One of the optimizations that dynarmic does is block-linking. Block-linking is done when +the destination address of a jump is available at JIT-time. Instead of returning to the +dispatcher at the end of a block we can perform block-linking: just jump directly to the +next block. This is beneficial because returning to the dispatcher can often be quite +expensive. + +What should we do in cases when we can't predict the destination address? The eponymous +example is when executing a return statement at the end of a function; the return address +is not statically known at compile time. + +We deal with this by using a return stack buffer: When we execute a call instruction, +we push our prediction onto the RSB. When we execute a return instruction, we pop a +prediction off the RSB. If the prediction is a hit, we immediately jump to the relevant +compiled block. Otherwise, we return to the dispatcher. + +This is the essential idea behind this optimization. + +## `UniqueHash` + +One complication dynarmic has is that a compiled block is not uniquely identifiable by +the PC alone, but bits in the FPSCR and CPSR are also relevant. We resolve this by +computing a 64-bit `UniqueHash` that is guaranteed to uniquely identify a block. + +```c++ +u64 LocationDescriptor::UniqueHash() const { + // This value MUST BE UNIQUE. + // This calculation has to match up with EmitX64::EmitTerminalPopRSBHint + u64 pc_u64 = u64(arm_pc) << 32; + u64 fpscr_u64 = u64(fpscr.Value()); + u64 t_u64 = cpsr.T() ? 1 : 0; + u64 e_u64 = cpsr.E() ? 2 : 0; + return pc_u64 | fpscr_u64 | t_u64 | e_u64; +} +``` + +## Our implementation isn't actually a stack + +Dynarmic's RSB isn't actually a stack. It was implemented as a ring buffer because +that showed better performance in tests. + +### RSB Structure + +The RSB is implemented as a ring buffer. `rsb_ptr` is the index of the insertion +point. Each element in `rsb_location_descriptors` is a `UniqueHash` and they +each correspond to an element in `rsb_codeptrs`. `rsb_codeptrs` contains the +host addresses for the corresponding the compiled blocks. + +`RSBSize` was chosen by performance testing. Note that this is bigger than the +size of the real RSB in hardware (which has 3 entries). Larger RSBs than 8 +showed degraded performance. + +```c++ +struct JitState { + // ... + + static constexpr size_t RSBSize = 8; // MUST be a power of 2. + u32 rsb_ptr = 0; + std::array rsb_location_descriptors; + std::array rsb_codeptrs; + void ResetRSB(); + + // ... +}; +``` + +### RSB Push + +We insert our prediction at the insertion point iff the RSB doesn't already +contain a prediction with the same `UniqueHash`. + +```c++ +void EmitX64::EmitPushRSB(IR::Block&, IR::Inst* inst) { + using namespace Xbyak::util; + + ASSERT(inst->GetArg(0).IsImmediate()); + u64 imm64 = inst->GetArg(0).GetU64(); + + Xbyak::Reg64 code_ptr_reg = reg_alloc.ScratchGpr(code, {HostLoc::RCX}); + Xbyak::Reg64 loc_desc_reg = reg_alloc.ScratchGpr(code); + Xbyak::Reg32 index_reg = reg_alloc.ScratchGpr(code).cvt32(); + u64 code_ptr = unique_hash_to_code_ptr.find(imm64) != unique_hash_to_code_ptr.end() + ? u64(unique_hash_to_code_ptr[imm64]) + : u64(code->GetReturnFromRunCodeAddress()); + + code->mov(index_reg, dword[code.ABI_JIT_PTR + offsetof(JitState, rsb_ptr)]); + code->add(index_reg, 1); + code->and_(index_reg, u32(JitState::RSBSize - 1)); + + code->mov(loc_desc_reg, u64(imm64)); + CodePtr patch_location = code->getCurr(); + patch_unique_hash_locations[imm64].emplace_back(patch_location); + code->mov(code_ptr_reg, u64(code_ptr)); // This line has to match up with EmitX64::Patch. + code->EnsurePatchLocationSize(patch_location, 10); + + Xbyak::Label label; + for (size_t i = 0; i < JitState::RSBSize; ++i) { + code->cmp(loc_desc_reg, qword[code.ABI_JIT_PTR + offsetof(JitState, rsb_location_descriptors) + i * sizeof(u64)]); + code->je(label, code->T_SHORT); + } + + code->mov(dword[code.ABI_JIT_PTR + offsetof(JitState, rsb_ptr)], index_reg); + code->mov(qword[code.ABI_JIT_PTR + index_reg.cvt64() * 8 + offsetof(JitState, rsb_location_descriptors)], loc_desc_reg); + code->mov(qword[code.ABI_JIT_PTR + index_reg.cvt64() * 8 + offsetof(JitState, rsb_codeptrs)], code_ptr_reg); + code->L(label); +} +``` + +In pseudocode: + +```c++ + for (i := 0 .. RSBSize-1) + if (rsb_location_descriptors[i] == imm64) + goto label; + rsb_ptr++; + rsb_ptr %= RSBSize; + rsb_location_desciptors[rsb_ptr] = imm64; //< The UniqueHash + rsb_codeptr[rsb_ptr] = /* codeptr corresponding to the UniqueHash */; +label: +``` + +## RSB Pop + +To check if a predicition is in the RSB, we linearly scan the RSB. + +```c++ +void EmitX64::EmitTerminalPopRSBHint(IR::Term::PopRSBHint, IR::LocationDescriptor initial_location) { + using namespace Xbyak::util; + + // This calculation has to match up with IREmitter::PushRSB + code->mov(ecx, MJitStateReg(Arm::Reg::PC)); + code->shl(rcx, 32); + code->mov(ebx, dword[code.ABI_JIT_PTR + offsetof(JitState, FPSCR_mode)]); + code->or_(ebx, dword[code.ABI_JIT_PTR + offsetof(JitState, CPSR_et)]); + code->or_(rbx, rcx); + + code->mov(rax, u64(code->GetReturnFromRunCodeAddress())); + for (size_t i = 0; i < JitState::RSBSize; ++i) { + code->cmp(rbx, qword[code.ABI_JIT_PTR + offsetof(JitState, rsb_location_descriptors) + i * sizeof(u64)]); + code->cmove(rax, qword[code.ABI_JIT_PTR + offsetof(JitState, rsb_codeptrs) + i * sizeof(u64)]); + } + + code->jmp(rax); +} +``` + +In pseudocode: + +```c++ +rbx := ComputeUniqueHash() +rax := ReturnToDispatch +for (i := 0 .. RSBSize-1) + if (rbx == rsb_location_descriptors[i]) + rax = rsb_codeptrs[i] +goto rax +``` + +# Fast memory (Fastmem) + +The main way of accessing memory in JITed programs is via an invoked function, say "Read()" and "Write()". On our translator, such functions usually take a sizable amounts of code space (push + call + pop). Trash the i-cache (due to an indirect call) and overall make code emission more bloated. + +The solution? Delegate invalid accesses to a dedicated arena, similar to a swap. The main idea behind such mechanism is to allow the OS to transmit page faults from invalid accesses into the JIT translator directly, bypassing address space calls, while this sacrifices i-cache coherency, it allows for smaller code-size and "faster" throguhput. + +Many kernels however, do not support fast signal dispatching (Solaris, OpenBSD, FreeBSD). Only Linux and Windows support relatively "fast" signal dispatching. Hence this feature is better suited for them only. + +![Host to guest translation](./HostToGuest.svg) + +![Fastmem translation](./Fastmem.svg) + +In x86_64 for example, when a page fault occurs, the CPU will transmit via control registers and the stack (see `IRETQ`) the appropriate arguments for a page fault handler, the OS then will transform that into something that can be sent into userspace. + +Most modern OSes implement kernel-page-table-isolation, which means a set of system calls will invoke a context switch (not often used syscalls), whereas others are handled by the same process address space (the smaller kernel portion, often used syscalls) without needing a context switch. This effect can be negated on systems with PCID (up to 4096 unique IDs). + +Signal dispatching takes a performance hit from reloading `%cr3` - but Linux does something more clever to avoid reloads: VDSO will take care of the entire thing in the same address space. Making dispatching as costly as an indirect call - without the hazards of increased code size. + +The main downside from this is the constant i-cache trashing and pipeline hazards introduced by the VDSO signal handlers. However on most benchmarks fastmem does perform faster than without (Linux only). This also abuses the fact of continous address space emulation by using an arena - which can then be potentially transparently mapped into a hugepage, reducing TLB walk times. diff --git a/docs/dynarmic/Fastmem.svg b/docs/dynarmic/Fastmem.svg new file mode 100644 index 0000000000..a3ed0bb68b --- /dev/null +++ b/docs/dynarmic/Fastmem.svg @@ -0,0 +1,4 @@ + + + +
Emulator
Address Space
Guest Address Space
SIGSEGV Trap
Fastmem
Only needs to linearly offset from fastmem arena
Less codegen (SIGSEGV traps)
Is fast only if SIGSEGV handlers are sufficiently fast
\ No newline at end of file diff --git a/docs/dynarmic/HostToGuest.svg b/docs/dynarmic/HostToGuest.svg new file mode 100644 index 0000000000..6a15a44b46 --- /dev/null +++ b/docs/dynarmic/HostToGuest.svg @@ -0,0 +1,4 @@ + + + +
Emulator
Address Space
Guest Address Space
Resolver
Host to Guest translation
Looks up correct PTE
Translates each address 
Is slow
\ No newline at end of file diff --git a/src/dynarmic/README.md b/docs/dynarmic/README.md similarity index 92% rename from src/dynarmic/README.md rename to docs/dynarmic/README.md index 6976f29c34..bfba7c9cb0 100644 --- a/src/dynarmic/README.md +++ b/docs/dynarmic/README.md @@ -49,7 +49,7 @@ Important API Changes in v6.x Series Documentation ------------- -Design documentation can be found at [docs/Design.md](docs/Design.md). +Design documentation can be found at [./Design.md](./Design.md). Usage Example @@ -117,11 +117,6 @@ public: MemoryWrite32(vaddr + 4, u32(value >> 32)); } - void InterpreterFallback(u32 pc, size_t num_instructions) override { - // This is never called in practice. - std::terminate(); - } - void CallSVC(u32 swi) override { // Do something. } @@ -389,30 +384,3 @@ THE POSSIBILITY OF SUCH DAMAGE. 損害、間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害について、 一切責任を負わないものとします。 ``` - -### zydis - -``` -The MIT License (MIT) - -Copyright (c) 2014-2020 Florian Bernd -Copyright (c) 2014-2020 Joel Höner - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -``` diff --git a/docs/img/creator-1.png b/docs/img/creator-1.png new file mode 100644 index 0000000000..3e43ee7eca Binary files /dev/null and b/docs/img/creator-1.png differ diff --git a/docs/policies/AI.md b/docs/policies/AI.md new file mode 100644 index 0000000000..719548f4c8 --- /dev/null +++ b/docs/policies/AI.md @@ -0,0 +1,112 @@ +# AI Policy + +Use at your peril. + +AI is a *tool*, not a replacement or catch-all solution. It is generally okay at a few *very specific* use cases: + +- Automation of tedious changes where you have already made the pattern clear and done the necessary groundwork. +- Conversion of code from one paradigm to another. + +For everything else, AI is subpar at best, and actively harmful at worst. In general, you are **heavily** encouraged to not use AI at all. + +## Why? + +AI is notorious for hallucinating facts out of thin air and sometimes outright lying to users. Additionally, code written by LLMs is often needlessly verbose and horrifically inefficient (not to mention the rather ridiculous level of over-commenting). The end result is often one of three things: + +- Completely nonfunctional code +- Code that works, but is extraordinarily verbose or not nearly as efficient as it can be +- Code that works well and is written well, but solves a different problem than was intended, or solves the same problem but in a completely incorrect way that will break other things horribly. + +Human-written code will, without exception, always be of infinitely higher quality when properly researched and implemented by someone familiar with *both* the surrounding code and the programming language in use. LLMs may produce a "good enough" result, but this result is often subpar. + +**All code is held under a STRICT STANDARD OF EXCELLENCE**. AI code is no different, and since it often produces subpar or outright terrible code, it will often fail to meet this excellence standard. + +On a lesser-known note, LLM outputs often contain unicode symbols such as emojis or the arrow symbol. Please don't put Unicode symbols in your code. It messes with many an IDE, and the three people viewing your code on Lynx will be very unhappy. + +**Learn to code**. It's worth it, we promise! + +## Acceptable Use + +As stated previously, AI is good in a few *very specific* cases. In these cases, it's usually fine to use AI, as long as you **explicitly provide notice that it was used**. + +- Anything directly outside of the realm of the code written in your PR or patch is none of our business. + - This primarily covers research. + - However, we *still* strongly discourage this for the reasons mentioned above. +- Assistance with cleanups, and minor nitpicks/optimizations. + - This is still discouraged, but it's okay to occasionally use LLMs to catch any minor mistakes you made in your code. +- Debugging + - In general, LLMs are not good at debugging, but if you solve a bug you're facing with help from an AI, and said fix **works properly**, then that's fine. + +## Unacceptable Use + +Well, everything else. But here are a few examples: + +- Commit messages + - LLMs are absolutely horrible at this. They are needlessly verbose, almost never catch the actual intent of the commit, and will almost always hallucinate false information about said changes. + - See the addendum for an example +- Solving problems + - Slapping a few files and a "please fix bug XYZ" into an LLM is a recipe for disaster that will pretty much never work. +- Fully AI-generated code + - This shouldn't need explaining. Do not do this under any circumstance, especially if you don't actually understand what's going on. +- Writing code based on pseudo-instructions + - If you don't know how to write code, don't. If you've figured out the root cause (preferably without feeding random files into an LLM) and actively know what's going on, provide information to other developers or friends of yours who have knowledge of the language and/or the codebase. + +## Addendum: Commit Messages + +The patchset for pull request [#3422](https://git.eden-emu.dev/eden-emu/eden/pulls/3422) was fed into several LLMs to generate a commit message. All of them sucked, and not a single one caught on to what the commit actually did. For example: + +```txt +profile_manager: Refactor user deletion to use index instead of UUID + +This commit improves the user profile deletion flow in the following ways: + +1. **UI layer (ConfigureProfileManager)**: + - Replaces UUID-based deletion with index-based deletion + - Passes the selected row index from the tree view to the confirmation dialog + - Emits deleteUser(int index) signal from ConfigureProfileManagerDeleteDialog + - Removes lambda capture and std::function callback in favor of direct signal/slot connection + +2. **Delete dialog**: + - Changes SetInfo() signature to accept index instead of accept callback + - Stores index internally and emits it via deleteUser signal on acceptance + +3. **Core ProfileManager**: + - Refactors RemoveUser(UUID) → RemoveProfileAtIndex(index) + - Removes duplicated stable_partition + save logic from RemoveUser() + - Centralizes profile removal and save-file writing in RemoveProfileAtIndex() + +4. **Minor follow-up**: + - Adds profile_manager.ResetUserSaveFile() call in PopulateUserList() to ensure consistent state when refreshing the user list + +These changes eliminate redundant code, reduce the risk of UUID → index mismatch bugs, and make the deletion path more straightforward and maintainable. + +Fixes: potential inconsistency when user order changes between UI and backend +``` + +This is: + +- Needlessly verbose (nobody cares about most of these details) +- Doesn't address the actual purpose of the PR (fixing a double-deletion bug in the profile manager) +- Has unicode arrows +- Uses overly corporate and, well, robotic language + +As another example: + +```txt +profile(manager/ui): switch to index-based deletion and unify removal logic + +- Make ConfigureProfileManagerDeleteDialog emit a deleteUser(int) signal instead of taking a callback. Store the target index in the dialog (m_index) and emit it on acceptance. +- Change ConfigureProfileManager to pass an index to SetInfo and to accept an index in DeleteUser. Wire the dialog signal to the new DeleteUser slot. +- Update headers: add the signal and m_index, add TODO to move dialog to a .ui file, and update slot/signature declarations. +- Add ProfileManager::RemoveProfileAtIndex(std::size_t) and refactor RemoveUser(UUID) to call RemoveProfileAtIndex to avoid duplicated removal logic. Ensure the removal path marks saves as needed and writes the user save file. +- Ensure the profile list updates immediately after deletes by calling profile_manager.ResetUserSaveFile() when populating the user list (qlaunch fix). +- Misc: update SPDX copyright year and fix build breakages caused by the API changes. + +This consolidates profile removal behavior, fixes potential race conditions in the profile dialog, and removes duplicated removal code. +``` + +This has all of the same problems as the other one. Needlessly verbose, doesn't address *what* it actually fixes ("consolidates profile removal behavior"... okay, why? What does it fix?), etc. It even has the bonus of totally hallucinating the addition of a method! + +On a more "philosophical" note, LLMs tend to be geared towards *corporate language*, as that's what they're trained on. This is why AI-generated commit messages feel like "word salad", and typically pad out the commit message to make it *look* like a lot of things were changed (trust me, it's like that in the corporate world). They typically also drift towards unneeded buzzwords and useless implementation details. + +**Don't use AI for commit messages**. diff --git a/docs/policies/Coding.md b/docs/policies/Coding.md new file mode 100644 index 0000000000..c50f93b142 --- /dev/null +++ b/docs/policies/Coding.md @@ -0,0 +1,126 @@ +# Coding guidelines + +These are mostly "suggestions", if you feel like your code is readable, comprehensible to others; and most importantly doesn't result in unreadable spaghetti you're fine to go. + +But for new developers you may find that following these guidelines will make everything x10 easier. + +## Naming conventions + +Simply put, types/classes are named as `PascalCase`, same for methods and functions like `AddElement`. Variables are named `like_this_snake_case` and constants are `IN_SCREAMING_CASE`. + +Except for Qt MOC where `functionName` is preferred. + +Template typenames prefer short names like `T`, `I`, `U`, if a longer name is required either `Iterator` or `perform_action` are fine as well. Do not use names like `SS` as systems like solaris define it for registers, in general do not use any of the following for short names: + +- `SS`, `DS`, `GS`, `FS`: Segment registers, defined by Solaris `` +- `EAX`, `EBX`, `ECX`, `EDX`, `ESI`, `EDI`, `ESP`, `EBP`, `EIP`: Registers, defined by Solaris. +- `X`: Defined by some utility headers, avoid. +- `_`: Defined by gettext, avoid. +- `N`, `M`, `S`: Preferably don't use this for types, use it for numeric constants. +- `TR`: Used by some weird `` whom define the Task Register as a logical register to provide to the user... (Need to remember which OS in specific). + +Macros must always be in `SCREAMING_CASE`. Do not use short letter macros as systems like Solaris will conflict with them; a good rule of thumb is >5 characters per macro - i.e `THIS_MACRO_IS_GOOD`, `AND_ALSO_THIS_ONE`. + +Try not using hungarian notation, if you're able. + +## Formatting + +Formatting is extremelly lax, the general rule of thumb is: Don't add new lines just to increase line count. The less lines we have to look at, the better. This means also packing densely your code while not making it a clusterfuck. Strike a balance of "this is a short and comprehensible piece of code" and "my eyes are actually happy to see this!". Don't just drop the entire thing in a single line and call it "dense code", that's just spaghetti posing as code. In general, be mindful of what other devs need to look at. + +Do not put if/while/etc braces after lines: + +```c++ +// no dont do this +// this is more lines of code for no good reason (why braces need their separate lines?) +// and those take space in someone's screen, cumulatively +if (thing) +{ //<-- + some(); // ... +} //<-- 2 lines of code for basically "opening" and "closing" an statment + +// do this +if (thing) { //<-- [...] and with your brain you can deduce it's this piece of code + // that's being closed + some(); // ... +} //<-- only one line, and it's clearer since you know its closing something [...] + +// or this, albeit the extra line isn't needed (at your discretion of course) +if (thing) + some(); // ... + +// this is also ok, keeps things in one line and makes it extremely clear +if (thing) some(); + +// NOT ok, don't be "clever" and use the comma operator to stash a bunch of statments +// in a single line, doing this will definitely ruin someone's day - just do the thing below +// vvv +if (thing) some(), thing(), a2(a1(), y1(), j1()), do_complex_shit(wa(), wo(), ploo()); +// ... and in general don't use the comma operator for "multiple statments", EXCEPT if you think +// that it makes the code more readable (the situation may be rare however) + +// Wow so much clearer! Now I can actually see what each statment is meant to do! +if (thing) { + some(); + thing(); + a2(a1(), y1(), j1()); + do_complex_shit(wa(), wo(), ploo()); +} +``` + +Brace rules are lax, if you can get the point across, do it: + +```c++ +// this is fine +do { + if (thing) { + return 0; + } +} while (other); + +// this is also ok --- albeit a bit more dense +do if (thing) return 0; while (other); + +// ok as well +do { + if (thing) return 0; +} while (other); +``` + +There is no 80-column limit but preferably be mindful of other developer's readability (like don't just put everything onto one line). + +```c++ +// someone is going to be mad due to this +SDL_AudioSpec obtained; +device_name.empty() ? device = SDL_OpenAudioDevice(nullptr, capture, &spec, &obtained, false) : device = SDL_OpenAudioDevice(device_name.c_str(), capture, &spec, &obtained, false); + +// maybe consider this +SDL_AudioSpec obtained; +if (device_name.empty()) { + device = SDL_OpenAudioDevice(nullptr, capture, &spec, &obtained, false); +} else { + device = SDL_OpenAudioDevice(device_name.c_str(), capture, &spec, &obtained, false); +} + +// or this is fine as well +SDL_AudioSpec obtained; +device = SDL_OpenAudioDevice(device_name.empty() ? nullptr : device_name.c_str(), capture, &spec, &obtained, false); +``` + +A note about operators: Use them sparingly, yes, the language is lax on them, but some usages can be... tripping to say the least. + +```c++ +a, b, c; //<-- NOT OK multiple statments with comma operator is definitely a recipe for disaster +return c ? a : b; //<-- OK ternaries at end of return statments are clear and fine +return a, b; //<-- NOT OK return will take value of `b` but also evaluate `a`, just use a separate statment +void f(int a[]) //<-- OK? if you intend to use the pointer as an array, otherwise just mark it as * +``` + +And about templates, use them sparingly, don't just do meta-templating for the sake of it, do it when you actually need it. This isn't a competition to see who can make the most complicated and robust meta-templating system. Just use what works, and preferably stick to the standard libary instead of reinventing the wheel. Additionally: + +```c++ +// NOT OK This will create (T * N * C * P) versions of the same function. DO. NOT. DO. THIS. +template inline void what() const noexcept; + +// OK use parameters like a normal person, don't be afraid to use them :) +template inline void what(size_t n, size_t c, size_t p) const noexcept; +``` diff --git a/docs/policies/Release.md b/docs/policies/Release.md new file mode 100644 index 0000000000..89b37bc630 --- /dev/null +++ b/docs/policies/Release.md @@ -0,0 +1,10 @@ +# Release Policy + +Release when lots of new changes and fixes. Hotfix if more bugs. Release candidate if lot of things to test. Simple as. + +## Checklist + +- [ ] Update Transifex +- [ ] Test for regressions and bugs +- [ ] Write a changelog +- [ ] Ensure all platforms work diff --git a/docs/user/AddingBooleanToggles.md b/docs/user/AddingBooleanToggles.md new file mode 100644 index 0000000000..1af5fd932d --- /dev/null +++ b/docs/user/AddingBooleanToggles.md @@ -0,0 +1,159 @@ +# User Handbook - Adding Boolean Settings Toggles + +> [!WARNING] +> This guide is intended for developers ONLY. If you are not a developer, this likely irrelevant to yourself. +> +> If you want to add temporary toggles, please refer to **[Adding Debug Knobs](AddingDebugKnobs.md)** + +This guide will walk you through adding a new boolean toggle setting to Eden's configuration across both Qt's (PC) and Kotlin's (Android) UIs. + +## Index + +1. [Step 1 - Common Setting](#step-1-common-setting) +2. [Step 2 - Qt Toggle](#step-2-qt-toggle) +3. [Step 3 - Kotlin (Android)](#step-3-kotlin-android) + + * [Step 3.1 - BooleanSetting.kt](#step-3-1-booleansetting-kt) + * [Step 3.2 - SettingsItem.kt](#step-3-2-settingsitem-kt) + * [Step 3.3 - SettingsFragmentPresenter.kt](#step-3-3-settingsfragmentpresenter-kt) + * [Step 3.4 - Localization](#step-3-4-localization) +4. [Step 4 - Use Your Toggle](#step-4-use-your-toggle) +5. [Best Practices](#best-practices) + +--- + +## Step 1 - Common Setting + +Firstly add your desired toggle: + +Example: `src/common/setting.h` +```cpp +SwitchableSetting your_setting_name{linkage, false, "your_setting_name", Category::RendererExtensions}; +``` + +### Remember to add your toggle to the appropriate category, for example: + +Common Categories: + +* Category::Renderer +* Category::RendererAdvanced +* Category::RendererExtensions +* Category::System +* Category::Core + +> [!WARNING] +> If you wish for your toggle to be `on by default` then change `false` to `true` after `linkage,`. + +--- + +## Step 2 - Qt Toggle + +Add the toggle to the Qt UI, where you wish for it to appear and place it there. + +Example: `src/qt_common/config/shared_translation.cpp` +```cpp +INSERT(Settings, + your_setting_name, + tr("Your Setting Display Name"), + tr("Detailed description of what this setting does.\n" + "You can use multiple lines.\n" + "Explain any caveats or requirements.")); +``` + +### Make sure to: + +* Keep display naming consistant +* Put detailed info in the description +* Use `\n` for line breaks in descriptions + +--- + +## Step 3 - Kotlin (Android) + +### Step 3.1 - BooleanSetting.kt + +Add where it should be in the settings. + +Example: `src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt` +```kts +RENDERER_YOUR_SETTING_NAME("your_setting_name"), +``` + +### Make sure to: + +* Ensure the prefix naming matches the intended category. + +--- + +### Step 3.2 - SettingsItem.kt + +Add the toggle to the Kotlin (Android) UI + +Example: `src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt` +```kts +put( + SwitchSetting( + BooleanSetting.RENDERER_YOUR_SETTING_NAME, + titleId = R.string.your_setting_name, + descriptionId = R.string.your_setting_name_description + ) +) +``` + +--- + +### Step 3.3 - SettingsFragmentPresenter.kt + +Add your setting within the right category. + +Example: `src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt` +```kts +add(BooleanSetting.RENDERER_YOUR_SETTING_NAME.key) +``` + +> [!WARNING] +> Remember, placing matters! Settings appear in the order of where you add them. + +--- + +### Step 3.4 - Localization + +Add your setting and description in the appropriate place. + +Example: `src/android/app/src/main/res/values/strings.xml` +```xml +Your Setting Display Name +Detailed description of what this setting does. Explain any caveats, requirements, or warnings here. +``` + +--- + +## Step 4 - Use Your Toggle! + +Now the UI part is done find a place in the code for the toggle, +And use it to your heart's desire! + +Example: +```cpp +const bool your_value = Settings::values.your_setting_name.GetValue(); + +if (your_value) { + // Do something when enabled +} +``` + +If you wish to do something only when the toggle is disabled, +Use `if (!your_value) {` instead of `if (your_value) {`. + +--- + +## Best Practices + +* Naming - Use clear, descriptive names. Something for both the devs and the users. +* Defaults - Choose safe default values (usually false for new features). +* Documentation - Write clear descriptions explaining when and why to use the setting. +* Categories - Put settings in the appropriate category. +* Order - Place related settings near each other. +* Testing - Always test on both PC and Android before committing when possible. + +### Thank you for reading, I hope this guide helped you making your toggle! diff --git a/docs/user/AddingDebugKnobs.md b/docs/user/AddingDebugKnobs.md new file mode 100644 index 0000000000..83db52b375 --- /dev/null +++ b/docs/user/AddingDebugKnobs.md @@ -0,0 +1,167 @@ +# User Handbook - Adding Debug Knobs + +Debug Knobs is a 16-bit integer setting (`debug_knobs`) in the Eden Emulator that serves as a bitmask for gating various testing and debugging features. This allows developers and advanced users to enable or disable specific debug behaviors without requiring deploying of complete but temporary toggles. + +The setting ranges from 0 to 65535 (0x0000 to 0xFFFF), where each bit represents a different debug feature flag. + +## Index + +1. [Advantages](#advantages) +2. [Usage](#usage) + + * [Accessing Debug Knobs (dev side)](#accessing-debug-knobs-dev-side) + * [Setting Debug Knobs (user side)](#setting-debug-knobs-user-side) + * [Bit Manipulation Examples](#bit-manipulation-examples) +3. [Terminology and user communication](#terminology-and-user-communication) +4. [Examples](#examples) + + * [Example 1: Conditional Debug Logging](#example-1-conditional-debug-logging) + * [Example 2: Performance Tuning](#example-2-performance-tuning) + * [Example 3: Feature Gating](#example-3-feature-gating) +5. [Best Practices](#best-practices) + +--- + +## Advantages + +The main advantage is to avoid deploying new disposable toggles (those made only for testing stage, and are disposed once new feature gets good to merge). This empowers devs to be free of all frontend burocracy and hassle of new toggles. + +Common advantages recap: + +* **Fine-Grained Control**: Enable or disable up to 16 individual debug features independently using bit manipulation on a single build +* **Runtime Configuration**: Change debug behavior at runtime the same way as new toggles would do +* **Safe incremental development**: New debug features can be added while impact can be isolated from previous deployments + +## Usage + +### Accessing Debug Knobs (dev side) + +Use the `Settings::getDebugKnobAt(u8 i)` function to check if a specific bit is set: + +```cpp +//cpp side +#include "common/settings.h" + +// Check if bit 0 is set +bool feature_enabled = Settings::getDebugKnobAt(0); + +// Check if bit 15 is set +bool another_feature = Settings::getDebugKnobAt(15); +``` + +```kts +//kotlin side +import org.yuzu.yuzu_emu.features.settings.model.Settings + +// Check if bit x is set +bool feature_enabled = Settings.getDebugKnobAt(x); //x as integer from 0 to 15 +``` + +The function returns `true` if the specified bit (0-15) is set in the `debug_knobs` value, `false` otherwise. + +### Setting Debug Knobs (user side) + +Developers must inform which knobs are tied to each functionality to be tested. + +The debug knobs value can be set through: + +1. **Desktop UI**: In the Debug configuration tab, there's a spinbox for "Debug knobs" (0-65535) +2. **Android UI**: Available as an integer setting in the Debug section +3. **Configuration Files**: Set the `debug_knobs` value in the emulator's configuration + +### Bit Manipulation Examples + +To enable specific features, calculate the decimal value by setting the appropriate bits: + +* **Enable only bit 0**: Value = 1 (2^0) +* **Enable only bit 1**: Value = 2 (2^1) +* **Enable bits 0 and 1**: Value = 3 (2^0 + 2^1) +* **Enable bit 15**: Value = 32768 (2^15) + +## Terminology and user communication + +There are two main confusions when talking about knobs: + +### Whether it's zero-based or one-based + +Sometimes when an user reports: knobs 1 and 2 gets better performance, dev may get confuse whether he means the knobs 1 and 2 literally, or the 1st and 2nd knobs (knobs 0 and 1). + +Debug knobs are **zero-based**, which means: +* The first knob is the knob(0) (or knob0 henceforth), and the last one is the 15 (knob15, likewise) +* You can talk: "knob0 is enabled/disabled", "In this video i was using only knobs 0 and 2", etc. + +### Whether one is talking about the knob itself or about the entire parameter value (which represents all knobs) + +Sometimes when an user reports: knob 3 results, it's unclear whether he's referring to knob setting with value 3 (which means both knob 0 and 1 are enabled), or to knob(3) specifically. +Whenever you're instructing tests or reporting results, be precise about whether one you're talking to avoid confusion: + +### Setting based terminology + +ALWAYS use the word in PLURAL (knobs), without mentioning which one, to refer to the setting, aka multiple knobs at once: +Examples: +- **knobs=0**: no knobs enabled +- **knobs=1**: knob0 enabled, others disabled +- **knobs=2**: knob1 enabled, others disabled +- **knobs=3**: knobs 0 and 1 enabled, others disabled + +... + +### Knob based terminology + +Use the word in SINGULAR (knob), or in plural but referring which ones, when meaning multiple knobs at once: +Examples: +- **knob0**: knob 0 enabled, others disabled +- **knob1**: knob 1 enabled, others disabled +- **knobs 0 and 1**: knobs 0 and 1 enabled, others disabled + +... + +## Examples + +### Example 1: Conditional Debug Logging + +```cpp +void SomeFunction() { + if (Settings::getDebugKnobAt(0)) { + LOG_DEBUG(Common, "Debug feature 0 is enabled"); + // Additional debug code here + } + + if (Settings::getDebugKnobAt(1)) { + LOG_DEBUG(Common, "Debug feature 1 is enabled"); + // Different debug behavior + } +} +``` + +### Example 2: Performance Tuning + +```cpp +bool UseOptimizedPath() { + // Skip optimization if debug bit 2 is set for testing + return !Settings::getDebugKnobAt(2); +} +``` + +### Example 3: Feature Gating + +```cpp +void ExperimentalFeature() { + static constexpr u8 EXPERIMENTAL_FEATURE_BIT = 3; + + if (!Settings::getDebugKnobAt(EXPERIMENTAL_FEATURE_BIT)) { + // Fallback to stable implementation + StableImplementation(); + return; + } + + // Experimental implementation + ExperimentalImplementation(); +} +``` + +## Best Practices + +* This setting is intended for development and testing purposes only +* Knobs must be unwired before PR creation +* The setting is per-game configurable, allowing different debug setups for different titles diff --git a/docs/user/AlterDateTime.md b/docs/user/AlterDateTime.md new file mode 100644 index 0000000000..aeffa1a548 --- /dev/null +++ b/docs/user/AlterDateTime.md @@ -0,0 +1,20 @@ +# Setting a Custom Date/Time in Eden + +Use this guide whenever you want to modify the Date or Time that Eden reports to games. This can be useful for modifying RNG elements, skipping wait times in games, etc. + +**Click [Here](https://evilperson1337.notion.site/Setting-a-Custom-Date-Time-in-Eden-2b357c2edaf680acb8d4e63ccc126564) for a version of this guide with images & visual elements.** + +--- + +### Pre-Requisites + +- Eden set up and fully configured + +--- + +## Steps + +1. Navigate to *Emulation → Configure*. +2. Click on the **System** item on the left-hand side navigation, then check the *Custom RTC Date* box. +3. The Date/Time option now becomes editable. Set it to the value you want and hit **OK**. +4. GREAT SCOTT! We have time traveled! You can of course go forward or backward in time (as long as it is not before the year 1970) and your game should update accordingly (e.g. certain *Super Mario Odyssey* moons that take time for flowers to grow will now be fully grown.). \ No newline at end of file diff --git a/docs/user/Architectures.md b/docs/user/Architectures.md new file mode 100644 index 0000000000..45f9e85c4f --- /dev/null +++ b/docs/user/Architectures.md @@ -0,0 +1,141 @@ +# User Handbook - Architectures and Platforms + +Notes and caveats for different architectures and platforms. + +# Architectures + +Eden is primarily designed to run on amd64 (x86_64--Intel/AMD 64-bit) and aarch64 (arm64--ARM 64-bit) CPUs. Each architecture tends to have their own quirks and fun stuff; this page serves as a reference for these quirks. + +## amd64 + +AMD64, aka x86_64, is the most tested and supported architecture for desktop targets. Android is entirely unsupported. + +### Caveats + +AMD64 systems are almost always limited by the CPU. For example, a Zen 5/RX 6600 system will often hit max CPU usage before the GPU ever reaches 70% usage, with minimal exceptions (that tend to pop up only at >200fps). JIT is slow! + +Computers on Linux will almost always run Eden strictly better than an equivalent machine on Windows. This is largely due to the way the Linux kernel handles memory management (and the lack of Microsoft spyware). + +Intel Macs are believed to be supported, but no CI is provided for them. Performance will likely be awful on all but the highest-end iMacs and Pro-level Macs, and the MoltenVK requirement generally means Vulkan compatibility will suffer. + +## aarch64 + +ARM64, aka aarch64, is the only supported architecture for Android, with limited experimental support available on Linux, Windows, and macOS. + +### Caveats + +NCE (Native Code Execution) is currently only available on Android and (experimentally) Linux. Support for macOS is in the works, but Windows is extremely unlikely to ever happen (if you want it--submit patches!). Generally, if NCE is available, you should pretty much always use it due to the massive performance hit JIT has. + +When NCE is enabled, do note that the GPU will almost always be the limiting factor. This is especially the case for Android, as well as desktops that lack dedicated GPUs; Adreno, Mali, PowerVR, etc. GPUs are generally significantly weaker relative to their respective CPUs. + +Windows/arm64 is *very* experimental and is unlikely to work at all. Support and testing is in the works. + +## riscv64 + +RISC-V, aka riscv64, is sparsely tested, but preliminary tests from developers have reported at least partial support on Milk-V's Fedora/riscv64 Linux distribution. Performance, Vulkan support, compatibility, and build system caveats are largely unknown for the time being. + +### Caveats + +Windows/riscv64 doesn't exist, and may never (until corporate greed no longer consumes Microsoft). + +Android/riscv64 is interesting. While support for it may be added if and when RISC-V phones/handhelds ever go mainstream, arm64 devices will always be preferred due to NCE. + +Only Fedora/riscv64 has been tested, but in theory, every riscv64 distribution that has *at least* the standard build tools, Qt, FFmpeg, and SDL2 should work. + +## Other + +Other architectures, such as SPARC, MIPS, PowerPC, Loong, and all 32-bit architectures are completely unsupported, as there is no JIT backend or emitter thereof. If you want support for it--submit patches! + +IA-64 (Itanium) support is completely unknown. Existing amd64 packages will not run on IA-64 (assuming you can even find a supported Windows/Linux distribution) + +# Platforms + +The vast majority of Eden's testing is done on Windows, Linux, and Android. However, first-class support is also provided for: + +- HaikuOS +- FreeBSD +- OpenBSD +- NetBSD +- OpenIndiana (Solaris) +- macOS + +## Linux + +While all modern Linux distributions are supported (Fedora >40, Ubuntu >24.04, Debian >12, Arch, Gentoo, etc.), the vast majority of testing and development for Linux is on Arch and Gentoo. Most major build system changes are tested on Gentoo first and foremost, so if builds fail on any modern distribution no matter what you do, it's likely a bug and should be reported. + +Intel and Nvidia GPU support is limited. AMD (RADV) drivers receive first-class testing and are known to provide the most stable Eden experience possible. + +Wayland is not recommended. Testing has shown significantly worse performance on most Wayland compositors compared to X11, alongside mysterious bugs and compatibility errors. For now, set `QT_QPA_PLATFORM=xcb` when running Eden, or pass `-platform xcb` to the launch arguments. + +## Windows + +Windows 10 and 11 are supported. Support for Windows 8.x is unknown, and Windows 7 support is unlikely to ever be added. + +In order to run Eden, you will probably need to install the [Visual C++ Redistributable](https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170). + +Neither AMD nor Nvidia drivers work nearly as well as Linux's RADV drivers. Compatibility is still largely the same, but performance and some hard-to-run games may suffer compared to Linux. + +## Android + +A cooler is always recommended. Phone SoCs tend to get very hot, especially those manufactured with the Samsung process or those lacking in power. + +Adreno 6xx and 7xx GPUs with Turnip drivers will always have the best compatibility. "Stock" (system) drivers will have better performance on Adreno, but compatibility will suffer. Better support for stock drivers (including Adreno 8xx) is in the works. + +Android 16 is always recommended, as it brought major improvements to Vulkan requirements and compatibility, *plus* significant performance gains. Some users reported an over 50% performance gain on some Pixel phones after updating. + +Mali, PowerVR, Xclipse, and other GPU vendors generally lack in performance and compatibility. Notably: +- No PowerVR GPUs *except* the DXT-48-1536 are known to work with Eden at all. +- No Xclipse GPUs *except* the very latest (e.g. Xclipse 950) are known to work with Eden at all. +- Mali has especially bad performance, though the Mali-G715 (Tensor G4) and Immortalis-G925 are known to generally run surprisingly well, especially on Android 16. +- The status of all other GPU vendors is unknown. As long as they support Vulkan, they theoretically can run Eden. +- Note that these GPUs generally don't play well with driver injection. If you choose to inject custom drivers via a rooted system (Panfrost, RADV, etc), you may see good results. + +Qualcomm Snapdragon SoCs are generally the most well supported. +- Google Tensor chips have pretty terrible performance, but even the G1 has been proven to be able to run some games well on the Pixel 6 Pro. + * The Tensor G4 is the best-supported at the time. How the G5 currently fares is unknown, but on paper, it should do about as well as a Snapdragon 8 Gen 2 with stock drivers. +- Samsung Exynos chips made before 2022 are not supported. +- MediaTek Dimensity chips are extremely weak and most before mid-2023 don't work at all. + * This means that most budget phones won't work, as they tend to use old MediaTek SoCs. + * Generally, if your phone doesn't cost *at least* as much as a Switch itself, it will not *emulate* the Switch very well. +- Snapdragon 865 and other old-ish SoCs may benefit from the Legacy build. These will reduce performance but *should* drastically improve compatibility. +- If you're not sure how powerful your SoC is, check [NanoReview](https://nanoreview.net/en/soc-compare) - e.g. [Tensor G5](https://archive.is/ylC4Z). + * A good base to compare to is the Snapdragon 865--e.g. [Tensor vs SD865](https://archive.is/M1P58) + * Some benchmarks may be misleading due to thermal throttling OR RAM requirements. + - For example, a Pixel 6a (Tensor G1) performs about 1/3 as well as an 865 due to its lack of RAM and poor thermals. + * Remember--always use a cooler if you can, and you MUST have *at least* 8GB of RAM! +- If you're not sure what SoC you have, check [GSMArena](https://www.gsmarena.com) - e.g. [Pixel 9 Pro](https://archive.ph/91VhA) + +Custom ROMs are recommended, *as long as* you know what you're doing. +- For most devices, [LineageOS](https://lineageos.org/) is preferred. +- [CalyxOS](https://calyxos.org/) is available as well. +- For Google Pixel devices ONLY... and [soon another OEM](https://archive.ph/cPpMd)... [GrapheneOS](https://grapheneos.org/) is highly recommended. + * As of October 5, 2025, the Pixel 10 line is unsupported, however, [it will be](https://archive.is/viAUl) in the very near future! + * Keep checking the [FAQ page](https://grapheneos.org/faq#supported-devices) for news. +- Custom ROMs will likely be exclusively recommended in the future due to Google's upcoming [draconian](https://archive.is/hGIjZ), [anti-privacy, anti-user](https://archive.is/mc1CJ) verification requirements. + +Eden is currently unavailable on F-Droid or the Play Store. Check back occasionally. + +## macOS + +macOS is relatively stable, with only the occasional crash and bug. Compatibility may suffer due to the MoltenVK layer, however. + +Do note that building the GUI version with Qt versions higher than 6.7.3 will cause mysterious bugs, Vulkan errors, and crashes, alongside the cool feature of freezing the entire system UI randomly; we recommend you build with 6.7.3 (via aqtinstall) or earlier as the CI does. + +## *BSD, Solaris + +BSD and Solaris distributions tend to lag behind Linux in terms of Vulkan and other library compatibility. For example, OpenIndiana (Solaris) does not properly package Qt, meaning the recommended method of usage is to use `eden-cli` only for now. Solaris also generally works better with OpenGL. + +AMD GPU support on these platforms is limited or nonexistent. + +## HaikuOS + +HaikuOS supports (see below) Vulkan 1.3 and has Mesa 24.0. Because OpenGL ES is used instead of the desktop flavour of OpenGL the OpenGL backend is actually worse than the Vulkan one in terms of stability and system support. OpenGL is highly not recommended due to it being: out of tree builds of Mesa and generally unstable ones at that. Users are advised to use Vulkan whenever possible. + +- Additionally system drivers for NVIDIA and Intel iGPUs exist and provide a native Vulkan ICD with the `Xcb` interface as opposed to the native `BView` +- In order to obtain Vulkan 1.3 support with native `BView` support; Swiftshader can be compiled from source [see this thread](https://discuss.haiku-os.org/t/swiftshader-vulkan-software-renderer-on-haiku/11526/6). + +## VMs + +Eden "can" run in a VM, but only with the software renderer, *unless* you create a hardware-accelerated KVM with GPU passthrough. If you *really* want to do this and don't have a spare GPU lying around, RX 570 and 580 GPUs are extremely cheap on the black market and are powerful enough to run most commercial games at 60 FPS. + +Some users and developers have had success using a pure OpenGL-accelerated KVM on Linux with a Windows VM, but this is ridiculously tedious to set up. You're probably better off dual-booting. \ No newline at end of file diff --git a/docs/user/Audio.md b/docs/user/Audio.md new file mode 100644 index 0000000000..38a4ead433 --- /dev/null +++ b/docs/user/Audio.md @@ -0,0 +1,3 @@ +# User Handbook - Audio + +`PULSE_SERVER=none` forces cubeb to use ALSA. diff --git a/docs/user/Basics.md b/docs/user/Basics.md new file mode 100644 index 0000000000..794a0935d5 --- /dev/null +++ b/docs/user/Basics.md @@ -0,0 +1,67 @@ +# User Handbook - The Basics + +## Introduction + +Eden is a very complicated piece of software, and as such there are many knobs and toggles that can be configured. Most of these are invisible to normal users, however power users may be able to leverage them to their advantage. + +This handbook primarily describes such knobs and toggles. Normal configuration options are described within the emulator itself and will not be covered in detail. + +## Requirements + +The emulator is very demanding on hardware, and as such requires a decent mid-range computer/cellphone. + +See [the requirements page](https://archive.is/sv83h) for recommended and minimum specs. + +The CPU must support FMA for an optimal gameplay experience. The GPU needs to support OpenGL 4.6 ([compatibility list](https://opengl.gpuinfo.org/)), or Vulkan 1.1 ([compatibility list](https://vulkan.gpuinfo.org/)). + +If your GPU doesn't support or is just behind by a minor version, see Mesa environment variables below (*nix only). + +## Releases and versions + +- Stable releases/Versioned releases: Has a version number and it's the versions we expect 3rd party repositories to host (package managers and such), these are, well, stable, have low amount of regressions (wrt. to master and nightlies) and generally focus on "keeping things without regressions", recommended for the average user. + - RC releases: Release candidate, generally "less stable but still stable" versions. + - Full release: "The stablest possible you could get". +- Nightly: Builds done around 2PM UTC (if there are any changes), generally stable, but not recommended for the average user. These contain daily updates and may contain critical fixes for some games. +- Master: Unstable builds, can lead from a game working exceptionally fine to absolute crashing in some systems because someone forgot to check if NixOS or Solaris worked. These contain straight from the oven fixes, please don't use them unless you plan to contribute something! They're very experimental! Still 95% of the time it will work just fine. +- PR builds: Highly experimental builds, testers may grab from these. The average user should treat them the same as master builds, except sometimes they straight up don't build/work. + +## User configuration + +### Configuration directories + +Eden will store configuration files in the following directories: + +- **Windows**: `%AppData%\Roaming`. +- **Android**: Data is stored internally. +- **Linux, macOS, FreeBSD, Solaris, OpenBSD**: `$XDG_DATA_HOME`, `$XDG_CACHE_HOME`, `$XDG_CONFIG_HOME`. +- **HaikuOS**: `/boot/home/config/settings/eden` + +If a `user` directory is present in the current working directory, that will override all global configuration directories and the emulator will use that instead. + +### Environment variables + +Throughout the handbook, environment variables are mentioned. These are often either global (system wide) or local (set in a script, bound only to the current session). It's heavily recommended to use them in a local context only, as this allows you to rollback changes easily (if for example, there are regressions setting them). + +The recommended way is to create a `.bat` file alongside the emulator `.exe`; contents of which could resemble something like: + +```bat +set "__GL_THREADED_OPTIMIZATIONS=1" +set "SOME_OTHER_VAR=1" +eden.exe +``` + +Android doesn't have a convenient way to set environment variables. + +For other platforms, the recommended method is using a shell script: + +```sh +export __GL_THREADED_OPTIMIZATIONS=1 +export SOME_OTHER_VAR=1 +./eden +``` + +Then just running `chmod +x script.sh && source script.sh`. + +## Compatibility list + +Eden doesn't mantain a compatibility list. However, [EmuReady](https://www.emuready.com/) has a more fine-grained compatibility information for multiple emulators/forks as well. diff --git a/docs/user/CFW.md b/docs/user/CFW.md new file mode 100644 index 0000000000..ea224d3d36 --- /dev/null +++ b/docs/user/CFW.md @@ -0,0 +1,11 @@ +# User Handbook - Custom Firmware (CFW) + +At the moment of writing, we do not support CFW such as Atmosphere, due to: + +- Lacking the required LLE emulation capabilities to properly emulate the full firmware. +- Lack of implementation on some of the key internals. +- Nobody has bothered to do it (PRs always welcome!) + +We do however, maintain HLE compatibility with the former mentioned CFW, applications that require Atmosphere to run will run fine in the emulator without any adjustments. + +If they don't run - then that's a bug! diff --git a/docs/user/CommandLine.md b/docs/user/CommandLine.md new file mode 100644 index 0000000000..cd98d88b19 --- /dev/null +++ b/docs/user/CommandLine.md @@ -0,0 +1,24 @@ +# User Handbook - Command Line + +There are two main applications, an SDL2 based app (`eden-cli`) and a Qt based app (`eden`); both accept command line arguments. + +## eden +- `./eden `: Running with a single argument and nothing else, will make the emulator look for the given file and load it, this behaviour is similar to `eden-cli`; allows dragging and dropping games into the application. +- `-g `: Alternate way to specify what to load, overrides. However let it be noted that arguments that use `-` will be treated as options/ignored, if your game, for some reason, starts with `-`, in order to safely handle it you may need to specify it as an argument. +- `-f`: Use fullscreen. +- `-u `: Select the index of the user to load as. +- `-input-profile `: Specifies input profile name to use (for player #0 only). +- `-qlaunch`: Launch QLaunch. +- `-setup`: Launch setup applet. + +## eden-cli +- `--debug/-d`: Enter debug mode, allow gdb stub at port `1234` +- `--config/-c`: Specify alternate configuration file. +- `--fullscreen/-f`: Set fullscreen. +- `--help/-h`: Display help. +- `--game/-g`: Specify the game to run. +- `--multiplayer/-m`: Specify multiplayer options. +- `--program/-p`: Specify the program arguments to pass (optional). +- `--user/-u`: Specify the user index. +- `--version/-v`: Display version and quit. +- `--input-profile/-i`: Specifies input profile name to use (for player #0 only). diff --git a/docs/user/Controllers.md b/docs/user/Controllers.md new file mode 100644 index 0000000000..6aac9056ff --- /dev/null +++ b/docs/user/Controllers.md @@ -0,0 +1,65 @@ +# User Handbook - Controllers + +Most of the controls should work out of the box. If not, please use a joystick calibrator to ensure it's not an issue with your own controller, for example: + +- https://github.com/dkosmari/calibrate-joystick + +## Using external controllers on the Steamdeck + +In desktop mode ignore your pro controller/xbox contoller external controller and use **Steam Virtual Gamepad 0 as Player 1**. If you have multiple external controllers set **Player 2 to Steam Virtual Gamepad 1**. Steam app must not be closed on desktop mode. + +Here's the annoying part of it. When waking up the steam deck from sleep try not to touch any button on the Steamdeck and turn on your external controller. Then open the Eden.AppImage. If you're lucky you can get your external controller to be position 0 and also Steam Virtual Gamepad 0 in desktop mode. If not that is ok too unless you need to configure player 1 to have gyro. You might need to repeat this to get your external controller as Steam Virtual Gamepad 0 so you can config Player 1 having gyro. You might be able to config player 1 to have gyro with the Steamdeck itself. Or you can also config player 1, 2, 3, etc, to have gyro somehow. Make sure they are all using Virtual Gamepads though. + +Turn off controller then go to gaming mode. Try not to touch any buttons on the physical Steamdeck. When in gaming mode turn on the external controller. If lucky it will be assigned as Steam Virtual Gamepad 0. If not just use steam Gamemode feature to rearrange controller positions order. + +Basically the Steamdeck or the external controller is fighting for position 0 and it depends on what is touched first after waking from sleep. + +## Configuring Controller Profiles + +Use this guide for when you want to configure specific controller settings to be reused. + +**Click [Here](https://evilperson1337.notion.site/Configuring-Controller-Profiles-2be57c2edaf680eabc3ac8c333ec75c4) for a version of this guide with images & visual elements.** + +--- + +#### Pre-Requisites + +- Eden Set Up and Configured + +--- + +#### Steps +1. Launch Eden and wait for it to load. +2. Navigate to *Emulation > Configure…* +3. Select **Controls** from the left-hand menu and configure your controller for the way you want it to be in game. +4. Select **New** and enter a name for the profile in the box that appears. Press **OK** to save the profile settings. +5. Select **OK** to close the settings menu. + +### Setting Controller Profiles By Game + +Use this guide when you want to set up specific controller profiles for specific games. This can be useful for certain games like *Captain Toad Treasure Tracker* where a blue dot appears in the middle of the screen when you have docked mode enabled, but not handheld mode. + +**Click [Here](https://evilperson1337.notion.site/Setting-Controller-Profiles-By-Game-2b057c2edaf681658a57f0c199cb6083) for a version of this guide with images & visual elements.** + +--- + +#### Pre-Requisites + +- Eden Emulator set up and fully configured +- Controller Profile Created + - See [*Configuring Controller Profiles*](./ControllerProfiles.md) for instructions on how to do this if needed. + +--- + +#### Steps + +1. *Right-Click* the game you want to apply the profile to in the main window and select **Properties.** +2. Navigate to the **Input Profiles** tab in the window that appears. Drop down on *Player 1 profile* (or whatever player profile you want to apply it to) and select the profile you want. + + +1. Click **OK** to apply the profile mapping. +2. Launch the game and confirm that the profile is applied, regardless of what the global configuration is. diff --git a/docs/user/Graphics.md b/docs/user/Graphics.md new file mode 100644 index 0000000000..ad359b9049 --- /dev/null +++ b/docs/user/Graphics.md @@ -0,0 +1,113 @@ +# User Handbook - Graphics + +Graphical enhancements and visual quality improvments. This doesn't cover texture mods. + +## Visual Enhancements + +### Anti-aliasing + +Enhancements aimed at removing jagged lines/sharp edges and/or masking artifacts. + +- **No AA**: Default, provides no anti-aliasing. +- **FXAA**: Fast Anti-Aliasing, an implementation as described on [this blog post](https://web.archive.org/web/20110831051323/http://timothylottes.blogspot.com/2011/03/nvidia-fxaa.html). Generally fast but with some innocuos artifacts. +- **SMAA**: Subpixel Morphological Anti-Aliasing, an implementation as described on [this article](https://web.archive.org/web/20250000000000*/https://www.iryoku.com/smaa/). + +### Filters + +Various graphical filters exist - each of them aimed at a specific target/image quality preset. + +- **Nearest**: Provides no filtering - useful for debugging. + - **Pros**: Fast, works in any hardware. + - **Cons**: Less image quality. +- **Bilinear**: Provides the hardware default filtering of the Tegra X1. + - **Pros**: Fast with acceptable image quality. +- **Bicubic**: Provides a bicubic interpolation using a Catmull-Rom (or hardware-accelerated) implementation. + - **Pros**: Better image quality with more rounded edges. +- **Zero-Tangent, B-Spline, Mitchell**: Provides bicubic interpolation using the respective matrix weights. They're normally not hardware accelerated unless the device supports the `VK_QCOM_filter_cubic_weights` extension. The matrix weights are those matching [the specification itself](https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VkSamplerCubicWeightsCreateInfoQCOM). + - **Pros/Cons**: Each of them is a variation of the Bicubic interpolation model with different weights, they offer different methods to fix some artifacts present in Catmull-Rom. +- **Spline-1**: Bicubic interpolation (similar to Mitchell) but with a faster texel fetch method. Generally less blurry than bicubic. + - **Pros**: Faster than bicubic even without hardware accelerated bicubic. +- **Gaussian**: Whole-area blur, an applied gaussian blur is done to the entire frame. + - **Pros**: Less edge artifacts. + - **Cons**: Slow and sometimes blurry. +- **Lanczos**: An implementation using `a = 3` (49 texel fetches). Provides sharper edges but blurrier artifacts. + - **Pros**: Less edge artifacts and less blurry than gaussian. + - **Cons**: Slow. +- **ScaleForce**: Experimental texture upscale method, see [ScaleFish](https://github.com/BreadFish64/ScaleFish). + - **Pros**: Relatively fast. +- **FSR**: Uses AMD FidelityFX Super Resolution to enhance image quality. + - **Pros**: Great for upscaling, and offers sharper visual quality. + - **Cons**: Somewhat slow, and may be offputtingly sharp. +- **Area**: Area interpolation (high kernel count). + - **Pros**: Best for downscaling (internal resolution > display resolution). + - **Cons**: Costly and slow. +- **MMPX**: Nearest-neighbour filter aimed at providing higher pixel-art quality. + - **Pros**: Offers decent pixel-art upscaling. + - **Cons**: Only works for pixel-art. + +### Anisotropy values + +The anisotropy value is (value game wants + the set value); **Default** will use the native anisotropy value as it would be on hardware. **Automatic** sets it according to screen resolution. Turning off anisotropy is not recommended as it can break a myriad of games, however it is provided in the name of flexibility. + +Values from x2, x4, x8, x16, x32 up to x64 values are provided. This should be enough to not need to revise those values in my lifetime ever again. + +### External + +While stock shaders offer a basic subset of options for most users, programs such as [ReShade](https://github.com/crosire/reshade) offer a more flexible experience. In addition to that users can also seek out modifications (mods) for enhancing visual experience (60 FPS mods, HDR, etc). + +**Installing ReShade (Windows)** +1. [Download ReShade](https://reshade.me/#download) with add-on support. + - [ReShade Setup 6.6.2 (Windows 64-bit) with add-on support](https://reshade.me/downloads/ReShade_Setup_6.6.2_Addon.exe) + - SHA512 checksum: `1f09a73afa160480c13ffdd73cc04b1dc82943dddea58ad3bb9375f26b48c2787d0a85197e46b6fce32a4fd3472465520a3355ed3436241e17fba7ebaff7ffec`. +2. Open ReShade and hit browse, then the folder where `eden.exe` is at, hit open, then hit next. +3. Select Vulkan as the rendering API, hit next. +4. In "Select effects to install" screen: hit next don't change anything. +5. In "Select add on" screen: click the box for `Shader Toggler by Otis` ([GitHub](https://github.com/FransBouma/ShaderToggler)) and hit next. + +**Using the Shader Toggler** +1. Launch a game, you must see a ReShade pop up afterwards. +2. Progress to a point with a flickering shader. +3. Hit the Home key on keyboard (or change binds if you don't have one). +4. Navigate to the add on tab at the top of the ReShade menu. +5. At the bottom where Shader Toggler is at open the drop down and max out the slider that says "# of fames collected" then select change shaders while staring at the flickering shader. +6. When the Shader Toggler finishes collecting frames in the top left hit Numpad 2 till it turns off the flickering lines. +7. Hit Numpad 3 to add it the group of shaders to turn off and hit done and save all toggle groups. +8. Hit the edit button and select "active at startup" for the shader to be turned off on every game launch. +9. Caps lock to manually turn on and off the shader (default key you can change it with the previous edit button) + +## Driver specifics + +### Mesa environment variable hacks + +The software requires a certain version of Vulkan and a certain version of OpenGL to work - otherwise it will refuse to load, this can be easily bypassed by setting an environment variable: `MESA_GL_VERSION_OVERRIDE=4.6 MESA_GLSL_VERSION_OVERRIDE=460` (OpenGL) and `MESA_VK_VERSION_OVERRIDE=1.3` (Vulkan), for more information see [Environment variables for Mesa](https://web.archive.org/web/20250000000000*/https://docs.mesa3d.org/envvars.html). + +### NVIDIA OpenGL environment variables + +Unstable multithreaded optimisations are offered by the stock proprietary NVIDIA driver on X11 platforms. Setting `__GL_THREADED_OPTIMIZATIONS` to `1` would enable such optimisations. This mainly benefits the OpenGL backend. For more information see [Environment Variables for X11 NVIDIA](https://web.archive.org/web/20250115162518/https://download.nvidia.com/XFree86/Linux-x86_64/435.17/README/openglenvvariables.html). + +### swrast/LLVMpipe crashes under high load + +The OpenGL backend would invoke behaviour that would result in swarst/LLVMpipe writing an invalid SSA IR (on old versions of Mesa), and then proceeding to crash. The solution is using a script found in [tools/llvmpipe-run.sh](../../tools/llvmpipe-run.sh). + +### HaikuOS compatibility + +HaikuOS bundles a Mesa library that doesn't support full core OpenGL 4.6 (required by the emulator). This leads to HaikuOS being one of the few computer platforms where Vulkan is the only available option for users. If OpenGL is desired, Mesa has to be built manually from source. For debugging purposes `lavapipe` is recommended over the GPU driver; there is in-kernel support for NVIDIA cards through. + +### Fixes for Windows 10 and above having "Device loss" + +Run the following batch script *inside* the Eden folder: +```cmd +@echo off +pushd "%~dp0" +if exist "%temp%\FixFullScreen.reg" ( + del %temp%\FixFullScreen.reg +) +set str_path="%cd:\=\\%\\eden.exe" +echo Windows Registry Editor Version 5.00 >> %temp%\FixFullScreen.reg +echo. >> %temp%\FixFullScreen.reg +echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers] >> %temp%\FixFullScreen.reg +echo %str_path%="~ DISABLEDXMAXIMIZEDWINDOWEDMODE HIGHDPIAWARE" >> %temp%\FixFullScreen.reg +regedit /s %temp%\FixFullScreen.reg +del %temp%\FixFullScreen.reg +exit /b +``` diff --git a/docs/user/GyroControls.md b/docs/user/GyroControls.md new file mode 100644 index 0000000000..0df9088c1e --- /dev/null +++ b/docs/user/GyroControls.md @@ -0,0 +1,29 @@ +# Getting Gyro/Motion Controls Working on Steam Deck +Use this guide when you want to use the Steam Deck's native gyro functionality for motion controls in Eden. + +**Click [Here](https://evilperson1337.notion.site/Getting-Gyro-Motion-Controls-Working-on-Steam-Deck-2b057c2edaf681a1aaade35db6e0fd1b) for a version of this guide with images & visual elements.** + +## Steamdeck + +### Pre-Requisites + +- Steam Deck Set up and Configured +- Eden set up and Configured +- Internet Access + +--- + +### Steps + +1. Go into Steam Deck's Desktop Mode, and use the shortcut to launch EmuDeck. +2. Install [SteamDeckGyroDSU](https://github.com/kmicki/SteamDeckGyroDSU/releases) by going to *3rd Party Tools > Gyroscope* and clicking **Install.** + a. Alternatively you can install [SteamDeckGyroDSU](https://github.com/kmicki/SteamDeckGyroDSU/releases) manually following the GitHub page instructions. +3. Upon completion of the installation. You will need to reboot your Steam Deck. Do so before continuing on. +4. Go back into the Steam Deck Desktop Mode and open the Dolphin File Explorer. +5. Navigate to the following directory to see you controller configuration: `/home/deck/.config/Eden` +6. *Right-Click* the **qt-config.ini** file and open it with ***Kate*** +7. Look for the following line: `player_0_motionleft=[empty]`. +8. Change the line to now say: `player_0_motionleft="motion:0,pad:0,port:26760,guid:0000000000000000000000007f000001,engine:cemuhookudp"` +9. Save the file and open Eden. +10. Launch a compatible title, like *The Legend of Zelda: Breath of the Wild*. +11. Test the gyro capabilities, for the above mentioned title, it is accessed by holding down the **R Trigger** and moving the Steam Deck around. \ No newline at end of file diff --git a/docs/user/HowToAccessLogs.md b/docs/user/HowToAccessLogs.md new file mode 100644 index 0000000000..826ead382c --- /dev/null +++ b/docs/user/HowToAccessLogs.md @@ -0,0 +1,47 @@ +# How to Access Logs + +Use this when you need to review the logs to determine an issue or provide them to a member of the Eden team. + +**Click [Here](https://evilperson1337.notion.site/How-to-Access-Logs-2b057c2edaf68105a281fe1688a332d4) for a version of this guide with images & visual elements.** + +--- + +## Pre-Requisites + +- Eden installed and run at least once + +--- + +## Steps + +### Windows + +*By default the Eden folder is stored in your AppData `C:\Users\\AppData\Roaming\Eden\log`, or the local **user** folder if you have a portable installation.* + + + +### Steam Deck + +*By default the Eden folder is stored in `/home/deck/.local/share/Eden`, or the local **user** folder if you have a portable installation.* + + + +### Android + +*Logs are stored in the application data, so you wouldn't be able to access the files directly without a rooted device.* + + \ No newline at end of file diff --git a/docs/user/ImportingSaves.md b/docs/user/ImportingSaves.md new file mode 100644 index 0000000000..428609f69c --- /dev/null +++ b/docs/user/ImportingSaves.md @@ -0,0 +1,30 @@ +# Importing Saves Into Eden + +Use this guide when you want to manually import save files for use in the Eden emulator. + +**Click [Here](https://evilperson1337.notion.site/Importing-Saves-Into-Eden-2b057c2edaf681fe968df8d63821ccae) for a version of this guide with images & visual elements.** + +### Pre-Requisites +- Eden emulator already set up and configured. +- The save file(s) you want to import + +## Desktop + +### Steps +1. Open Eden and wait for it to load. +2. Start the game and create a save file to establish the directories. +3. *Right-Click* the game for which you want to load a save in. +4. Select *Open Save Data Location.* +5. A File Explorer will now appear where Eden is looking for the save data for this title. +6. Copy the save file(s) you want to import and use in Eden into this directory. + +7. Close the file explorer as it is no longer needed. +8. Launch the game in Eden and verify that the save data appears through whatever method the game implements. + +## Android + +TBD diff --git a/docs/user/InstallingAtmosphereMods.md b/docs/user/InstallingAtmosphereMods.md new file mode 100644 index 0000000000..ae8e4b37d2 --- /dev/null +++ b/docs/user/InstallingAtmosphereMods.md @@ -0,0 +1,32 @@ +# User Handbook - Installing Atmosphere Mods + +Use this guide for when you want to install an Atmosphere-based mod for use in Eden. + +**Click [Here](https://evilperson1337.notion.site/Installing-Atmosphere-Mods-2b057c2edaf681fe8d39cbfc2d0cc799) for a version of this guide with images & visual elements.** + +--- + +### Pre-Requisites + +- Eden already set up and functioning with keys and firmware +- The mod you want to install + +--- + +## Steps + +1. Right-Click the game you want to apply the mod to and select **Open Mod Data Location.** +2. Create new folder inside the mod directory with the name of the mod. +3. Extract the downloaded mod (if applicable) to a temporary directory. +4. Locate the ***exefs*** and ***romfs*** folders inside the extracted mod - usually *atmosphere/contents/*. +5. Copy the ***exefs*** and ***romfs*** folders into the mod folder you created earlier. +6. Restart Eden. +7. Right-Click the game you installed the mod to and hit *Configure Game*. +8. Look in the **Add-Ons** tab and observe that the Mod Name (or whatever you named the folder to earlier) now appears on the list and is selected. +9. Hit **OK** and launch the game. Your mod should now be active. + +10. Your mod is now ready to play. \ No newline at end of file diff --git a/docs/user/InstallingUpdatesDLC.md b/docs/user/InstallingUpdatesDLC.md new file mode 100644 index 0000000000..2fdf40dde9 --- /dev/null +++ b/docs/user/InstallingUpdatesDLC.md @@ -0,0 +1,52 @@ +# User Handbook - Working with Updates/DLC in Eden + +Use this guide when you want to install Updates or DLC for your games in Eden. + + + +**Click [Here](https://evilperson1337.notion.site/Working-with-Updates-DLC-in-Eden-2b057c2edaf681dfb65dfc4dd96980c0) for a version of this guide with images & visual elements.** + +--- + +### Pre-Requisites + +1. Eden already setup and configured for your platform. +2. The Update/DLC file(s) you want to install + +--- + +## Installing Updates/DLC + +1. Open Eden to the Main Window. +2. Select *File > Install Files to NAND...*. +3. Navigate to the Update/DLC files you want to install. + + +4. The file(s) will be scanned for validity and then a confirmation window will appear, select *Install* to begin installation. + + +5. Upon installation, you will get a prompt saying it was installed successfully. +6. Look at the *Add-Ons* column in the main window, you should now see the additional installed content reflected. + +--- + +## Disabling Updates/DLC + +Upon occasion you may find that you want to disable a certain DLC or Update (incompatibility with a mod, causes significant regression, etc.). Luckily the process if very easy to do so. + +1. *Right-Click* the game for which you want to disable the additional content. +2. Select *Configure Game.* +3. Uncheck the box next to the DLC or Update you want to disable and hit **OK**. +4. The listing should now reflect that it has been disabled with a **[D]** before the entry. If you load the game, you will observe that the reported version is not updated (assuming the game reports this information). \ No newline at end of file diff --git a/docs/user/Mods.md b/docs/user/Mods.md new file mode 100644 index 0000000000..11361d628c --- /dev/null +++ b/docs/user/Mods.md @@ -0,0 +1,206 @@ +# User Handbook - Installing Mods + +## General Notes + +**Note:** When installing a mod, always read the mod's installation instructions. + +This is especially important if a mod uses a framework such as **ARCropolis**, **Skyline**, or **Atmosphere plugins**. In those cases, follow the framework's instructions instead of using Eden's normal mod folder. + +For example, **Super Smash Bros. Ultimate** uses such a framework. See the related section below for details. + +--- + +# Installing Mods for Most Games + +1. Right click a game in the game list. +2. Click **"Open Mod Data Location"**. +3. Extract the mod into that folder. + +Each mod should be placed inside **its own subfolder**. + +--- + +# Enabling or Disabling Mods + +1. Right click the game in the game list. +2. Click **Configure Game**. +3. In the **Add-Ons** tab, enable or disable mods, updates, and DLC by ticking or unticking their boxes. + +--- + +# Important Note About SD Card Paths + +Some mods are designed for real Nintendo Switch consoles and refer to the **SD card root**. + +The emulated SD card is located at: + +``` +%AppData%\eden\sdmc +``` + +Example: + +``` +Switch instruction: sd:/ultimate/mods +Eden equivalent: sdmc/ultimate/mods +``` + +--- + +# Framework-Based Mods (Super Smash Bros. Ultimate) + +Some games require external mod frameworks instead of the built-in mod loader. + +The most common example is **Super Smash Bros. Ultimate**. + +These mods are installed directly to the **emulated SD card**, not the normal Eden mod folder. + +--- + +# Installing the ARCropolis Modding Framework + +**Note:** Some mod packs bundle ARCropolis with their installer (for example, Smash Ult-S). + +--- + +## 1. Download ARCropolis + +Download the latest release: + +https://github.com/Raytwo/ARCropolis/releases/ + +--- + +## 2. Install ARCropolis + +Extract the **`atmosphere`** folder into: + +``` +%AppData%\eden\sdmc +``` + +This is the **emulated SD card directory**. + +Verify installation by checking that the following file exists: + +``` +sdmc\atmosphere\contents\01006A800016E000\romfs\skyline\plugins\libarcropolis.nro +``` + +--- + +## 3. Download Skyline + +Download the latest Skyline release: + +https://github.com/skyline-dev/skyline/releases + +Skyline used to be bundled with ARCropolis but is now distributed separately to avoid compatibility issues caused by outdated bundled versions. + +--- + +## 4. Install Skyline + +Extract the **`exefs`** folder into: + +``` +sdmc\atmosphere\contents\01006A800016E000 +``` + +The `exefs` folder should be **next to the `romfs` folder**. + +Verify installation by checking that the following file exists: + +``` +%AppData%\eden\sdmc\atmosphere\contents\01006A800016E000\exefs\subsdk9 +``` + +--- + +## 5. Launch the Game Once + +Start the game and make sure you see the **ARCropolis version text on the title screen**. + +This will also create the folders required for installing mods. + +--- + +## 6. Install Smash Ultimate Mods + +Install mods inside: + +``` +sdmc\ultimate\mods +``` + +Each mod must be placed inside **its own subfolder**. + +Example: + +``` +sdmc\ultimate\mods\ExampleMod +``` + +--- + +# Troubleshooting + +## ARCropolis text does not appear on startup + +Check the following: + +- `libarcropolis.nro` exists in: + +``` +sdmc\atmosphere\contents\01006A800016E000\romfs\skyline\plugins +``` + +- `subsdk9` exists in: + +``` +sdmc\atmosphere\contents\01006A800016E000\exefs +``` + +- Files were extracted to: + +``` +%AppData%\eden\sdmc +``` + +--- + +## Mods are not loading + +Make sure mods are installed inside: + +``` +sdmc\ultimate\mods +``` + +Each mod must have its **own subfolder**. + +Correct example: + +``` +sdmc\ultimate\mods\ExampleMod +``` + +Incorrect example: + +``` +sdmc\ultimate\mods\ExampleMod\ExampleMod +``` + +--- + +## Installing mods in the wrong folder + +ARCropolis mods **do not go in Eden's normal mod folder**. + +Do **not** install Smash mods here: + +``` +user\load\01006A800016E000 +``` + +That folder is only used for traditional **RomFS mods**, not ARCropolis. diff --git a/docs/user/Multiplayer.md b/docs/user/Multiplayer.md new file mode 100644 index 0000000000..57c4495f46 --- /dev/null +++ b/docs/user/Multiplayer.md @@ -0,0 +1,316 @@ +# Multiplayer +Use this guide to answer questions regarding and to start using the multiplayer functionality of Eden. + +## Multiplayer FAQ +This FAQ will serve as a general quick question and answer simple questions. + +**Click [Here](https://evilperson1337.notion.site/Multiplayer-FAQ-2c357c2edaf680fca2e9ce59969a220f) for a version of this guide with images & visual elements.** + +### Can Eden Play Games with a Switch Console? +No - The only emulator that has this kind of functionality is *Ryujinx* and it's forks. This solution requires loading a custom module on a modded switch console to work. + +### Can I Play Online Games? +No - This would require hijacking requests to Nintendo's official servers to a custom server infrastructure built to emulate that functionality. This is how services like [*Pretendo*](https://pretendo.network/) operate. As such, you would not be able to play “Online”, you can however play multiplayer games. + +### What's the Difference Between Online and Multiplayer? +I have chosen the wording carefully here for a reason. + +- Online: Games that connect to Nintendo's Official servers and allow games/functionality using that communication method are unsupported on any emulator currently (for obvious reasons). +- Multiplayer: The ability to play with multiple players on separate systems. This is supported for games that support LDN Local Wireless. + +The rule of thumb here is simple: If a game supports the ability to communicate without a server (Local Wireless, LAN, etc.) you will be able to play with other users. If it requires a server to function - it will not. You will need to look up if your title support Local Wireless/LAN play as an option. + +### How Does Multiplayer Work on Eden Exactly? +Eden's multiplayer works by emulating the Switch's local wireless (LDN) system, then tunneling that traffic over the internet through “rooms” that act like lobbies. Each player runs their own instance of the emulator, and as long as everyone joins the same room and the game supports local wireless multiplayer, the emulated consoles see each other as if they were on the same local network. This design avoids typical one-save netplay issues because every user keeps an independent save and console state while only the in-game wireless packets are forwarded through the room server. In practice, you pick or host a room, configure your network interface/port forwarding if needed, then launch any LDN-capable game; from the game's perspective it is just doing standard local wireless, while the emulator handles discovery and communication over the internet or LAN. + +### What Do I Need to Do? +That depends entirely on what your goal is and your level of technical ability, you have a 2 options on how to proceed. + +1. Join a Public Lobby. + 1. If you just want to play *Mario Kart 8 Deluxe* with other people and don't care how it works or about latency - this is the option for you. See the *Joining a Multiplayer Room* section for instructions on how to do this. +2. Host Your Own Room. + 1. This option will require you to be comfortable with accessing your router's configuration, altering firewall rules, and troubleshooting when things (inevitably) don't work out perfectly on the first try. Use this option if you want to control the room entirely, are concerned about latency issues, or just want to run something for your friends. See the *Hosting a Multiplayer Room* section for next steps*.* + +### Can Other Platforms Play Together? +Yes - the platform you choose to run the emulator on does not matter. Steam Deck users can play with Windows users, Android users can play with MacOS users, etc. Furthermore different emulators can play together as well (Eden/Citron/Ryubing, etc.) - but be you may want to all go to the same one if you are having issues. + +### What Pitfalls Should I Look Out For? +While it would be nice if everything always worked perfectly - that is not reality. Here are some things you should watch out for when attempting to play multiplayer. + +1. Emulator Version Mismatches + 1. Occasionally updates to the emulator of choice alter how the LDN functionality is handled. In these situations, unexpected behavior can occur when trying to establish LDN connections. This is a good first step to check if you are having issues playing a game together, but can join the same lobby without issue. +2. Game Version Mismatches + 1. It is best practice to have the game version be identical to each other in order to ensure that there is no difference in how the programs are handling the LDN logic. Games are black boxes that the dev team cannot see into to ensure the logic handling operates the same way. For this reason, it is highly advised that the game versions match across all the players. This would be a good 2nd step to check if you are having issues playing a game together, but can join the same lobby without issue. +3. Latency + 1. Because this implementation is emulating a LAN/Local Wireless connection - it is extremely sensitive to network latency and drops. Eden has done a good job of trying to account for this and not immediately drop users out - but it is not infallible. If latency is a concern or becomes an issue - consider hosting a room. + +--- + +## Joining a Multiplayer Room +Use this when you need to connect to a multiplayer room for LDN functionality inside of Eden. This does not cover how to host a room, only joining existing ones. + +**Click [Here](https://evilperson1337.notion.site/Access-Your-Multiplayer-Room-Externally-2c357c2edaf681c0ab2ce2ee624d809d) for a version of this guide with images & visual elements.** + +### Pre-Requisites +- Eden set up and functioning +- Multiplayer Options Configured in Eden Settings +- Network Access + +### Steps +There are 2 primary methods that you can use to connect to an existing room, depending on how the room is hosted. + +- Joining a Public Lobby + - This option allows you to view publicly hosted lobbies and join them easily. Use this option if you just want to join a room and play quickly. +- Directly Connecting to a Room + - Use this option if the hosted room is not on the public lobby list (private, internal network only, etc.) + + + +## Joining a Public Lobby +1. Open Eden and navigate to *Multiplayer → Browse Public Game Lobby*. +2. The **Public Room Browser** will now open and display a list of publicly accessible rooms. Find one you want to connect to and double click it. + + +3. You will now see a window showing everyone on the lobby, or an error message. + +### Direct Connecting to a Room +If the hoster has not made the lobby public, or you don't want to find it in the public game browser - use this option to connect. + +1. Open Eden and navigate to *Multiplayer → Direct Connect*. +2. Enter the *Server Address, Port*, *Nickname* (what your user will be called in the room), and a *Password* (if the hoster set one, otherwise leave it blank) and hit **Connect.** +3. You will now see a window showing everyone on the lobby, or an error message. + +--- + +## Hosting a Multiplayer Room +Use this guide for when you want to host a multiplayer lobby to play with others in Eden. In order to have someone access the room from outside your local network, see the *Access Your Multiplayer Room Externally* section for next steps. + +**Click [Here](https://evilperson1337.notion.site/Hosting-a-Multiplayer-Room-2c357c2edaf6819481dbe8a99926cea2) for a version of this guide with images & visual elements.** + +### Pre-Requisites +- Eden set up and Functioning +- Network Access +- Ability to allow programs through the firewall on your device. + +### Steps +1. Open Eden and navigate to *Emulation → Multiplayer → Create Room.* +2. Fill out the following information in the popup dialog box. + + + | **Option** | **Acceptable Values** | **Default** | **Description** | + | --- | --- | --- | --- | + | Room Name | *Any string between 4 - 20 characters.* | *None* | Controls the name of the room and how it would appear in the Public Game Lobby/Room screen. | + | Username | *Any string between 4 - 20 characters.* | *None* | Controls the name your user will appear as to the other users in the room. | + | Preferred Game | *Any Game from your Game List.* | The first game on your game list | What game will the lobby be playing? You are not forced to play the game you choose and can switch games without needing to recreate the room. | + | Password | *None or any string* | *None* | What password do you want to secure the room with, if any. | + | Max Players | 2 - 16 | 8 | How many players do you want to allow in the room at a time? | + | Port | 1024 - 65535 | 24872 | What port do you want to run the lobby on? Could technically be any port number, but it's best to choose an uncommon port to avoid potential conflicts. See [*Well-Known Ports*](https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers#Well-known_ports) for more information on ports commonly used. | + | Room Description | *None or any string* | *None* | An optional message that elaborates on what the room is for, or for a makeshift message of the day presented to users in the lobby. | + | Load Previous Ban List | [Checked, Unchecked] | Checked | Tells Eden to load the list containing users you have banned before. | + | Room Type | [Public, Unlisted] | Public | Specifies whether you want the server to appear in the public game lobby browser | +3. Click **Host Room** to start the room server. You may get a notice to allow the program through the firewall from your operating system. Allow it and then users can attempt to connect to your room. + +--- + +## Access Your Multiplayer Room Externally +Quite often the person with whom you want to play is located off of your internal network (LAN). If you want to host a room and play with them you will need to get your devices to communicate with each other. This guide will go over your options on how to do this so that you can play together. + +**Click [Here](https://evilperson1337.notion.site/Access-Your-Multiplayer-Room-Externally-2c357c2edaf681c0ab2ce2ee624d809d) for a version of this guide with images & visual elements.** + +### Pre-Requisites +- Eden set up and Functioning +- Network Access + +### Options + +#### Port Forwarding + +- **Difficulty Level**: High + + + + +Port forwarding is a networking technique that directs incoming traffic arriving at a specific port on a router or firewall to a designated device and port inside a private local network. When an external client contacts the public IP address of the router on that port, the router rewrites the packet's destination information (IP address and sometimes port number) and forwards it to the internal host that is listening on the corresponding service. This allows services such as web servers, game servers, or remote desktop sessions hosted behind NAT (Network Address Translation) to be reachable from the wider Internet despite the devices themselves having non-routable private addresses. + +The process works by creating a static mapping—often called a “port-forward rule”—in the router's configuration. The rule specifies three pieces of data: the external (public) port, the internal (private) IP address of the target machine, and the internal port on which that machine expects the traffic. When a packet arrives, the router checks its NAT table, matches the external port to a rule, and then translates the packet's destination to the internal address before sending it onward. Responses from the internal host are similarly rewritten so they appear to come from the router's public IP, completing the bidirectional communication loop. This mechanism enables seamless access to services inside a protected LAN without exposing the entire network. + +For our purposes we would pick the port we want to expose (*e.g. 24872*) and we would access our router's configuration and create a port-forward rule to send the traffic from an external connection to your local machine over our specified port (*24872)*. The exact way to do so, varies greatly by router manufacturer - and sometimes require contacting your ISP to do so depending on your agreement. You can look up your router on [*portforward.com*](https://portforward.com/router.htm) which may have instructions on how to do so for your specific equipment. If it is not there, you will have to use Google/ChatGPT to determine the steps for your equipment. + +Remember you can't have one port open for multiple devices at the same time - you must only host from one device (or do more convoluted networking which we will not cover here). + +#### Use a Tunnelling Service +- **Difficulty Level**: Easy + + + + +Using a Tunnelling service may be the solution to avoid port forward, but also avoid worrying about your users setup. A tunnelling service works by having a lightweight client run on the machine that hosts the game server. That client immediately opens an **outbound** encrypted connection (typically over TLS/QUIC) to a relay node operated by the tunnel provider's cloud infrastructure. Because outbound traffic is almost always allowed through NAT routers and ISP firewalls, the tunnel can be established even when the host sits behind carrier-grade NAT or a strict firewall. The tunnel provider then assigns a public address (e.g., `mygame.playit.gg:12345`). When a remote player connects to that address, the traffic reaches the the tunnel provider relay, which forwards it through the already-established tunnel back to the client on the private network, and finally onto the local game server's port. In effect, the server appears to the Internet as if it were listening on the public address, while the host never needs to configure port-forwarding rules or expose its own IP directly. + +For our purposes we would spawn the listener for the port that way chose when hosting our room. The user would connect to our assigned public address/port combination, and it would be routed to our machine. The tunnel must remain active for as long as you want the connection to remain open. Closing the terminal will kill the tunnel and disconnect the users. + +**Recommended Services:** +- [*Playit.GG*](https://playit.gg/) + + +#### Use a VPN Service + +- **Difficulty**: Easy + + + +The VPN solution is a good compromise between the tunnelling solution and port forwarding. You do not have to port forward or touch your networking equipment at all - but also don't need to send all your data connections through a 3rd party relay. The big downside is that you will have to ensure all of your users have your VPN solution installed *and* that they have a valid configuration. When looking for a solution, it is advised to find one that uses the WireGuard protocol for speed, and does not require communication with a server beyond the initial handshake. + +**Recommended Services:** +- [*Tailscale*](https://tailscale.com/) +- [*ZeroTier*](https://www.zerotier.com/) +- *Self-hosted VPN Solution* + - This is so far out of the scope of this document it has a different postal code. + +*Check with the provider you select on the sign up and installation process specific to that provider.* + +--- + +## Finding the Server Information for a Multiplayer Room +Use this guide when you need to determine the connection information for the Public Multiplayer Lobby you are connected to. + +**Click [Here](https://evilperson1337.notion.site/Finding-the-Server-Information-for-a-Multiplayer-Room-2c557c2edaf6809e94e8ed3429b9eb26) for a version of this guide with images & visual elements.** + +### Pre-Requisites +- Eden set up and configured +- Internet Access + +### Steps + +### Method 1: Grabbing the Address from the Log File +1. Open Eden and Connect to the room you want to identify. + 1. See the *Joining a Multiplayer Room* section for instructions on how to do so if you need them. +2. Go to *File → Open Eden Folder*, then open the **config** folder. +3. Open the the **qt-config.ini** file in a text editor. +4. Search for the following keys: + 1. `Multiplayer\ip=` + 2. `Multiplayer\port=` +5. Copy the Server Address and Port. + +### Method 2: Using a Web Browser +1. Obtain the name of the room you want the information for. +2. Open a Web Browser. +3. Navigate to [`https://api.ynet-fun.xyz/lobby`](https://api.ynet-fun.xyz/lobby) +4. Press *Ctrl + F* and search for the name of your room. +5. Look for and copy the Server Address and Port. + +### Method 3: Using a Terminal (PowerShell or CURL) +1. Obtain the name of the room you want the information for. +2. Open the terminal supported by your operating system. +3. Run one of the following commands, replacing ** with the name of the server from step 1. + + #### PowerShell Command [Windows Users] + + ```powershell + # Calls the API to get the address and port information + (Invoke-RestMethod -Method Get -Uri "https://api.ynet-fun.xyz/lobby").rooms | Where-Object {$_.Name -eq ''} | Select address,port | ConvertTo-Json + + # Example Output + #{ + # "address": "118.208.233.90", + # "port": 5001 + #} + ``` + + #### CURL Command [MacOS/Linux Users] **Requires jq* + + ```bash + # Calls the API to get the address and port information + curl -s "https://api.ynet-fun.xyz/lobby" | jq '.rooms[] | select(.name == "") | {address, port}' + + # Example Output + #{ + # "address": "118.208.233.90", + # "port": 5001 + #} + ``` + +4. Copy the Server Address and Port. + +--- + +## Multiplayer for Local Co-Op Games +Use this guide when you want to play with a friend on a different system for games that only support local co-op. + +**Click [Here](https://evilperson1337.notion.site/Multiplayer-for-Local-Co-Op-Games-2c657c2edaf680c59975ec6b52022a2d) for a version of this guide with images & visual elements.** + +Occasionally you will want to play a game with a friend on a game that does not support LDN multiplayer, and only offer local co-op (multiple controllers connected to a single console), such as with *New Super Mario Bros. U Deluxe.* Emulation solutions have developed 2 primary methods for handling these cases. + +1. Netplay: Netplay lets two or more players run the same game on their own computers while sharing each other's controller inputs over the internet, so everyone sees the same game world in sync. One player hosts the session, and the others join as guests, sending their button presses back and forth to keep the gameplay coordinated. + 1. This is a huge over-simplification of how it works, but gives you an idea +2. Low-Latency remote desktop solutions: Using a service like *Parsec*, the host shares his screen to a remote party with an input device connected. This device sends inputs to the host machine. + +In either situation at its core, we are emulating an input device on the host machine, so the game believes 2 controllers are connected. No current Switch emulator has a Netplay offering, so we use Parsec to accomplish this for us. + +### Pre-Requisites +- Eden Set Up and Fully Configured +- A [*Parsec*](https://parsec.app/) Account + - Parsec is free to use for personal, non-commercial use. For instructions on how to set up an account and install the client you should refer to the Parsec documentation on it's site. +- Parsec client installed on your machine and remote (friend's) machine + +### Steps + + + +1. Launch Parsec on the host machine. +2. Connect to the other player in Parsec. You will know it is successful when the other player can see the host's screen. + 1. If you are the one hosting the game, you will have your friend initiate the remote connection you will accept. + 2. If you are joining a game, you will have to send a connection request the host will have to accept. +3. Verify that the remote player can see the screen and that there is no issues with the connection. +4. Launch Eden. +5. Navigate to *Emulation → Configure*. +6. Select the **Controls** tab. +7. Set up your controller, if necessary. +8. Select the **Player 2** tab and select the **Connect Controller** checkbox. This enables inputs from another device to be seen as a second controller. +9. Dropdown the **Input Device** and select the controller. + 1. What exactly it shows up as depends on the Parsec settings. +10. Set up the remote player's controller. +11. Hit **OK** to apply the changes. +12. Launch the game you want to play and enter the co-op mode. How this works depends on the game, so you will have to look in the menus or online to find out. + +## Metaserver troubleshooting + +If you can't connect to the metaserver, it's likely your ISP is blocking the requests. + +### Linux and Steamdeck + +Most Linux systems and Steamdeck should allow to modify the base `/etc/hosts` file, this should fix the DNS lookup issue; hence add the following to said file: +``` +28.165.181.135 api.ynet-fun.xyz api.ynet-fun.xyz +``` + +### Zapret + +In `lists/list-general.txt` add the following: +``` +api.ynet-fun.xyz +ynet-fun.xyz +``` diff --git a/docs/user/Native.md b/docs/user/Native.md new file mode 100644 index 0000000000..0d8ee81a7a --- /dev/null +++ b/docs/user/Native.md @@ -0,0 +1,9 @@ +# User Handbook - Native Application Development + +Debugging on physical hardware can get tedious and time consuming. Users are empowered with the debugging capabilities of the emulator to ensure their applications run as-is on the system. To the greatest extent possible atleast. + +## Debugging + +**Standard key prefix**: Allows to redirect the key manager to a file other than `prod.keys` (for example `other` would redirect to `other.keys`). This is useful for testing multiple keysets. Default is `prod`. + +**Changing serial**: Very basic way to set debug values for the serial (and battery number). Developers do not need to write the full serial as only the first digits (excluding the last) will be accoutned for. Region settings will affect the generated serial. The serial corresponds to a non-OLED/Lite console. diff --git a/docs/user/Orphaned.md b/docs/user/Orphaned.md new file mode 100644 index 0000000000..f9d9d344ad --- /dev/null +++ b/docs/user/Orphaned.md @@ -0,0 +1,31 @@ +# Orphaned Profiles + +A bug present in earlier versions of Eden and Yuzu caused some profiles to be read from the incorrect location if your NAND directory was set to anything other than the default. This bug was fixed in Eden v0.0.4-rc1, but it can be destructive if you're not careful. + +## What are they? + +Orphaned profiles refer to emulated user profiles that may or may not contain valid save data, but are not referenced by the internal profile map. This means the save data is effectively inaccessible, and should be fixed in order to access your save data. + +## How do I fix it? + +There are lots of different cases of varying complexity. + +Remember to ALWAYS back up your saves! + +### Simple Copy + +Sometimes, a simple copying is all you need. For example, if the orphaned profile folder contains game saves, BUT the good profile is completely empty, then you can simply remove the empty folder and rename the orphaned profile to the same name as the good one. + +### Combination + +In more extreme cases, game saves can be strewn all throughout different profiles. In this case, you must look at each profile individually. + +Typically, one folder will clearly have more recent/numerous save data, in which case you can remove all the other profile folders and follow the same procedure as the simple copy. + +If multiple profile folders contain valid data, the recommended approach is to copy the contents of one folder into the other. There are likely to be file conflicts, the resolution of which is up to you. + +An alternate method for dealing with multiple valid profiles is to go into System -> Profiles, and create a new profile. From there, you can copy the contents of each previously-orphaned profile into a new profile. + +### Edge Cases + +There are way too many edge cases to cover here, but in general, make backups! You can never go wrong if you always have a backup of your saves. \ No newline at end of file diff --git a/docs/user/QuickStart.md b/docs/user/QuickStart.md new file mode 100644 index 0000000000..c7e7f566d6 --- /dev/null +++ b/docs/user/QuickStart.md @@ -0,0 +1,79 @@ +# Eden Quick Start + +Use this guide to get starting using the Eden emulator. + +**Click [Here](https://evilperson1337.notion.site/Eden-Quick-Start-2b057c2edaf6817b9859d8bcdb474017) for a version of this guide with images & visual elements.** + +## Windows + +### Pre-Requisites + +- The [*latest C++ Redistributable*](https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170#latest-supported-redistributable-version) from Microsoft. + - Eden will not even launch without it see [*Eden Fails to Launch*](./Troubleshoot.md) for more information. +- Firmware dumped from your console +- Keys extracted from your console +- Games dumped from your console +- Internet Connection + +### Steps + +1. Download either the *Stable* or *Nightly* Eden application. + +2. Extract the contents to wherever you want to store the program on your computer. + +3. Run ***Eden.exe*** to launch the program. + + +4. Eden will now launch and notify you about missing Decryption keys. Close the dialog box by hitting **OK**. +5. Navigate to **Tools → Install Decryption Keys**, navigate to the folder containing your key files and select the file, you should only be able to select one. +6. Navigate to **Tools → Install Firmware**, *Select **From Folder*** or ***From ZIP*** - depending on how your firmware is stored, navigate to where it is stored and select it. +7. Double-Click the main window to add the folder containing your games. +8. Go to *Emulation > Configure > Input* and set up your controller of choice. Click **OK** to close the dialog window. +9. Double-Click a game to run it. + +## Steamdeck + +### Pre-Requisites + +- Firmware dumped from your console +- Keys extracted from your console +- Games dumped from your console +- Internet Connection + +### Steps + +1. Access Steam Desktop Mode. +2. Download either the *Stable* or *Nightly* Eden AppImage onto your Steam Deck and save it somewhere accessible. + + + +3. Double-Click the Eden executable to launch the program. + + +4. If you have had a different Switch emulator installed, it will detect and ask if you want to import those settings. Make your selection to close the screen. +5. Eden will now launch and notify you about missing Encryption keys. Close the dialog box by hitting **OK**. +6. Navigate to **Tools → Install Decryption Keys**, navigate to the folder containing your ***prod.keys*** file and select the file and hit **Open**. +7. Navigate to **Tools → Install Firmware →** *Select **From Folder*** or ***From ZIP*** - depending on how your firmware is stored, navigate to where it is stored and select it. +8. Double-Click the main window to add the folder containing your games. +9. Go to *Emulation > Configure > Input* and set up your controller. Click **OK** to close the dialog window. +10. Double-Click a game to run it. diff --git a/docs/user/README.md b/docs/user/README.md new file mode 100644 index 0000000000..c1c4cd200a --- /dev/null +++ b/docs/user/README.md @@ -0,0 +1,51 @@ +# User Handbook + +The "FAQ". + +This handbook is primarily aimed at the end-user - baking useful knowledge for enhancing their emulation experience. + +A copy of this handbook is [available online](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/README.md). + +## Basics + +- **[The Basics](Basics.md)** +- **[Quickstart](./QuickStart.md)** +- **[Settings](./Settings.md)** +- **[Controllers](./Controllers.md)** + - **[Controller profiles](./Controllers.md#configuring-controller-profiles)** +- **[Audio](Audio.md)** +- **[Graphics](Graphics.md)** +- **[Installing Mods](./Mods.md)** +- **[Run On macOS](./RunOnMacOS.md)** +- **[Data, Savefiles and Storage](Storage.md)** +- **[Orphaned Profiles](Orphaned.md)** +- **[Troubleshooting](./Troubleshoot.md)** +- **[Using Amiibo](./UsingAmiibo.md)** +- **[Using Cheats](./UsingCheats.md)** +- **[Importing Saves](./ImportingSaves.md)** +- **[Installing Atmosphere Mods](./InstallingAtmosphereMods.md)** +- **[Installing Updates & DLCs](./InstallingUpdatesDLC.md)** +- **[Alter Date & Time](./AlterDateTime.md)** + +## 3rd-party Integration + +- **[Configuring Steam ROM Manager](./SteamROM.md)** +- **[Server hosting](ServerHosting.md)** +- **[Syncthing Guide](./SyncthingGuide.md)** +- **[Third Party](./ThirdParty.md)** + - **[Obtainium](./ThirdParty.md#configuring-obtainium)** + - **[ES-DE](./ThirdParty.md#configuring-es-de)** + - **[Mirrors](./ThirdParty.md#mirrors)** + - **[GameMode](./ThirdParty.md#configuring-gamemode)** + +## Advanced + +- **[Custom Firmware](./CFW.md)** +- **[How To Access Logs](./HowToAccessLogs.md)** +- **[Gyro Controls](./GyroControls.md)** +- **[Platforms and Architectures](Architectures.md)** +- **[Command Line](CommandLine.md)** +- **[Native Application Development](Native.md)** +- **[Adding Boolean Settings Toggles](AddingBooleanToggles.md)** +- **[Adding Debug Knobs](./AddingDebugKnobs.md)** +- **[Testing](Testing.md)** diff --git a/docs/user/RunOnMacOS.md b/docs/user/RunOnMacOS.md new file mode 100644 index 0000000000..2729e13ced --- /dev/null +++ b/docs/user/RunOnMacOS.md @@ -0,0 +1,37 @@ +# User Handbook - Run on macOS + +Current macOS support is still experimental and very reliant on MoltenVK developments, plans have shifted to properly provide support for KosmicKrisp and similar new GPU endeavours, but macOS users still are bound to MoltenVK itself. + +Users of macOS may wish to use [Asahi Linux](https://wiki.gentoo.org/wiki/Project:Asahi/Guide) for the rising KosmicKrisp support. + +As of writing, neither macOS nor Asahi has support for NCE; additionally Asahi has extraneous paging bugs with fastmem. + +## Allowing Eden to Run on MacOS + +Use this guide when you need to allow Eden to run on a Mac system, but are being blocked by Apple Security policy. + +**Click [Here](https://evilperson1337.notion.site/Allowing-Eden-to-Run-on-MacOS-2b057c2edaf681fea63dc81027efeffd) for a version of this guide with images & visual elements.** + +--- + +#### Pre-Requisites + +- Permissions to modify settings in MacOS + +--- + +### Why am I Seeing This? + +Recent versions of MacOS (Catalina & newer) introduced the **Gatekeeper** security functionality, requiring software to be signed by Apple or a trusted (aka - paying) developer. If the signature isn’t on the list of trusted ones, it will stop the program from executing and display the message above. + +--- + +### Steps + +1. Open the *System Settings* panel. +2. Navigate to *Privacy & Security*. +3. Scroll down and observe the following message under the **Security** settings. +4. Select **Open Anyway** to tell your Mac that you trust the application. +5. You will now get another window appearing to verify you want to open Eden. Select **Open Anyway**. +6. You will be prompted for your password to authorize the request. Enter the credentials of an account that has permission to modify settings and press **OK**. +7. Eden will now open and any subsequent launches of the program will not prompt this. \ No newline at end of file diff --git a/docs/user/ServerHosting.md b/docs/user/ServerHosting.md new file mode 100644 index 0000000000..bfd85c0bb4 --- /dev/null +++ b/docs/user/ServerHosting.md @@ -0,0 +1,32 @@ +# User Handbook - Server hosting + +This guide explains how to set up a public/private self hosted Eden server/lobby. + +## Using a Kamatera VPS and Docker on Ubuntu + +- Firstly, head over to kamatera.com and create an account. Sign in and create a new server under "My cloud", then create a new server. + +- Region: Choose a location that balances latency for both you and other players (example: New York for US-Europe connections if the host is based in the US). + +- Next, under Server OS Images, select Ubuntu 24.04 LTS. Configure CPU/RAM/specs as desired for your server. Complete the creation process. + +- Enable the Kamatera firewall and set default policy: IN: DROP, OUT: ACCEPT. + - After setting the default policy, add the three following rules: #1: SSH Access - Direction: IN, Interface: net0, Macro: SSH - Secure Shell Traffic, Source: ANY, Port: Blank/Auto (Handeld by SSH), Destination: Blank/Auto (Handeld by SSH), Policy: ACCEPT, leave a comment: SSH access. + - Then, after creating the first rule, add TCP & UDP Ports for Eden - Direction: IN, Interface: net0, Protocol: TCP or UDP (for respective rule), Source: ANY, Destination Port: 24872, Policy: ACCEPT, leave a comment: Eden server port. + - Note: Only UDP is required for Eden; opening TCP is optional. + +- SSH into the server: `ssh root@YOUR_SERVER_IP`. + +- Install Docker: `apt update`, `apt install -y docker.io`, `systemctl enable --now docker`. Verify Docker installation: `docker --version` + +- (Optional) Install Eden AppImage: `chmod +x Eden-Linux*.AppImage` This step is optional and only needed if you want to manage Eden locally on a VPS. + +- Now, we configure the lobby itself. Run the server: `docker run -d --name eden-lobby --restart unless-stopped -p 24872:24872/udp ikuzen/yuzu-hdr-multiplayer-dedicated --room-name "My Eden Room" --password "MySecurePass2025" --max-members 8 --preferred-game "Mario Kart 8 Deluxe" --preferred-game-id "01000ABF0C84C000" --web-api-url "api.ynet-fun.xyz"` This command starts the server in the background, maps the UDP port, and sets your room settings. + +- Now you can try verifying the server: `docker ps` You should see: `eden-lobby Up 0.0.0.0:24872->24872/udp` + +- Connect from the client: Open Eden on your PC, go to Multiplayer > Direct Connect to Room, enter the VPS IP address, use the room name and password you set above or alternatively you should see your lobby within the "Browse Public Game Lobby" section as well. + +- Managing the Docker container: Stop the server: `docker stop eden-lobby`, Start it again: `docker start eden-lobby`, Remove it: `docker rm -f eden-lobby` if you want to change the name of your lobby, you must first stop the server via: docker stop eden-lobby, then remove it via: docker rm -f eden-lobby. Then edit the server name and just repaste the updated command. + +- Notes: Only UDP port 24872 is strictly required. You can customize room name, password, max members, and preferred game. Optional parameters from the original Outcaster guide include: `--room-description` (Adds a room description in the lobby), `--allowed-name-suffix` (Restricts usernames), `--moderator-password` (Adds a moderator role), `--allow-non-preferred-game` (Allows games other than the preferred game) diff --git a/docs/user/Settings.md b/docs/user/Settings.md new file mode 100644 index 0000000000..9153a27e4d --- /dev/null +++ b/docs/user/Settings.md @@ -0,0 +1,53 @@ +# User Handbook - Settings + +As the emulator continues to grow, so does the number of settings that come and go. + +Most of the development adds new settings that enhance performance/compatibility, only to be removed later in newer versions due to newfound discoveries or because they were "a hacky workaround". + +As such, this guide will NOT mention those kind of settings, we'd rather mention settings which have a long shelf time (i.e won't get removed in future releases) and are likely to be unchanged. + +Some of the options are self explainatory, and they do exactly what they say they do (i.e "Pause when not in focus"); such options will be also skipped due to triviality. + +## Foreword + +Before touching the settings, please see the game boots with stock options. We try our best to ensure users can boot any game using the default settings. If they don't work, then you may try fiddling with options - but please, first use stock options. + +## General + +- `General/Force X11 as Graphics Backend`: Wayland on *NIX has prominent issues that are unlikely to be resolved; the kind that are "not our fault, it's Wayland issue", this "temporary" hack forces X11 as the backend, regardless of the desktop manager's default. +- `General/Enable Gamemode`: This only does anything when you have Feral Interactive's Gamemode library installed somewhere, if you do, this will help boost FPS by telling the OS to explicitly prioritize *this* application for "gaming" - only for *NIX systems. +- `Hotkeys`: Deceptively to remove a hotkey you must right click and a menu will appear to remove that specific hotkey. +- `UI/Language`: Changes language *of the interface* NOT the emulated program! +- `Debug/Enable Auto Stub`: May help to "fix" some games by just lying and saying that everything they do returns "success" instead of outright crashing for any function/service that is NOT implemented. +- `Debug/Show log in console`: Does as said, note that the program may need to be reopened (Windows) for changes to take effect. +- `Debug/Flush log output`: Classically, every write to the log is "buffered", that is, changes aren't written to the disk UNTIL the program has decided it is time to write, until then it keeps data in a buffer which resides on RAM. If the program crashes, the OS will automatically discard said buffer (any RAM associated with a dead process is automatically discarded/reused for some other purpose); this means critical data may not be logged to the disk on time, which may lead to missing log lines. Use this if you're wanting to remove that factor when debugging, sometimes a hard crash may "eat" some of the log lines IF this option isn't enabled. +- `Debug/Disable Macro HLE:` The emulator has HLE emulation of macro programs for Maxwell, this means that some details are purpousefully skipped; this option forces all macro programs to be ran without skipping anything. + +## System + +- `System/RNG Seed`: Set to 0 (and uncheck) to disable ASLR systemwide (this makes mods like CTGP to stop working); by default it enables ASLR to replicate console behaviour. +- `Network/Enable Airplane Mode`: Enable this if a game is crashing before loading AND the logs mention anything related to "web" or "internet" services. + +## CPU + +- `CPU/Virtual table bouncing`: Some games have the tendency to crash on loading due to an indirect bad jump (Pokemon ZA being the worst offender); this option lies to the game and tells it to just pretend it never executed a given function. This is fine for most casual users, but developers of switch applications **must** disable this. This temporary "hack" should hopefully be gone in 6-7 months from now on. +- `Fastmem`, aka. `CPU/Enable Host MMU`: Enables "fastmem"; a detailed description of fastmem can be found [here](../dynarmic/Design.md#fast-memory-fastmem). +- `CPU/Unsafe FMA`: Enables deliberate innacurate FMA behaviour which may affect how FMA returns any given operation - this may introduce tiny floating point errors which can cascade in sensitive code (i.e FFmpeg). +- `CPU/Faster FRSQRTE and FRECPE`: Introduces accuracy errors on square root and reciprocals in exchange for less checks - this introduces inaccuracies with some cases but it's mostly safe. +- `CPU/Faster ASIMD Instructions`: Skips rounding mode checks for ARM ASIMD instructions - this means some code dpeending on these rounding modes may misbehave. +- `CPU/Disable address space checks`: Before each memory access, the emulator checks the address is in range, if not it faults; this option makes it so the emulator skips the check entirely (which may be expensive for a myriad of reasons). However at the same time this allows the guest program to "break out" of the emulation context by writing to arbitrary addresses. +- `CPU/Ignore global monitor`: This relies on a quirk present on x86 to avoid the ARM global monitor emulation, this may increase performance in mutex-heavy contexts (i.e games waiting for next frames or such); but also can cause deadlocks and fun to debug issues. + +It is important to note the majority of precision-reducing instructions do not benefit cases where they are not used, which means the performance gains will vary per game. + +# Graphics + +See also [an extended breakdown of some options](./Graphics.md). + +- `Extras/Extended Dynamic State` and `Extras/Vertex Input Dynamic State`: These Vulkan extensions essentially allow you to reuse the same pipeline but just change the state between calls (so called "dynamic state"); the "extended" levels signifies how much state can be placed on this "dynamic" range, for example the amount of depth culling to use can be placed on the dynamic state, avoiding costly reloads and flushes. While this by itself is a fine option, SOME vendors (notably PowerVR and Mali) have problems with anything related to EDS3. EDS3 contains EDS2, and EDS2 contains EDS1. Essentially this means more extended data the driver has to keep track of, at the benefit of avoiding costly flushes. +- `Advanced/Use persistent cache`: This saves compiled shaders onto the disk, independent of any driver's own disk saved shaders (yes, some drivers, notably NVIDIA, save a secondary shader cache onto disk) - disable this only if you're debugging or working on the GPU backend. This option is meant to massively help to reduce shader stutters (after playing for one session that compiles them). +- `Advanced/Use Vulkan pipeline cache`: This is NOT the same as `Use persistent cache`; it's a separate flag that tells the Vulkan backend to create pipeline caches, which are a detail that can be used to massively improve performance and remove pipeline creation overhead. This is a Vulkan feature. + +## Controls + +See [controllers](./Controllers.md). diff --git a/docs/user/SteamROM.md b/docs/user/SteamROM.md new file mode 100644 index 0000000000..a782b51969 --- /dev/null +++ b/docs/user/SteamROM.md @@ -0,0 +1,265 @@ +# User Handbook - Configuring Steam ROM Manager + +## Importing Eden into Steam with Steam Rom Manager + +Use this when you want to import the Eden AppImage into your Steam Library along with artwork using *Steam ROM Manager.* + +**Click [Here](https://evilperson1337.notion.site/Importing-Eden-into-Steam-with-Steam-Rom-Manager-2b757c2edaf68054851bc287b6382cb5) for a version of this guide with images & visual elements.** + +--- + +#### Pre-Requisites + +- Eden set up and configured +- Internet Connection +- Comfort Accessing and Navigating SteamOS Desktop Mode + +--- + +### Steps + +#### Initial Setup + +1. Press the **STEAM** button and then go to *Power → Switch to Desktop* to enter the Desktop mode. + +2. Install ***Steam ROM Manager*** (if needed), there are 2 ways you can accomplish this, either manually or through [*EmuDeck*](https://www.emudeck.com/#downloads). + + --- + + #### Manual Installation + + 1. Open the *Discover Store* and search for *Steam ROM Manager.* + 2. Select the **Install** button to install the program. + + --- + + #### Installing Through *EmuDeck* + + + + 1. Open **EmuDeck**, then navigate to *Manage Emulators.* + 2. Scroll down to the bottom of the page to the *Manage your Tools & Frontends* section. Click **Steam ROM Manager**. + 3. Click the **Install** button on the right hand side to install it. + + --- + +#### Adding Eden into *Steam ROM Manager* + +#### EmuDeck Users + +EmuDeck will automatically create an *Emulators - Emulators* parser for ***Steam ROM Manager*** that uses shell scripts to launch them. We will follow this convention. + +1. In the file explorer go to your **EmuDeck installation folder → tools → launchers** +2. Right-Click some empty space and hit **Create New → Text File,** call this new file ***eden.sh*** instead of ***Text File.txt*** +3. Right-Click the ***eden.sh*** file you created and hit ***Open with Kate***. +4. Paste the following code into the contents of the file, save and close the file. + + ```bash + #!/bin/bash + emuName="eden" #parameterize me + + . "$HOME/.config/EmuDeck/backend/functions/all.sh" + emulatorInit "$emuName" + + # find full path to emulator appimage + appimage=$(find "$emusFolder" -iname "${emuName}*.AppImage" -print -quit 2>/dev/null) + + # make sure the appimage is executable + chmod +x "$appimage" + set -- "$appimage" "$@" + + echo "Launching ${emuName} with:" "$@" + "$@" + + cloud_sync_uploadForced + rm -rf "$savesPath/.gaming" + ``` + +5. Open a terminal in the directory containing the ***eden.sh*** file and run the following command to make it executable. + + ```bash + chmod u+x ./eden.sh + ``` + +6. Proceed to the Adding the Emulator section + +--- + +#### Non-EmuDeck Users + +We will need to create a new parser for the Emulators. Unlike with the EmuDeck model, we will have the parser look for AppImages. + + + +1. Open *Steam ROM Manager* and choose **Create Parser**. + + + +2. Add the following settings to create the parser. + + 1. Basic Configuration + 1. **Parser Type**: *Blob* + 2. **Parser Title**: *Emulators - Emulators* + 3. **Steam Directory**: *${steamdirglobal}* + 4. **User Accounts**: *Global* + 5. **ROMs Directory**: + 6. **Steam Collections**: *Emulation* (OPTIONAL) + 2. Parser Specific Configuration + 1. **Search Glob**: *${title}@(.AppImage|.APPIMAGE|.appimage)* + 3. Executable Configuration + 1. **Executable Modifier**: *"${exePath}”* + 4. Title Modification Configuration + 1. **Title Modifier**: *${fuzzyTitle}* + +3. Hit the **Test** button to ensure your emulator AppImages. +4. Hit **Save** to save the Parser. + +--- + +#### Adding Eden to Steam + +Now that we have the parser or shell script created, we can actually add it to Steam. + +1. Open *Steam ROM Manager* if it is not already open. +2. Toggle the **Emulators - Emulators** parser on and hit ***Add Games*** in the top left. +3. Click **Parse** to identify the emulators. +4. Make sure all your emulators are showing up and have the right matches. + + --- + + #### Correcting a Mismatch + + If the emulator is not identified correctly, you may need to tell *Steam ROM Manager* what the game is manually. + + 1. Hover over the emulator card and click the magnifying glass icon. Here it incorrectly identified *Eden* as a game by a similar name. ** + 2. Search for *Eden Emulator* on the *Search SteamGridDB* section and scroll through the results, selecting the one you want. + 3. Ensure the *Name* and *Game ID* update in the **Per-App Exceptions** and press **Save and close**. The game should now update. + + --- + + #### Excluding Matches + + You may want to tell Steam ROM Manager to ignore some files that it finds in the directory. This is how you do so. + + 1. Hit the **Exclude Games** button in the bottom right. + 2. Deselect the game you want to exclude, the poster artwork should go dim and the **Number Excluded** number should increment up. Repeat with any other exclusions you want to add. + 3. Hit **Save Excludes** when you are happy with your selections. + + --- + +5. The program will now start writing the entries into the Steam Library. You should get pop up notifications of the progress, but you can monitor the progress by selecting the **Log** on the left-hand side if needed. +6. Restart Steam to have the changes take effect. Check your library to ensure that your games are there, in a category if you defined one in the parser. +7. Try to launch the Emulator from Steam and ensure everything is working. You are now good to go. + +## Importing Games into Steam with Steam Rom Manager + +Use this when you want to import your games inside Eden into Steam to launch with artwork from Steam Game Mode without needing to launch Eden first. + +**Click [Here](https://evilperson1337.notion.site/Importing-Games-into-Steam-with-Steam-Rom-Manager-2b757c2edaf680d7a491c92b138f1fcc) for a version of this guide with images & visual elements.** + +--- + +#### Pre-Requisites + +- Steam Deck Set up and Configured +- Eden set up and Configured +- Internet Access + +--- + +### Steps + +1. Press the **STEAM** button and then go to *Power → Switch to Desktop* to enter the Desktop mode. + +1. Install ***Steam ROM Manager***, there are 2 ways you can accomplish this, either manually or through [*EmuDeck*](https://www.emudeck.com/#downloads). + + --- + + #### Manual Installation + + 1. Open the *Discover Store* and search for *Steam ROM Manager.* + 2. Select the **Install** button to install the program. + + --- + + #### Installing Through *EmuDeck* + + + + 1. Open **EmuDeck**, then navigate to *Manage Emulators.* + 2. Scroll down to the bottom of the page to the *Manage your Tools & Frontends* section. Click **Steam ROM Manager**. + + 3. Click the **Install** button on the right hand side to install it. + + --- + +2. Open the Start Menu and Launch ***Steam ROM Manager*** + +1. The program will now launch and show you a window with parsers. + + + +2. Switch off all Parsers by hitting the *Toggle Parsers* switch. +3. Scroll down the list on the left-hand side and look for a parser called *Nintendo Switch - Eden* and switch it on. This parser may not exist depending on how you installed *Steam ROM Manager* (EmuDeck creates it for you). Follow these steps to create it if it is missing. + + --- + #### Creating the Eden Parser + + 1. Select Create Parser and in the *Community Presets* option look for **Nintendo Switch - Yuzu**. + 2. Change the **Parser title** from *Nintendo Switch - Yuzu* to *Nintendo Switch - Eden.* + 3. Hit the **Browse** option under the *ROMs directory* section. Select the directory containing your Switch ROMs. + 4. Under *Steam collections*, you can add a Steam category name. This just organizes the games under a common category in your Steam Library, this is optional but recommended. + 5. Scroll down slightly to the **Executable Configuration → Executable**, select **Browse** and select the Eden AppImage. + 6. Leave everything else the same and hit **Save** to save the parser. + --- + +4. Click the Eden parser to view the options on the right, select **Test** at the bottom of the screen to ensure that *Steam ROM Manager* detects your games correctly. +1. *Steam ROM Manager* will start to scan the specified ROMs directory and match them to games. Look over the results to ensure they are accurate. If you do not see any entries - check your parsers ROMs directory field. +1. When you are happy with the results, click the **Add Games** → **Parse** to start the actual Parsing. +1. The program will now identify the games and pull artwork from [*SteamGridDB*](https://www.steamgriddb.com/). +2. Review the game matches and ensure everything is there. + + --- + + #### Correcting a Mismatch + + If the game is not identified correctly, you may need to tell *Steam ROM Manager* what the game is manually. + + 1. Hover over the game card and click the magnifying glass icon. + 2. Search for the game on the *Search SteamGridDB* section and scroll through the results, selecting the one you want. + 3. Ensure the *Name* and *Game ID* update in the **Per-App Exceptions** and press **Save and close**. The game should now update. + + --- + + #### Excluding Matches + + You may want to tell Steam ROM Manager to ignore some files (updates/DLC/etc.) that it finds in the directory. This is how you do so. + + 1. Hit the **Exclude Games** button in the bottom right. + 2. Deselect the game you want to exclude, the poster artwork should go dim and the **Number Excluded** number should increment up. Repeat with any other exclusions you want to add. + 3. Hit **Save Excludes** when you are happy with your selections. + --- +3. When you are happy with the results, select **Save to Steam** to save the results. +1. The program will now start writing the entries into the Steam Library. You should get pop up notifications of the progress, but you can monitor the progress by selecting the **Log** on the left-hand side if needed. +2. Restart Steam to have the changes take effect. Check your library to ensure that your games are there, in a category if you defined one in the parser. +3. Try to launch a game and ensure everything is working. You are now good to go. diff --git a/docs/user/Storage.md b/docs/user/Storage.md new file mode 100644 index 0000000000..1719bd967c --- /dev/null +++ b/docs/user/Storage.md @@ -0,0 +1,39 @@ +# User Handbook - Data, savefiles and storage + +## Cheats + +Cheats can be placed in the two manners: + +**Method 1**: +- Right click on "Open mod directory" +- Create a file called `cheat_mycheat.txt` (the file must start with `cheat_` to be recognized as one) +- Write the cheat into said text file +- Done + +This method doesn't account for build IDs, so any cheats for previous builds will not be automatically filtered out. + +**Method 2**: +- Right click on "Open mod directory" +- Create a folder called `My cheat` +- Inside said folder create another one: `cheats` +- Then inside said folder create a file with the build ID in hexadecimal, lowercase, for example `1234FBCDE0000000.txt` +- Write the cheat into said text file +- Done + +To delete a cheat simply do the process backwards (delete the folder/file). + +## Savefiles + +The method to access save data is simple: +- Right click on "Open save directory" + +## Maintaining a library + +### ZFS + +One of the best ways to keep a gallery of archives is using a ZFS pool compressed with zstd. +```sh +sudo zfs create zroot/switch` +sudo zfs set compression=zstd zroot/switch +``` +A new ZFS dataset will then be available on `/zroot/switch`. From which then can be added as a normal game directory. Remember to ensure proper permissions with `chmod 755 /zroot/switch/*`. diff --git a/docs/user/SyncthingGuide.md b/docs/user/SyncthingGuide.md new file mode 100644 index 0000000000..21b4d2acce --- /dev/null +++ b/docs/user/SyncthingGuide.md @@ -0,0 +1,211 @@ +# User Handbook - Backing Up/Syncing Eden Game Saves + +Use this guide for when you want to configure automated backup/syncing of your Eden save files using [*Syncthing*](https://syncthing.net/). + +**Click [Here](https://evilperson1337.notion.site/Backing-Up-Syncing-Eden-Game-Saves-2b357c2edaf68000b40cfab2c2c3dc0a) for a version of this guide with images & visual elements.** + +### Pre-Requisites + +- Eden already installed, configured, and functioning. +- Devices to run Syncthing on. +- Ability to allow a program to communicate through the firewall of your device. + +## Introduction + + + +- While this is a de-centralized model without the concepts of a Server/Client, Parent/Child, etc. - For the purposes of these guides, we will borrow from this models terminology to avoid sync conflicts and potential data loss. After the initial setup, all the devices in the sync network are equals and can push & pull files from any other device. +- In order for this to work, you should get all of the save files in Eden in the save folder on the Parent. + - If you need help doing that, see the ***Importing Saves into Eden*** guide for the platform you elect to act as the Parent, and delete the save files on the "Child" devices. + +### Terminology + +- **Sync Network**: All the devices configured in *Syncthing* to push/pull files. +- **Parent**: This will be the device that you elect to push files to the other devices. There can only be one here initially in order to avoid sync conflicts. +- **Child**: All the other devices added to the Sync Network. These devices will pull files from the Parent. + +## Overview + +Rather than giving a breakdown of all the platforms and configurations, those will be in the platform’s specific guides - this will serve as a general overview of Syncthing. + +### What is Syncthing Anyway? + +Syncthing is a continuous file synchronization program (in the layman’s - make sure 2 or more systems with the same files are always up to date). This is perfect for game saves where we would want to play on 1 device, save our game, and then continue playing it on another device. This technology is what Epic/Steam/etc. use to allow you to do this on games run through their respective services. Syncthing is an open source implementation of this technology that you control, rather than relying on a 3rd party. This has a few key benefits, most notably - better security, privacy, and speed (when on your LAN). + +### What are some common issues? + +Syncthing is fairly robust and doesn’t have many issues luckily, but there are some things you should watch out for (almost all of them a user issue). + +- Sync conflicts + - If for whatever reason you update the same file on 2 different machines, the system does not know which updated file is considered the one to sync across. This results in a ***sync conflict*** where it may not sync the files as you would expect. Worst case scenario, this can result in your save progress being lost if you are not careful. When one of these occurs, it will create a copy of the file and store it with a specific name, like this example, *Paper Mario.sync-conflict-20251102-072925-TZBBN6S.srm.* To resolve this, you must remove the other files and remove the *.sync-conflict--* from the file name of the file you want to keep. +- Accidental Deletions + - If you delete a file from one of the devices, it will also remove the file on the other devices when they perform a sync so be careful when doing this. + +## Windows + +### Pre-Requisites + +- Eden already installed, configured, and functioning. +- Ability to allow a program to communicate through the firewall in Windows. +- Ability to extract archive (.zip/.7z/.rar) files. + +### Steps + + + +#### Downloading and Installing *Syncthing* + +1. Download [*Syncthing Tray*](https://martchus.github.io/syncthingtray/#downloads-section). + 1. While it is available as a command line interface, for most people I would recommend *Syncthing Tray* on Windows. For most people here, you would download the **64-bit (Intel/AMD)** version. +2. Open the downloaded archive and extract the **syncthingtray.exe** to wherever you want to store the executable. +3. Double-Click the application to run it, select the **Start guided setup** on the splash screen that appears and press **Next**. + + +4. It will then look for an existing Syncthing instance to pull settings from, but will likely fail to do so if you are here. Regardless, select the **Yes, continue configuration** option. +5. Select ***Start Syncthing application that is built into Syncthing Tray***, this means it will use a built in Syncthing executable rather than relying on an externally provided one. Press **Next** to continue. +6. Check the box to start Syncthing Tray on login - as the name implies, this means the program will run automatically whenever you log onto the computer. Press Next to continue. +7. You will now be presented with a confirmation window with your selections, confirm they are what you want and hit **Apply** to continue. +8. You will now be prompted with a confirmation window and a message to allow it through the firewall. Allow the access through the firewall to close that pop up. The confirmation screen has a QR code and the devices identifier - you will need one of these to add other devices to the sync system. +9. *Syncthing/Syncthing Tray* are now installed. + +#### Configuring this Machine as a Parent + +Use this when you want to set this machine as the initial source of truth (push files out to all the other devices). Afterwards they will all be equal partners, not a parent/child relationship, this just helps with initial setup. + +1. Right-Click the *Syncthing* Tray icon in your taskbar and select **Open Syncthing.** +2. You will now have a browser window open up to a web GUI to configure *Syncthing*. You will get a pop up about allowing anonymous usage and setting a password, make your selections to close them. +3. We’ll start by adding the folder with our save files that we want to sync by Pressing **+ Add Folder**. +4. A pop-up window will appear, fill in the Folder label field with whatever you want to call it, like Switch Saves. +5. Enter the Full folder path to where your save files are stored on this machine. + + + +6. Ignore the other tabs for now and hit **Save**. +7. The folder is now ready to be shared with other devices. + +#### Configuring this Machine as a Child + +Use this when you want to set this machine up as a child (pull files from the other devices). Afterwards they will all be equal partners, not a parent/child relationship, this just helps with initial setup. + +1. Install Syncthing Tray on the client device following the section above. Copy the child’s ID and store it so it is accessible to the Parent. +2. ***ON THE PARENT***: Right-Click the *Syncthing* Tray icon in your taskbar and select **Open Syncthing** if it is not open already**.** +3. You will now have a browser window open up to a web GUI to configure *Syncthing*. You will get a pop up about allowing anonymous usage and setting a password, make your selections to close them. +4. Navigate down to **+ Add Remote Device**, we are going to add our Child device, so I hope you have its ID handy. If not, go back and get it. +5. Add the ID and Name the device, the device may appear as a **nearby device**, in which case you can just click it to pre-populate the Device ID. +6. Click the **Sharing** Tab, and check the box next to the folder you set up on the Parent (Switch Saves in my case). Hit **Save.** +7. We are done with the parent, now **SWITCH OVER TO THE CHILD.** +8. ***ON THE CHILD***: Right-Click the *Syncthing* Tray icon in your taskbar and select **Open Syncthing** if it is not open already**.** +9. You should now see a connection request from the parent. Hit **+ Add Device** to add the device. +10. Hit **Save** to finish adding the device. +11. That pop-up will close and you will get notification that the device wants to share a folder now. Hit **Add.** +12. Enter the path to the save folder in Eden and hit **Save.** + + + +13. *Syncthing* will now pull all the files from the Parent and store them in your local save directory. At this point the files are in sync and alterations to one will affect the other and both can be considered “*Parents*” for other devices you want to add. Repeat these steps for as many devices you want. + +## Linux + +### Pre-Requisites + +- Eden already installed, configured, and functioning. + +### Step 1: Downloading and Installing Syncthing + + + + + +1. Download [*Syncthing Tray*](https://flathub.org/en/apps/io.github.martchus.syncthingtray) from the Flatpak store. +2. Launch *Syncthing Tray* to run it, select the **Start guided setup** on the splash screen that appears and press **Next**. +3. It will then look for an existing *Syncthing* instance to pull settings from, but will likely fail to do so if you are here. Regardless, select the **Yes, continue configuration** option. +4. Select ***Start installed Syncthing application via Syncthing Tray***, this means it will use a built in Syncthing executable rather than relying on an externally provided one. Press **Next** to continue. +5. You will now be presented with a confirmation window with your selections, confirm they are what you want and hit **Apply** to continue. +6. You will now be prompted with a confirmation window that has a QR code and the devices identifier - you will need one of these to add other devices to the sync system. +7. *Syncthing/Syncthing Tray* are now installed. Press Finish to close the pop up. + + +### Step 2: Configuring this Machine as a Parent + +Use this when you want to set this machine as the initial source of truth (push files out to all the other devices). Afterwards they will all be equal partners, not a parent/child relationship, this just helps with initial setup. + +1. Right-Click the *Syncthing* Tray icon in your taskbar and select **Open Syncthing.** + 1. If you don’t have a taskbar in your distro, you can also reach it directly by opening a web browser to: *http://127.0.0.1:8384/.* +2. You will now have a browser window open up to a web GUI to configure *Syncthing*. You will get a pop up about allowing anonymous usage and setting a password, make your selections to close them. +3. We’ll start by adding the folder with our save files that we want to sync by Pressing **+ Add Folder**. +4. A pop-up window will appear, fill in the Folder label field with whatever you want to call it, like Switch Saves. +5. Enter the Full folder path to where your save files are stored on this machine. + + + +6. Ignore the other tabs for now and hit **Save**. +7. The folder is now ready to be shared with other devices. + +### Step 3: Configuring this Machine as a Child + +Use this when you want to set this machine up as a child (pull files from the other devices). Afterwards they will all be equal partners, not a parent/child relationship, this just helps with initial setup. + +1. Install Syncthing Tray on the client device following the section above. Copy the child’s ID and store it so it is accessible to the Parent. +2. ***ON THE PARENT***: Right-Click the *Syncthing* Tray icon in your taskbar and select **Open Syncthing** if it is not open already**.** +3. You will now have a browser window open up to a web GUI to configure *Syncthing*. You will get a pop up about allowing anonymous usage and setting a password, make your selections to close them. +4. Navigate down to **+ Add Remote Device**, we are going to add our Child device, so I hope you have its ID handy. If not, go back and get it. +5. Add the ID and Name the device, the device may appear as a **nearby device**, in which case you can just click it to pre-populate the Device ID. +6. Click the **Sharing** Tab, and check the box next to the folder you set up on the Parent (Switch Saves in my case). Hit **Save.** +7. We are done with the parent, now **SWITCH OVER TO THE CHILD.** +8. ***ON THE CHILD***: Right-Click the *Syncthing* Tray icon in your taskbar and select **Open Syncthing** if it is not open already. +9. You should now see a connection request pop-up from the parent. Hit **+ Add Device** to add the device. +10. Hit **Save** to finish adding the device. +11. That pop-up will close and you will get notification that the device wants to share a folder now. Hit **Add.** +12. Enter the path to the save folder in Eden and hit **Save.** + + + +13. *Syncthing* will now pull all the files from the Parent and store them in your local save directory. At this point the files are in sync and alterations to one will affect the other and both can be considered “*Parents*” for other devices you want to add. Repeat these steps for as many devices you want. diff --git a/docs/user/Testing.md b/docs/user/Testing.md new file mode 100644 index 0000000000..eb3beeb37c --- /dev/null +++ b/docs/user/Testing.md @@ -0,0 +1,99 @@ +# Testing + +When you're testing a pull request (PR) and encounter unexpected behavior, it's important to determine whether the issue was introduced by the PR or if it already exists in the base code. To do this, compare the behavior against the based master branch. + +Even before an issue occurs, it is best practice to keep the same settings and delete the shader cache. Using an already made shader cache can make the PR look like it is having a regression in some rare cases. + +Try not to test PRs which are for documentation or extremely trivial changes (like a PR that changes the app icon), unless you really want to; generally avoid any PRs marked `[docs]`. + +If a PR specifies it is for a given platform (i.e `linux`) then just test on Linux. If it says `NCE` then test on Android and Linux ARM64 (Raspberry Pi and such). macOS fixes may also affect Asahi, test that if you can too. + +You may also build artifacts yourself, be aware that the resulting builds are NOT the same as those from CI, because of package versioning and build environment differences. One famous example is FFmpeg randomly breaking on many Arch distros due to packaging differences. + +## Quickstart + +Think of the source code as a "tree", with the "trunk" of that tree being our `master` branch, any other branches are PRs or separate development branches, only our stable releases pull from `master` - all other branches are considered unstable and aren't recommended to pull from unless you're testing multiple branches at once. + +Here's some terminology you may want to familiarize yourself with: + +- PR: Pull request, a change in the codebase; from which the author of said change (the programmer) requests a pull of that branch into master (make it so the new code makes it into a release basically). +- Bisect: Bilinear method of searching regressions, some regressions may be sporadic and can't be bisected, but the overwhelming majority are. +- WIP: Work-in-progress. +- Regression: A new bug/glitch caused by new code, i.e "Zelda broke in android after commit xyz". +- Master: The "root" branch, this is where all merged code goes to, traditionally called `main`, `trunk` or just `master`, it contains all the code that eventually make it to stable releases. +- `HEAD`: Latest commit in a given branch, `HEAD` of `master` is the latest commit on branch `master`. +- `origin`: The default "remote", basically the URL from where git is located at, for most of the time that location is https://git.eden-emu.dev/eden-emu/eden. + +## Testing checklist + +For regressions/bugs from PRs or commits: + +- [ ] Occurs in master? + - If it occurs on master: + - [ ] Occurs on previous stable release? (before this particular PR). + - If it occurs on previous stable release: + - [ ] Occurs on previous-previous stable release? + - And so on and so forth... some bugs come from way before Eden was even conceived. + - Otherwise, try bisecting between the previous stable release AND the latest `HEAD` of master + - [ ] Occurs in given commit? +- [ ] Occurs in PR? + - If it occurs on PR: + - [ ] Bisected PR? (if it has commits) + - [ ] Found bisected commit? + +If an issue sporadically appears, try to do multiple runs, try if possible, to count the number of times it has failed and the number of times it has "worked just fine"; say it worked 3 times but failed 1. then there is a 1/4th chance every run that the issue is replicated - so every bisect step would require 4 runs to ensure there is atleast a chance of triggering the bug. + +## What to do when something seems off + +If you notice something odd during testing: + +- Reproduce the issue using the based master branch. +- Observe whether the same behavior occurs. + +From there onwards there can be two possible outcomes: + +- If the issue exists in the based master: This means the problem was already present before the PR. The PR most likely did not introduce the regression. +- If the issue does not exist in the based master: This suggests the PR most likely introduced the regression and needs further investigation. + +## Reporting Your Findings + +When you report your results: + +- Clearly state whether the behavior was observed in the based master. +- Indicate whether the result is good (expected behavior) or bad (unexpected or broken behavior). Without mentioning if your post/report/log is good or bad it may confuse the developer of the PR. + +For example: + +1. "Bad result for PR: Tested on based master - issue not present. Likely regression introduced." +2. "Good result for PR: Tested on based master - issue already present. Not a regression." + +This approach helps maintain clarity and accountability in the testing process and ensures regressions are caught and addressed efficiently. + +If the behavior seems normal for a certain game/feature then it may not be always required to check against the based master. + +This approach helps maintain clarity and accountability in the testing process and ensures regressions are caught and addressed efficiently. If the behavior seems normal for a certain game/feature then it may not be always required to check against the based master. + +If a master build for the PR' based master does not exist. It will be helpful to just test past and future builds nearby. That would help with gathering more information about the problem. + +**Always include [debugging info](../Debug.md) as needed**. + +## Bisecting + +One happy reminder, when testing, *know how to bisect!* + +Say you're trying to find an issue between 1st of Jan and 8th of Jan, you can search by dividing "in half" the time between each commit: +- Check for 4th of Jan +- If 4th of Jan is "working" then the issue must be in the future +- So then check 6th of Jan +- If 6th of Jan isn't working then the issue must be in the past +- So then check 5th of Jan +- If 5th of Jan worked, then the issue starts at 6th of Jan + +The faulty commit then, is 6th of Jan. This is called bisection https://git-scm.com/docs/git-bisect + +## Notes + +- PR's marked with **WIP** do NOT need to be tested unless explicitly asked (check the git in case) +- Sometimes license checks may fail, hover over the build icon to see if builds did succeed, as the CI will push builds even if license checks fail. +- All open PRs can be viewed [here](https://git.eden-emu.dev/eden-emu/eden/pulls/). +- If site is down use one of the [mirrors](./user/ThirdParty.md#mirrors). diff --git a/docs/user/ThirdParty.md b/docs/user/ThirdParty.md new file mode 100644 index 0000000000..5bd72ebe72 --- /dev/null +++ b/docs/user/ThirdParty.md @@ -0,0 +1,73 @@ +# User Handbook - Third party tools and extras + +The Eden emulator by itself lacks some functionality - or otherwise requires external files (such as packaging) to operate correctly in a given OS. Addendum to that some repositories provide nightly or specialised builds of the emulator. + +While most of the links mentioned in this guide are relatively "safe"; we urge users to use their due diligence and appropriatedly verify the integrity of all files downloaded and ensure they're not compromised. + +- [NixOS Eden Flake](https://github.com/Grantimatter/eden-flake) +- [ES-DE Frontend Support](https://github.com/GlazedBelmont/es-de-android-custom-systems) + +## Mirrors + +The main origin repository is always at https://git.eden-emu.dev/eden-emu/eden. + +- https://github.com/eden-emulator/mirror +- https://git.crueter.xyz/mirror/eden +- https://collective.taymaerz.de/eden/eden + +Other mirrors obviously exist on the internet, but we can't guarantee their reliability and/or availability. + +If you're someone wanting to make a mirror, simply setup forgejo and automatically mirror from the origin repository. Or you could mirror a mirror to save us bandwidth... your choice! + +## Configuring Obtainium + +Very nice handy app, here's a quick rundown how to configure: + +1. Copy the URL: https://git.eden-emu.dev/eden-emu/eden/ (or one of your favourite mirrors) +2. Open Obtainium and tap `Add App`. +3. Paste the URL into the `App Source URL` field. +4. Override Source: Look for the `Override Source` dropdown menu and select `Forgejo (Codeberg)`. +5. Click `Add:` Obtainium should now be able to parse the releases and find the APK files. + +Note: Even though the site isn't Codeberg, it uses the same Forgejo/Gitea backend, and this setting tells Obtainium how to read the release data. + +## Configuring ES-DE + +### Method 1 + +1. Download ZIP from [here](https://github.com/GlazedBelmont/es-de-android-custom-systems) +2. Unzip the file and extract `es_systems.xml` and `es_find_rules.xml` to `\Odin2\Internal shared storage\ES-DE\custom_systems`. +3. Press `Start -> Other Settings -> Alternative Emulators` and set it to Eden (Standalone). + +### Method 2 + +1. Navigate to `\Odin2\Internal shared storage\ES-DE\custom_systems`. +2. Add this to your `es_find_rules.xml`: + +```xml + + + + dev.eden.eden_emulator/org.yuzu.yuzu_emu.activities.EmulationActivity + + + + + + + com.miHoYo.Yuanshen/org.yuzu.yuzu_emu.activities.EmulationActivity + + +``` + +3. Add this line of text to your `es_systems.xml` underneath where the rest of your switch system entries are: + +```xml +%EMULATOR_EDEN% %ACTION%=android.nfc.action.TECH_DISCOVERED %DATA%=%ROMPROVIDER% +``` + +## Configuring GameMode + +There is a checkbox to enable gamemode automatically. The `libgamemode.so` library must be findable on the standard `LD_LIBRARY_PATH` otherwise it will not properly be enabled. If for whatever reason it doesn't work, see [Arch wiki: GameMode](https://wiki.archlinux.org/title/GameMode) for more info. + +You may launch the emulator directly via the wrapper `gamemode `, and things should work out of the box. diff --git a/docs/user/Troubleshoot.md b/docs/user/Troubleshoot.md new file mode 100644 index 0000000000..0aebfc5b96 --- /dev/null +++ b/docs/user/Troubleshoot.md @@ -0,0 +1,99 @@ +# User Handbook - Troubleshooting + +## Vulkan initialization error + +- Ensure you have the latest drivers +- Uninstall old drivers, for Windows you can use [Display Driver Uninstaller](https://www.guru3d.com/download/display-driver-uninstaller-download/) +- Change backend manually in the settings file (set it from `0` to `1` or viceversa). +- Disconnect your second monitor, if any + +## This mod only works on an Emulator + +- Enable RNG seed +- Set RNG seed to 0 + +## Eden Fails to Launch and Does Not Leave Any Logs + +**Click [Here](https://evilperson1337.notion.site/Windows-Eden-Fails-to-Launch-and-Does-Not-Leave-Any-Logs-2b057c2edaf68156b640cf1ac549870a) for a version of this guide with images & visual elements.** + +### Error Details + +*Behavior*: Program appears not to launch or exits immediately without leaving any log entries. +*Platform(s) Affected*: +- **Windows** + +**Error Log Entries:** + +``` +None +``` +**Example Error Message Entry in Windows Event Viewer** +``` +Faulting application name: eden.exe, version: 0.0.0.0, time stamp: 0x6795dc3c +Faulting module name: ntdll.dll, version: 10.0.26100.3037, time stamp: 0x95e6c489 +Exception code: 0xc0000005 +Fault offset: 0x0000000000014778 +Faulting process id: 0x2AF0 +Faulting application start time: 0x1DB7C30D2972402 +Faulting application path: C:\temp\Eden-Windows\eden.exe +Faulting module path: C:\WINDOWS\SYSTEM32\ntdll.dll +Report Id: 4c8a6e13-9637-438c-b4d0-e802d279af66 +Faulting package full name: +Faulting package-relative application ID: +``` + +--- + +### Causes + + + + diff --git a/docs/user/UsingAmiibo.md b/docs/user/UsingAmiibo.md new file mode 100644 index 0000000000..4288517bec --- /dev/null +++ b/docs/user/UsingAmiibo.md @@ -0,0 +1,45 @@ +# User Handbook - Using Amiibo + +Use this guide when you want to load Amiibo into your games for use with the Eden emulator. + +**Click [Here](https://evilperson1337.notion.site/Using-Amiibo-with-Eden-2b057c2edaf681b1b28ec6be600c6d3e) for a version of this guide with images & visual elements.** + +## Android + +TBD + +## Desktop + +### Pre-Requisites + +1. The Eden Emulator fully set up and configured. +2. The Amiibo file you want to use. + + + +### Steps + +1. Launch Eden and launch the game you want to load Amiibo for. + + +1. Navigate to the Amiibo section of the game. The method for initiating the scanning varies from game to game, for *Captain Toad’s Treasure Tracker*, you need to go to the press the **+** button when on the level select. You will need to look up how to do so with your specific game. +2. Upon activating the Amiibo scan functionality, you should get a Scan page. Eden is now looking for an Amiibo file to be loaded, which emulates scanning an Amiibo on actual hardware. +3. Navigate to **File > Load/Remove Amiibo…**, or press the hotkey to do the same (**F2** on keyboard by default). +4. In the file explorer that opens, navigate to the amiibo file you want to use. + + + +5. Upon loading a valid file, you will get a confirmation screen and your bonus content will be unlocked/functionality activated. +6. Repeat with any other Amiibo you want to use. diff --git a/docs/user/UsingCheats.md b/docs/user/UsingCheats.md new file mode 100644 index 0000000000..f0da068582 --- /dev/null +++ b/docs/user/UsingCheats.md @@ -0,0 +1,156 @@ +# User Handbook - Using Cheats + +Use this guide when you want to add cheats into a game to alter gameplay for use with the Eden emulator. + +**Click [Here](https://evilperson1337.notion.site/Using-Cheats-with-Eden-2b057c2edaf6818fab66c276e2304bb4) for a version of this guide with images & visual elements.** + +## Android + +### Pre-Requisites + +- Eden Emulator fully set up and configured on your Android device. +- The cheat(s) you want to apply. +- The **Build ID** of the game. + + + +### Step 1: Configuring a Cheat + +1. Create a directory somewhere accessible on your phone with the name of the cheat. The name you choose only affects how it is displayed in Eden. +2. Create a directory inside of this folder called **cheats.** +3. Create a new text file and copy the Hex Code of the cheat into it, optionally with the cheat name at the beginning like this example. Here this code will set the timer to 999 in *New Super Mario Bros. U Deluxe.* + + ```bash + [Time = 999] + 58000000 00C88A70 + 78001000 00000090 + 64000000 00000000 003E6F00 + ``` + +4. Save the file as a **txt** file with the Build ID of the game. For my example, my Build ID is **AEE6DCCC06D9C05B** so my file would be `AEE6DCCC06D9C05B.txt`. +5. Open Eden and press and hold the game you want to apply the cheat to. +6. Scroll down on the properties until you see **Add-ons**, select this option. +7. Select + **Install** then select **Mods and cheats** and **OK** on the window that appears. +8. A file explorer will now appear. Navigate to the directory created in step 1 and select the folder. + + +2. You should now see the cheat appear in the **Add-ons** screen. +3. Launch the game and confirm that the cheat is applied. + +### Step 2: Multiple Cheats + +In order to install multiple cheats, you must repeat the steps above with the new cheat, creating a new directory with the name of the cheat and cheats directory. You **cannot** install multiple cheats with a single file. + +Community Member [Ninjistix](https://github.com/Ninjistix) created a utility (Windows or anything that can run Python) that can take a file with multiple cheats and create the files/structure for you with a provided Build ID. To download and run it, see the [GitHub Project](https://github.com/Ninjistix/nxCheat_Splitter) page. + +**Example cheat TXT file with multiple cheats. It must be in this format to work:** +``` +[Super Mario Bros. Wonder - Various] <- Optional + +[♯ 1. Always Star Power] +040E0000 00880580 52800035 + +[♯ 2. Star Power + Bubble Mode (Invincible)] +040E0000 00880580 52800075 + +[♯ 3. Can Fast Travel to Any Course and World] +040E0000 00935E10 52800036 +040E0000 0048A528 52800028 +040E0000 005D9F58 52800028 + +[♯ 4. Got All Top of Flag Poles] +040E0000 0048A818 52800028 +``` + +### Step 3: Enabling/Disabling Cheats + +Cheats are enabled by default, but can be disabled so they don’t affect gameplay fairly easily using the game properties. + +1. Open Eden and press and hold the game you want to apply the cheat to. +2. Scroll down on the properties until you see **Add-ons**, select this option. +3. *Select/Deselect* the name of the cheat you wish to enable/disable. +4. Click **OK** to close the window. +5. Launch the game to confirm the cheat is/is not active. + +## Desktop + +### Pre-Requisites + +- Eden Emulator fully set up and configured +- The cheat(s) you want to apply +- The **Build ID** of the game. + + + +### Step 1: Configuring a Cheat + +1. Copy the Hex Code of the cheat into a text file, optionally with the cheat name at the beginning like the example. Here this code will set the timer to 999 in *New Super Mario Bros. U Deluxe.* + + ```bash + [Time = 999] + 58000000 00C88A70 + 78001000 00000090 + 64000000 00000000 003E6F00 + ``` + +1. Save the file as a **txt** file with the Build ID of the game. For my example, my Build ID is **AEE6DCCC06D9C05B** so my file would be `AEE6DCCC06D9C05B.txt`. +2. Launch Eden and wait for the program to load. +3. *Right-Click* the game in Eden and select **Open Mod Data Location**. A file explorer window should appear. +4. Create a folder inside of the file explorer window with the name of the cheat. This name does not matter and only affects how it appears in the game properties inside of Eden. +5. Navigate inside of this folder and create another folder called **cheats.** +6. Move the txt file you created earlier into this **cheats** folder. (e.g. `/Time 999/cheats/AEE6DCCC06D9C05B.txt` ) +7. Go back to Eden and *right-click* the game. Select *Configure Game* and you should now see the cheat you created appear in the **Add-Ons** section with the name of the folder from step 6. +8. Launch the game to verify that the cheat is enabled. + +### Step 2: Multiple Cheats + +In order to install multiple cheats, you must repeat the steps above with the new cheat, creating a new directory with the name of the cheat and cheats directory. You **cannot** install multiple cheats with a single file. + +Community Member [Ninjistix](https://github.com/Ninjistix) created a utility (Windows or anything that can run Python) that can take a file with multiple cheats and create the files/structure for you with a provided Build ID. To download and run it, see the [GitHub Project](https://github.com/Ninjistix/nxCheat_Splitter) page. + +**Example cheat TXT file with multiple cheats. It must be in this format to work:** +``` +[Super Mario Bros. Wonder - Various] <- Optional + +[♯ 1. Always Star Power] +040E0000 00880580 52800035 + +[♯ 2. Star Power + Bubble Mode (Invincible)] +040E0000 00880580 52800075 + +[♯ 3. Can Fast Travel to Any Course and World] +040E0000 00935E10 52800036 +040E0000 0048A528 52800028 +040E0000 005D9F58 52800028 + +[♯ 4. Got All Top of Flag Poles] +040E0000 0048A818 52800028 +``` + +### Step 3: Enabling/Disabling Cheats + +Cheats are enabled by default, but can be disabled so they don’t affect gameplay fairly easily using the game properties. + +1. *Right-Click* the game and select *Configure Game*. +2. In the **Add-Ons** section, locate the cheat you wish to enable. +3. *Select/Deselect* the name of the cheat you wish to enable/disable. +4. Click **OK** to close the window. +5. Launch the game to confirm the cheat is/is not active. diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt index 07e9ae7a8f..ba0545b7a7 100644 --- a/externals/CMakeLists.txt +++ b/externals/CMakeLists.txt @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2025 Eden Emulator Project +# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project # SPDX-License-Identifier: GPL-3.0-or-later # SPDX-FileCopyrightText: 2016 Citra Emulator Project @@ -7,7 +7,6 @@ # TODO(crueter): A lot of this should be moved to the root. # otherwise we have to do weird shenanigans with library linking and stuff -# cpm include(CPMUtil) # Explicitly declare this option here to propagate to the oaknut CPM call @@ -26,39 +25,184 @@ set(BUILD_SHARED_LIBS OFF) # Skip install rules for all externals set_directory_properties(PROPERTIES EXCLUDE_FROM_ALL ON) -if (FORCE_DOWNLOAD_WIN_BUNDLES) - download_win_archives() +# Xbyak +if (ARCHITECTURE_x86 OR ARCHITECTURE_x86_64) + AddJsonPackage(xbyak) endif() -# Xbyak (also used by Dynarmic, so needs to be added first) -if (ARCHITECTURE_x86 OR ARCHITECTURE_x86_64) - if (PLATFORM_SUN) - # Fix regset.h collisions - set(XBYAK_HASH 51f507b0b3) - set(XBYAK_SHA512SUM 4a29a3c2f97f7d5adf667a21a008be03c951fb6696b0d7ba27e7e4afa037bc76eb5e059bb84860e01baf741d4d3ac851b840cd54c99d038812fbe0f1fa6d38a4) - else() - set(XBYAK_HASH 4e44f4614d) - set(XBYAK_SHA512SUM 5824e92159e07fa36a774aedd3b3ef3541d0241371d522cffa4ab3e1f215fa5097b1b77865b47b2481376c704fa079875557ea463ca63d0a7fd6a8a20a589e70) +# enet +AddJsonPackage(enet) + +if (enet_ADDED) + target_include_directories(enet INTERFACE ${enet_SOURCE_DIR}/include) +endif() + +if (NOT TARGET enet::enet) + add_library(enet::enet ALIAS enet) +endif() + +# stb +add_library(stb stb/stb_dxt.cpp) +target_include_directories(stb PUBLIC ./stb) + +if (NOT TARGET stb::headers) + add_library(stb::headers ALIAS stb) +endif() + +# ItaniumDemangle +if (NOT TARGET LLVM::Demangle) + add_library(demangle demangle/ItaniumDemangle.cpp) + target_include_directories(demangle PUBLIC ./demangle) + if (NOT MSVC) + target_compile_options(demangle PRIVATE -Wno-deprecated-declarations) # std::is_pod + endif() + add_library(LLVM::Demangle ALIAS demangle) +endif() + +# unordered_dense +AddJsonPackage(unordered-dense) + +# httplib +if (IOS) + set(HTTPLIB_USE_BROTLI_IF_AVAILABLE OFF) +endif() +AddJsonPackage(httplib) + +if (YUZU_STATIC_ROOM) + return() +endif() + +# Oaknut +if (ARCHITECTURE_arm64 OR DYNARMIC_TESTS) + AddJsonPackage(oaknut) +endif() + +# biscuit +if (ARCHITECTURE_riscv64) + AddJsonPackage(biscuit) +endif() + +# Vulkan stuff +AddDependentPackages(vulkan-headers vulkan-utility-libraries) + +# frozen +AddJsonPackage(frozen) + +# DiscordRPC +if (USE_DISCORD_PRESENCE) + if (ARCHITECTURE_arm64) + add_compile_definitions(RAPIDJSON_ENDIAN=RAPIDJSON_LITTLEENDIAN) endif() - AddPackage( - NAME xbyak - REPO "Lizzie841/xbyak" - SHA ${XBYAK_HASH} - HASH ${XBYAK_SHA512SUM} - BUNDLED_PACKAGE ON - ) + AddJsonPackage(discord-rpc) + + if (DiscordRPC_ADDED) + target_include_directories(discord-rpc INTERFACE ${DiscordRPC_SOURCE_DIR}/include) + add_library(DiscordRPC::discord-rpc ALIAS discord-rpc) + endif() endif() -# Oaknut (also used by Dynarmic, so needs to be added first) -if (ARCHITECTURE_arm64 OR DYNARMIC_TESTS) - AddPackage( - NAME oaknut - VERSION 2.0.1 - REPO "merryhime/oaknut" - SHA 94c726ce03 - HASH d8d082242fa1881abce3c82f8dafa002c4e561e66a69e7fc038af67faa5eff2630f082d3d19579c88c4c9f9488e54552accc8cb90e7ce743efe043b6230c08ac - ) +# SimpleIni +AddJsonPackage(simpleini) + +# Most linux distros don't package cubeb, so enable regardless of cpm settings +if(ENABLE_CUBEB) + AddJsonPackage(cubeb) + + if (cubeb_ADDED) + if (NOT MSVC) + if (TARGET speex) + target_compile_options(speex PRIVATE $<$:-Wno-sign-compare>) + endif() + set_target_properties(cubeb PROPERTIES COMPILE_OPTIONS "") + target_compile_options(cubeb INTERFACE + $<$:-Wno-implicit-const-int-float-conversion> + $<$:-Wno-shadow> + $<$:-Wno-missing-declarations> + $<$:-Wno-return-type> + $<$:-Wno-uninitialized> + ) + else() + target_compile_options(cubeb PRIVATE + /wd4456 + /wd4458 + ) + endif() + endif() + + if (NOT TARGET cubeb::cubeb) + add_library(cubeb::cubeb ALIAS cubeb) + endif() +endif() + +if (NOT ANDROID) + if (YUZU_USE_EXTERNAL_SDL2) + message(STATUS "Using SDL2 from externals.") + if (NOT WIN32) + # Yuzu itself needs: Atomic Audio Events Joystick Haptic Sensor Threads Timers + # Since 2.0.18 Atomic+Threads required for HIDAPI/libusb (see https://github.com/libsdl-org/SDL/issues/5095) + # Yuzu-cmd also needs: Video (depends on Loadso/Dlopen) + # CPUinfo also required for SDL Audio, at least until 2.28.0 (see https://github.com/libsdl-org/SDL/issues/7809) + set(SDL_UNUSED_SUBSYSTEMS + File Filesystem + Locale Power Render) + foreach(_SUB ${SDL_UNUSED_SUBSYSTEMS}) + string(TOUPPER ${_SUB} _OPT) + set(SDL_${_OPT} OFF) + endforeach() + + set(HIDAPI ON) + endif() + + if (APPLE) + set(SDL_FILE ON) + endif() + + if ("${YUZU_SYSTEM_PROFILE}" STREQUAL "steamdeck") + set(SDL_PIPEWIRE OFF) # build errors out with this on + AddJsonPackage("sdl2_steamdeck") + else() + AddJsonPackage("sdl2_generic") + endif() + elseif (YUZU_USE_BUNDLED_SDL2) + message(STATUS "Using bundled SDL2") + if (PLATFORM_FREEBSD) + set(BUILD_SHARED_LIBS ON) + endif() + AddJsonPackage(sdl2) + endif() + + find_package(SDL2 2.26.4 REQUIRED) +endif() + +set(BUILD_SHARED_LIBS OFF) + +# SPIRV Headers +AddJsonPackage(spirv-headers) + +# Sirit +if (YUZU_USE_BUNDLED_SIRIT) + AddJsonPackage(sirit-ci) +else() + AddJsonPackage(sirit) + if(MSVC AND CXX_CLANG) + target_compile_options(siritobj PRIVATE + $<$:-Wno-error=unused-command-line-argument> + ) + endif() +endif() + +# SPIRV Tools +AddJsonPackage(spirv-tools) + +if (SPIRV-Tools_ADDED) + add_library(SPIRV-Tools::SPIRV-Tools ALIAS SPIRV-Tools-static) + target_link_libraries(SPIRV-Tools-static PRIVATE SPIRV-Tools-opt SPIRV-Tools-link) +endif() + +# Catch2 +if (YUZU_TESTS OR DYNARMIC_TESTS) + AddJsonPackage(catch2) endif() # getopt @@ -69,170 +213,47 @@ endif() # Glad add_subdirectory(glad) -# mbedtls -AddPackage( - NAME mbedtls - REPO "Mbed-TLS/mbedtls" - SHA "8c88150ca1" - HASH 769ad1e94c570671071e1f2a5c0f1027e0bf6bcdd1a80ea8ac970f2c86bc45ce4e31aa88d6d8110fc1bed1de81c48bc624df1b38a26f8b340a44e109d784a966 - PATCHES - ${CMAKE_SOURCE_DIR}/.patch/mbedtls/0001-cmake-version.patch -) - -if (mbedtls_ADDED) - target_include_directories(mbedtls PUBLIC ${mbedtls_SOURCE_DIR}/include) - - if (NOT MSVC) - target_compile_options(mbedcrypto PRIVATE - -Wno-unused-but-set-variable - -Wno-string-concatenation) - endif() -endif() - # libusb -if (ENABLE_LIBUSB AND NOT TARGET libusb::usb) +if (ENABLE_LIBUSB) add_subdirectory(libusb) endif() -# Sirit -# TODO(crueter): spirv-tools doesn't work w/ system -set(SPIRV_WERROR OFF) -AddPackage( - NAME SPIRV-Headers - REPO "KhronosGroup/SPIRV-Headers" - SHA 4e209d3d7e - HASH f48bbe18341ed55ea0fe280dbbbc0a44bf222278de6e716e143ca1e95ca320b06d4d23d6583fbf8d03e1428f3dac8fa00e5b82ddcd6b425e6236d85af09550a4 -) +# VMA +AddJsonPackage(vulkan-memory-allocator) -AddPackage( - NAME sirit - REPO "eden-emulator/sirit" - SHA db1f1e8ab5 - HASH 73eb3a042848c63a10656545797e85f40d142009dfb7827384548a385e1e28e1ac72f42b25924ce530d58275f8638554281e884d72f9c7aaf4ed08690a414b05 - OPTIONS - "SIRIT_USE_SYSTEM_SPIRV_HEADERS ON" -) - -if(MSVC AND USE_CCACHE AND TARGET sirit) - get_target_property(_opts sirit COMPILE_OPTIONS) - list(FILTER _opts EXCLUDE REGEX "/Zi") - list(APPEND _opts "/Z7") - set_target_properties(sirit PROPERTIES COMPILE_OPTIONS "${_opts}") -endif() - -# httplib -if (ENABLE_WEB_SERVICE OR ENABLE_QT_UPDATE_CHECKER) - AddPackage( - NAME httplib - REPO "yhirose/cpp-httplib" - SHA a609330e4c - HASH dd3fd0572f8367d8549e1319fd98368b3e75801a293b0c3ac9b4adb806473a4506a484b3d389dc5bee5acc460cb90af7a20e5df705a1696b56496b30b9ce7ed2 - OPTIONS - "HTTPLIB_REQUIRE_OPENSSL ${ENABLE_OPENSSL}" - ) +if (VulkanMemoryAllocator_ADDED) + if (CXX_CLANG) + target_compile_options(VulkanMemoryAllocator INTERFACE + $<$:-Wno-unused-variable> + ) + elseif(MSVC) + target_compile_options(VulkanMemoryAllocator INTERFACE + /wd4189 + ) + endif() endif() # cpp-jwt -if (ENABLE_WEB_SERVICE) - AddPackage( - NAME cpp-jwt - VERSION 1.4 - REPO "arun11299/cpp-jwt" - SHA a54fa08a3b - HASH a90f7e594ada0c7e49d5ff9211c71097534e7742a8e44bf0851b0362642a7271d53f5d83d04eeaae2bad17ef3f35e09e6818434d8eaefa038f3d1f7359d0969a - FIND_PACKAGE_ARGUMENTS "CONFIG" - OPTIONS - "CPP_JWT_BUILD_EXAMPLES OFF" - "CPP_JWT_BUILD_TESTS OFF" - "CPP_JWT_USE_VENDORED_NLOHMANN_JSON OFF" - PATCHES - ${CMAKE_SOURCE_DIR}/.patch/cpp-jwt/0001-no-install.patch - ${CMAKE_SOURCE_DIR}/.patch/cpp-jwt/0002-missing-decl.patch - ) +if (ENABLE_WEB_SERVICE OR ENABLE_UPDATE_CHECKER) + AddJsonPackage(cpp-jwt) endif() -# unordered_dense -AddPackage( - NAME unordered_dense - REPO "Lizzie841/unordered_dense" - SHA e59d30b7b1 - HASH 71eff7bd9ba4b9226967bacd56a8ff000946f8813167cb5664bb01e96fb79e4e220684d824fe9c59c4d1cc98c606f13aff05b7940a1ed8ab3c95d6974ee34fa0 - FIND_PACKAGE_ARGUMENTS "CONFIG" - OPTIONS - "UNORDERED_DENSE_INSTALL OFF" -) - # FFMpeg -if (YUZU_USE_BUNDLED_FFMPEG) +if (YUZU_USE_EXTERNAL_FFMPEG OR YUZU_USE_BUNDLED_FFMPEG) add_subdirectory(ffmpeg) + set(FFmpeg_PATH "${FFmpeg_PATH}" PARENT_SCOPE) set(FFmpeg_LDFLAGS "${FFmpeg_LDFLAGS}" PARENT_SCOPE) set(FFmpeg_LIBRARIES "${FFmpeg_LIBRARIES}" PARENT_SCOPE) + set(FFmpeg_LIBRARY_DIR "${FFmpeg_LIBRARY_DIR}" PARENT_SCOPE) set(FFmpeg_INCLUDE_DIR "${FFmpeg_INCLUDE_DIR}" PARENT_SCOPE) -endif() -# Vulkan-Headers - -# TODO(crueter): Vk1.4 impl - -AddPackage( - NAME VulkanHeaders - VERSION 1.3.274 - REPO "KhronosGroup/Vulkan-Headers" - SHA 89268a6d17 - HASH 3ab349f74298ba72cafb8561015690c0674d428a09fb91ccd3cd3daca83650d190d46d33fd97b0a8fd4223fe6df2bcabae89136fbbf7c0bfeb8776f9448304c8 - BUNDLED_PACKAGE ${YUZU_USE_EXTERNAL_VULKAN_HEADERS} -) - -# Vulkan-Utility-Libraries -AddPackage( - NAME VulkanUtilityLibraries - REPO "KhronosGroup/Vulkan-Utility-Libraries" - SHA df2e358152 - HASH 3e468c3d9ff93f6d418d71e5527abe0a12c8c7ab5b0b52278bbbee4d02bb87e99073906729b727e0147242b7e3fd5dedf68b803f1878cb4c0e4f730bc2238d79 - BUNDLED_PACKAGE ${YUZU_USE_EXTERNAL_VULKAN_UTILITY_LIBRARIES} -) - -# SPIRV-Tools -if (YUZU_USE_EXTERNAL_VULKAN_SPIRV_TOOLS) - AddPackage( - NAME SPIRV-Tools - REPO "KhronosGroup/SPIRV-Tools" - SHA 40eb301f32 - HASH 58d0fb1047d69373cf24c73e6f78c73a72a6cca3b4df1d9f083b9dcc0962745ef154abf3dbe9b3623b835be20c6ec769431cf11733349f45e7568b3525f707aa - OPTIONS - "SPIRV_SKIP_EXECUTABLES ON" - ) + message(STATUS "FFmpeg Libraries: ${FFmpeg_LIBRARIES}") endif() # TZDB (Time Zone Database) add_subdirectory(nx_tzdb) -# VMA -AddPackage( - NAME VulkanMemoryAllocator - REPO "GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator" - SHA 1076b348ab - HASH a46b44e4286d08cffda058e856c47f44c7fed3da55fe9555976eb3907fdcc20ead0b1860b0c38319cda01dbf9b1aa5d4b4038c7f1f8fbd97283d837fa9af9772 - FIND_PACKAGE_ARGUMENTS "CONFIG" -) - -if (NOT TARGET LLVM::Demangle) - add_library(demangle demangle/ItaniumDemangle.cpp) - target_include_directories(demangle PUBLIC ./demangle) - if (NOT MSVC) - target_compile_options(demangle PRIVATE -Wno-deprecated-declarations) # std::is_pod - endif() - add_library(LLVM::Demangle ALIAS demangle) -endif() - -add_library(stb stb/stb_dxt.cpp) -target_include_directories(stb PUBLIC ./stb) - -if (NOT TARGET stb::headers) - add_library(stb::headers ALIAS stb) -endif() - add_library(tz tz/tz/tz.cpp) target_include_directories(tz PUBLIC ./tz) @@ -245,22 +266,15 @@ if (NOT TARGET RenderDoc::API) add_library(RenderDoc::API ALIAS renderdoc) endif() -if (ANDROID) - if (ARCHITECTURE_arm64) - AddPackage( - NAME libadrenotools - REPO "bylaws/libadrenotools" - SHA 8fae8ce254 - HASH c74fa855f0edebbf25c9bce40b00966daa2447bfc5e15f0cf1a95f86cbf70fc6b02590707edbde16328a0a2a4fb9a1fc419d2dfc22a4a4150971be91892d4edb - PATCHES - ${CMAKE_SOURCE_DIR}/.patch/libadrenotools/0001-linkerns-cpm.patch - ) - endif() +if (ANDROID AND ARCHITECTURE_arm64) + AddJsonPackage(libadrenotools) endif() -if (UNIX AND NOT APPLE AND NOT TARGET gamemode::headers) +AddJsonPackage(gamemode) + +if (gamemode_ADDED) add_library(gamemode INTERFACE) - target_include_directories(gamemode INTERFACE gamemode) + target_include_directories(gamemode INTERFACE ${gamemode_SOURCE_DIR}/lib) add_library(gamemode::headers ALIAS gamemode) endif() @@ -278,6 +292,7 @@ if (YUZU_CRASH_DUMPS AND NOT TARGET libbreakpad_client) _CRT_NONSTDC_NO_DEPRECATE ) + # TODO AddPackage( NAME breakpad URL "google/breakpad" @@ -321,7 +336,7 @@ if (YUZU_CRASH_DUMPS AND NOT TARGET libbreakpad_client) file(GLOB_RECURSE LIBBREAKPAD_CLIENT_SOURCES ${breakpad_SOURCE_DIR}/src/client/mac/*.cc ${breakpad_SOURCE_DIR}/src/common/mac/*.cc) list(APPEND LIBBREAKPAD_CLIENT_SOURCES ${breakpad_SOURCE_DIR}/src/common/mac/MachIPC.mm) else() - target_compile_definitions(libbreakpad_client PUBLIC -DHAVE_A_OUT_H) + target_compile_definitions(libbreakpad_client PUBLIC HAVE_A_OUT_H) file(GLOB_RECURSE LIBBREAKPAD_CLIENT_SOURCES ${breakpad_SOURCE_DIR}/src/client/linux/*.cc ${breakpad_SOURCE_DIR}/src/common/linux/*.cc) endif() list(APPEND LIBBREAKPAD_CLIENT_SOURCES ${LIBBREAKPAD_COMMON_SOURCES}) @@ -378,19 +393,21 @@ endif() # oboe if (ANDROID) - AddPackage( - NAME oboe - REPO "google/oboe" - SHA 2bc873e53c - HASH 02329058a7f9cf7d5039afaae5ab170d9f42f60f4c01e21eaf4f46073886922b057a9ae30eeac040b3ac182f51b9c1bfe9fe1050a2c9f6ce567a1a9a0ec2c768 - BUNDLED_PACKAGE ON - ) + AddJsonPackage(oboe) add_library(oboe::oboe ALIAS oboe) endif() -# sse2neon -if (ARCHITECTURE_arm64 AND NOT TARGET sse2neon) - add_library(sse2neon INTERFACE) - target_include_directories(sse2neon INTERFACE sse2neon) +if (APPLE) + # moltenvk + if (NOT YUZU_USE_BUNDLED_MOLTENVK) + find_library(MOLTENVK_LIBRARY MoltenVK) + endif() + + # TODO: kosmickrisp? + if (NOT MOLTENVK_LIBRARY OR YUZU_USE_BUNDLED_MOLTENVK) + AddJsonPackage(moltenvk) + + set(MOLTENVK_LIBRARY "${moltenvk_SOURCE_DIR}/MoltenVK/dylib/macOS/libMoltenVK.dylib" CACHE STRING "" FORCE) + endif() endif() diff --git a/externals/cmake-modules/DefaultConfig.cmake b/externals/cmake-modules/DefaultConfig.cmake new file mode 100644 index 0000000000..81e93f6c2e --- /dev/null +++ b/externals/cmake-modules/DefaultConfig.cmake @@ -0,0 +1,17 @@ +# SPDX-FileCopyrightText: Copyright 2025 crueter +# SPDX-License-Identifier: LGPL-3.0-or-later + +## DefaultConfig ## + +# Generally, you will always want "some" default configuration for your project. +# This module does nothing but enforce that. :) + +set(CMAKE_BUILD_TYPE_DEFAULT "Release" CACHE STRING "Default build type") + +get_property(IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) +if (NOT IS_MULTI_CONFIG AND NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE_DEFAULT}" + CACHE STRING "Choose the type of build." FORCE) + message(STATUS "[DefaultConfig] Defaulting to a " + "${CMAKE_BUILD_TYPE_DEFAULT} build") +endif() diff --git a/externals/cmake-modules/DetectArchitecture.cmake b/externals/cmake-modules/DetectArchitecture.cmake new file mode 100644 index 0000000000..105963c8c2 --- /dev/null +++ b/externals/cmake-modules/DetectArchitecture.cmake @@ -0,0 +1,221 @@ +# SPDX-FileCopyrightText: Copyright 2025 crueter +# SPDX-License-Identifier: LGPL-3.0-or-later + +## DetectArchitecture ## +#[[ +Does exactly as it sounds. Detects common symbols defined for different architectures and +adds compile definitions thereof. Namely: +- arm64 +- arm +- x86_64 +- x86 +- ia64 +- mips64 +- mips +- ppc64 +- ppc +- riscv +- riscv64 +- loongarch64 +- wasm + +Unsupported architectures: +- ARMv2-6 +- m68k +- PIC + +This file WILL NOT detect endian-ness for you. + +This file is based off of Yuzu and Dynarmic. +]] + +# multiarch builds are a special case and also very difficult +# this is what I have for now, but it's not ideal + +# Do note that situations where multiple architectures are defined +# should NOT be too dependent on the architecture +# otherwise, you may end up with duplicate code +if (CMAKE_OSX_ARCHITECTURES) + set(MULTIARCH_BUILD 1) + set(ARCHITECTURE "${CMAKE_OSX_ARCHITECTURES}") + + # hope and pray the architecture names match + foreach(ARCH IN ${CMAKE_OSX_ARCHITECTURES}) + set(ARCHITECTURE_${ARCH} 1 PARENT_SCOPE) + add_definitions(-DARCHITECTURE_${ARCH}=1) + endforeach() + + return() +endif() + +include(CheckSymbolExists) +function(detect_architecture symbol arch) + # The output variable needs to be unset between invocations otherwise + # CMake's crazy scope rules will keep it defined + unset(SYMBOL_EXISTS CACHE) + + if (NOT DEFINED ARCHITECTURE) + set(CMAKE_REQUIRED_QUIET 1) + check_symbol_exists("${symbol}" "" SYMBOL_EXISTS) + unset(CMAKE_REQUIRED_QUIET) + + if (SYMBOL_EXISTS) + set(ARCHITECTURE "${arch}" PARENT_SCOPE) + set(ARCHITECTURE_${arch} 1 PARENT_SCOPE) + add_definitions(-DARCHITECTURE_${arch}=1) + endif() + endif() +endfunction() + +function(detect_architecture_symbols) + if (DEFINED ARCHITECTURE) + return() + endif() + + set(oneValueArgs ARCH) + set(multiValueArgs SYMBOLS) + + cmake_parse_arguments(ARGS "" "${oneValueArgs}" "${multiValueArgs}" + "${ARGN}") + + set(arch "${ARGS_ARCH}") + foreach(symbol ${ARGS_SYMBOLS}) + detect_architecture("${symbol}" "${arch}") + + if (ARCHITECTURE_${arch}) + message(DEBUG "[DetectArchitecture] Found architecture symbol ${symbol} for ${arch}") + set(ARCHITECTURE "${arch}" PARENT_SCOPE) + set(ARCHITECTURE_${arch} 1 PARENT_SCOPE) + add_definitions(-DARCHITECTURE_${arch}=1) + + return() + endif() + endforeach() +endfunction() + +# arches here are put in a sane default order of importance +# notably, amd64, arm64, and riscv (in order) are BY FAR the most common +# mips is pretty popular in embedded +# ppc64 is pretty popular in supercomputing +# sparc is uh +# ia64 exists +# the rest exist, but are probably less popular than ia64 + +detect_architecture_symbols( + ARCH arm64 + SYMBOLS + "__ARM64__" + "__aarch64__" + "_M_ARM64") + +detect_architecture_symbols( + ARCH x86_64 + SYMBOLS + "__x86_64" + "__x86_64__" + "__amd64" + "_M_X64" + "_M_AMD64") + +# riscv is interesting since it generally does not define a riscv64-specific symbol +# We can, however, check for the rv32 zcf extension which is good enough of a heuristic on GCC +detect_architecture_symbols( + ARCH riscv + SYMBOLS + "__riscv_zcf") + +# if zcf doesn't exist we can safely assume it's riscv64 +detect_architecture_symbols( + ARCH riscv64 + SYMBOLS + "__riscv") + +detect_architecture_symbols( + ARCH x86 + SYMBOLS + "__i386" + "__i386__" + "_M_IX86") + +detect_architecture_symbols( + ARCH arm + SYMBOLS + "__arm__" + "__TARGET_ARCH_ARM" + "_M_ARM") + +detect_architecture_symbols( + ARCH ia64 + SYMBOLS + "__ia64" + "__ia64__" + "_M_IA64") + +# mips is probably the least fun to detect due to microMIPS +# Because microMIPS is such cancer I'm considering it out of scope for now +detect_architecture_symbols( + ARCH mips64 + SYMBOLS + "__mips64") + +detect_architecture_symbols( + ARCH mips + SYMBOLS + "__mips" + "__mips__" + "_M_MRX000") + +detect_architecture_symbols( + ARCH ppc64 + SYMBOLS + "__ppc64__" + "__powerpc64__" + "_ARCH_PPC64" + "_M_PPC64") + +detect_architecture_symbols( + ARCH ppc + SYMBOLS + "__ppc__" + "__ppc" + "__powerpc__" + "_ARCH_COM" + "_ARCH_PWR" + "_ARCH_PPC" + "_M_MPPC" + "_M_PPC") + +detect_architecture_symbols( + ARCH sparc64 + SYMBOLS + "__sparc_v9__") + +detect_architecture_symbols( + ARCH sparc + SYMBOLS + "__sparc__" + "__sparc") + +# I don't actually know about loongarch32 since crossdev does not support it, only 64 +detect_architecture_symbols( + ARCH loongarch64 + SYMBOLS + "__loongarch__" + "__loongarch64") + +detect_architecture_symbols( + ARCH wasm + SYMBOLS + "__EMSCRIPTEN__") + +# "generic" target +# If you have reached this point, you're on some as-of-yet unsupported architecture. +# See the docs up above for known unsupported architectures +# If you're not in the list... I think you know what you're doing. +if (NOT DEFINED ARCHITECTURE) + set(ARCHITECTURE "GENERIC") + set(ARCHITECTURE_GENERIC 1) + add_definitions(-DARCHITECTURE_GENERIC=1) +endif() + +message(STATUS "[DetectArchitecture] Target architecture: ${ARCHITECTURE}") \ No newline at end of file diff --git a/externals/cmake-modules/DetectPlatform.cmake b/externals/cmake-modules/DetectPlatform.cmake new file mode 100644 index 0000000000..6475884f1f --- /dev/null +++ b/externals/cmake-modules/DetectPlatform.cmake @@ -0,0 +1,152 @@ +# SPDX-FileCopyrightText: Copyright 2025 crueter +# SPDX-License-Identifier: LGPL-3.0-or-later + +## DetectPlatform ## + +# This is a small helper that sets PLATFORM_ variables for various +# operating systems and distributions. Note that Apple, Windows, Android, etc. +# are not covered, as CMake already does that for us. + +# It also sets CXX_ for the C++ compiler. + +# Furthermore, some platforms have really silly requirements/quirks, so this +# also does a few of those. + +# This module contains contributions from the Eden Emulator Project, +# notably from crueter and Lizzie. + +if (${CMAKE_SYSTEM_NAME} STREQUAL "SunOS") + set(PLATFORM_SUN ON) +elseif (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD") + set(PLATFORM_FREEBSD ON) +elseif (${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD") + set(PLATFORM_OPENBSD ON) +elseif (${CMAKE_SYSTEM_NAME} STREQUAL "NetBSD") + set(PLATFORM_NETBSD ON) +elseif (${CMAKE_SYSTEM_NAME} STREQUAL "DragonFly") + set(PLATFORM_DRAGONFLYBSD ON) +elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Haiku") + set(PLATFORM_HAIKU ON) +elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + set(PLATFORM_LINUX ON) +endif() + +# dumb heuristic to detect msys2 +if (CMAKE_COMMAND MATCHES "msys64") + set(PLATFORM_MSYS ON) +endif() + +if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + set(CXX_CLANG ON) + if (MSVC) + set(CXX_CLANG_CL ON) + endif() +elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + set(CXX_GCC ON) +elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + set(CXX_CL ON) +elseif (CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM") + set(CXX_ICC ON) +elseif (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") + set(CXX_APPLE ON) +endif() + +# https://gitlab.kitware.com/cmake/cmake/-/merge_requests/11112 +# This works totally fine on MinGW64, but not CLANG{,ARM}64 +if(MINGW AND CXX_CLANG) + set(CMAKE_SYSTEM_VERSION 10.0.0) +endif() + +# NB: this does not account for SPARC +if (PLATFORM_SUN) + # Terrific OpenIndiana pkg shenanigans + list(APPEND CMAKE_PREFIX_PATH + "${CMAKE_SYSROOT}/usr/lib/qt/6.6/lib/amd64/cmake") + list(APPEND CMAKE_MODULE_PATH + "${CMAKE_SYSROOT}/usr/lib/qt/6.6/lib/amd64/cmake") + + # Amazing - absolutely incredible + list(APPEND CMAKE_PREFIX_PATH "${CMAKE_SYSROOT}/usr/lib/amd64/cmake") + list(APPEND CMAKE_MODULE_PATH "${CMAKE_SYSROOT}/usr/lib/amd64/cmake") + + # For some mighty reason, doing a normal release build sometimes + # may not trigger the proper -O3 switch to materialize + if (CMAKE_BUILD_TYPE MATCHES "Release") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3") + endif() + if (CMAKE_BUILD_TYPE MATCHES "RelWithDebInfo") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2") + endif() +endif() + +# MSYS2 utilities + +# Sometimes, PkgConfig modules will incorrectly reference / when CMake +# wants you to reference it as C:/msys64/. This function corrects that. +# Example in a Find module: +#[[ + if (PLATFORM_MSYS) + FixMsysPath(PkgConfig::OPUS) + endif() +]] + +function(FixMsysPath target) + get_target_property(include_dir ${target} INTERFACE_INCLUDE_DIRECTORIES) + + if (NOT (include_dir MATCHES "^/")) + return() + endif() + + set(root_default $ENV{MSYS2_LOCATION}) + if (root_default STREQUAL "") + set(root_default "C:/msys64") + endif() + + set(MSYS_ROOT_PATH ${root_default} + CACHE STRING "Location of the MSYS2 root") + + set(include_dir "C:/msys64${include_dir}") + set_target_properties(${target} PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES ${include_dir}) +endfunction() + +# MSYSTEM handling + program_path +if (PLATFORM_MSYS) + # really, really dumb heuristic to detect what environment we are in + macro(system var) + if (CMAKE_COMMAND MATCHES ${var}) + set(MSYSTEM ${var}) + endif() + endmacro() + + system(mingw64) + system(clang64) + system(clangarm64) + system(ucrt64) + + if (NOT DEFINED MSYSTEM) + set(MSYSTEM msys2) + endif() + + # We generally want to prioritize environment-specific binaries if possible + # some, like autoconf, are not present on environments besides msys2 though + set(CMAKE_PROGRAM_PATH C:/msys64/${MSYSTEM}/bin C:/msys64/usr/bin) + set(ENV{PKG_CONFIG_PATH} C:/msys64/${MSYSTEM}/lib/pkgconfig) +endif() + +# This saves a truly ridiculous amount of time during linking +# In my tests, without this, Eden takes 2 mins, with this, it takes 3-5 seconds +# or on GitHub Actions, 10 minutes -> 3 seconds +if (MINGW) + set(MINGW_FLAGS "-Wl,--strip-all -Wl,--gc-sections") + set(CMAKE_EXE_LINKER_FLAGS_RELEASE + "${CMAKE_EXE_LINKER_FLAGS_RELEASE} ${MINGW_FLAGS}") +endif() + +# awesome +if (PLATFORM_FREEBSD OR PLATFORM_DRAGONFLYBSD) + set(CMAKE_EXE_LINKER_FLAGS + "${CMAKE_EXE_LINKER_FLAGS} -L${CMAKE_SYSROOT}/usr/local/lib") +endif() diff --git a/externals/cmake-modules/FasterLinker.cmake b/externals/cmake-modules/FasterLinker.cmake new file mode 100644 index 0000000000..37d8bca33b --- /dev/null +++ b/externals/cmake-modules/FasterLinker.cmake @@ -0,0 +1,56 @@ +# SPDX-FileCopyrightText: Copyright 2025 crueter +# SPDX-License-Identifier: LGPL-3.0-or-later + +## FasterLinker ## + +# This finds a faster linker for your compiler, if available. +# Only really tested on Linux. I would not recommend this on MSYS2. + +#[[ + search order: + - gold (GCC only) - the best, generally, but not packaged anymore + - mold (GCC only) - generally does well on GCC + - lld - preferred on clang + - bfd - the final fallback + - If none are found just use the default linker +]] + +# This module is based on the work of Yuzu, specifically Liam White, +# and later extended by crueter. + +option(USE_FASTER_LINKER "Attempt to use a faster linker program" OFF) + +if (USE_FASTER_LINKER) + macro(find_linker ld) + find_program(LINKER_${ld} ld.${ld}) + if (LINKER_${ld}) + set(LINKER ${ld}) + endif() + endmacro() + + find_linker(bfd) + find_linker(lld) + + if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + find_program(LINKER_MOLD mold) + if (LINKER_MOLD AND + CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "12.1") + set(LINKER mold) + endif() + + find_linker(gold) + + if (LINKER STREQUAL "lld") + message(WARNING + "[FasterLinker] Using lld on GCC may cause issues.\ + Install mold, gold, or disable USE_FASTER_LINKER.") + endif() + endif() + + if (LINKER) + message(NOTICE "[FasterLinker] Selecting ${LINKER} as linker") + add_link_options("-fuse-ld=${LINKER}") + else() + message(WARNING "[FasterLinker] No faster linker found--using default") + endif() +endif() \ No newline at end of file diff --git a/externals/cmake-modules/GetGitRevisionDescription.cmake b/externals/cmake-modules/GetGitRevisionDescription.cmake deleted file mode 100644 index dab1347753..0000000000 --- a/externals/cmake-modules/GetGitRevisionDescription.cmake +++ /dev/null @@ -1,162 +0,0 @@ -# SPDX-FileCopyrightText: 2009 Iowa State University -# SPDX-FileContributor: Ryan Pavlik -# SPDX-License-Identifier: BSL-1.0 - -# - Returns a version string from Git -# -# These functions force a re-configure on each git commit so that you can -# trust the values of the variables in your build system. -# -# get_git_head_revision( [ ...]) -# -# Returns the refspec and sha hash of the current head revision -# -# git_describe( [ ...]) -# -# Returns the results of git describe on the source tree, and adjusting -# the output so that it tests false if an error occurs. -# -# git_get_exact_tag( [ ...]) -# -# Returns the results of git describe --exact-match on the source tree, -# and adjusting the output so that it tests false if there was no exact -# matching tag. -# -# Requires CMake 2.6 or newer (uses the 'function' command) -# -# Original Author: -# 2009-2010 Ryan Pavlik -# http://academic.cleardefinition.com -# Iowa State University HCI Graduate Program/VRAC -# -# Copyright Iowa State University 2009-2010. -# Distributed under the Boost Software License, Version 1.0. -# (See accompanying file LICENSE_1_0.txt or copy at -# http://www.boost.org/LICENSE_1_0.txt) - -if(__get_git_revision_description) - return() -endif() -set(__get_git_revision_description YES) - -# We must run the following at "include" time, not at function call time, -# to find the path to this module rather than the path to a calling list file -get_filename_component(_gitdescmoddir ${CMAKE_CURRENT_LIST_FILE} PATH) - -function(get_git_head_revision _refspecvar _hashvar) - set(GIT_PARENT_DIR "${CMAKE_CURRENT_SOURCE_DIR}") - set(GIT_DIR "${GIT_PARENT_DIR}/.git") - while(NOT EXISTS "${GIT_DIR}") # .git dir not found, search parent directories - set(GIT_PREVIOUS_PARENT "${GIT_PARENT_DIR}") - get_filename_component(GIT_PARENT_DIR ${GIT_PARENT_DIR} PATH) - if(GIT_PARENT_DIR STREQUAL GIT_PREVIOUS_PARENT) - # We have reached the root directory, we are not in git - set(${_refspecvar} "GITDIR-NOTFOUND" PARENT_SCOPE) - set(${_hashvar} "GITDIR-NOTFOUND" PARENT_SCOPE) - return() - endif() - set(GIT_DIR "${GIT_PARENT_DIR}/.git") - endwhile() - # check if this is a submodule - if(NOT IS_DIRECTORY ${GIT_DIR}) - file(READ ${GIT_DIR} submodule) - string(REGEX REPLACE "gitdir: (.*)\n$" "\\1" GIT_DIR_RELATIVE ${submodule}) - get_filename_component(SUBMODULE_DIR ${GIT_DIR} PATH) - get_filename_component(GIT_DIR ${SUBMODULE_DIR}/${GIT_DIR_RELATIVE} ABSOLUTE) - endif() - set(GIT_DATA "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/git-data") - if(NOT EXISTS "${GIT_DATA}") - file(MAKE_DIRECTORY "${GIT_DATA}") - endif() - - if(NOT EXISTS "${GIT_DIR}/HEAD") - return() - endif() - set(HEAD_FILE "${GIT_DATA}/HEAD") - configure_file("${GIT_DIR}/HEAD" "${HEAD_FILE}" COPYONLY) - - configure_file("${_gitdescmoddir}/GetGitRevisionDescription.cmake.in" - "${GIT_DATA}/grabRef.cmake" - @ONLY) - include("${GIT_DATA}/grabRef.cmake") - - set(${_refspecvar} "${HEAD_REF}" PARENT_SCOPE) - set(${_hashvar} "${HEAD_HASH}" PARENT_SCOPE) -endfunction() - -function(git_branch_name _var) - if(NOT GIT_FOUND) - find_package(Git QUIET) - endif() - - if(NOT GIT_FOUND) - set(${_var} "GIT-NOTFOUND" PARENT_SCOPE) - return() - endif() - - execute_process(COMMAND - "${GIT_EXECUTABLE}" - rev-parse --abbrev-ref HEAD - WORKING_DIRECTORY - "${CMAKE_SOURCE_DIR}" - RESULT_VARIABLE - res - OUTPUT_VARIABLE - out - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) - if(NOT res EQUAL 0) - set(out "${out}-${res}-NOTFOUND") - endif() - - set(${_var} "${out}" PARENT_SCOPE) -endfunction() - -function(git_describe _var) - if(NOT GIT_FOUND) - find_package(Git QUIET) - endif() - #get_git_head_revision(refspec hash) - if(NOT GIT_FOUND) - set(${_var} "GIT-NOTFOUND" PARENT_SCOPE) - return() - endif() - #if(NOT hash) - # set(${_var} "HEAD-HASH-NOTFOUND" PARENT_SCOPE) - # return() - #endif() - - # TODO sanitize - #if((${ARGN}" MATCHES "&&") OR - # (ARGN MATCHES "||") OR - # (ARGN MATCHES "\\;")) - # message("Please report the following error to the project!") - # message(FATAL_ERROR "Looks like someone's doing something nefarious with git_describe! Passed arguments ${ARGN}") - #endif() - - #message(STATUS "Arguments to execute_process: ${ARGN}") - - execute_process(COMMAND - "${GIT_EXECUTABLE}" - describe - ${hash} - ${ARGN} - WORKING_DIRECTORY - "${CMAKE_SOURCE_DIR}" - RESULT_VARIABLE - res - OUTPUT_VARIABLE - out - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) - if(NOT res EQUAL 0) - set(out "${out}-${res}-NOTFOUND") - endif() - - set(${_var} "${out}" PARENT_SCOPE) -endfunction() - -function(git_get_exact_tag _var) - git_describe(out --exact-match ${ARGN}) - set(${_var} "${out}" PARENT_SCOPE) -endfunction() diff --git a/externals/cmake-modules/GetGitRevisionDescription.cmake.in b/externals/cmake-modules/GetGitRevisionDescription.cmake.in deleted file mode 100644 index 868e032efb..0000000000 --- a/externals/cmake-modules/GetGitRevisionDescription.cmake.in +++ /dev/null @@ -1,45 +0,0 @@ -# SPDX-FileCopyrightText: 2009 Iowa State University -# SPDX-FileContributor: Ryan Pavlik -# SPDX-License-Identifier: BSL-1.0 - -# Internal file for GetGitRevisionDescription.cmake -# -# Requires CMake 2.6 or newer (uses the 'function' command) -# -# Original Author: -# 2009-2010 Ryan Pavlik -# http://academic.cleardefinition.com -# Iowa State University HCI Graduate Program/VRAC -# -# Copyright Iowa State University 2009-2010. -# Distributed under the Boost Software License, Version 1.0. -# (See accompanying file LICENSE_1_0.txt or copy at -# http://www.boost.org/LICENSE_1_0.txt) - -set(HEAD_HASH) - -file(READ "@HEAD_FILE@" HEAD_CONTENTS LIMIT 1024) - -string(STRIP "${HEAD_CONTENTS}" HEAD_CONTENTS) -if(HEAD_CONTENTS MATCHES "ref") - # named branch - string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}") - if(EXISTS "@GIT_DIR@/${HEAD_REF}") - configure_file("@GIT_DIR@/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY) - elseif(EXISTS "@GIT_DIR@/logs/${HEAD_REF}") - configure_file("@GIT_DIR@/logs/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY) - set(HEAD_HASH "${HEAD_REF}") - endif() -else() - # detached HEAD - configure_file("@GIT_DIR@/HEAD" "@GIT_DATA@/head-ref" COPYONLY) -endif() - -if(NOT HEAD_HASH) - if(EXISTS "@GIT_DATA@/head-ref") - file(READ "@GIT_DATA@/head-ref" HEAD_HASH LIMIT 1024) - string(STRIP "${HEAD_HASH}" HEAD_HASH) - else() - set(HEAD_HASH "Unknown") - endif() -endif() diff --git a/externals/cmake-modules/GetSCMRev.cmake b/externals/cmake-modules/GetSCMRev.cmake new file mode 100644 index 0000000000..74c32097da --- /dev/null +++ b/externals/cmake-modules/GetSCMRev.cmake @@ -0,0 +1,87 @@ +# SPDX-FileCopyrightText: Copyright 2025 crueter +# SPDX-License-Identifier: LGPL-3.0-or-later + +## GetSCMRev ## +# Name is self explanatory. Gets revision information from files, OR from git. +# Prioritizes GIT-TAG, GIT-REFSPEC, GIT-COMMIT, GIT-RELEASE files within the root directory, +# otherwise grabs stuff from Git. + +# loosely based on Ryan Pavlik's work +find_package(Git QUIET) + +# commit: git rev-parse HEAD +# tag: git describe --tags --abbrev=0 +# branch: git rev-parse --abbrev-ref=HEAD + +# TODO: string overrides + +function(run_git_command variable) + if(NOT GIT_FOUND) + set(${variable} "GIT-NOTFOUND" PARENT_SCOPE) + return() + endif() + + execute_process(COMMAND + "${GIT_EXECUTABLE}" + ${ARGN} + WORKING_DIRECTORY + "${CMAKE_SOURCE_DIR}" + RESULT_VARIABLE + res + OUTPUT_VARIABLE + out + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) + + if(NOT res EQUAL 0) + set(out "${out}-${res}-NOTFOUND") + endif() + + set(${variable} "${out}" PARENT_SCOPE) +endfunction() + +function(trim var) + string(REGEX REPLACE "\n" "" new "${${var}}") + set(${var} ${new} PARENT_SCOPE) +endfunction() + +set(TAG_FILE ${CMAKE_SOURCE_DIR}/GIT-TAG) +set(REF_FILE ${CMAKE_SOURCE_DIR}/GIT-REFSPEC) +set(COMMIT_FILE ${CMAKE_SOURCE_DIR}/GIT-COMMIT) +set(RELEASE_FILE ${CMAKE_SOURCE_DIR}/GIT-RELEASE) + +if (EXISTS ${REF_FILE} AND EXISTS ${COMMIT_FILE}) + file(READ ${REF_FILE} GIT_REFSPEC) + file(READ ${COMMIT_FILE} GIT_COMMIT) +else() + run_git_command(GIT_COMMIT rev-parse HEAD) + run_git_command(GIT_REFSPEC rev-parse --abbrev-ref HEAD) + + if (GIT_REFSPEC MATCHES "NOTFOUND") + set(GIT_REFSPEC 1.0.0) + set(GIT_COMMIT stable) + endif() +endif() + +if (EXISTS ${TAG_FILE}) + file(READ ${TAG_FILE} GIT_TAG) +else() + run_git_command(GIT_TAG describe --tags --abbrev=0) + if (GIT_TAG MATCHES "NOTFOUND") + set(GIT_TAG "${GIT_REFSPEC}") + endif() +endif() + +if (EXISTS ${RELEASE_FILE}) + file(READ ${RELEASE_FILE} GIT_RELEASE) + trim(GIT_RELEASE) + message(STATUS "[GetSCMRev] Git release: ${GIT_RELEASE}") +endif() + +trim(GIT_REFSPEC) +trim(GIT_COMMIT) +trim(GIT_TAG) + +message(STATUS "[GetSCMRev] Git commit: ${GIT_COMMIT}") +message(STATUS "[GetSCMRev] Git tag: ${GIT_TAG}") +message(STATUS "[GetSCMRev] Git refspec: ${GIT_REFSPEC}") diff --git a/externals/cmake-modules/UseCcache.cmake b/externals/cmake-modules/UseCcache.cmake new file mode 100644 index 0000000000..34a9de3cf2 --- /dev/null +++ b/externals/cmake-modules/UseCcache.cmake @@ -0,0 +1,34 @@ +# SPDX-FileCopyrightText: Copyright 2025 crueter +# SPDX-License-Identifier: LGPL-3.0-or-later + +## UseCcache ## + +# Adds an option to enable CCache and uses it if provided. +# Also does some debug info downgrading to make it easier. +# Credit to DraVee for his work on this + +option(USE_CCACHE "Use ccache for compilation" OFF) +set(CCACHE_PATH "ccache" CACHE STRING "Path to ccache binary") +if(USE_CCACHE) + find_program(CCACHE_BINARY ${CCACHE_PATH}) + if(CCACHE_BINARY) + message(STATUS "[UseCcache] Found ccache at: ${CCACHE_BINARY}") + set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE_BINARY}) + set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_BINARY}) + else() + message(FATAL_ERROR "[UseCcache] USE_CCACHE enabled, but no " + "executable found at: ${CCACHE_PATH}") + endif() + # Follow SCCache recommendations: + # + if(WIN32) + string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_DEBUG + "${CMAKE_CXX_FLAGS_DEBUG}") + string(REPLACE "/Zi" "/Z7" CMAKE_C_FLAGS_DEBUG + "${CMAKE_C_FLAGS_DEBUG}") + string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_RELWITHDEBINFO + "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") + string(REPLACE "/Zi" "/Z7" CMAKE_C_FLAGS_RELWITHDEBINFO + "${CMAKE_C_FLAGS_RELWITHDEBINFO}") + endif() +endif() diff --git a/externals/cmake-modules/UseLTO.cmake b/externals/cmake-modules/UseLTO.cmake new file mode 100644 index 0000000000..b364ef22d8 --- /dev/null +++ b/externals/cmake-modules/UseLTO.cmake @@ -0,0 +1,21 @@ +# SPDX-FileCopyrightText: Copyright 2025 crueter +# SPDX-License-Identifier: LGPL-3.0-or-later + +## UseLTO ## + +# Enable Interprocedural Optimization (IPO). +# Self-explanatory. + +option(ENABLE_LTO "Enable Link-Time Optimization (LTO)" OFF) + +if (ENABLE_LTO) + include(CheckIPOSupported) + check_ipo_supported(RESULT COMPILER_SUPPORTS_LTO) + if(NOT COMPILER_SUPPORTS_LTO) + message(FATAL_ERROR + "Your compiler does not support interprocedural optimization" + " (IPO). Disable ENABLE_LTO and try again.") + endif() + set(CMAKE_POLICY_DEFAULT_CMP0069 NEW) + set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ${COMPILER_SUPPORTS_LTO}) +endif() \ No newline at end of file diff --git a/externals/cpmfile.json b/externals/cpmfile.json new file mode 100644 index 0000000000..b8472774ae --- /dev/null +++ b/externals/cpmfile.json @@ -0,0 +1,268 @@ +{ + "vulkan-memory-allocator": { + "package": "VulkanMemoryAllocator", + "repo": "GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator", + "tag": "v%VERSION%", + "hash": "deb5902ef8db0e329fbd5f3f4385eb0e26bdd9f14f3a2334823fb3fe18f36bc5d235d620d6e5f6fe3551ec3ea7038638899db8778c09f6d5c278f5ff95c3344b", + "find_args": "CONFIG", + "git_version": "3.3.0" + }, + "sirit": { + "repo": "eden-emulator/sirit", + "git_version": "1.0.4", + "tag": "v%VERSION%", + "artifact": "sirit-source-%VERSION%.tar.zst", + "hash_suffix": "sha512sum", + "find_args": "CONFIG", + "options": [ + "SIRIT_USE_SYSTEM_SPIRV_HEADERS ON" + ] + }, + "sirit-ci": { + "ci": true, + "package": "sirit", + "name": "sirit", + "repo": "eden-emulator/sirit", + "version": "1.0.4" + }, + "httplib": { + "repo": "yhirose/cpp-httplib", + "tag": "v%VERSION%", + "hash": "5efa8140aadffe105dcf39935b732476e95755f6c7473ada3d0b64df2bc02c557633ae3948a25b45e1cf67e89a3ff6329fb30362e4ac033b9a1d1e453aa2eded", + "git_version": "0.37.0", + "version": "0.18.7", + "find_args": "MODULE GLOBAL", + "patches": [ + "0001-mingw.patch", + "0002-fix-zstd.patch" + ], + "options": [ + "HTTPLIB_REQUIRE_OPENSSL ON", + "HTTPLIB_DISABLE_MACOSX_AUTOMATIC_ROOT_CERTIFICATES ON" + ] + }, + "cpp-jwt": { + "version": "1.4", + "repo": "arun11299/cpp-jwt", + "sha": "7f24eb4c32", + "hash": "d11cbd5ddb3197b4c5ca15679bcd76a49963e7b530b7dd132db91e042925efa20dfb2c24ccfbe7ef82a7012af80deff0f72ee25851312ae80381a462df8534b8", + "find_args": "CONFIG", + "options": [ + "CPP_JWT_USE_VENDORED_NLOHMANN_JSON OFF" + ], + "patches": [ + "0001-fix-missing-decl.patch" + ] + }, + "xbyak": { + "package": "xbyak", + "repo": "herumi/xbyak", + "tag": "v%VERSION%", + "hash": "b6475276b2faaeb315734ea8f4f8bd87ededcee768961b39679bee547e7f3e98884d8b7851e176d861dab30a80a76e6ea302f8c111483607dde969b4797ea95a", + "git_version": "7.35.2" + }, + "oaknut": { + "repo": "eden-emulator/oaknut", + "version": "2.0.1", + "git_version": "2.0.3", + "tag": "v%VERSION%", + "hash": "9697e80a7d5d9bcb3ce51051a9a24962fb90ca79d215f1f03ae6b58da8ba13a63b5dda1b4dde3d26ac6445029696b8ef2883f4e5a777b342bba01283ed293856" + }, + "libadrenotools": { + "repo": "eden-emulator/libadrenotools", + "sha": "8ba23b42d7", + "hash": "f6526620cb752876edc5ed4c0925d57b873a8218ee09ad10859ee476e9333259784f61c1dcc55a2bcba597352d18aff22cd2e4c1925ec2ae94074e09d7da2265", + "patches": [ + "0001-linkerns-cpm.patch" + ] + }, + "oboe": { + "repo": "google/oboe", + "tag": "%VERSION%", + "hash": "ce4011afe7345370d4ead3b891cd69a5ef224b129535783586c0ca75051d303ed446e6c7f10bde8da31fff58d6e307f1732a3ffd03b249f9ef1fd48fd4132715", + "git_version": "1.10.0", + "bundled": true + }, + "unordered-dense": { + "package": "unordered_dense", + "repo": "martinus/unordered_dense", + "sha": "7b55cab841", + "hash": "d2106f6640f6bfb81755e4b8bfb64982e46ec4a507cacdb38f940123212ccf35a20b43c70c6f01d7bfb8c246d1a16f7845d8052971949cea9def1475e3fa02c8", + "find_args": "CONFIG", + "bundled": true, + "patches": [ + "0001-avoid-memset-when-clearing-an-empty-table.patch" + ] + }, + "enet": { + "repo": "lsalzman/enet", + "tag": "v%VERSION%", + "hash": "a0d2fa8c957704dd49e00a726284ac5ca034b50b00d2b20a94fa1bbfbb80841467834bfdc84aa0ed0d6aab894608fd6c86c3b94eee46343f0e6d9c22e391dbf9", + "version": "1.3", + "git_version": "1.3.18", + "find_args": "MODULE" + }, + "spirv-tools": { + "package": "SPIRV-Tools", + "repo": "KhronosGroup/SPIRV-Tools", + "sha": "0a7e28689a", + "hash": "eadfcceb82f4b414528d99962335e4f806101168474028f3cf7691ac40c37f323decf2a42c525e2d5bfa6f14ff132d6c5cf9b87c151490efad01f5e13ade1520", + "git_version": "2025.4", + "options": [ + "SPIRV_SKIP_EXECUTABLES ON" + ], + "patches": [ + "0001-netbsd-fix.patch", + "0002-allow-static-only.patch" + ] + }, + "spirv-headers": { + "package": "SPIRV-Headers", + "repo": "KhronosGroup/SPIRV-Headers", + "sha": "04f10f650d", + "hash": "cae8cd179c9013068876908fecc1d158168310ad6ac250398a41f0f5206ceff6469e2aaeab9c820bce9d1b08950c725c89c46e94b89a692be9805432cf749396", + "options": [ + "SPIRV_WERROR OFF" + ] + }, + "cubeb": { + "repo": "mozilla/cubeb", + "sha": "fa02160712", + "hash": "8a4bcb2f83ba590f52c66626e895304a73eb61928dbc57777e1822e55378e3568366f17f9da4b80036cc2ef4ea9723c32abf6e7d9bbe00fb03654f0991596ab0", + "find_args": "CONFIG", + "options": [ + "USE_SANITIZERS OFF", + "BUILD_TESTS OFF", + "BUILD_TOOLS OFF", + "BUNDLE_SPEEX ON" + ] + }, + "sdl2": { + "ci": true, + "package": "SDL2", + "name": "SDL2", + "repo": "crueter-ci/SDL2", + "version": "2.32.10-3c28e8ecc0", + "min_version": "2.26.4" + }, + "catch2": { + "package": "Catch2", + "repo": "catchorg/Catch2", + "tag": "v%VERSION%", + "hash": "7eea385d79d88a5690cde131fe7ccda97d5c54ea09d6f515000d7bf07c828809d61c1ac99912c1ee507cf933f61c1c47ecdcc45df7850ffa82714034b0fccf35", + "version": "3.0.1", + "git_version": "3.13.0", + "patches": [ + "0001-solaris-isnan-fix.patch" + ] + }, + "discord-rpc": { + "package": "DiscordRPC", + "repo": "eden-emulator/discord-rpc", + "sha": "0d8b2d6a37", + "hash": "8213c43dcb0f7d479f5861091d111ed12fbdec1e62e6d729d65a4bc181d82f48a35d5fd3cd5c291f2393ac7c9681eabc6b76609755f55376284c8a8d67e148f3", + "find_args": "MODULE" + }, + "simpleini": { + "package": "SimpleIni", + "repo": "brofield/simpleini", + "tag": "v%VERSION%", + "hash": "b937c18a7b6277d77ca7ebfb216af4984810f77af4c32d101b7685369a4bd5eb61406223f82698e167e6311a728d07415ab59639fdf19eff71ad6dc2abfda989", + "find_args": "MODULE", + "git_version": "4.25" + }, + "sdl2_generic": { + "package": "SDL2", + "repo": "libsdl-org/SDL", + "tag": "release-%VERSION%", + "hash": "d5622d6bb7266f7942a7b8ad43e8a22524893bf0c2ea1af91204838d9b78d32768843f6faa248757427b8404b8c6443776d4afa6b672cd8571a4e0c03a829383", + "bundled": true, + "git_version": "2.32.10", + "skip_updates": true + }, + "sdl2_steamdeck": { + "package": "SDL2", + "repo": "libsdl-org/SDL", + "sha": "cc016b0046", + "hash": "b8d9873446cdb922387471df9968e078714683046674ef0d0edddf8e25da65a539a3bae83d635496b970237f90b07b36a69f8d7855d450de59311d6d6e8c3dbc", + "bundled": true, + "skip_updates": "true" + }, + "moltenvk": { + "repo": "V380-Ori/Ryujinx.MoltenVK", + "tag": "v%VERSION%-ryujinx", + "git_version": "1.4.1", + "artifact": "MoltenVK-macOS.tar", + "hash": "5695b36ca5775819a71791557fcb40a4a5ee4495be6b8442e0b666d0c436bec02aae68cc6210183f7a5c986bdbec0e117aecfad5396e496e9c2fd5c89133a347", + "bundled": true + }, + "gamemode": { + "repo": "FeralInteractive/gamemode", + "sha": "ce6fe122f3", + "hash": "e87ec14ed3e826d578ebf095c41580069dda603792ba91efa84f45f4571a28f4d91889675055fd6f042d7dc25b0b9443daf70963ae463e38b11bcba95f4c65a9", + "version": "1.7", + "find_args": "MODULE" + }, + "biscuit": { + "repo": "lioncash/biscuit", + "tag": "v%VERSION%", + "hash": "1229f345b014f7ca544dedb4edb3311e41ba736f9aa9a67f88b5f26f3c983288c6bb6cdedcfb0b8a02c63088a37e6a0d7ba97d9c2a4d721b213916327cffe28a", + "version": "0.9.1", + "git_version": "0.19.0" + }, + "libusb": { + "repo": "libusb/libusb", + "tag": "v%VERSION%", + "hash": "98c5f7940ff06b25c9aa65aa98e23de4c79a4c1067595f4c73cc145af23a1c286639e1ba11185cd91bab702081f307b973f08a4c9746576dc8d01b3620a3aeb5", + "find_args": "MODULE", + "git_version": "1.0.29", + "patches": [ + "0001-netbsd-gettime.patch" + ] + }, + "ffmpeg": { + "repo": "FFmpeg/FFmpeg", + "sha": "c7b5f1537d", + "hash": "ed177621176b3961bdcaa339187d3a7688c1c8b060b79c4bb0257cbc67ad7021ae5d5adca5303b45625abbbe3d9aafdd87ce777b8690ac295290d744c875489a", + "bundled": true + }, + "ffmpeg-ci": { + "ci": true, + "package": "FFmpeg", + "name": "ffmpeg", + "repo": "crueter-ci/FFmpeg", + "version": "8.0.1-c7b5f1537d", + "min_version": "4.1" + }, + "tzdb": { + "package": "nx_tzdb", + "repo": "eden-emu/tzdb_to_nx", + "git_host": "git.eden-emu.dev", + "artifact": "%VERSION%.tar.gz", + "tag": "%VERSION%", + "hash": "cce65a12bf90f4ead43b24a0b95dfad77ac3d9bfbaaf66c55e6701346e7a1e44ca5d2f23f47ee35ee02271eb1082bf1762af207aad9fb236f1c8476812d008ed", + "version": "121125", + "git_version": "230326" + }, + "vulkan-headers": { + "repo": "KhronosGroup/Vulkan-Headers", + "package": "VulkanHeaders", + "version": "1.4.317", + "hash": "d2846ea228415772645eea4b52a9efd33e6a563043dd3de059e798be6391a8f0ca089f455ae420ff22574939ed0f48ed7c6ff3d5a9987d5231dbf3b3f89b484b", + "git_version": "1.4.345", + "tag": "v%VERSION%" + }, + "vulkan-utility-libraries": { + "repo": "KhronosGroup/Vulkan-Utility-Libraries", + "package": "VulkanUtilityLibraries", + "hash": "114f6b237a6dcba923ccc576befb5dea3f1c9b3a30de7dc741f234a831d1c2d52d8a224afb37dd57dffca67ac0df461eaaab6a5ab5e503b393f91c166680c3e1", + "git_version": "1.4.345", + "tag": "v%VERSION%" + }, + "frozen": { + "package": "frozen", + "repo": "serge-sans-paille/frozen", + "sha": "61dce5ae18", + "hash": "b8dfe741c82bc178dfc9749d4ab5a130cee718d9ee7b71d9b547cf5f7f23027ed0152ad250012a8546399fcc1e12187efc68d89d6731256c4d2df7d04eef8d5c" + } +} diff --git a/externals/ffmpeg/CMakeLists.txt b/externals/ffmpeg/CMakeLists.txt index 048ab36c17..3140f8e545 100644 --- a/externals/ffmpeg/CMakeLists.txt +++ b/externals/ffmpeg/CMakeLists.txt @@ -1,7 +1,140 @@ +# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + # SPDX-FileCopyrightText: 2021 yuzu Emulator Project # SPDX-License-Identifier: GPL-2.0-or-later -if (NOT WIN32 AND NOT ANDROID) +# TODO(crueter, MaranBr): Externals FFmpeg 8.0 + +set(FFmpeg_HWACCEL_LIBRARIES) +set(FFmpeg_HWACCEL_FLAGS) +set(FFmpeg_HWACCEL_INCLUDE_DIRS) +set(FFmpeg_HWACCEL_LDFLAGS) + +if (UNIX AND NOT ANDROID) + find_package(PkgConfig REQUIRED) + if (NOT ANDROID) + pkg_check_modules(LIBVA libva) + pkg_check_modules(CUDA cuda) + pkg_check_modules(FFNVCODEC ffnvcodec) + pkg_check_modules(VDPAU vdpau) + endif() + + if (NOT APPLE) + # In Solaris needs explicit linking for ffmpeg which links to /lib/amd64/libX11.so + if(PLATFORM_SUN) + find_library(LIBDRM_LIB libdrm PATHS /usr/lib/64 /usr/lib/amd64 /usr/lib) + if(LIBDRM_LIB) + list(APPEND FFmpeg_HWACCEL_LIBRARIES + X11 + "${LIBDRM_LIB}") + message(STATUS "Found libdrm at: ${LIBDRM_LIB}") + else() + message(WARNING "libdrm not found, disabling libdrm support") + list(APPEND FFmpeg_HWACCEL_FLAGS + --disable-libdrm) + endif() + else() + pkg_check_modules(LIBDRM libdrm REQUIRED) + list(APPEND FFmpeg_HWACCEL_LIBRARIES + ${LIBDRM_LIBRARIES}) + list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS + ${LIBDRM_INCLUDE_DIRS}) + list(APPEND FFmpeg_HWACCEL_FLAGS + --enable-libdrm) + endif() + endif() + + if(LIBVA_FOUND) + find_package(X11 REQUIRED) + pkg_check_modules(LIBVA-DRM libva-drm REQUIRED) + pkg_check_modules(LIBVA-X11 libva-x11 REQUIRED) + list(APPEND FFmpeg_HWACCEL_LIBRARIES + ${X11_LIBRARIES} + ${LIBVA-DRM_LIBRARIES} + ${LIBVA-X11_LIBRARIES} + ${LIBVA_LIBRARIES}) + list(APPEND FFmpeg_HWACCEL_FLAGS + --enable-hwaccel=h264_vaapi + --enable-hwaccel=vp8_vaapi + --enable-hwaccel=vp9_vaapi) + list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS + ${X11_INCLUDE_DIRS} + ${LIBVA-DRM_INCLUDE_DIRS} + ${LIBVA-X11_INCLUDE_DIRS} + ${LIBVA_INCLUDE_DIRS} + ) + message(STATUS "ffmpeg: va-api libraries version ${LIBVA_VERSION} found") + else() + list(APPEND FFmpeg_HWACCEL_FLAGS --disable-vaapi) + message(WARNING "ffmpeg: libva-dev not found, disabling Video Acceleration API (VA-API)...") + endif() + + if (FFNVCODEC_FOUND) + list(APPEND FFmpeg_HWACCEL_FLAGS + --enable-cuvid + --enable-ffnvcodec + --enable-nvdec + --enable-hwaccel=h264_nvdec + --enable-hwaccel=vp8_nvdec + --enable-hwaccel=vp9_nvdec + ) + list(APPEND FFmpeg_HWACCEL_LIBRARIES ${FFNVCODEC_LIBRARIES}) + list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${FFNVCODEC_INCLUDE_DIRS}) + list(APPEND FFmpeg_HWACCEL_LDFLAGS ${FFNVCODEC_LDFLAGS}) + message(STATUS "ffmpeg: ffnvcodec libraries version ${FFNVCODEC_VERSION} found") + # ffnvenc could load CUDA libraries at the runtime using dlopen/dlsym or LoadLibrary/GetProcAddress + # here we handle the hard-linking scenario where CUDA is linked during compilation + if (CUDA_FOUND) + # This line causes build error if CUDA_INCLUDE_DIRS is anything but a single non-empty value + #list(APPEND FFmpeg_HWACCEL_FLAGS --extra-cflags=-I${CUDA_INCLUDE_DIRS}) + list(APPEND FFmpeg_HWACCEL_LIBRARIES ${CUDA_LIBRARIES}) + list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${CUDA_INCLUDE_DIRS}) + list(APPEND FFmpeg_HWACCEL_LDFLAGS ${CUDA_LDFLAGS}) + message(STATUS "ffmpeg: CUDA libraries version ${CUDA_VERSION} found, hard-linking will be performed") + endif(CUDA_FOUND) + endif() + + if (VDPAU_FOUND AND NOT APPLE) + list(APPEND FFmpeg_HWACCEL_FLAGS + --enable-vdpau + --enable-hwaccel=h264_vdpau + --enable-hwaccel=vp9_vdpau + ) + list(APPEND FFmpeg_HWACCEL_LIBRARIES ${VDPAU_LIBRARIES}) + list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${VDPAU_INCLUDE_DIRS}) + list(APPEND FFmpeg_HWACCEL_LDFLAGS ${VDPAU_LDFLAGS}) + message(STATUS "ffmpeg: vdpau libraries version ${VDPAU_VERSION} found") + else() + list(APPEND FFmpeg_HWACCEL_FLAGS --disable-vdpau) + message(WARNING "ffmpeg: libvdpau-dev not found, disabling Video Decode and Presentation API for Unix (VDPAU)...") + endif() +endif() + +if (YUZU_USE_BUNDLED_FFMPEG) + AddJsonPackage(ffmpeg-ci) + + set(FFmpeg_INCLUDE_DIR + "${FFmpeg_SOURCE_DIR}/include;${FFmpeg_HWACCEL_INCLUDE_DIRS}" + PARENT_SCOPE + ) + + set(FFmpeg_PATH + "${FFmpeg_SOURCE_DIR}" + PARENT_SCOPE + ) + + set(FFmpeg_LIBRARY_DIR + "${FFmpeg_SOURCE_DIR}/bin" + PARENT_SCOPE + ) + + set(FFmpeg_LIBRARIES + FFmpeg::FFmpeg + ${FFmpeg_HWACCEL_LIBRARIES} + PARENT_SCOPE + ) +else() # Build FFmpeg from externals message(STATUS "Using FFmpeg from externals") @@ -19,13 +152,7 @@ if (NOT WIN32 AND NOT ANDROID) message(FATAL_ERROR "Required program `autoconf` not found.") endif() - AddPackage( - NAME ffmpeg - REPO "FFmpeg/FFmpeg" - SHA c2184b65d2 - HASH 2a89d664119debbb3c006ab1c48d5d7f26e889f4a65ad2e25c8b0503308295123d5a9c5c78bf683aef5ff09acef8c3fc2837f22d3e8c611528b933bf03bcdd97 - SYSTEM_PACKAGE OFF - ) + AddJsonPackage(ffmpeg) set(FFmpeg_PREFIX ${ffmpeg_SOURCE_DIR}) set(FFmpeg_BUILD_DIR ${ffmpeg_BINARY_DIR}) @@ -52,86 +179,6 @@ if (NOT WIN32 AND NOT ANDROID) CACHE PATH "Paths to FFmpeg libraries" FORCE) endforeach() - find_package(PkgConfig REQUIRED) - if (NOT ANDROID) - pkg_check_modules(LIBVA libva) - pkg_check_modules(CUDA cuda) - pkg_check_modules(FFNVCODEC ffnvcodec) - pkg_check_modules(VDPAU vdpau) - endif() - - set(FFmpeg_HWACCEL_LIBRARIES) - set(FFmpeg_HWACCEL_FLAGS) - set(FFmpeg_HWACCEL_INCLUDE_DIRS) - set(FFmpeg_HWACCEL_LDFLAGS) - - if(LIBVA_FOUND) - pkg_check_modules(LIBDRM libdrm REQUIRED) - find_package(X11 REQUIRED) - pkg_check_modules(LIBVA-DRM libva-drm REQUIRED) - pkg_check_modules(LIBVA-X11 libva-x11 REQUIRED) - list(APPEND FFmpeg_HWACCEL_LIBRARIES - ${LIBDRM_LIBRARIES} - ${X11_LIBRARIES} - ${LIBVA-DRM_LIBRARIES} - ${LIBVA-X11_LIBRARIES} - ${LIBVA_LIBRARIES}) - set(FFmpeg_HWACCEL_FLAGS - --enable-hwaccel=h264_vaapi - --enable-hwaccel=vp8_vaapi - --enable-hwaccel=vp9_vaapi - --enable-libdrm) - list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS - ${LIBDRM_INCLUDE_DIRS} - ${X11_INCLUDE_DIRS} - ${LIBVA-DRM_INCLUDE_DIRS} - ${LIBVA-X11_INCLUDE_DIRS} - ${LIBVA_INCLUDE_DIRS} - ) - message(STATUS "VA-API found") - else() - set(FFmpeg_HWACCEL_FLAGS --disable-vaapi) - endif() - - if (FFNVCODEC_FOUND) - list(APPEND FFmpeg_HWACCEL_FLAGS - --enable-cuvid - --enable-ffnvcodec - --enable-nvdec - --enable-hwaccel=h264_nvdec - --enable-hwaccel=vp8_nvdec - --enable-hwaccel=vp9_nvdec - ) - list(APPEND FFmpeg_HWACCEL_LIBRARIES ${FFNVCODEC_LIBRARIES}) - list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${FFNVCODEC_INCLUDE_DIRS}) - list(APPEND FFmpeg_HWACCEL_LDFLAGS ${FFNVCODEC_LDFLAGS}) - message(STATUS "ffnvcodec libraries version ${FFNVCODEC_VERSION} found") - # ffnvenc could load CUDA libraries at the runtime using dlopen/dlsym or LoadLibrary/GetProcAddress - # here we handle the hard-linking senario where CUDA is linked during compilation - if (CUDA_FOUND) - # This line causes build error if CUDA_INCLUDE_DIRS is anything but a single non-empty value - #list(APPEND FFmpeg_HWACCEL_FLAGS --extra-cflags=-I${CUDA_INCLUDE_DIRS}) - list(APPEND FFmpeg_HWACCEL_LIBRARIES ${CUDA_LIBRARIES}) - list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${CUDA_INCLUDE_DIRS}) - list(APPEND FFmpeg_HWACCEL_LDFLAGS ${CUDA_LDFLAGS}) - message(STATUS "CUDA libraries found, hard-linking will be performed") - endif(CUDA_FOUND) - endif() - - if (VDPAU_FOUND) - list(APPEND FFmpeg_HWACCEL_FLAGS - --enable-vdpau - --enable-hwaccel=h264_vdpau - --enable-hwaccel=vp9_vdpau - ) - list(APPEND FFmpeg_HWACCEL_LIBRARIES ${VDPAU_LIBRARIES}) - list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS ${VDPAU_INCLUDE_DIRS}) - list(APPEND FFmpeg_HWACCEL_LDFLAGS ${VDPAU_LDFLAGS}) - message(STATUS "vdpau libraries version ${VDPAU_VERSION} found") - else() - list(APPEND FFmpeg_HWACCEL_FLAGS --disable-vdpau) - endif() - find_program(BASH_PROGRAM bash REQUIRED) set(FFmpeg_CROSS_COMPILE_FLAGS "") @@ -168,7 +215,6 @@ if (NOT WIN32 AND NOT ANDROID) --disable-ffmpeg --disable-ffprobe --disable-network - --disable-postproc --disable-swresample --enable-decoder=h264 --enable-decoder=vp8 @@ -196,11 +242,19 @@ if (NOT WIN32 AND NOT ANDROID) SYSTEM_THREADS) set(FFmpeg_BUILD_LIBRARIES ${FFmpeg_LIBRARIES}) + + # BSD make or Solaris make don't support ffmpeg make-j8 + if (PLATFORM_LINUX OR ANDROID OR APPLE OR WIN32 OR PLATFORM_FREEBSD) + set(FFmpeg_MAKE_ARGS -j${SYSTEM_THREADS}) + else() + set(FFmpeg_MAKE_ARGS "") + endif() + add_custom_command( OUTPUT ${FFmpeg_BUILD_LIBRARIES} COMMAND - make -j${SYSTEM_THREADS} + make ${FFmpeg_MAKE_ARGS} WORKING_DIRECTORY ${FFmpeg_BUILD_DIR} ) @@ -231,57 +285,6 @@ if (NOT WIN32 AND NOT ANDROID) else() message(FATAL_ERROR "FFmpeg not found") endif() -elseif(ANDROID) - # Use yuzu FFmpeg binaries - if (ARCHITECTURE_arm64) - set(FFmpeg_EXT_NAME "ffmpeg-android-7.1.1-aarch64") - elseif (ARCHITECTURE_x86_64) - set(FFmpeg_EXT_NAME "ffmpeg-android-v5.1.LTS-x86_64") - else() - message(FATAL_ERROR "Unsupported architecture for Android FFmpeg") - endif() - - download_bundled_external("ffmpeg/" ${FFmpeg_EXT_NAME} "ffmpeg-bundled" FFmpeg_PATH 7.1.1) - set(FFmpeg_FOUND YES) - set(FFmpeg_INCLUDE_DIR "${FFmpeg_PATH}/include" CACHE PATH "Path to FFmpeg headers" FORCE) - set(FFmpeg_LIBRARY_DIR "${FFmpeg_PATH}/lib" CACHE PATH "Path to FFmpeg library directory" FORCE) - set(FFmpeg_LDFLAGS "" CACHE STRING "FFmpeg linker flags" FORCE) - set(FFmpeg_LIBRARIES - ${FFmpeg_LIBRARY_DIR}/libavcodec.so - ${FFmpeg_LIBRARY_DIR}/libavdevice.so - ${FFmpeg_LIBRARY_DIR}/libavfilter.so - ${FFmpeg_LIBRARY_DIR}/libavformat.so - ${FFmpeg_LIBRARY_DIR}/libavutil.so - ${FFmpeg_LIBRARY_DIR}/libswresample.so - ${FFmpeg_LIBRARY_DIR}/libswscale.so - ${FFmpeg_LIBRARY_DIR}/libvpx.a - ${FFmpeg_LIBRARY_DIR}/libx264.a - CACHE PATH "Paths to FFmpeg libraries" FORCE) - # exported variables - set(FFmpeg_PATH "${FFmpeg_PATH}" PARENT_SCOPE) - set(FFmpeg_LDFLAGS "${FFmpeg_LDFLAGS}" PARENT_SCOPE) - set(FFmpeg_LIBRARIES "${FFmpeg_LIBRARIES}" PARENT_SCOPE) - set(FFmpeg_INCLUDE_DIR "${FFmpeg_INCLUDE_DIR}" PARENT_SCOPE) -elseif(WIN32) - # Use yuzu FFmpeg binaries - set(FFmpeg_EXT_NAME "ffmpeg-7.1.1") - - download_bundled_external("ffmpeg/" ${FFmpeg_EXT_NAME} "ffmpeg-bundled" FFmpeg_PATH 7.1.1) - set(FFmpeg_FOUND YES) - set(FFmpeg_INCLUDE_DIR "${FFmpeg_PATH}/include" CACHE PATH "Path to FFmpeg headers" FORCE) - set(FFmpeg_LIBRARY_DIR "${FFmpeg_PATH}/bin" CACHE PATH "Path to FFmpeg library directory" FORCE) - set(FFmpeg_LDFLAGS "" CACHE STRING "FFmpeg linker flags" FORCE) - set(FFmpeg_LIBRARIES - ${FFmpeg_LIBRARY_DIR}/swscale.lib - ${FFmpeg_LIBRARY_DIR}/avcodec.lib - ${FFmpeg_LIBRARY_DIR}/avfilter.lib - ${FFmpeg_LIBRARY_DIR}/avutil.lib - CACHE PATH "Paths to FFmpeg libraries" FORCE) - # exported variables - set(FFmpeg_PATH "${FFmpeg_PATH}" PARENT_SCOPE) - set(FFmpeg_LDFLAGS "${FFmpeg_LDFLAGS}" PARENT_SCOPE) - set(FFmpeg_LIBRARIES "${FFmpeg_LIBRARIES}" PARENT_SCOPE) - set(FFmpeg_INCLUDE_DIR "${FFmpeg_INCLUDE_DIR}" PARENT_SCOPE) endif() unset(FFmpeg_COMPONENTS) diff --git a/externals/gamemode/gamemode_client.h b/externals/gamemode/gamemode_client.h deleted file mode 100644 index b9f64fe460..0000000000 --- a/externals/gamemode/gamemode_client.h +++ /dev/null @@ -1,376 +0,0 @@ -/* - -Copyright (c) 2017-2019, Feral Interactive -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Feral Interactive nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - - */ -#ifndef CLIENT_GAMEMODE_H -#define CLIENT_GAMEMODE_H -/* - * GameMode supports the following client functions - * Requests are refcounted in the daemon - * - * int gamemode_request_start() - Request gamemode starts - * 0 if the request was sent successfully - * -1 if the request failed - * - * int gamemode_request_end() - Request gamemode ends - * 0 if the request was sent successfully - * -1 if the request failed - * - * GAMEMODE_AUTO can be defined to make the above two functions apply during static init and - * destruction, as appropriate. In this configuration, errors will be printed to stderr - * - * int gamemode_query_status() - Query the current status of gamemode - * 0 if gamemode is inactive - * 1 if gamemode is active - * 2 if gamemode is active and this client is registered - * -1 if the query failed - * - * int gamemode_request_start_for(pid_t pid) - Request gamemode starts for another process - * 0 if the request was sent successfully - * -1 if the request failed - * -2 if the request was rejected - * - * int gamemode_request_end_for(pid_t pid) - Request gamemode ends for another process - * 0 if the request was sent successfully - * -1 if the request failed - * -2 if the request was rejected - * - * int gamemode_query_status_for(pid_t pid) - Query status of gamemode for another process - * 0 if gamemode is inactive - * 1 if gamemode is active - * 2 if gamemode is active and this client is registered - * -1 if the query failed - * - * const char* gamemode_error_string() - Get an error string - * returns a string describing any of the above errors - * - * Note: All the above requests can be blocking - dbus requests can and will block while the daemon - * handles the request. It is not recommended to make these calls in performance critical code - */ - -#include -#include - -#include -#include - -#include - -#include - -static char internal_gamemode_client_error_string[512] = { 0 }; - -/** - * Load libgamemode dynamically to dislodge us from most dependencies. - * This allows clients to link and/or use this regardless of runtime. - * See SDL2 for an example of the reasoning behind this in terms of - * dynamic versioning as well. - */ -static volatile int internal_libgamemode_loaded = 1; - -/* Typedefs for the functions to load */ -typedef int (*api_call_return_int)(void); -typedef const char *(*api_call_return_cstring)(void); -typedef int (*api_call_pid_return_int)(pid_t); - -/* Storage for functors */ -static api_call_return_int REAL_internal_gamemode_request_start = NULL; -static api_call_return_int REAL_internal_gamemode_request_end = NULL; -static api_call_return_int REAL_internal_gamemode_query_status = NULL; -static api_call_return_cstring REAL_internal_gamemode_error_string = NULL; -static api_call_pid_return_int REAL_internal_gamemode_request_start_for = NULL; -static api_call_pid_return_int REAL_internal_gamemode_request_end_for = NULL; -static api_call_pid_return_int REAL_internal_gamemode_query_status_for = NULL; - -/** - * Internal helper to perform the symbol binding safely. - * - * Returns 0 on success and -1 on failure - */ -__attribute__((always_inline)) static inline int internal_bind_libgamemode_symbol( - void *handle, const char *name, void **out_func, size_t func_size, bool required) -{ - void *symbol_lookup = NULL; - char *dl_error = NULL; - - /* Safely look up the symbol */ - symbol_lookup = dlsym(handle, name); - dl_error = dlerror(); - if (required && (dl_error || !symbol_lookup)) { - snprintf(internal_gamemode_client_error_string, - sizeof(internal_gamemode_client_error_string), - "dlsym failed - %s", - dl_error); - return -1; - } - - /* Have the symbol correctly, copy it to make it usable */ - memcpy(out_func, &symbol_lookup, func_size); - return 0; -} - -/** - * Loads libgamemode and needed functions - * - * Returns 0 on success and -1 on failure - */ -__attribute__((always_inline)) static inline int internal_load_libgamemode(void) -{ - /* We start at 1, 0 is a success and -1 is a fail */ - if (internal_libgamemode_loaded != 1) { - return internal_libgamemode_loaded; - } - - /* Anonymous struct type to define our bindings */ - struct binding { - const char *name; - void **functor; - size_t func_size; - bool required; - } bindings[] = { - { "real_gamemode_request_start", - (void **)&REAL_internal_gamemode_request_start, - sizeof(REAL_internal_gamemode_request_start), - true }, - { "real_gamemode_request_end", - (void **)&REAL_internal_gamemode_request_end, - sizeof(REAL_internal_gamemode_request_end), - true }, - { "real_gamemode_query_status", - (void **)&REAL_internal_gamemode_query_status, - sizeof(REAL_internal_gamemode_query_status), - false }, - { "real_gamemode_error_string", - (void **)&REAL_internal_gamemode_error_string, - sizeof(REAL_internal_gamemode_error_string), - true }, - { "real_gamemode_request_start_for", - (void **)&REAL_internal_gamemode_request_start_for, - sizeof(REAL_internal_gamemode_request_start_for), - false }, - { "real_gamemode_request_end_for", - (void **)&REAL_internal_gamemode_request_end_for, - sizeof(REAL_internal_gamemode_request_end_for), - false }, - { "real_gamemode_query_status_for", - (void **)&REAL_internal_gamemode_query_status_for, - sizeof(REAL_internal_gamemode_query_status_for), - false }, - }; - - void *libgamemode = NULL; - - /* Try and load libgamemode */ - libgamemode = dlopen("libgamemode.so.0", RTLD_NOW); - if (!libgamemode) { - /* Attempt to load unversioned library for compatibility with older - * versions (as of writing, there are no ABI changes between the two - - * this may need to change if ever ABI-breaking changes are made) */ - libgamemode = dlopen("libgamemode.so", RTLD_NOW); - if (!libgamemode) { - snprintf(internal_gamemode_client_error_string, - sizeof(internal_gamemode_client_error_string), - "dlopen failed - %s", - dlerror()); - internal_libgamemode_loaded = -1; - return -1; - } - } - - /* Attempt to bind all symbols */ - for (size_t i = 0; i < sizeof(bindings) / sizeof(bindings[0]); i++) { - struct binding *binder = &bindings[i]; - - if (internal_bind_libgamemode_symbol(libgamemode, - binder->name, - binder->functor, - binder->func_size, - binder->required)) { - internal_libgamemode_loaded = -1; - return -1; - }; - } - - /* Success */ - internal_libgamemode_loaded = 0; - return 0; -} - -/** - * Redirect to the real libgamemode - */ -__attribute__((always_inline)) static inline const char *gamemode_error_string(void) -{ - /* If we fail to load the system gamemode, or we have an error string already, return our error - * string instead of diverting to the system version */ - if (internal_load_libgamemode() < 0 || internal_gamemode_client_error_string[0] != '\0') { - return internal_gamemode_client_error_string; - } - - /* Assert for static analyser that the function is not NULL */ - assert(REAL_internal_gamemode_error_string != NULL); - - return REAL_internal_gamemode_error_string(); -} - -/** - * Redirect to the real libgamemode - * Allow automatically requesting game mode - * Also prints errors as they happen. - */ -#ifdef GAMEMODE_AUTO -__attribute__((constructor)) -#else -__attribute__((always_inline)) static inline -#endif -int gamemode_request_start(void) -{ - /* Need to load gamemode */ - if (internal_load_libgamemode() < 0) { -#ifdef GAMEMODE_AUTO - fprintf(stderr, "gamemodeauto: %s\n", gamemode_error_string()); -#endif - return -1; - } - - /* Assert for static analyser that the function is not NULL */ - assert(REAL_internal_gamemode_request_start != NULL); - - if (REAL_internal_gamemode_request_start() < 0) { -#ifdef GAMEMODE_AUTO - fprintf(stderr, "gamemodeauto: %s\n", gamemode_error_string()); -#endif - return -1; - } - - return 0; -} - -/* Redirect to the real libgamemode */ -#ifdef GAMEMODE_AUTO -__attribute__((destructor)) -#else -__attribute__((always_inline)) static inline -#endif -int gamemode_request_end(void) -{ - /* Need to load gamemode */ - if (internal_load_libgamemode() < 0) { -#ifdef GAMEMODE_AUTO - fprintf(stderr, "gamemodeauto: %s\n", gamemode_error_string()); -#endif - return -1; - } - - /* Assert for static analyser that the function is not NULL */ - assert(REAL_internal_gamemode_request_end != NULL); - - if (REAL_internal_gamemode_request_end() < 0) { -#ifdef GAMEMODE_AUTO - fprintf(stderr, "gamemodeauto: %s\n", gamemode_error_string()); -#endif - return -1; - } - - return 0; -} - -/* Redirect to the real libgamemode */ -__attribute__((always_inline)) static inline int gamemode_query_status(void) -{ - /* Need to load gamemode */ - if (internal_load_libgamemode() < 0) { - return -1; - } - - if (REAL_internal_gamemode_query_status == NULL) { - snprintf(internal_gamemode_client_error_string, - sizeof(internal_gamemode_client_error_string), - "gamemode_query_status missing (older host?)"); - return -1; - } - - return REAL_internal_gamemode_query_status(); -} - -/* Redirect to the real libgamemode */ -__attribute__((always_inline)) static inline int gamemode_request_start_for(pid_t pid) -{ - /* Need to load gamemode */ - if (internal_load_libgamemode() < 0) { - return -1; - } - - if (REAL_internal_gamemode_request_start_for == NULL) { - snprintf(internal_gamemode_client_error_string, - sizeof(internal_gamemode_client_error_string), - "gamemode_request_start_for missing (older host?)"); - return -1; - } - - return REAL_internal_gamemode_request_start_for(pid); -} - -/* Redirect to the real libgamemode */ -__attribute__((always_inline)) static inline int gamemode_request_end_for(pid_t pid) -{ - /* Need to load gamemode */ - if (internal_load_libgamemode() < 0) { - return -1; - } - - if (REAL_internal_gamemode_request_end_for == NULL) { - snprintf(internal_gamemode_client_error_string, - sizeof(internal_gamemode_client_error_string), - "gamemode_request_end_for missing (older host?)"); - return -1; - } - - return REAL_internal_gamemode_request_end_for(pid); -} - -/* Redirect to the real libgamemode */ -__attribute__((always_inline)) static inline int gamemode_query_status_for(pid_t pid) -{ - /* Need to load gamemode */ - if (internal_load_libgamemode() < 0) { - return -1; - } - - if (REAL_internal_gamemode_query_status_for == NULL) { - snprintf(internal_gamemode_client_error_string, - sizeof(internal_gamemode_client_error_string), - "gamemode_query_status_for missing (older host?)"); - return -1; - } - - return REAL_internal_gamemode_query_status_for(pid); -} - -#endif // CLIENT_GAMEMODE_H diff --git a/externals/libusb/CMakeLists.txt b/externals/libusb/CMakeLists.txt index ec7724e874..47b54f43cc 100644 --- a/externals/libusb/CMakeLists.txt +++ b/externals/libusb/CMakeLists.txt @@ -1,7 +1,17 @@ +# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + # SPDX-FileCopyrightText: 2020 yuzu Emulator Project # SPDX-License-Identifier: GPL-2.0-or-later -if (MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux") OR APPLE) +AddJsonPackage(libusb) + +if (NOT libusb_ADDED) + return() +endif() + +# TODO: *BSD fails to compile--may need different configs/symbols +if (MINGW OR PLATFORM_LINUX OR APPLE) set(LIBUSB_FOUND ON CACHE BOOL "libusb is present" FORCE) set(LIBUSB_VERSION "1.0.24" CACHE STRING "libusb version string" FORCE) @@ -19,8 +29,8 @@ if (MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux") OR APPLE) message(FATAL_ERROR "Required program `libtoolize` not found.") endif() - set(LIBUSB_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/libusb") - set(LIBUSB_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/libusb") + set(LIBUSB_PREFIX "${libusb_BINARY_DIR}") + set(LIBUSB_SRC_DIR "${libusb_SOURCE_DIR}") # Workarounds for MSYS/MinGW if (MSYS) @@ -118,27 +128,27 @@ else() # MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux") endif() add_library(usb - libusb/libusb/core.c - libusb/libusb/core.c - libusb/libusb/descriptor.c - libusb/libusb/hotplug.c - libusb/libusb/io.c - libusb/libusb/strerror.c - libusb/libusb/sync.c + ${libusb_SOURCE_DIR}/libusb/core.c + ${libusb_SOURCE_DIR}/libusb/core.c + ${libusb_SOURCE_DIR}/libusb/descriptor.c + ${libusb_SOURCE_DIR}/libusb/hotplug.c + ${libusb_SOURCE_DIR}/libusb/io.c + ${libusb_SOURCE_DIR}/libusb/strerror.c + ${libusb_SOURCE_DIR}/libusb/sync.c ) set_target_properties(usb PROPERTIES VERSION 1.0.24) if(WIN32) target_include_directories(usb BEFORE PUBLIC - libusb/libusb + ${libusb_SOURCE_DIR}/libusb PRIVATE "${CMAKE_CURRENT_BINARY_DIR}" ) if (NOT MINGW) - target_include_directories(usb BEFORE PRIVATE libusb/msvc) + target_include_directories(usb BEFORE PRIVATE ${libusb_SOURCE_DIR}/msvc) endif() else() @@ -148,7 +158,7 @@ else() # MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux") BEFORE PUBLIC - libusb/libusb + ${libusb_SOURCE_DIR}/libusb PRIVATE "${CMAKE_CURRENT_BINARY_DIR}" @@ -157,15 +167,15 @@ else() # MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux") if(WIN32 OR CYGWIN) target_sources(usb PRIVATE - libusb/libusb/os/threads_windows.c - libusb/libusb/os/windows_winusb.c - libusb/libusb/os/windows_usbdk.c - libusb/libusb/os/windows_common.c + ${libusb_SOURCE_DIR}/libusb/os/threads_windows.c + ${libusb_SOURCE_DIR}/libusb/os/windows_winusb.c + ${libusb_SOURCE_DIR}/libusb/os/windows_usbdk.c + ${libusb_SOURCE_DIR}/libusb/os/windows_common.c ) set(OS_WINDOWS TRUE) elseif(APPLE) target_sources(usb PRIVATE - libusb/libusb/os/darwin_usb.c + ${libusb_SOURCE_DIR}/libusb/os/darwin_usb.c ) find_library(COREFOUNDATION_LIBRARY CoreFoundation) find_library(IOKIT_LIBRARY IOKit) @@ -178,20 +188,20 @@ else() # MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux") set(OS_DARWIN TRUE) elseif(ANDROID) target_sources(usb PRIVATE - libusb/libusb/os/linux_usbfs.c - libusb/libusb/os/linux_netlink.c + ${libusb_SOURCE_DIR}/libusb/os/linux_usbfs.c + ${libusb_SOURCE_DIR}/libusb/os/linux_netlink.c ) find_library(LOG_LIBRARY log) target_link_libraries(usb PRIVATE ${LOG_LIBRARY}) set(OS_LINUX TRUE) elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") target_sources(usb PRIVATE - libusb/libusb/os/linux_usbfs.c + ${libusb_SOURCE_DIR}/libusb/os/linux_usbfs.c ) find_package(Libudev) if(LIBUDEV_FOUND) target_sources(usb PRIVATE - libusb/libusb/os/linux_udev.c + ${libusb_SOURCE_DIR}/libusb/os/linux_udev.c ) target_link_libraries(usb PRIVATE "${LIBUDEV_LIBRARIES}") target_include_directories(usb PRIVATE "${LIBUDEV_INCLUDE_DIR}") @@ -199,30 +209,30 @@ else() # MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux") set(USE_UDEV TRUE) else() target_sources(usb PRIVATE - libusb/libusb/os/linux_netlink.c + ${libusb_SOURCE_DIR}/libusb/os/linux_netlink.c ) endif() set(OS_LINUX TRUE) elseif(${CMAKE_SYSTEM_NAME} MATCHES "NetBSD") target_sources(usb PRIVATE - libusb/libusb/os/netbsd_usb.c + ${libusb_SOURCE_DIR}/libusb/os/netbsd_usb.c ) set(OS_NETBSD TRUE) elseif(${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD") target_sources(usb PRIVATE - libusb/libusb/os/openbsd_usb.c + ${libusb_SOURCE_DIR}/libusb/os/openbsd_usb.c ) set(OS_OPENBSD TRUE) endif() if(UNIX) target_sources(usb PRIVATE - libusb/libusb/os/events_posix.c - libusb/libusb/os/threads_posix.c + ${libusb_SOURCE_DIR}/libusb/os/events_posix.c + ${libusb_SOURCE_DIR}/libusb/os/threads_posix.c ) find_package(Threads REQUIRED) if(THREADS_HAVE_PTHREAD_ARG) - target_compile_options(usb PUBLIC "-pthread") + target_compile_options(usb PUBLIC $<$:-pthread>) endif() if(CMAKE_THREAD_LIBS_INIT) target_link_libraries(usb PRIVATE "${CMAKE_THREAD_LIBS_INIT}") @@ -230,8 +240,8 @@ else() # MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux") set(THREADS_POSIX TRUE) elseif(WIN32) target_sources(usb PRIVATE - libusb/libusb/os/events_windows.c - libusb/libusb/os/threads_windows.c + ${libusb_SOURCE_DIR}/libusb/os/events_windows.c + ${libusb_SOURCE_DIR}/libusb/os/threads_windows.c ) endif() diff --git a/externals/libusb/libusb b/externals/libusb/libusb deleted file mode 160000 index c060e9ce30..0000000000 --- a/externals/libusb/libusb +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c060e9ce30ac2e3ffb49d94209c4dae77b6642f7 diff --git a/externals/nx_tzdb/CMakeLists.txt b/externals/nx_tzdb/CMakeLists.txt index a86a97b4da..a82bf0b132 100644 --- a/externals/nx_tzdb/CMakeLists.txt +++ b/externals/nx_tzdb/CMakeLists.txt @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + # SPDX-FileCopyrightText: 2023 yuzu Emulator Project # SPDX-License-Identifier: GPL-2.0-or-later @@ -11,33 +14,38 @@ find_program(DATE_PROG date) set(CAN_BUILD_NX_TZDB true) -if (NOT GIT) - set(CAN_BUILD_NX_TZDB false) -endif() -if (NOT GNU_MAKE) - set(CAN_BUILD_NX_TZDB false) -endif() -if (NOT DATE_PROG) - set(CAN_BUILD_NX_TZDB false) -endif() -if (CMAKE_SYSTEM_NAME STREQUAL "Windows" OR ANDROID) +if (NOT (GIT AND GNU_MAKE AND DATE_PROG) OR CMAKE_SYSTEM_NAME STREQUAL "Windows" OR ANDROID) # tzdb_to_nx currently requires a posix-compliant host # MinGW and Android are handled here due to the executable format being different from the host system # TODO (lat9nq): cross-compiling support + set(CAN_BUILD_NX_TZDB false) endif() -set(NX_TZDB_VERSION "250725") -set(NX_TZDB_ARCHIVE "${CPM_SOURCE_CACHE}/nx_tzdb/${NX_TZDB_VERSION}.zip") +if (CAN_BUILD_NX_TZDB AND NOT YUZU_DOWNLOAD_TIME_ZONE_DATA) + message(FATAL_ERROR "Building tzdb is currently unsupported. Check back later.") + add_subdirectory(tzdb_to_nx) + add_dependencies(nx_tzdb x80e) -set(NX_TZDB_ROMFS_DIR "${CPM_SOURCE_CACHE}/nx_tzdb/tz") + set(NX_TZDB_BASE_DIR "${NX_TZDB_DIR}") + set(NX_TZDB_TZ_DIR "${NX_TZDB_BASE_DIR}/zoneinfo") +endif() -if ((NOT CAN_BUILD_NX_TZDB OR YUZU_DOWNLOAD_TIME_ZONE_DATA) AND NOT EXISTS ${NX_TZDB_ROMFS_DIR}) - set(NX_TZDB_DOWNLOAD_URL "https://github.com/crueter/tzdb_to_nx/releases/download/${NX_TZDB_VERSION}/${NX_TZDB_VERSION}.zip") +if(NOT YUZU_TZDB_PATH STREQUAL "") + set(NX_TZDB_BASE_DIR "${YUZU_TZDB_PATH}") +elseif (MSVC AND NOT CXX_CLANG AND ENABLE_LTO) + # TODO(crueter): boot up the windows vm + set(NX_TZDB_VERSION "250725") + set(NX_TZDB_ARCHIVE "${CPM_SOURCE_CACHE}/nx_tzdb/${NX_TZDB_VERSION}.zip") + + set(NX_TZDB_BASE_DIR "${CPM_SOURCE_CACHE}/nx_tzdb/tz") + + set(NX_TZDB_DOWNLOAD_URL "https://git.crueter.xyz/misc/tzdb_to_nx/releases/download/${NX_TZDB_VERSION}/${NX_TZDB_VERSION}.zip") message(STATUS "Downloading time zone data from ${NX_TZDB_DOWNLOAD_URL}...") file(DOWNLOAD ${NX_TZDB_DOWNLOAD_URL} ${NX_TZDB_ARCHIVE} STATUS NX_TZDB_DOWNLOAD_STATUS) + list(GET NX_TZDB_DOWNLOAD_STATUS 0 NX_TZDB_DOWNLOAD_STATUS_CODE) if (NOT NX_TZDB_DOWNLOAD_STATUS_CODE EQUAL 0) message(FATAL_ERROR "Time zone data download failed (status code ${NX_TZDB_DOWNLOAD_STATUS_CODE})") @@ -47,15 +55,16 @@ if ((NOT CAN_BUILD_NX_TZDB OR YUZU_DOWNLOAD_TIME_ZONE_DATA) AND NOT EXISTS ${NX_ INPUT ${NX_TZDB_ARCHIVE} DESTINATION - ${NX_TZDB_ROMFS_DIR}) -elseif (CAN_BUILD_NX_TZDB AND NOT YUZU_DOWNLOAD_TIME_ZONE_DATA) - # TODO(crueter): this sucked to do with cpm, see if i can get it to work again - add_subdirectory(tzdb_to_nx) - add_dependencies(nx_tzdb x80e) + ${NX_TZDB_BASE_DIR}) +else() + message(STATUS "Downloading time zone data...") + AddJsonPackage(tzdb) - set(NX_TZDB_ROMFS_DIR "${NX_TZDB_DIR}") + set(NX_TZDB_BASE_DIR "${nx_tzdb_SOURCE_DIR}") endif() +set(NX_TZDB_TZ_DIR "${NX_TZDB_BASE_DIR}/zoneinfo") + target_include_directories(nx_tzdb INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/include INTERFACE ${NX_TZDB_INCLUDE_DIR}) @@ -78,25 +87,25 @@ function(CreateHeader ZONE_PATH HEADER_NAME) target_sources(nx_tzdb PRIVATE ${HEADER_PATH}) endfunction() -CreateHeader(${NX_TZDB_ROMFS_DIR} base) -CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo zoneinfo) -CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Africa africa) -CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/America america) -CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/America/Argentina america_argentina) -CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/America/Indiana america_indiana) -CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/America/Kentucky america_kentucky) -CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/America/North_Dakota america_north_dakota) -CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Antarctica antarctica) -CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Arctic arctic) -CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Asia asia) -CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Atlantic atlantic) -CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Australia australia) -CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Brazil brazil) -CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Canada canada) -CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Chile chile) -CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Etc etc) -CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Europe europe) -CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Indian indian) -CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Mexico mexico) -CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/Pacific pacific) -CreateHeader(${NX_TZDB_ROMFS_DIR}/zoneinfo/US us) +CreateHeader(${NX_TZDB_BASE_DIR} base) +CreateHeader(${NX_TZDB_TZ_DIR} zoneinfo) +CreateHeader(${NX_TZDB_TZ_DIR}/Africa africa) +CreateHeader(${NX_TZDB_TZ_DIR}/America america) +CreateHeader(${NX_TZDB_TZ_DIR}/America/Argentina america_argentina) +CreateHeader(${NX_TZDB_TZ_DIR}/America/Indiana america_indiana) +CreateHeader(${NX_TZDB_TZ_DIR}/America/Kentucky america_kentucky) +CreateHeader(${NX_TZDB_TZ_DIR}/America/North_Dakota america_north_dakota) +CreateHeader(${NX_TZDB_TZ_DIR}/Antarctica antarctica) +CreateHeader(${NX_TZDB_TZ_DIR}/Arctic arctic) +CreateHeader(${NX_TZDB_TZ_DIR}/Asia asia) +CreateHeader(${NX_TZDB_TZ_DIR}/Atlantic atlantic) +CreateHeader(${NX_TZDB_TZ_DIR}/Australia australia) +CreateHeader(${NX_TZDB_TZ_DIR}/Brazil brazil) +CreateHeader(${NX_TZDB_TZ_DIR}/Canada canada) +CreateHeader(${NX_TZDB_TZ_DIR}/Chile chile) +CreateHeader(${NX_TZDB_TZ_DIR}/Etc etc) +CreateHeader(${NX_TZDB_TZ_DIR}/Europe europe) +CreateHeader(${NX_TZDB_TZ_DIR}/Indian indian) +CreateHeader(${NX_TZDB_TZ_DIR}/Mexico mexico) +CreateHeader(${NX_TZDB_TZ_DIR}/Pacific pacific) +CreateHeader(${NX_TZDB_TZ_DIR}/US us) diff --git a/externals/renderdoc/renderdoc_app.h b/externals/renderdoc/renderdoc_app.h index 3fdc233165..c379f0ac40 100644 --- a/externals/renderdoc/renderdoc_app.h +++ b/externals/renderdoc/renderdoc_app.h @@ -7,7 +7,7 @@ /****************************************************************************** * The MIT License (MIT) * - * Copyright (c) 2019-2025 Baldur Karlsson + * Copyright (c) 2015-2026 Baldur Karlsson * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -39,14 +39,12 @@ #include #endif +// TODO: We should likely vendor this in the future and just make a patch that makes the code section be like this +// this kind of macro stupidity is beyond me, but again upstream rejects patches so... #if defined(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER) #define RENDERDOC_CC __cdecl -#elif defined(__linux__) || defined(__FreeBSD__) || defined(__sun__) -#define RENDERDOC_CC -#elif defined(__APPLE__) -#define RENDERDOC_CC #else -#error "Unknown platform" +#define RENDERDOC_CC #endif #ifdef __cplusplus @@ -74,6 +72,10 @@ extern "C" { // truncated version when only a uint64_t is available (e.g. Vulkan tags): #define RENDERDOC_ShaderDebugMagicValue_truncated 0x48656670eab25520ULL +// this is a magic value for vulkan user tags to indicate which dispatchable API objects are which +// for object annotations +#define RENDERDOC_APIObjectAnnotationHelper 0xfbb3b337b664d0adULL + ////////////////////////////////////////////////////////////////////////////////////////////////// // RenderDoc capture options // @@ -566,6 +568,128 @@ typedef uint32_t(RENDERDOC_CC *pRENDERDOC_DiscardFrameCapture)(RENDERDOC_DeviceP // multiple times only the last title will be used. typedef void(RENDERDOC_CC *pRENDERDOC_SetCaptureTitle)(const char *title); +// Annotations API: +// +// These functions allow you to specify annotations either on a per-command level, or a per-object +// level. +// +// Basic types of annotations are supported, as well as vector versions and references to API objects. +// +// The annotations are stored as keys, with the key being a dot-separated path allowing arbitrary +// nesting and user organisation. The keys are sorted in human order so `foo.2.bar` will be displayed +// before `foo.10.bar` to allow creation of arrays if desired. +// +// Deleting an annotation can be done by assigning an empty value to it. + +// the type of an annotation value, or Empty to delete an annotation +typedef enum RENDERDOC_AnnotationType +{ + eRENDERDOC_Empty, + eRENDERDOC_Bool, + eRENDERDOC_Int32, + eRENDERDOC_UInt32, + eRENDERDOC_Int64, + eRENDERDOC_UInt64, + eRENDERDOC_Float, + eRENDERDOC_Double, + eRENDERDOC_String, + eRENDERDOC_APIObject, + eRENDERDOC_AnnotationMax = 0x7FFFFFFF, +} RENDERDOC_AnnotationType; + +// a union with vector annotation value data +typedef union RENDERDOC_AnnotationVectorValue +{ + bool boolean[4]; + int32_t int32[4]; + int64_t int64[4]; + uint32_t uint32[4]; + uint64_t uint64[4]; + float float32[4]; + double float64[4]; +} RENDERDOC_AnnotationVectorValue; + +// a union with scalar annotation value data +typedef union RENDERDOC_AnnotationValue +{ + bool boolean; + int32_t int32; + int64_t int64; + uint32_t uint32; + uint64_t uint64; + float float32; + double float64; + + RENDERDOC_AnnotationVectorValue vector; + + const char *string; + void *apiObject; +} RENDERDOC_AnnotationValue; + +// a struct for specifying a GL object, as we don't have pointers we can use so instead we specify a +// pointer to this struct giving both the type and the name +typedef struct RENDERDOC_GLResourceReference +{ + // this is the same GLenum identifier as passed to glObjectLabel + uint32_t identifier; + uint32_t name; +} GLResourceReference; + +// simple C++ helpers to avoid the need for a temporary objects for value passing and GL object specification +#ifdef __cplusplus +struct RDGLObjectHelper +{ + RENDERDOC_GLResourceReference gl; + + RDGLObjectHelper(uint32_t identifier, uint32_t name) + { + gl.identifier = identifier; + gl.name = name; + } + + operator RENDERDOC_GLResourceReference *() { return ≷ } +}; + +struct RDAnnotationHelper +{ + RENDERDOC_AnnotationValue val; + + RDAnnotationHelper(bool b) { val.boolean = b; } + RDAnnotationHelper(int32_t i) { val.int32 = i; } + RDAnnotationHelper(int64_t i) { val.int64 = i; } + RDAnnotationHelper(uint32_t i) { val.uint32 = i; } + RDAnnotationHelper(uint64_t i) { val.uint64 = i; } + RDAnnotationHelper(float f) { val.float32 = f; } + RDAnnotationHelper(double d) { val.float64 = d; } + RDAnnotationHelper(const char *s) { val.string = s; } + + operator RENDERDOC_AnnotationValue *() { return &val; } +}; +#endif + +// The device is specified in the same way as other API calls that take a RENDERDOC_DevicePointer +// to specify the device. +// +// The object or queue/commandbuffer will depend on the graphics API in question. +// +// Return value: +// 0 - The annotation was applied successfully. +// 1 - The device is unknown/invalid +// 2 - The device is valid but the annotation is not supported for API-specific reasons, such as an +// unrecognised or invalid object or queue/commandbuffer +// 3 - The call is ill-formed or invalid e.g. empty is specified with a value pointer, or non-empty +// is specified with a NULL value pointer +typedef uint32_t(RENDERDOC_CC *pRENDERDOC_SetObjectAnnotation)(RENDERDOC_DevicePointer device, + void *object, const char *key, + RENDERDOC_AnnotationType valueType, + uint32_t valueVectorWidth, + const RENDERDOC_AnnotationValue *value); + +typedef uint32_t(RENDERDOC_CC *pRENDERDOC_SetCommandAnnotation)( + RENDERDOC_DevicePointer device, void *queueOrCommandBuffer, const char *key, + RENDERDOC_AnnotationType valueType, uint32_t valueVectorWidth, + const RENDERDOC_AnnotationValue *value); + ////////////////////////////////////////////////////////////////////////////////////////////////// // RenderDoc API versions // @@ -594,6 +718,7 @@ typedef enum RENDERDOC_Version eRENDERDOC_API_Version_1_4_2 = 10402, // RENDERDOC_API_1_4_2 = 1 04 02 eRENDERDOC_API_Version_1_5_0 = 10500, // RENDERDOC_API_1_5_0 = 1 05 00 eRENDERDOC_API_Version_1_6_0 = 10600, // RENDERDOC_API_1_6_0 = 1 06 00 + eRENDERDOC_API_Version_1_7_0 = 10700, // RENDERDOC_API_1_7_0 = 1 07 00 } RENDERDOC_Version; // API version changelog: @@ -624,8 +749,10 @@ typedef enum RENDERDOC_Version // 1.5.0 - Added feature: ShowReplayUI() to request that the replay UI show itself if connected // 1.6.0 - Added feature: SetCaptureTitle() which can be used to set a title for a // capture made with StartFrameCapture() or EndFrameCapture() +// 1.7.0 - Added feature: SetObjectAnnotation() / SetCommandAnnotation() for adding rich +// annotations to objects and command streams -typedef struct RENDERDOC_API_1_6_0 +typedef struct RENDERDOC_API_1_7_0 { pRENDERDOC_GetAPIVersion GetAPIVersion; @@ -703,20 +830,25 @@ typedef struct RENDERDOC_API_1_6_0 // new function in 1.6.0 pRENDERDOC_SetCaptureTitle SetCaptureTitle; -} RENDERDOC_API_1_6_0; -typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_0_0; -typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_0_1; -typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_0_2; -typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_1_0; -typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_1_1; -typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_1_2; -typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_2_0; -typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_3_0; -typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_4_0; -typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_4_1; -typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_4_2; -typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_5_0; + // new functions in 1.7.0 + pRENDERDOC_SetObjectAnnotation SetObjectAnnotation; + pRENDERDOC_SetCommandAnnotation SetCommandAnnotation; +} RENDERDOC_API_1_7_0; + +typedef RENDERDOC_API_1_7_0 RENDERDOC_API_1_0_0; +typedef RENDERDOC_API_1_7_0 RENDERDOC_API_1_0_1; +typedef RENDERDOC_API_1_7_0 RENDERDOC_API_1_0_2; +typedef RENDERDOC_API_1_7_0 RENDERDOC_API_1_1_0; +typedef RENDERDOC_API_1_7_0 RENDERDOC_API_1_1_1; +typedef RENDERDOC_API_1_7_0 RENDERDOC_API_1_1_2; +typedef RENDERDOC_API_1_7_0 RENDERDOC_API_1_2_0; +typedef RENDERDOC_API_1_7_0 RENDERDOC_API_1_3_0; +typedef RENDERDOC_API_1_7_0 RENDERDOC_API_1_4_0; +typedef RENDERDOC_API_1_7_0 RENDERDOC_API_1_4_1; +typedef RENDERDOC_API_1_7_0 RENDERDOC_API_1_4_2; +typedef RENDERDOC_API_1_7_0 RENDERDOC_API_1_5_0; +typedef RENDERDOC_API_1_7_0 RENDERDOC_API_1_6_0; ////////////////////////////////////////////////////////////////////////////////////////////////// // RenderDoc API entry point diff --git a/externals/sse2neon/sse2neon.h b/externals/sse2neon/sse2neon.h deleted file mode 100755 index 66b93c1c74..0000000000 --- a/externals/sse2neon/sse2neon.h +++ /dev/null @@ -1,9285 +0,0 @@ -// SPDX-FileCopyrightText: Copyright 2015-2024 SSE2NEON Contributors -// SPDX-License-Identifier: MIT - -#ifndef SSE2NEON_H -#define SSE2NEON_H - -/* - * sse2neon is freely redistributable under the MIT License. - * - * Copyright (c) 2015-2024 SSE2NEON Contributors. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -// This header file provides a simple API translation layer -// between SSE intrinsics to their corresponding Arm/Aarch64 NEON versions -// -// Contributors to this work are: -// John W. Ratcliff -// Brandon Rowlett -// Ken Fast -// Eric van Beurden -// Alexander Potylitsin -// Hasindu Gamaarachchi -// Jim Huang -// Mark Cheng -// Malcolm James MacLeod -// Devin Hussey (easyaspi314) -// Sebastian Pop -// Developer Ecosystem Engineering -// Danila Kutenin -// François Turban (JishinMaster) -// Pei-Hsuan Hung -// Yang-Hao Yuan -// Syoyo Fujita -// Brecht Van Lommel -// Jonathan Hue -// Cuda Chen -// Aymen Qader -// Anthony Roberts - -/* Tunable configurations */ - -/* Enable precise implementation of math operations - * This would slow down the computation a bit, but gives consistent result with - * x86 SSE. (e.g. would solve a hole or NaN pixel in the rendering result) - */ -/* _mm_min|max_ps|ss|pd|sd */ -#ifndef SSE2NEON_PRECISE_MINMAX -#define SSE2NEON_PRECISE_MINMAX (0) -#endif -/* _mm_rcp_ps and _mm_div_ps */ -#ifndef SSE2NEON_PRECISE_DIV -#define SSE2NEON_PRECISE_DIV (0) -#endif -/* _mm_sqrt_ps and _mm_rsqrt_ps */ -#ifndef SSE2NEON_PRECISE_SQRT -#define SSE2NEON_PRECISE_SQRT (0) -#endif -/* _mm_dp_pd */ -#ifndef SSE2NEON_PRECISE_DP -#define SSE2NEON_PRECISE_DP (0) -#endif - -/* Enable inclusion of windows.h on MSVC platforms - * This makes _mm_clflush functional on windows, as there is no builtin. - */ -#ifndef SSE2NEON_INCLUDE_WINDOWS_H -#define SSE2NEON_INCLUDE_WINDOWS_H (0) -#endif - -/* compiler specific definitions */ -#if defined(__GNUC__) || defined(__clang__) -#pragma push_macro("FORCE_INLINE") -#pragma push_macro("ALIGN_STRUCT") -#define FORCE_INLINE static inline __attribute__((always_inline)) -#define ALIGN_STRUCT(x) __attribute__((aligned(x))) -#define _sse2neon_likely(x) __builtin_expect(!!(x), 1) -#define _sse2neon_unlikely(x) __builtin_expect(!!(x), 0) -#elif defined(_MSC_VER) -#if _MSVC_TRADITIONAL -#error Using the traditional MSVC preprocessor is not supported! Use /Zc:preprocessor instead. -#endif -#ifndef FORCE_INLINE -#define FORCE_INLINE static inline -#endif -#ifndef ALIGN_STRUCT -#define ALIGN_STRUCT(x) __declspec(align(x)) -#endif -#define _sse2neon_likely(x) (x) -#define _sse2neon_unlikely(x) (x) -#else -#pragma message("Macro name collisions may happen with unsupported compilers.") -#endif - -#if !defined(__clang__) && defined(__GNUC__) && __GNUC__ < 10 -#warning "GCC versions earlier than 10 are not supported." -#endif - -/* C language does not allow initializing a variable with a function call. */ -#ifdef __cplusplus -#define _sse2neon_const static const -#else -#define _sse2neon_const const -#endif - -#include -#include - -#if defined(_WIN32) -/* Definitions for _mm_{malloc,free} are provided by - * from both MinGW-w64 and MSVC. - */ -#define SSE2NEON_ALLOC_DEFINED -#endif - -/* If using MSVC */ -#ifdef _MSC_VER -#include -#if SSE2NEON_INCLUDE_WINDOWS_H -#include -#include -#endif - -#if !defined(__cplusplus) -#error SSE2NEON only supports C++ compilation with this compiler -#endif - -#ifdef SSE2NEON_ALLOC_DEFINED -#include -#endif - -#if (defined(_M_AMD64) || defined(__x86_64__)) || \ - (defined(_M_ARM64) || defined(__arm64__)) -#define SSE2NEON_HAS_BITSCAN64 -#endif -#endif - -#if defined(__GNUC__) || defined(__clang__) -#define _sse2neon_define0(type, s, body) \ - __extension__({ \ - type _a = (s); \ - body \ - }) -#define _sse2neon_define1(type, s, body) \ - __extension__({ \ - type _a = (s); \ - body \ - }) -#define _sse2neon_define2(type, a, b, body) \ - __extension__({ \ - type _a = (a), _b = (b); \ - body \ - }) -#define _sse2neon_return(ret) (ret) -#else -#define _sse2neon_define0(type, a, body) [=](type _a) { body }(a) -#define _sse2neon_define1(type, a, body) [](type _a) { body }(a) -#define _sse2neon_define2(type, a, b, body) \ - [](type _a, type _b) { body }((a), (b)) -#define _sse2neon_return(ret) return ret -#endif - -#define _sse2neon_init(...) \ - { \ - __VA_ARGS__ \ - } - -/* Compiler barrier */ -#if defined(_MSC_VER) -#define SSE2NEON_BARRIER() _ReadWriteBarrier() -#else -#define SSE2NEON_BARRIER() \ - do { \ - __asm__ __volatile__("" ::: "memory"); \ - (void) 0; \ - } while (0) -#endif - -/* Memory barriers - * __atomic_thread_fence does not include a compiler barrier; instead, - * the barrier is part of __atomic_load/__atomic_store's "volatile-like" - * semantics. - */ -#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) -#include -#endif - -FORCE_INLINE void _sse2neon_smp_mb(void) -{ - SSE2NEON_BARRIER(); -#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) && \ - !defined(__STDC_NO_ATOMICS__) - atomic_thread_fence(memory_order_seq_cst); -#elif defined(__GNUC__) || defined(__clang__) - __atomic_thread_fence(__ATOMIC_SEQ_CST); -#else /* MSVC */ - __dmb(_ARM64_BARRIER_ISH); -#endif -} - -/* Architecture-specific build options */ -/* FIXME: #pragma GCC push_options is only available on GCC */ -#if defined(__GNUC__) -#if defined(__arm__) && __ARM_ARCH == 7 -/* According to ARM C Language Extensions Architecture specification, - * __ARM_NEON is defined to a value indicating the Advanced SIMD (NEON) - * architecture supported. - */ -#if !defined(__ARM_NEON) || !defined(__ARM_NEON__) -#error "You must enable NEON instructions (e.g. -mfpu=neon) to use SSE2NEON." -#endif -#if !defined(__clang__) -#pragma GCC push_options -#pragma GCC target("fpu=neon") -#endif -#elif defined(__aarch64__) || defined(_M_ARM64) -#if !defined(__clang__) && !defined(_MSC_VER) -#pragma GCC push_options -#pragma GCC target("+simd") -#endif -#elif __ARM_ARCH == 8 -#if !defined(__ARM_NEON) || !defined(__ARM_NEON__) -#error \ - "You must enable NEON instructions (e.g. -mfpu=neon-fp-armv8) to use SSE2NEON." -#endif -#if !defined(__clang__) && !defined(_MSC_VER) -#pragma GCC push_options -#endif -#else -#error "Unsupported target. Must be either ARMv7-A+NEON or ARMv8-A." -#endif -#endif - -#include -#if (!defined(__aarch64__) && !defined(_M_ARM64)) && (__ARM_ARCH == 8) -#if defined __has_include && __has_include() -#include -#endif -#endif - -/* Apple Silicon cache lines are double of what is commonly used by Intel, AMD - * and other Arm microarchitectures use. - * From sysctl -a on Apple M1: - * hw.cachelinesize: 128 - */ -#if defined(__APPLE__) && (defined(__aarch64__) || defined(__arm64__)) -#define SSE2NEON_CACHELINE_SIZE 128 -#else -#define SSE2NEON_CACHELINE_SIZE 64 -#endif - -/* Rounding functions require either Aarch64 instructions or libm fallback */ -#if !defined(__aarch64__) && !defined(_M_ARM64) -#include -#endif - -/* On ARMv7, some registers, such as PMUSERENR and PMCCNTR, are read-only - * or even not accessible in user mode. - * To write or access to these registers in user mode, - * we have to perform syscall instead. - */ -#if (!defined(__aarch64__) && !defined(_M_ARM64)) -#include -#endif - -/* "__has_builtin" can be used to query support for built-in functions - * provided by gcc/clang and other compilers that support it. - */ -#ifndef __has_builtin /* GCC prior to 10 or non-clang compilers */ -/* Compatibility with gcc <= 9 */ -#if defined(__GNUC__) && (__GNUC__ <= 9) -#define __has_builtin(x) HAS##x -#define HAS__builtin_popcount 1 -#define HAS__builtin_popcountll 1 - -// __builtin_shuffle introduced in GCC 4.7.0 -#if (__GNUC__ >= 5) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) -#define HAS__builtin_shuffle 1 -#else -#define HAS__builtin_shuffle 0 -#endif - -#define HAS__builtin_shufflevector 0 -#define HAS__builtin_nontemporal_store 0 -#else -#define __has_builtin(x) 0 -#endif -#endif - -/** - * MACRO for shuffle parameter for _mm_shuffle_ps(). - * Argument fp3 is a digit[0123] that represents the fp from argument "b" - * of mm_shuffle_ps that will be placed in fp3 of result. fp2 is the same - * for fp2 in result. fp1 is a digit[0123] that represents the fp from - * argument "a" of mm_shuffle_ps that will be places in fp1 of result. - * fp0 is the same for fp0 of result. - */ -#define _MM_SHUFFLE(fp3, fp2, fp1, fp0) \ - (((fp3) << 6) | ((fp2) << 4) | ((fp1) << 2) | ((fp0))) - -#if __has_builtin(__builtin_shufflevector) -#define _sse2neon_shuffle(type, a, b, ...) \ - __builtin_shufflevector(a, b, __VA_ARGS__) -#elif __has_builtin(__builtin_shuffle) -#define _sse2neon_shuffle(type, a, b, ...) \ - __extension__({ \ - type tmp = {__VA_ARGS__}; \ - __builtin_shuffle(a, b, tmp); \ - }) -#endif - -#ifdef _sse2neon_shuffle -#define vshuffle_s16(a, b, ...) _sse2neon_shuffle(int16x4_t, a, b, __VA_ARGS__) -#define vshuffleq_s16(a, b, ...) _sse2neon_shuffle(int16x8_t, a, b, __VA_ARGS__) -#define vshuffle_s32(a, b, ...) _sse2neon_shuffle(int32x2_t, a, b, __VA_ARGS__) -#define vshuffleq_s32(a, b, ...) _sse2neon_shuffle(int32x4_t, a, b, __VA_ARGS__) -#define vshuffle_s64(a, b, ...) _sse2neon_shuffle(int64x1_t, a, b, __VA_ARGS__) -#define vshuffleq_s64(a, b, ...) _sse2neon_shuffle(int64x2_t, a, b, __VA_ARGS__) -#endif - -/* Rounding mode macros. */ -#define _MM_FROUND_TO_NEAREST_INT 0x00 -#define _MM_FROUND_TO_NEG_INF 0x01 -#define _MM_FROUND_TO_POS_INF 0x02 -#define _MM_FROUND_TO_ZERO 0x03 -#define _MM_FROUND_CUR_DIRECTION 0x04 -#define _MM_FROUND_NO_EXC 0x08 -#define _MM_FROUND_RAISE_EXC 0x00 -#define _MM_FROUND_NINT (_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_RAISE_EXC) -#define _MM_FROUND_FLOOR (_MM_FROUND_TO_NEG_INF | _MM_FROUND_RAISE_EXC) -#define _MM_FROUND_CEIL (_MM_FROUND_TO_POS_INF | _MM_FROUND_RAISE_EXC) -#define _MM_FROUND_TRUNC (_MM_FROUND_TO_ZERO | _MM_FROUND_RAISE_EXC) -#define _MM_FROUND_RINT (_MM_FROUND_CUR_DIRECTION | _MM_FROUND_RAISE_EXC) -#define _MM_FROUND_NEARBYINT (_MM_FROUND_CUR_DIRECTION | _MM_FROUND_NO_EXC) -#define _MM_ROUND_NEAREST 0x0000 -#define _MM_ROUND_DOWN 0x2000 -#define _MM_ROUND_UP 0x4000 -#define _MM_ROUND_TOWARD_ZERO 0x6000 -/* Flush zero mode macros. */ -#define _MM_FLUSH_ZERO_MASK 0x8000 -#define _MM_FLUSH_ZERO_ON 0x8000 -#define _MM_FLUSH_ZERO_OFF 0x0000 -/* Denormals are zeros mode macros. */ -#define _MM_DENORMALS_ZERO_MASK 0x0040 -#define _MM_DENORMALS_ZERO_ON 0x0040 -#define _MM_DENORMALS_ZERO_OFF 0x0000 - -/* indicate immediate constant argument in a given range */ -#define __constrange(a, b) const - -/* A few intrinsics accept traditional data types like ints or floats, but - * most operate on data types that are specific to SSE. - * If a vector type ends in d, it contains doubles, and if it does not have - * a suffix, it contains floats. An integer vector type can contain any type - * of integer, from chars to shorts to unsigned long longs. - */ -typedef int64x1_t __m64; -typedef float32x4_t __m128; /* 128-bit vector containing 4 floats */ -// On ARM 32-bit architecture, the float64x2_t is not supported. -// The data type __m128d should be represented in a different way for related -// intrinsic conversion. -#if defined(__aarch64__) || defined(_M_ARM64) -typedef float64x2_t __m128d; /* 128-bit vector containing 2 doubles */ -#else -typedef float32x4_t __m128d; -#endif -typedef int64x2_t __m128i; /* 128-bit vector containing integers */ - -// __int64 is defined in the Intrinsics Guide which maps to different datatype -// in different data model -#if !(defined(_WIN32) || defined(_WIN64) || defined(__int64)) -#if (defined(__x86_64__) || defined(__i386__)) -#define __int64 long long -#else -#define __int64 int64_t -#endif -#endif - -/* type-safe casting between types */ - -#define vreinterpretq_m128_f16(x) vreinterpretq_f32_f16(x) -#define vreinterpretq_m128_f32(x) (x) -#define vreinterpretq_m128_f64(x) vreinterpretq_f32_f64(x) - -#define vreinterpretq_m128_u8(x) vreinterpretq_f32_u8(x) -#define vreinterpretq_m128_u16(x) vreinterpretq_f32_u16(x) -#define vreinterpretq_m128_u32(x) vreinterpretq_f32_u32(x) -#define vreinterpretq_m128_u64(x) vreinterpretq_f32_u64(x) - -#define vreinterpretq_m128_s8(x) vreinterpretq_f32_s8(x) -#define vreinterpretq_m128_s16(x) vreinterpretq_f32_s16(x) -#define vreinterpretq_m128_s32(x) vreinterpretq_f32_s32(x) -#define vreinterpretq_m128_s64(x) vreinterpretq_f32_s64(x) - -#define vreinterpretq_f16_m128(x) vreinterpretq_f16_f32(x) -#define vreinterpretq_f32_m128(x) (x) -#define vreinterpretq_f64_m128(x) vreinterpretq_f64_f32(x) - -#define vreinterpretq_u8_m128(x) vreinterpretq_u8_f32(x) -#define vreinterpretq_u16_m128(x) vreinterpretq_u16_f32(x) -#define vreinterpretq_u32_m128(x) vreinterpretq_u32_f32(x) -#define vreinterpretq_u64_m128(x) vreinterpretq_u64_f32(x) - -#define vreinterpretq_s8_m128(x) vreinterpretq_s8_f32(x) -#define vreinterpretq_s16_m128(x) vreinterpretq_s16_f32(x) -#define vreinterpretq_s32_m128(x) vreinterpretq_s32_f32(x) -#define vreinterpretq_s64_m128(x) vreinterpretq_s64_f32(x) - -#define vreinterpretq_m128i_s8(x) vreinterpretq_s64_s8(x) -#define vreinterpretq_m128i_s16(x) vreinterpretq_s64_s16(x) -#define vreinterpretq_m128i_s32(x) vreinterpretq_s64_s32(x) -#define vreinterpretq_m128i_s64(x) (x) - -#define vreinterpretq_m128i_u8(x) vreinterpretq_s64_u8(x) -#define vreinterpretq_m128i_u16(x) vreinterpretq_s64_u16(x) -#define vreinterpretq_m128i_u32(x) vreinterpretq_s64_u32(x) -#define vreinterpretq_m128i_u64(x) vreinterpretq_s64_u64(x) - -#define vreinterpretq_f32_m128i(x) vreinterpretq_f32_s64(x) -#define vreinterpretq_f64_m128i(x) vreinterpretq_f64_s64(x) - -#define vreinterpretq_s8_m128i(x) vreinterpretq_s8_s64(x) -#define vreinterpretq_s16_m128i(x) vreinterpretq_s16_s64(x) -#define vreinterpretq_s32_m128i(x) vreinterpretq_s32_s64(x) -#define vreinterpretq_s64_m128i(x) (x) - -#define vreinterpretq_u8_m128i(x) vreinterpretq_u8_s64(x) -#define vreinterpretq_u16_m128i(x) vreinterpretq_u16_s64(x) -#define vreinterpretq_u32_m128i(x) vreinterpretq_u32_s64(x) -#define vreinterpretq_u64_m128i(x) vreinterpretq_u64_s64(x) - -#define vreinterpret_m64_s8(x) vreinterpret_s64_s8(x) -#define vreinterpret_m64_s16(x) vreinterpret_s64_s16(x) -#define vreinterpret_m64_s32(x) vreinterpret_s64_s32(x) -#define vreinterpret_m64_s64(x) (x) - -#define vreinterpret_m64_u8(x) vreinterpret_s64_u8(x) -#define vreinterpret_m64_u16(x) vreinterpret_s64_u16(x) -#define vreinterpret_m64_u32(x) vreinterpret_s64_u32(x) -#define vreinterpret_m64_u64(x) vreinterpret_s64_u64(x) - -#define vreinterpret_m64_f16(x) vreinterpret_s64_f16(x) -#define vreinterpret_m64_f32(x) vreinterpret_s64_f32(x) -#define vreinterpret_m64_f64(x) vreinterpret_s64_f64(x) - -#define vreinterpret_u8_m64(x) vreinterpret_u8_s64(x) -#define vreinterpret_u16_m64(x) vreinterpret_u16_s64(x) -#define vreinterpret_u32_m64(x) vreinterpret_u32_s64(x) -#define vreinterpret_u64_m64(x) vreinterpret_u64_s64(x) - -#define vreinterpret_s8_m64(x) vreinterpret_s8_s64(x) -#define vreinterpret_s16_m64(x) vreinterpret_s16_s64(x) -#define vreinterpret_s32_m64(x) vreinterpret_s32_s64(x) -#define vreinterpret_s64_m64(x) (x) - -#define vreinterpret_f32_m64(x) vreinterpret_f32_s64(x) - -#if defined(__aarch64__) || defined(_M_ARM64) -#define vreinterpretq_m128d_s32(x) vreinterpretq_f64_s32(x) -#define vreinterpretq_m128d_s64(x) vreinterpretq_f64_s64(x) - -#define vreinterpretq_m128d_u64(x) vreinterpretq_f64_u64(x) - -#define vreinterpretq_m128d_f32(x) vreinterpretq_f64_f32(x) -#define vreinterpretq_m128d_f64(x) (x) - -#define vreinterpretq_s64_m128d(x) vreinterpretq_s64_f64(x) - -#define vreinterpretq_u32_m128d(x) vreinterpretq_u32_f64(x) -#define vreinterpretq_u64_m128d(x) vreinterpretq_u64_f64(x) - -#define vreinterpretq_f64_m128d(x) (x) -#define vreinterpretq_f32_m128d(x) vreinterpretq_f32_f64(x) -#else -#define vreinterpretq_m128d_s32(x) vreinterpretq_f32_s32(x) -#define vreinterpretq_m128d_s64(x) vreinterpretq_f32_s64(x) - -#define vreinterpretq_m128d_u32(x) vreinterpretq_f32_u32(x) -#define vreinterpretq_m128d_u64(x) vreinterpretq_f32_u64(x) - -#define vreinterpretq_m128d_f32(x) (x) - -#define vreinterpretq_s64_m128d(x) vreinterpretq_s64_f32(x) - -#define vreinterpretq_u32_m128d(x) vreinterpretq_u32_f32(x) -#define vreinterpretq_u64_m128d(x) vreinterpretq_u64_f32(x) - -#define vreinterpretq_f32_m128d(x) (x) -#endif - -// A struct is defined in this header file called 'SIMDVec' which can be used -// by applications which attempt to access the contents of an __m128 struct -// directly. It is important to note that accessing the __m128 struct directly -// is bad coding practice by Microsoft: @see: -// https://learn.microsoft.com/en-us/cpp/cpp/m128 -// -// However, some legacy source code may try to access the contents of an __m128 -// struct directly so the developer can use the SIMDVec as an alias for it. Any -// casting must be done manually by the developer, as you cannot cast or -// otherwise alias the base NEON data type for intrinsic operations. -// -// union intended to allow direct access to an __m128 variable using the names -// that the MSVC compiler provides. This union should really only be used when -// trying to access the members of the vector as integer values. GCC/clang -// allow native access to the float members through a simple array access -// operator (in C since 4.6, in C++ since 4.8). -// -// Ideally direct accesses to SIMD vectors should not be used since it can cause -// a performance hit. If it really is needed however, the original __m128 -// variable can be aliased with a pointer to this union and used to access -// individual components. The use of this union should be hidden behind a macro -// that is used throughout the codebase to access the members instead of always -// declaring this type of variable. -typedef union ALIGN_STRUCT(16) SIMDVec { - float m128_f32[4]; // as floats - DON'T USE. Added for convenience. - int8_t m128_i8[16]; // as signed 8-bit integers. - int16_t m128_i16[8]; // as signed 16-bit integers. - int32_t m128_i32[4]; // as signed 32-bit integers. - int64_t m128_i64[2]; // as signed 64-bit integers. - uint8_t m128_u8[16]; // as unsigned 8-bit integers. - uint16_t m128_u16[8]; // as unsigned 16-bit integers. - uint32_t m128_u32[4]; // as unsigned 32-bit integers. - uint64_t m128_u64[2]; // as unsigned 64-bit integers. -} SIMDVec; - -// casting using SIMDVec -#define vreinterpretq_nth_u64_m128i(x, n) (((SIMDVec *) &x)->m128_u64[n]) -#define vreinterpretq_nth_u32_m128i(x, n) (((SIMDVec *) &x)->m128_u32[n]) -#define vreinterpretq_nth_u8_m128i(x, n) (((SIMDVec *) &x)->m128_u8[n]) - -/* SSE macros */ -#define _MM_GET_FLUSH_ZERO_MODE _sse2neon_mm_get_flush_zero_mode -#define _MM_SET_FLUSH_ZERO_MODE _sse2neon_mm_set_flush_zero_mode -#define _MM_GET_DENORMALS_ZERO_MODE _sse2neon_mm_get_denormals_zero_mode -#define _MM_SET_DENORMALS_ZERO_MODE _sse2neon_mm_set_denormals_zero_mode - -// Function declaration -// SSE -FORCE_INLINE unsigned int _MM_GET_ROUNDING_MODE(void); -FORCE_INLINE __m128 _mm_move_ss(__m128, __m128); -FORCE_INLINE __m128 _mm_or_ps(__m128, __m128); -FORCE_INLINE __m128 _mm_set_ps1(float); -FORCE_INLINE __m128 _mm_setzero_ps(void); -// SSE2 -FORCE_INLINE __m128i _mm_and_si128(__m128i, __m128i); -FORCE_INLINE __m128i _mm_castps_si128(__m128); -FORCE_INLINE __m128i _mm_cmpeq_epi32(__m128i, __m128i); -FORCE_INLINE __m128i _mm_cvtps_epi32(__m128); -FORCE_INLINE __m128d _mm_move_sd(__m128d, __m128d); -FORCE_INLINE __m128i _mm_or_si128(__m128i, __m128i); -FORCE_INLINE __m128i _mm_set_epi32(int, int, int, int); -FORCE_INLINE __m128i _mm_set_epi64x(int64_t, int64_t); -FORCE_INLINE __m128d _mm_set_pd(double, double); -FORCE_INLINE __m128i _mm_set1_epi32(int); -FORCE_INLINE __m128i _mm_setzero_si128(void); -// SSE4.1 -FORCE_INLINE __m128d _mm_ceil_pd(__m128d); -FORCE_INLINE __m128 _mm_ceil_ps(__m128); -FORCE_INLINE __m128d _mm_floor_pd(__m128d); -FORCE_INLINE __m128 _mm_floor_ps(__m128); -FORCE_INLINE __m128d _mm_round_pd(__m128d, int); -FORCE_INLINE __m128 _mm_round_ps(__m128, int); -// SSE4.2 -FORCE_INLINE uint32_t _mm_crc32_u8(uint32_t, uint8_t); - -/* Backwards compatibility for compilers with lack of specific type support */ - -// Older gcc does not define vld1q_u8_x4 type -#if defined(__GNUC__) && !defined(__clang__) && \ - ((__GNUC__ <= 13 && defined(__arm__)) || \ - (__GNUC__ == 10 && __GNUC_MINOR__ < 3 && defined(__aarch64__)) || \ - (__GNUC__ <= 9 && defined(__aarch64__))) -FORCE_INLINE uint8x16x4_t _sse2neon_vld1q_u8_x4(const uint8_t *p) -{ - uint8x16x4_t ret; - ret.val[0] = vld1q_u8(p + 0); - ret.val[1] = vld1q_u8(p + 16); - ret.val[2] = vld1q_u8(p + 32); - ret.val[3] = vld1q_u8(p + 48); - return ret; -} -#else -// Wraps vld1q_u8_x4 -FORCE_INLINE uint8x16x4_t _sse2neon_vld1q_u8_x4(const uint8_t *p) -{ - return vld1q_u8_x4(p); -} -#endif - -#if !defined(__aarch64__) && !defined(_M_ARM64) -/* emulate vaddv u8 variant */ -FORCE_INLINE uint8_t _sse2neon_vaddv_u8(uint8x8_t v8) -{ - const uint64x1_t v1 = vpaddl_u32(vpaddl_u16(vpaddl_u8(v8))); - return vget_lane_u8(vreinterpret_u8_u64(v1), 0); -} -#else -// Wraps vaddv_u8 -FORCE_INLINE uint8_t _sse2neon_vaddv_u8(uint8x8_t v8) -{ - return vaddv_u8(v8); -} -#endif - -#if !defined(__aarch64__) && !defined(_M_ARM64) -/* emulate vaddvq u8 variant */ -FORCE_INLINE uint8_t _sse2neon_vaddvq_u8(uint8x16_t a) -{ - uint8x8_t tmp = vpadd_u8(vget_low_u8(a), vget_high_u8(a)); - uint8_t res = 0; - for (int i = 0; i < 8; ++i) - res += tmp[i]; - return res; -} -#else -// Wraps vaddvq_u8 -FORCE_INLINE uint8_t _sse2neon_vaddvq_u8(uint8x16_t a) -{ - return vaddvq_u8(a); -} -#endif - -#if !defined(__aarch64__) && !defined(_M_ARM64) -/* emulate vaddvq u16 variant */ -FORCE_INLINE uint16_t _sse2neon_vaddvq_u16(uint16x8_t a) -{ - uint32x4_t m = vpaddlq_u16(a); - uint64x2_t n = vpaddlq_u32(m); - uint64x1_t o = vget_low_u64(n) + vget_high_u64(n); - - return vget_lane_u32((uint32x2_t) o, 0); -} -#else -// Wraps vaddvq_u16 -FORCE_INLINE uint16_t _sse2neon_vaddvq_u16(uint16x8_t a) -{ - return vaddvq_u16(a); -} -#endif - -/* Function Naming Conventions - * The naming convention of SSE intrinsics is straightforward. A generic SSE - * intrinsic function is given as follows: - * _mm__ - * - * The parts of this format are given as follows: - * 1. describes the operation performed by the intrinsic - * 2. identifies the data type of the function's primary arguments - * - * This last part, , is a little complicated. It identifies the - * content of the input values, and can be set to any of the following values: - * + ps - vectors contain floats (ps stands for packed single-precision) - * + pd - vectors contain doubles (pd stands for packed double-precision) - * + epi8/epi16/epi32/epi64 - vectors contain 8-bit/16-bit/32-bit/64-bit - * signed integers - * + epu8/epu16/epu32/epu64 - vectors contain 8-bit/16-bit/32-bit/64-bit - * unsigned integers - * + si128 - unspecified 128-bit vector or 256-bit vector - * + m128/m128i/m128d - identifies input vector types when they are different - * than the type of the returned vector - * - * For example, _mm_setzero_ps. The _mm implies that the function returns - * a 128-bit vector. The _ps at the end implies that the argument vectors - * contain floats. - * - * A complete example: Byte Shuffle - pshufb (_mm_shuffle_epi8) - * // Set packed 16-bit integers. 128 bits, 8 short, per 16 bits - * __m128i v_in = _mm_setr_epi16(1, 2, 3, 4, 5, 6, 7, 8); - * // Set packed 8-bit integers - * // 128 bits, 16 chars, per 8 bits - * __m128i v_perm = _mm_setr_epi8(1, 0, 2, 3, 8, 9, 10, 11, - * 4, 5, 12, 13, 6, 7, 14, 15); - * // Shuffle packed 8-bit integers - * __m128i v_out = _mm_shuffle_epi8(v_in, v_perm); // pshufb - */ - -/* Constants for use with _mm_prefetch. */ -enum _mm_hint { - _MM_HINT_NTA = 0, /* load data to L1 and L2 cache, mark it as NTA */ - _MM_HINT_T0 = 1, /* load data to L1 and L2 cache */ - _MM_HINT_T1 = 2, /* load data to L2 cache only */ - _MM_HINT_T2 = 3, /* load data to L2 cache only, mark it as NTA */ -}; - -// The bit field mapping to the FPCR(floating-point control register) -typedef struct { - uint16_t res0; - uint8_t res1 : 6; - uint8_t bit22 : 1; - uint8_t bit23 : 1; - uint8_t bit24 : 1; - uint8_t res2 : 7; -#if defined(__aarch64__) || defined(_M_ARM64) - uint32_t res3; -#endif -} fpcr_bitfield; - -// Takes the upper 64 bits of a and places it in the low end of the result -// Takes the lower 64 bits of b and places it into the high end of the result. -FORCE_INLINE __m128 _mm_shuffle_ps_1032(__m128 a, __m128 b) -{ - float32x2_t a32 = vget_high_f32(vreinterpretq_f32_m128(a)); - float32x2_t b10 = vget_low_f32(vreinterpretq_f32_m128(b)); - return vreinterpretq_m128_f32(vcombine_f32(a32, b10)); -} - -// takes the lower two 32-bit values from a and swaps them and places in high -// end of result takes the higher two 32 bit values from b and swaps them and -// places in low end of result. -FORCE_INLINE __m128 _mm_shuffle_ps_2301(__m128 a, __m128 b) -{ - float32x2_t a01 = vrev64_f32(vget_low_f32(vreinterpretq_f32_m128(a))); - float32x2_t b23 = vrev64_f32(vget_high_f32(vreinterpretq_f32_m128(b))); - return vreinterpretq_m128_f32(vcombine_f32(a01, b23)); -} - -FORCE_INLINE __m128 _mm_shuffle_ps_0321(__m128 a, __m128 b) -{ - float32x2_t a21 = vget_high_f32( - vextq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(a), 3)); - float32x2_t b03 = vget_low_f32( - vextq_f32(vreinterpretq_f32_m128(b), vreinterpretq_f32_m128(b), 3)); - return vreinterpretq_m128_f32(vcombine_f32(a21, b03)); -} - -FORCE_INLINE __m128 _mm_shuffle_ps_2103(__m128 a, __m128 b) -{ - float32x2_t a03 = vget_low_f32( - vextq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(a), 3)); - float32x2_t b21 = vget_high_f32( - vextq_f32(vreinterpretq_f32_m128(b), vreinterpretq_f32_m128(b), 3)); - return vreinterpretq_m128_f32(vcombine_f32(a03, b21)); -} - -FORCE_INLINE __m128 _mm_shuffle_ps_1010(__m128 a, __m128 b) -{ - float32x2_t a10 = vget_low_f32(vreinterpretq_f32_m128(a)); - float32x2_t b10 = vget_low_f32(vreinterpretq_f32_m128(b)); - return vreinterpretq_m128_f32(vcombine_f32(a10, b10)); -} - -FORCE_INLINE __m128 _mm_shuffle_ps_1001(__m128 a, __m128 b) -{ - float32x2_t a01 = vrev64_f32(vget_low_f32(vreinterpretq_f32_m128(a))); - float32x2_t b10 = vget_low_f32(vreinterpretq_f32_m128(b)); - return vreinterpretq_m128_f32(vcombine_f32(a01, b10)); -} - -FORCE_INLINE __m128 _mm_shuffle_ps_0101(__m128 a, __m128 b) -{ - float32x2_t a01 = vrev64_f32(vget_low_f32(vreinterpretq_f32_m128(a))); - float32x2_t b01 = vrev64_f32(vget_low_f32(vreinterpretq_f32_m128(b))); - return vreinterpretq_m128_f32(vcombine_f32(a01, b01)); -} - -// keeps the low 64 bits of b in the low and puts the high 64 bits of a in the -// high -FORCE_INLINE __m128 _mm_shuffle_ps_3210(__m128 a, __m128 b) -{ - float32x2_t a10 = vget_low_f32(vreinterpretq_f32_m128(a)); - float32x2_t b32 = vget_high_f32(vreinterpretq_f32_m128(b)); - return vreinterpretq_m128_f32(vcombine_f32(a10, b32)); -} - -FORCE_INLINE __m128 _mm_shuffle_ps_0011(__m128 a, __m128 b) -{ - float32x2_t a11 = vdup_lane_f32(vget_low_f32(vreinterpretq_f32_m128(a)), 1); - float32x2_t b00 = vdup_lane_f32(vget_low_f32(vreinterpretq_f32_m128(b)), 0); - return vreinterpretq_m128_f32(vcombine_f32(a11, b00)); -} - -FORCE_INLINE __m128 _mm_shuffle_ps_0022(__m128 a, __m128 b) -{ - float32x2_t a22 = - vdup_lane_f32(vget_high_f32(vreinterpretq_f32_m128(a)), 0); - float32x2_t b00 = vdup_lane_f32(vget_low_f32(vreinterpretq_f32_m128(b)), 0); - return vreinterpretq_m128_f32(vcombine_f32(a22, b00)); -} - -FORCE_INLINE __m128 _mm_shuffle_ps_2200(__m128 a, __m128 b) -{ - float32x2_t a00 = vdup_lane_f32(vget_low_f32(vreinterpretq_f32_m128(a)), 0); - float32x2_t b22 = - vdup_lane_f32(vget_high_f32(vreinterpretq_f32_m128(b)), 0); - return vreinterpretq_m128_f32(vcombine_f32(a00, b22)); -} - -FORCE_INLINE __m128 _mm_shuffle_ps_3202(__m128 a, __m128 b) -{ - float32_t a0 = vgetq_lane_f32(vreinterpretq_f32_m128(a), 0); - float32x2_t a22 = - vdup_lane_f32(vget_high_f32(vreinterpretq_f32_m128(a)), 0); - float32x2_t a02 = vset_lane_f32(a0, a22, 1); /* TODO: use vzip ?*/ - float32x2_t b32 = vget_high_f32(vreinterpretq_f32_m128(b)); - return vreinterpretq_m128_f32(vcombine_f32(a02, b32)); -} - -FORCE_INLINE __m128 _mm_shuffle_ps_1133(__m128 a, __m128 b) -{ - float32x2_t a33 = - vdup_lane_f32(vget_high_f32(vreinterpretq_f32_m128(a)), 1); - float32x2_t b11 = vdup_lane_f32(vget_low_f32(vreinterpretq_f32_m128(b)), 1); - return vreinterpretq_m128_f32(vcombine_f32(a33, b11)); -} - -FORCE_INLINE __m128 _mm_shuffle_ps_2010(__m128 a, __m128 b) -{ - float32x2_t a10 = vget_low_f32(vreinterpretq_f32_m128(a)); - float32_t b2 = vgetq_lane_f32(vreinterpretq_f32_m128(b), 2); - float32x2_t b00 = vdup_lane_f32(vget_low_f32(vreinterpretq_f32_m128(b)), 0); - float32x2_t b20 = vset_lane_f32(b2, b00, 1); - return vreinterpretq_m128_f32(vcombine_f32(a10, b20)); -} - -FORCE_INLINE __m128 _mm_shuffle_ps_2001(__m128 a, __m128 b) -{ - float32x2_t a01 = vrev64_f32(vget_low_f32(vreinterpretq_f32_m128(a))); - float32_t b2 = vgetq_lane_f32(b, 2); - float32x2_t b00 = vdup_lane_f32(vget_low_f32(vreinterpretq_f32_m128(b)), 0); - float32x2_t b20 = vset_lane_f32(b2, b00, 1); - return vreinterpretq_m128_f32(vcombine_f32(a01, b20)); -} - -FORCE_INLINE __m128 _mm_shuffle_ps_2032(__m128 a, __m128 b) -{ - float32x2_t a32 = vget_high_f32(vreinterpretq_f32_m128(a)); - float32_t b2 = vgetq_lane_f32(b, 2); - float32x2_t b00 = vdup_lane_f32(vget_low_f32(vreinterpretq_f32_m128(b)), 0); - float32x2_t b20 = vset_lane_f32(b2, b00, 1); - return vreinterpretq_m128_f32(vcombine_f32(a32, b20)); -} - -// For MSVC, we check only if it is ARM64, as every single ARM64 processor -// supported by WoA has crypto extensions. If this changes in the future, -// this can be verified via the runtime-only method of: -// IsProcessorFeaturePresent(PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE) -#if (defined(_M_ARM64) && !defined(__clang__)) || \ - (defined(__ARM_FEATURE_CRYPTO) && \ - (defined(__aarch64__) || __has_builtin(__builtin_arm_crypto_vmullp64))) -// Wraps vmull_p64 -FORCE_INLINE uint64x2_t _sse2neon_vmull_p64(uint64x1_t _a, uint64x1_t _b) -{ - poly64_t a = vget_lane_p64(vreinterpret_p64_u64(_a), 0); - poly64_t b = vget_lane_p64(vreinterpret_p64_u64(_b), 0); -#if defined(_MSC_VER) - __n64 a1 = {a}, b1 = {b}; - return vreinterpretq_u64_p128(vmull_p64(a1, b1)); -#else - return vreinterpretq_u64_p128(vmull_p64(a, b)); -#endif -} -#else // ARMv7 polyfill -// ARMv7/some A64 lacks vmull_p64, but it has vmull_p8. -// -// vmull_p8 calculates 8 8-bit->16-bit polynomial multiplies, but we need a -// 64-bit->128-bit polynomial multiply. -// -// It needs some work and is somewhat slow, but it is still faster than all -// known scalar methods. -// -// Algorithm adapted to C from -// https://www.workofard.com/2017/07/ghash-for-low-end-cores/, which is adapted -// from "Fast Software Polynomial Multiplication on ARM Processors Using the -// NEON Engine" by Danilo Camara, Conrado Gouvea, Julio Lopez and Ricardo Dahab -// (https://hal.inria.fr/hal-01506572) -static uint64x2_t _sse2neon_vmull_p64(uint64x1_t _a, uint64x1_t _b) -{ - poly8x8_t a = vreinterpret_p8_u64(_a); - poly8x8_t b = vreinterpret_p8_u64(_b); - - // Masks - uint8x16_t k48_32 = vcombine_u8(vcreate_u8(0x0000ffffffffffff), - vcreate_u8(0x00000000ffffffff)); - uint8x16_t k16_00 = vcombine_u8(vcreate_u8(0x000000000000ffff), - vcreate_u8(0x0000000000000000)); - - // Do the multiplies, rotating with vext to get all combinations - uint8x16_t d = vreinterpretq_u8_p16(vmull_p8(a, b)); // D = A0 * B0 - uint8x16_t e = - vreinterpretq_u8_p16(vmull_p8(a, vext_p8(b, b, 1))); // E = A0 * B1 - uint8x16_t f = - vreinterpretq_u8_p16(vmull_p8(vext_p8(a, a, 1), b)); // F = A1 * B0 - uint8x16_t g = - vreinterpretq_u8_p16(vmull_p8(a, vext_p8(b, b, 2))); // G = A0 * B2 - uint8x16_t h = - vreinterpretq_u8_p16(vmull_p8(vext_p8(a, a, 2), b)); // H = A2 * B0 - uint8x16_t i = - vreinterpretq_u8_p16(vmull_p8(a, vext_p8(b, b, 3))); // I = A0 * B3 - uint8x16_t j = - vreinterpretq_u8_p16(vmull_p8(vext_p8(a, a, 3), b)); // J = A3 * B0 - uint8x16_t k = - vreinterpretq_u8_p16(vmull_p8(a, vext_p8(b, b, 4))); // L = A0 * B4 - - // Add cross products - uint8x16_t l = veorq_u8(e, f); // L = E + F - uint8x16_t m = veorq_u8(g, h); // M = G + H - uint8x16_t n = veorq_u8(i, j); // N = I + J - - // Interleave. Using vzip1 and vzip2 prevents Clang from emitting TBL - // instructions. -#if defined(__aarch64__) - uint8x16_t lm_p0 = vreinterpretq_u8_u64( - vzip1q_u64(vreinterpretq_u64_u8(l), vreinterpretq_u64_u8(m))); - uint8x16_t lm_p1 = vreinterpretq_u8_u64( - vzip2q_u64(vreinterpretq_u64_u8(l), vreinterpretq_u64_u8(m))); - uint8x16_t nk_p0 = vreinterpretq_u8_u64( - vzip1q_u64(vreinterpretq_u64_u8(n), vreinterpretq_u64_u8(k))); - uint8x16_t nk_p1 = vreinterpretq_u8_u64( - vzip2q_u64(vreinterpretq_u64_u8(n), vreinterpretq_u64_u8(k))); -#else - uint8x16_t lm_p0 = vcombine_u8(vget_low_u8(l), vget_low_u8(m)); - uint8x16_t lm_p1 = vcombine_u8(vget_high_u8(l), vget_high_u8(m)); - uint8x16_t nk_p0 = vcombine_u8(vget_low_u8(n), vget_low_u8(k)); - uint8x16_t nk_p1 = vcombine_u8(vget_high_u8(n), vget_high_u8(k)); -#endif - // t0 = (L) (P0 + P1) << 8 - // t1 = (M) (P2 + P3) << 16 - uint8x16_t t0t1_tmp = veorq_u8(lm_p0, lm_p1); - uint8x16_t t0t1_h = vandq_u8(lm_p1, k48_32); - uint8x16_t t0t1_l = veorq_u8(t0t1_tmp, t0t1_h); - - // t2 = (N) (P4 + P5) << 24 - // t3 = (K) (P6 + P7) << 32 - uint8x16_t t2t3_tmp = veorq_u8(nk_p0, nk_p1); - uint8x16_t t2t3_h = vandq_u8(nk_p1, k16_00); - uint8x16_t t2t3_l = veorq_u8(t2t3_tmp, t2t3_h); - - // De-interleave -#if defined(__aarch64__) - uint8x16_t t0 = vreinterpretq_u8_u64( - vuzp1q_u64(vreinterpretq_u64_u8(t0t1_l), vreinterpretq_u64_u8(t0t1_h))); - uint8x16_t t1 = vreinterpretq_u8_u64( - vuzp2q_u64(vreinterpretq_u64_u8(t0t1_l), vreinterpretq_u64_u8(t0t1_h))); - uint8x16_t t2 = vreinterpretq_u8_u64( - vuzp1q_u64(vreinterpretq_u64_u8(t2t3_l), vreinterpretq_u64_u8(t2t3_h))); - uint8x16_t t3 = vreinterpretq_u8_u64( - vuzp2q_u64(vreinterpretq_u64_u8(t2t3_l), vreinterpretq_u64_u8(t2t3_h))); -#else - uint8x16_t t1 = vcombine_u8(vget_high_u8(t0t1_l), vget_high_u8(t0t1_h)); - uint8x16_t t0 = vcombine_u8(vget_low_u8(t0t1_l), vget_low_u8(t0t1_h)); - uint8x16_t t3 = vcombine_u8(vget_high_u8(t2t3_l), vget_high_u8(t2t3_h)); - uint8x16_t t2 = vcombine_u8(vget_low_u8(t2t3_l), vget_low_u8(t2t3_h)); -#endif - // Shift the cross products - uint8x16_t t0_shift = vextq_u8(t0, t0, 15); // t0 << 8 - uint8x16_t t1_shift = vextq_u8(t1, t1, 14); // t1 << 16 - uint8x16_t t2_shift = vextq_u8(t2, t2, 13); // t2 << 24 - uint8x16_t t3_shift = vextq_u8(t3, t3, 12); // t3 << 32 - - // Accumulate the products - uint8x16_t cross1 = veorq_u8(t0_shift, t1_shift); - uint8x16_t cross2 = veorq_u8(t2_shift, t3_shift); - uint8x16_t mix = veorq_u8(d, cross1); - uint8x16_t r = veorq_u8(mix, cross2); - return vreinterpretq_u64_u8(r); -} -#endif // ARMv7 polyfill - -// C equivalent: -// __m128i _mm_shuffle_epi32_default(__m128i a, -// __constrange(0, 255) int imm) { -// __m128i ret; -// ret[0] = a[imm & 0x3]; ret[1] = a[(imm >> 2) & 0x3]; -// ret[2] = a[(imm >> 4) & 0x03]; ret[3] = a[(imm >> 6) & 0x03]; -// return ret; -// } -#define _mm_shuffle_epi32_default(a, imm) \ - vreinterpretq_m128i_s32(vsetq_lane_s32( \ - vgetq_lane_s32(vreinterpretq_s32_m128i(a), ((imm) >> 6) & 0x3), \ - vsetq_lane_s32( \ - vgetq_lane_s32(vreinterpretq_s32_m128i(a), ((imm) >> 4) & 0x3), \ - vsetq_lane_s32(vgetq_lane_s32(vreinterpretq_s32_m128i(a), \ - ((imm) >> 2) & 0x3), \ - vmovq_n_s32(vgetq_lane_s32( \ - vreinterpretq_s32_m128i(a), (imm) & (0x3))), \ - 1), \ - 2), \ - 3)) - -// Takes the upper 64 bits of a and places it in the low end of the result -// Takes the lower 64 bits of a and places it into the high end of the result. -FORCE_INLINE __m128i _mm_shuffle_epi_1032(__m128i a) -{ - int32x2_t a32 = vget_high_s32(vreinterpretq_s32_m128i(a)); - int32x2_t a10 = vget_low_s32(vreinterpretq_s32_m128i(a)); - return vreinterpretq_m128i_s32(vcombine_s32(a32, a10)); -} - -// takes the lower two 32-bit values from a and swaps them and places in low end -// of result takes the higher two 32 bit values from a and swaps them and places -// in high end of result. -FORCE_INLINE __m128i _mm_shuffle_epi_2301(__m128i a) -{ - int32x2_t a01 = vrev64_s32(vget_low_s32(vreinterpretq_s32_m128i(a))); - int32x2_t a23 = vrev64_s32(vget_high_s32(vreinterpretq_s32_m128i(a))); - return vreinterpretq_m128i_s32(vcombine_s32(a01, a23)); -} - -// rotates the least significant 32 bits into the most significant 32 bits, and -// shifts the rest down -FORCE_INLINE __m128i _mm_shuffle_epi_0321(__m128i a) -{ - return vreinterpretq_m128i_s32( - vextq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(a), 1)); -} - -// rotates the most significant 32 bits into the least significant 32 bits, and -// shifts the rest up -FORCE_INLINE __m128i _mm_shuffle_epi_2103(__m128i a) -{ - return vreinterpretq_m128i_s32( - vextq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(a), 3)); -} - -// gets the lower 64 bits of a, and places it in the upper 64 bits -// gets the lower 64 bits of a and places it in the lower 64 bits -FORCE_INLINE __m128i _mm_shuffle_epi_1010(__m128i a) -{ - int32x2_t a10 = vget_low_s32(vreinterpretq_s32_m128i(a)); - return vreinterpretq_m128i_s32(vcombine_s32(a10, a10)); -} - -// gets the lower 64 bits of a, swaps the 0 and 1 elements, and places it in the -// lower 64 bits gets the lower 64 bits of a, and places it in the upper 64 bits -FORCE_INLINE __m128i _mm_shuffle_epi_1001(__m128i a) -{ - int32x2_t a01 = vrev64_s32(vget_low_s32(vreinterpretq_s32_m128i(a))); - int32x2_t a10 = vget_low_s32(vreinterpretq_s32_m128i(a)); - return vreinterpretq_m128i_s32(vcombine_s32(a01, a10)); -} - -// gets the lower 64 bits of a, swaps the 0 and 1 elements and places it in the -// upper 64 bits gets the lower 64 bits of a, swaps the 0 and 1 elements, and -// places it in the lower 64 bits -FORCE_INLINE __m128i _mm_shuffle_epi_0101(__m128i a) -{ - int32x2_t a01 = vrev64_s32(vget_low_s32(vreinterpretq_s32_m128i(a))); - return vreinterpretq_m128i_s32(vcombine_s32(a01, a01)); -} - -FORCE_INLINE __m128i _mm_shuffle_epi_2211(__m128i a) -{ - int32x2_t a11 = vdup_lane_s32(vget_low_s32(vreinterpretq_s32_m128i(a)), 1); - int32x2_t a22 = vdup_lane_s32(vget_high_s32(vreinterpretq_s32_m128i(a)), 0); - return vreinterpretq_m128i_s32(vcombine_s32(a11, a22)); -} - -FORCE_INLINE __m128i _mm_shuffle_epi_0122(__m128i a) -{ - int32x2_t a22 = vdup_lane_s32(vget_high_s32(vreinterpretq_s32_m128i(a)), 0); - int32x2_t a01 = vrev64_s32(vget_low_s32(vreinterpretq_s32_m128i(a))); - return vreinterpretq_m128i_s32(vcombine_s32(a22, a01)); -} - -FORCE_INLINE __m128i _mm_shuffle_epi_3332(__m128i a) -{ - int32x2_t a32 = vget_high_s32(vreinterpretq_s32_m128i(a)); - int32x2_t a33 = vdup_lane_s32(vget_high_s32(vreinterpretq_s32_m128i(a)), 1); - return vreinterpretq_m128i_s32(vcombine_s32(a32, a33)); -} - -#if defined(__aarch64__) || defined(_M_ARM64) -#define _mm_shuffle_epi32_splat(a, imm) \ - vreinterpretq_m128i_s32(vdupq_laneq_s32(vreinterpretq_s32_m128i(a), (imm))) -#else -#define _mm_shuffle_epi32_splat(a, imm) \ - vreinterpretq_m128i_s32( \ - vdupq_n_s32(vgetq_lane_s32(vreinterpretq_s32_m128i(a), (imm)))) -#endif - -// NEON does not support a general purpose permute intrinsic. -// Shuffle single-precision (32-bit) floating-point elements in a using the -// control in imm8, and store the results in dst. -// -// C equivalent: -// __m128 _mm_shuffle_ps_default(__m128 a, __m128 b, -// __constrange(0, 255) int imm) { -// __m128 ret; -// ret[0] = a[imm & 0x3]; ret[1] = a[(imm >> 2) & 0x3]; -// ret[2] = b[(imm >> 4) & 0x03]; ret[3] = b[(imm >> 6) & 0x03]; -// return ret; -// } -// -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_shuffle_ps -#define _mm_shuffle_ps_default(a, b, imm) \ - vreinterpretq_m128_f32(vsetq_lane_f32( \ - vgetq_lane_f32(vreinterpretq_f32_m128(b), ((imm) >> 6) & 0x3), \ - vsetq_lane_f32( \ - vgetq_lane_f32(vreinterpretq_f32_m128(b), ((imm) >> 4) & 0x3), \ - vsetq_lane_f32( \ - vgetq_lane_f32(vreinterpretq_f32_m128(a), ((imm) >> 2) & 0x3), \ - vmovq_n_f32( \ - vgetq_lane_f32(vreinterpretq_f32_m128(a), (imm) & (0x3))), \ - 1), \ - 2), \ - 3)) - -// Shuffle 16-bit integers in the low 64 bits of a using the control in imm8. -// Store the results in the low 64 bits of dst, with the high 64 bits being -// copied from a to dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_shufflelo_epi16 -#define _mm_shufflelo_epi16_function(a, imm) \ - _sse2neon_define1( \ - __m128i, a, int16x8_t ret = vreinterpretq_s16_m128i(_a); \ - int16x4_t lowBits = vget_low_s16(ret); \ - ret = vsetq_lane_s16(vget_lane_s16(lowBits, (imm) & (0x3)), ret, 0); \ - ret = vsetq_lane_s16(vget_lane_s16(lowBits, ((imm) >> 2) & 0x3), ret, \ - 1); \ - ret = vsetq_lane_s16(vget_lane_s16(lowBits, ((imm) >> 4) & 0x3), ret, \ - 2); \ - ret = vsetq_lane_s16(vget_lane_s16(lowBits, ((imm) >> 6) & 0x3), ret, \ - 3); \ - _sse2neon_return(vreinterpretq_m128i_s16(ret));) - -// Shuffle 16-bit integers in the high 64 bits of a using the control in imm8. -// Store the results in the high 64 bits of dst, with the low 64 bits being -// copied from a to dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_shufflehi_epi16 -#define _mm_shufflehi_epi16_function(a, imm) \ - _sse2neon_define1( \ - __m128i, a, int16x8_t ret = vreinterpretq_s16_m128i(_a); \ - int16x4_t highBits = vget_high_s16(ret); \ - ret = vsetq_lane_s16(vget_lane_s16(highBits, (imm) & (0x3)), ret, 4); \ - ret = vsetq_lane_s16(vget_lane_s16(highBits, ((imm) >> 2) & 0x3), ret, \ - 5); \ - ret = vsetq_lane_s16(vget_lane_s16(highBits, ((imm) >> 4) & 0x3), ret, \ - 6); \ - ret = vsetq_lane_s16(vget_lane_s16(highBits, ((imm) >> 6) & 0x3), ret, \ - 7); \ - _sse2neon_return(vreinterpretq_m128i_s16(ret));) - -/* MMX */ - -//_mm_empty is a no-op on arm -FORCE_INLINE void _mm_empty(void) {} - -/* SSE */ - -// Add packed single-precision (32-bit) floating-point elements in a and b, and -// store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_add_ps -FORCE_INLINE __m128 _mm_add_ps(__m128 a, __m128 b) -{ - return vreinterpretq_m128_f32( - vaddq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); -} - -// Add the lower single-precision (32-bit) floating-point element in a and b, -// store the result in the lower element of dst, and copy the upper 3 packed -// elements from a to the upper elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_add_ss -FORCE_INLINE __m128 _mm_add_ss(__m128 a, __m128 b) -{ - float32_t b0 = vgetq_lane_f32(vreinterpretq_f32_m128(b), 0); - float32x4_t value = vsetq_lane_f32(b0, vdupq_n_f32(0), 0); - // the upper values in the result must be the remnants of . - return vreinterpretq_m128_f32(vaddq_f32(a, value)); -} - -// Compute the bitwise AND of packed single-precision (32-bit) floating-point -// elements in a and b, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_and_ps -FORCE_INLINE __m128 _mm_and_ps(__m128 a, __m128 b) -{ - return vreinterpretq_m128_s32( - vandq_s32(vreinterpretq_s32_m128(a), vreinterpretq_s32_m128(b))); -} - -// Compute the bitwise NOT of packed single-precision (32-bit) floating-point -// elements in a and then AND with b, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_andnot_ps -FORCE_INLINE __m128 _mm_andnot_ps(__m128 a, __m128 b) -{ - return vreinterpretq_m128_s32( - vbicq_s32(vreinterpretq_s32_m128(b), - vreinterpretq_s32_m128(a))); // *NOTE* argument swap -} - -// Average packed unsigned 16-bit integers in a and b, and store the results in -// dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_avg_pu16 -FORCE_INLINE __m64 _mm_avg_pu16(__m64 a, __m64 b) -{ - return vreinterpret_m64_u16( - vrhadd_u16(vreinterpret_u16_m64(a), vreinterpret_u16_m64(b))); -} - -// Average packed unsigned 8-bit integers in a and b, and store the results in -// dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_avg_pu8 -FORCE_INLINE __m64 _mm_avg_pu8(__m64 a, __m64 b) -{ - return vreinterpret_m64_u8( - vrhadd_u8(vreinterpret_u8_m64(a), vreinterpret_u8_m64(b))); -} - -// Compare packed single-precision (32-bit) floating-point elements in a and b -// for equality, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpeq_ps -FORCE_INLINE __m128 _mm_cmpeq_ps(__m128 a, __m128 b) -{ - return vreinterpretq_m128_u32( - vceqq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); -} - -// Compare the lower single-precision (32-bit) floating-point elements in a and -// b for equality, store the result in the lower element of dst, and copy the -// upper 3 packed elements from a to the upper elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpeq_ss -FORCE_INLINE __m128 _mm_cmpeq_ss(__m128 a, __m128 b) -{ - return _mm_move_ss(a, _mm_cmpeq_ps(a, b)); -} - -// Compare packed single-precision (32-bit) floating-point elements in a and b -// for greater-than-or-equal, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpge_ps -FORCE_INLINE __m128 _mm_cmpge_ps(__m128 a, __m128 b) -{ - return vreinterpretq_m128_u32( - vcgeq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); -} - -// Compare the lower single-precision (32-bit) floating-point elements in a and -// b for greater-than-or-equal, store the result in the lower element of dst, -// and copy the upper 3 packed elements from a to the upper elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpge_ss -FORCE_INLINE __m128 _mm_cmpge_ss(__m128 a, __m128 b) -{ - return _mm_move_ss(a, _mm_cmpge_ps(a, b)); -} - -// Compare packed single-precision (32-bit) floating-point elements in a and b -// for greater-than, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpgt_ps -FORCE_INLINE __m128 _mm_cmpgt_ps(__m128 a, __m128 b) -{ - return vreinterpretq_m128_u32( - vcgtq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); -} - -// Compare the lower single-precision (32-bit) floating-point elements in a and -// b for greater-than, store the result in the lower element of dst, and copy -// the upper 3 packed elements from a to the upper elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpgt_ss -FORCE_INLINE __m128 _mm_cmpgt_ss(__m128 a, __m128 b) -{ - return _mm_move_ss(a, _mm_cmpgt_ps(a, b)); -} - -// Compare packed single-precision (32-bit) floating-point elements in a and b -// for less-than-or-equal, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmple_ps -FORCE_INLINE __m128 _mm_cmple_ps(__m128 a, __m128 b) -{ - return vreinterpretq_m128_u32( - vcleq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); -} - -// Compare the lower single-precision (32-bit) floating-point elements in a and -// b for less-than-or-equal, store the result in the lower element of dst, and -// copy the upper 3 packed elements from a to the upper elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmple_ss -FORCE_INLINE __m128 _mm_cmple_ss(__m128 a, __m128 b) -{ - return _mm_move_ss(a, _mm_cmple_ps(a, b)); -} - -// Compare packed single-precision (32-bit) floating-point elements in a and b -// for less-than, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmplt_ps -FORCE_INLINE __m128 _mm_cmplt_ps(__m128 a, __m128 b) -{ - return vreinterpretq_m128_u32( - vcltq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); -} - -// Compare the lower single-precision (32-bit) floating-point elements in a and -// b for less-than, store the result in the lower element of dst, and copy the -// upper 3 packed elements from a to the upper elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmplt_ss -FORCE_INLINE __m128 _mm_cmplt_ss(__m128 a, __m128 b) -{ - return _mm_move_ss(a, _mm_cmplt_ps(a, b)); -} - -// Compare packed single-precision (32-bit) floating-point elements in a and b -// for not-equal, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpneq_ps -FORCE_INLINE __m128 _mm_cmpneq_ps(__m128 a, __m128 b) -{ - return vreinterpretq_m128_u32(vmvnq_u32( - vceqq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b)))); -} - -// Compare the lower single-precision (32-bit) floating-point elements in a and -// b for not-equal, store the result in the lower element of dst, and copy the -// upper 3 packed elements from a to the upper elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpneq_ss -FORCE_INLINE __m128 _mm_cmpneq_ss(__m128 a, __m128 b) -{ - return _mm_move_ss(a, _mm_cmpneq_ps(a, b)); -} - -// Compare packed single-precision (32-bit) floating-point elements in a and b -// for not-greater-than-or-equal, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpnge_ps -FORCE_INLINE __m128 _mm_cmpnge_ps(__m128 a, __m128 b) -{ - return vreinterpretq_m128_u32(vmvnq_u32( - vcgeq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b)))); -} - -// Compare the lower single-precision (32-bit) floating-point elements in a and -// b for not-greater-than-or-equal, store the result in the lower element of -// dst, and copy the upper 3 packed elements from a to the upper elements of -// dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpnge_ss -FORCE_INLINE __m128 _mm_cmpnge_ss(__m128 a, __m128 b) -{ - return _mm_move_ss(a, _mm_cmpnge_ps(a, b)); -} - -// Compare packed single-precision (32-bit) floating-point elements in a and b -// for not-greater-than, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpngt_ps -FORCE_INLINE __m128 _mm_cmpngt_ps(__m128 a, __m128 b) -{ - return vreinterpretq_m128_u32(vmvnq_u32( - vcgtq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b)))); -} - -// Compare the lower single-precision (32-bit) floating-point elements in a and -// b for not-greater-than, store the result in the lower element of dst, and -// copy the upper 3 packed elements from a to the upper elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpngt_ss -FORCE_INLINE __m128 _mm_cmpngt_ss(__m128 a, __m128 b) -{ - return _mm_move_ss(a, _mm_cmpngt_ps(a, b)); -} - -// Compare packed single-precision (32-bit) floating-point elements in a and b -// for not-less-than-or-equal, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpnle_ps -FORCE_INLINE __m128 _mm_cmpnle_ps(__m128 a, __m128 b) -{ - return vreinterpretq_m128_u32(vmvnq_u32( - vcleq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b)))); -} - -// Compare the lower single-precision (32-bit) floating-point elements in a and -// b for not-less-than-or-equal, store the result in the lower element of dst, -// and copy the upper 3 packed elements from a to the upper elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpnle_ss -FORCE_INLINE __m128 _mm_cmpnle_ss(__m128 a, __m128 b) -{ - return _mm_move_ss(a, _mm_cmpnle_ps(a, b)); -} - -// Compare packed single-precision (32-bit) floating-point elements in a and b -// for not-less-than, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpnlt_ps -FORCE_INLINE __m128 _mm_cmpnlt_ps(__m128 a, __m128 b) -{ - return vreinterpretq_m128_u32(vmvnq_u32( - vcltq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b)))); -} - -// Compare the lower single-precision (32-bit) floating-point elements in a and -// b for not-less-than, store the result in the lower element of dst, and copy -// the upper 3 packed elements from a to the upper elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpnlt_ss -FORCE_INLINE __m128 _mm_cmpnlt_ss(__m128 a, __m128 b) -{ - return _mm_move_ss(a, _mm_cmpnlt_ps(a, b)); -} - -// Compare packed single-precision (32-bit) floating-point elements in a and b -// to see if neither is NaN, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpord_ps -// -// See also: -// http://stackoverflow.com/questions/8627331/what-does-ordered-unordered-comparison-mean -// http://stackoverflow.com/questions/29349621/neon-isnanval-intrinsics -FORCE_INLINE __m128 _mm_cmpord_ps(__m128 a, __m128 b) -{ - // Note: NEON does not have ordered compare builtin - // Need to compare a eq a and b eq b to check for NaN - // Do AND of results to get final - uint32x4_t ceqaa = - vceqq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(a)); - uint32x4_t ceqbb = - vceqq_f32(vreinterpretq_f32_m128(b), vreinterpretq_f32_m128(b)); - return vreinterpretq_m128_u32(vandq_u32(ceqaa, ceqbb)); -} - -// Compare the lower single-precision (32-bit) floating-point elements in a and -// b to see if neither is NaN, store the result in the lower element of dst, and -// copy the upper 3 packed elements from a to the upper elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpord_ss -FORCE_INLINE __m128 _mm_cmpord_ss(__m128 a, __m128 b) -{ - return _mm_move_ss(a, _mm_cmpord_ps(a, b)); -} - -// Compare packed single-precision (32-bit) floating-point elements in a and b -// to see if either is NaN, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpunord_ps -FORCE_INLINE __m128 _mm_cmpunord_ps(__m128 a, __m128 b) -{ - uint32x4_t f32a = - vceqq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(a)); - uint32x4_t f32b = - vceqq_f32(vreinterpretq_f32_m128(b), vreinterpretq_f32_m128(b)); - return vreinterpretq_m128_u32(vmvnq_u32(vandq_u32(f32a, f32b))); -} - -// Compare the lower single-precision (32-bit) floating-point elements in a and -// b to see if either is NaN, store the result in the lower element of dst, and -// copy the upper 3 packed elements from a to the upper elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpunord_ss -FORCE_INLINE __m128 _mm_cmpunord_ss(__m128 a, __m128 b) -{ - return _mm_move_ss(a, _mm_cmpunord_ps(a, b)); -} - -// Compare the lower single-precision (32-bit) floating-point element in a and b -// for equality, and return the boolean result (0 or 1). -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_comieq_ss -FORCE_INLINE int _mm_comieq_ss(__m128 a, __m128 b) -{ - uint32x4_t a_eq_b = - vceqq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b)); - return vgetq_lane_u32(a_eq_b, 0) & 0x1; -} - -// Compare the lower single-precision (32-bit) floating-point element in a and b -// for greater-than-or-equal, and return the boolean result (0 or 1). -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_comige_ss -FORCE_INLINE int _mm_comige_ss(__m128 a, __m128 b) -{ - uint32x4_t a_ge_b = - vcgeq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b)); - return vgetq_lane_u32(a_ge_b, 0) & 0x1; -} - -// Compare the lower single-precision (32-bit) floating-point element in a and b -// for greater-than, and return the boolean result (0 or 1). -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_comigt_ss -FORCE_INLINE int _mm_comigt_ss(__m128 a, __m128 b) -{ - uint32x4_t a_gt_b = - vcgtq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b)); - return vgetq_lane_u32(a_gt_b, 0) & 0x1; -} - -// Compare the lower single-precision (32-bit) floating-point element in a and b -// for less-than-or-equal, and return the boolean result (0 or 1). -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_comile_ss -FORCE_INLINE int _mm_comile_ss(__m128 a, __m128 b) -{ - uint32x4_t a_le_b = - vcleq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b)); - return vgetq_lane_u32(a_le_b, 0) & 0x1; -} - -// Compare the lower single-precision (32-bit) floating-point element in a and b -// for less-than, and return the boolean result (0 or 1). -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_comilt_ss -FORCE_INLINE int _mm_comilt_ss(__m128 a, __m128 b) -{ - uint32x4_t a_lt_b = - vcltq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b)); - return vgetq_lane_u32(a_lt_b, 0) & 0x1; -} - -// Compare the lower single-precision (32-bit) floating-point element in a and b -// for not-equal, and return the boolean result (0 or 1). -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_comineq_ss -FORCE_INLINE int _mm_comineq_ss(__m128 a, __m128 b) -{ - return !_mm_comieq_ss(a, b); -} - -// Convert packed signed 32-bit integers in b to packed single-precision -// (32-bit) floating-point elements, store the results in the lower 2 elements -// of dst, and copy the upper 2 packed elements from a to the upper elements of -// dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvt_pi2ps -FORCE_INLINE __m128 _mm_cvt_pi2ps(__m128 a, __m64 b) -{ - return vreinterpretq_m128_f32( - vcombine_f32(vcvt_f32_s32(vreinterpret_s32_m64(b)), - vget_high_f32(vreinterpretq_f32_m128(a)))); -} - -// Convert packed single-precision (32-bit) floating-point elements in a to -// packed 32-bit integers, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvt_ps2pi -FORCE_INLINE __m64 _mm_cvt_ps2pi(__m128 a) -{ -#if (defined(__aarch64__) || defined(_M_ARM64)) || \ - defined(__ARM_FEATURE_DIRECTED_ROUNDING) - return vreinterpret_m64_s32( - vget_low_s32(vcvtnq_s32_f32(vrndiq_f32(vreinterpretq_f32_m128(a))))); -#else - return vreinterpret_m64_s32(vcvt_s32_f32(vget_low_f32( - vreinterpretq_f32_m128(_mm_round_ps(a, _MM_FROUND_CUR_DIRECTION))))); -#endif -} - -// Convert the signed 32-bit integer b to a single-precision (32-bit) -// floating-point element, store the result in the lower element of dst, and -// copy the upper 3 packed elements from a to the upper elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvt_si2ss -FORCE_INLINE __m128 _mm_cvt_si2ss(__m128 a, int b) -{ - return vreinterpretq_m128_f32( - vsetq_lane_f32((float) b, vreinterpretq_f32_m128(a), 0)); -} - -// Convert the lower single-precision (32-bit) floating-point element in a to a -// 32-bit integer, and store the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvt_ss2si -FORCE_INLINE int _mm_cvt_ss2si(__m128 a) -{ -#if (defined(__aarch64__) || defined(_M_ARM64)) || \ - defined(__ARM_FEATURE_DIRECTED_ROUNDING) - return vgetq_lane_s32(vcvtnq_s32_f32(vrndiq_f32(vreinterpretq_f32_m128(a))), - 0); -#else - float32_t data = vgetq_lane_f32( - vreinterpretq_f32_m128(_mm_round_ps(a, _MM_FROUND_CUR_DIRECTION)), 0); - return (int32_t) data; -#endif -} - -// Convert packed 16-bit integers in a to packed single-precision (32-bit) -// floating-point elements, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtpi16_ps -FORCE_INLINE __m128 _mm_cvtpi16_ps(__m64 a) -{ - return vreinterpretq_m128_f32( - vcvtq_f32_s32(vmovl_s16(vreinterpret_s16_m64(a)))); -} - -// Convert packed 32-bit integers in b to packed single-precision (32-bit) -// floating-point elements, store the results in the lower 2 elements of dst, -// and copy the upper 2 packed elements from a to the upper elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtpi32_ps -FORCE_INLINE __m128 _mm_cvtpi32_ps(__m128 a, __m64 b) -{ - return vreinterpretq_m128_f32( - vcombine_f32(vcvt_f32_s32(vreinterpret_s32_m64(b)), - vget_high_f32(vreinterpretq_f32_m128(a)))); -} - -// Convert packed signed 32-bit integers in a to packed single-precision -// (32-bit) floating-point elements, store the results in the lower 2 elements -// of dst, then convert the packed signed 32-bit integers in b to -// single-precision (32-bit) floating-point element, and store the results in -// the upper 2 elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtpi32x2_ps -FORCE_INLINE __m128 _mm_cvtpi32x2_ps(__m64 a, __m64 b) -{ - return vreinterpretq_m128_f32(vcvtq_f32_s32( - vcombine_s32(vreinterpret_s32_m64(a), vreinterpret_s32_m64(b)))); -} - -// Convert the lower packed 8-bit integers in a to packed single-precision -// (32-bit) floating-point elements, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtpi8_ps -FORCE_INLINE __m128 _mm_cvtpi8_ps(__m64 a) -{ - return vreinterpretq_m128_f32(vcvtq_f32_s32( - vmovl_s16(vget_low_s16(vmovl_s8(vreinterpret_s8_m64(a)))))); -} - -// Convert packed single-precision (32-bit) floating-point elements in a to -// packed 16-bit integers, and store the results in dst. Note: this intrinsic -// will generate 0x7FFF, rather than 0x8000, for input values between 0x7FFF and -// 0x7FFFFFFF. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtps_pi16 -FORCE_INLINE __m64 _mm_cvtps_pi16(__m128 a) -{ - return vreinterpret_m64_s16( - vqmovn_s32(vreinterpretq_s32_m128i(_mm_cvtps_epi32(a)))); -} - -// Convert packed single-precision (32-bit) floating-point elements in a to -// packed 32-bit integers, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtps_pi32 -#define _mm_cvtps_pi32(a) _mm_cvt_ps2pi(a) - -// Convert packed single-precision (32-bit) floating-point elements in a to -// packed 8-bit integers, and store the results in lower 4 elements of dst. -// Note: this intrinsic will generate 0x7F, rather than 0x80, for input values -// between 0x7F and 0x7FFFFFFF. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtps_pi8 -FORCE_INLINE __m64 _mm_cvtps_pi8(__m128 a) -{ - return vreinterpret_m64_s8(vqmovn_s16( - vcombine_s16(vreinterpret_s16_m64(_mm_cvtps_pi16(a)), vdup_n_s16(0)))); -} - -// Convert packed unsigned 16-bit integers in a to packed single-precision -// (32-bit) floating-point elements, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtpu16_ps -FORCE_INLINE __m128 _mm_cvtpu16_ps(__m64 a) -{ - return vreinterpretq_m128_f32( - vcvtq_f32_u32(vmovl_u16(vreinterpret_u16_m64(a)))); -} - -// Convert the lower packed unsigned 8-bit integers in a to packed -// single-precision (32-bit) floating-point elements, and store the results in -// dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtpu8_ps -FORCE_INLINE __m128 _mm_cvtpu8_ps(__m64 a) -{ - return vreinterpretq_m128_f32(vcvtq_f32_u32( - vmovl_u16(vget_low_u16(vmovl_u8(vreinterpret_u8_m64(a)))))); -} - -// Convert the signed 32-bit integer b to a single-precision (32-bit) -// floating-point element, store the result in the lower element of dst, and -// copy the upper 3 packed elements from a to the upper elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi32_ss -#define _mm_cvtsi32_ss(a, b) _mm_cvt_si2ss(a, b) - -// Convert the signed 64-bit integer b to a single-precision (32-bit) -// floating-point element, store the result in the lower element of dst, and -// copy the upper 3 packed elements from a to the upper elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi64_ss -FORCE_INLINE __m128 _mm_cvtsi64_ss(__m128 a, int64_t b) -{ - return vreinterpretq_m128_f32( - vsetq_lane_f32((float) b, vreinterpretq_f32_m128(a), 0)); -} - -// Copy the lower single-precision (32-bit) floating-point element of a to dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtss_f32 -FORCE_INLINE float _mm_cvtss_f32(__m128 a) -{ - return vgetq_lane_f32(vreinterpretq_f32_m128(a), 0); -} - -// Convert the lower single-precision (32-bit) floating-point element in a to a -// 32-bit integer, and store the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtss_si32 -#define _mm_cvtss_si32(a) _mm_cvt_ss2si(a) - -// Convert the lower single-precision (32-bit) floating-point element in a to a -// 64-bit integer, and store the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtss_si64 -FORCE_INLINE int64_t _mm_cvtss_si64(__m128 a) -{ -#if (defined(__aarch64__) || defined(_M_ARM64)) || \ - defined(__ARM_FEATURE_DIRECTED_ROUNDING) - return (int64_t) vgetq_lane_f32(vrndiq_f32(vreinterpretq_f32_m128(a)), 0); -#else - float32_t data = vgetq_lane_f32( - vreinterpretq_f32_m128(_mm_round_ps(a, _MM_FROUND_CUR_DIRECTION)), 0); - return (int64_t) data; -#endif -} - -// Convert packed single-precision (32-bit) floating-point elements in a to -// packed 32-bit integers with truncation, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtt_ps2pi -FORCE_INLINE __m64 _mm_cvtt_ps2pi(__m128 a) -{ - return vreinterpret_m64_s32( - vget_low_s32(vcvtq_s32_f32(vreinterpretq_f32_m128(a)))); -} - -// Convert the lower single-precision (32-bit) floating-point element in a to a -// 32-bit integer with truncation, and store the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtt_ss2si -FORCE_INLINE int _mm_cvtt_ss2si(__m128 a) -{ - return vgetq_lane_s32(vcvtq_s32_f32(vreinterpretq_f32_m128(a)), 0); -} - -// Convert packed single-precision (32-bit) floating-point elements in a to -// packed 32-bit integers with truncation, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvttps_pi32 -#define _mm_cvttps_pi32(a) _mm_cvtt_ps2pi(a) - -// Convert the lower single-precision (32-bit) floating-point element in a to a -// 32-bit integer with truncation, and store the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvttss_si32 -#define _mm_cvttss_si32(a) _mm_cvtt_ss2si(a) - -// Convert the lower single-precision (32-bit) floating-point element in a to a -// 64-bit integer with truncation, and store the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvttss_si64 -FORCE_INLINE int64_t _mm_cvttss_si64(__m128 a) -{ - return (int64_t) vgetq_lane_f32(vreinterpretq_f32_m128(a), 0); -} - -// Divide packed single-precision (32-bit) floating-point elements in a by -// packed elements in b, and store the results in dst. -// Due to ARMv7-A NEON's lack of a precise division intrinsic, we implement -// division by multiplying a by b's reciprocal before using the Newton-Raphson -// method to approximate the results. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_div_ps -FORCE_INLINE __m128 _mm_div_ps(__m128 a, __m128 b) -{ -#if (defined(__aarch64__) || defined(_M_ARM64)) && !SSE2NEON_PRECISE_DIV - return vreinterpretq_m128_f32( - vdivq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); -#else - float32x4_t recip = vrecpeq_f32(vreinterpretq_f32_m128(b)); - recip = vmulq_f32(recip, vrecpsq_f32(recip, vreinterpretq_f32_m128(b))); - // Additional Netwon-Raphson iteration for accuracy - recip = vmulq_f32(recip, vrecpsq_f32(recip, vreinterpretq_f32_m128(b))); - return vreinterpretq_m128_f32(vmulq_f32(vreinterpretq_f32_m128(a), recip)); -#endif -} - -// Divide the lower single-precision (32-bit) floating-point element in a by the -// lower single-precision (32-bit) floating-point element in b, store the result -// in the lower element of dst, and copy the upper 3 packed elements from a to -// the upper elements of dst. -// Warning: ARMv7-A does not produce the same result compared to Intel and not -// IEEE-compliant. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_div_ss -FORCE_INLINE __m128 _mm_div_ss(__m128 a, __m128 b) -{ - float32_t value = - vgetq_lane_f32(vreinterpretq_f32_m128(_mm_div_ps(a, b)), 0); - return vreinterpretq_m128_f32( - vsetq_lane_f32(value, vreinterpretq_f32_m128(a), 0)); -} - -// Extract a 16-bit integer from a, selected with imm8, and store the result in -// the lower element of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_extract_pi16 -#define _mm_extract_pi16(a, imm) \ - (int32_t) vget_lane_u16(vreinterpret_u16_m64(a), (imm)) - -// Free aligned memory that was allocated with _mm_malloc. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_free -#if !defined(SSE2NEON_ALLOC_DEFINED) -FORCE_INLINE void _mm_free(void *addr) -{ - free(addr); -} -#endif - -FORCE_INLINE uint64_t _sse2neon_get_fpcr(void) -{ - uint64_t value; -#if defined(_MSC_VER) - value = _ReadStatusReg(ARM64_FPCR); -#else - __asm__ __volatile__("mrs %0, FPCR" : "=r"(value)); /* read */ -#endif - return value; -} - -FORCE_INLINE void _sse2neon_set_fpcr(uint64_t value) -{ -#if defined(_MSC_VER) - _WriteStatusReg(ARM64_FPCR, value); -#else - __asm__ __volatile__("msr FPCR, %0" ::"r"(value)); /* write */ -#endif -} - -// Macro: Get the flush zero bits from the MXCSR control and status register. -// The flush zero may contain any of the following flags: _MM_FLUSH_ZERO_ON or -// _MM_FLUSH_ZERO_OFF -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_MM_GET_FLUSH_ZERO_MODE -FORCE_INLINE unsigned int _sse2neon_mm_get_flush_zero_mode(void) -{ - union { - fpcr_bitfield field; -#if defined(__aarch64__) || defined(_M_ARM64) - uint64_t value; -#else - uint32_t value; -#endif - } r; - -#if defined(__aarch64__) || defined(_M_ARM64) - r.value = _sse2neon_get_fpcr(); -#else - __asm__ __volatile__("vmrs %0, FPSCR" : "=r"(r.value)); /* read */ -#endif - - return r.field.bit24 ? _MM_FLUSH_ZERO_ON : _MM_FLUSH_ZERO_OFF; -} - -// Macro: Get the rounding mode bits from the MXCSR control and status register. -// The rounding mode may contain any of the following flags: _MM_ROUND_NEAREST, -// _MM_ROUND_DOWN, _MM_ROUND_UP, _MM_ROUND_TOWARD_ZERO -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_MM_GET_ROUNDING_MODE -FORCE_INLINE unsigned int _MM_GET_ROUNDING_MODE(void) -{ - union { - fpcr_bitfield field; -#if defined(__aarch64__) || defined(_M_ARM64) - uint64_t value; -#else - uint32_t value; -#endif - } r; - -#if defined(__aarch64__) || defined(_M_ARM64) - r.value = _sse2neon_get_fpcr(); -#else - __asm__ __volatile__("vmrs %0, FPSCR" : "=r"(r.value)); /* read */ -#endif - - if (r.field.bit22) { - return r.field.bit23 ? _MM_ROUND_TOWARD_ZERO : _MM_ROUND_UP; - } else { - return r.field.bit23 ? _MM_ROUND_DOWN : _MM_ROUND_NEAREST; - } -} - -// Copy a to dst, and insert the 16-bit integer i into dst at the location -// specified by imm8. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_insert_pi16 -#define _mm_insert_pi16(a, b, imm) \ - vreinterpret_m64_s16(vset_lane_s16((b), vreinterpret_s16_m64(a), (imm))) - -// Load 128-bits (composed of 4 packed single-precision (32-bit) floating-point -// elements) from memory into dst. mem_addr must be aligned on a 16-byte -// boundary or a general-protection exception may be generated. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_load_ps -FORCE_INLINE __m128 _mm_load_ps(const float *p) -{ - return vreinterpretq_m128_f32(vld1q_f32(p)); -} - -// Load a single-precision (32-bit) floating-point element from memory into all -// elements of dst. -// -// dst[31:0] := MEM[mem_addr+31:mem_addr] -// dst[63:32] := MEM[mem_addr+31:mem_addr] -// dst[95:64] := MEM[mem_addr+31:mem_addr] -// dst[127:96] := MEM[mem_addr+31:mem_addr] -// -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_load_ps1 -#define _mm_load_ps1 _mm_load1_ps - -// Load a single-precision (32-bit) floating-point element from memory into the -// lower of dst, and zero the upper 3 elements. mem_addr does not need to be -// aligned on any particular boundary. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_load_ss -FORCE_INLINE __m128 _mm_load_ss(const float *p) -{ - return vreinterpretq_m128_f32(vsetq_lane_f32(*p, vdupq_n_f32(0), 0)); -} - -// Load a single-precision (32-bit) floating-point element from memory into all -// elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_load1_ps -FORCE_INLINE __m128 _mm_load1_ps(const float *p) -{ - return vreinterpretq_m128_f32(vld1q_dup_f32(p)); -} - -// Load 2 single-precision (32-bit) floating-point elements from memory into the -// upper 2 elements of dst, and copy the lower 2 elements from a to dst. -// mem_addr does not need to be aligned on any particular boundary. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadh_pi -FORCE_INLINE __m128 _mm_loadh_pi(__m128 a, __m64 const *p) -{ - return vreinterpretq_m128_f32( - vcombine_f32(vget_low_f32(a), vld1_f32((const float32_t *) p))); -} - -// Load 2 single-precision (32-bit) floating-point elements from memory into the -// lower 2 elements of dst, and copy the upper 2 elements from a to dst. -// mem_addr does not need to be aligned on any particular boundary. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadl_pi -FORCE_INLINE __m128 _mm_loadl_pi(__m128 a, __m64 const *p) -{ - return vreinterpretq_m128_f32( - vcombine_f32(vld1_f32((const float32_t *) p), vget_high_f32(a))); -} - -// Load 4 single-precision (32-bit) floating-point elements from memory into dst -// in reverse order. mem_addr must be aligned on a 16-byte boundary or a -// general-protection exception may be generated. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadr_ps -FORCE_INLINE __m128 _mm_loadr_ps(const float *p) -{ - float32x4_t v = vrev64q_f32(vld1q_f32(p)); - return vreinterpretq_m128_f32(vextq_f32(v, v, 2)); -} - -// Load 128-bits (composed of 4 packed single-precision (32-bit) floating-point -// elements) from memory into dst. mem_addr does not need to be aligned on any -// particular boundary. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadu_ps -FORCE_INLINE __m128 _mm_loadu_ps(const float *p) -{ - // for neon, alignment doesn't matter, so _mm_load_ps and _mm_loadu_ps are - // equivalent for neon - return vreinterpretq_m128_f32(vld1q_f32(p)); -} - -// Load unaligned 16-bit integer from memory into the first element of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadu_si16 -FORCE_INLINE __m128i _mm_loadu_si16(const void *p) -{ - return vreinterpretq_m128i_s16( - vsetq_lane_s16(*(const int16_t *) p, vdupq_n_s16(0), 0)); -} - -// Load unaligned 64-bit integer from memory into the first element of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadu_si64 -FORCE_INLINE __m128i _mm_loadu_si64(const void *p) -{ - return vreinterpretq_m128i_s64( - vcombine_s64(vld1_s64((const int64_t *) p), vdup_n_s64(0))); -} - -// Allocate size bytes of memory, aligned to the alignment specified in align, -// and return a pointer to the allocated memory. _mm_free should be used to free -// memory that is allocated with _mm_malloc. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_malloc -#if !defined(SSE2NEON_ALLOC_DEFINED) -FORCE_INLINE void *_mm_malloc(size_t size, size_t align) -{ - void *ptr; - if (align == 1) - return malloc(size); - if (align == 2 || (sizeof(void *) == 8 && align == 4)) - align = sizeof(void *); - if (!posix_memalign(&ptr, align, size)) - return ptr; - return NULL; -} -#endif - -// Conditionally store 8-bit integer elements from a into memory using mask -// (elements are not stored when the highest bit is not set in the corresponding -// element) and a non-temporal memory hint. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskmove_si64 -FORCE_INLINE void _mm_maskmove_si64(__m64 a, __m64 mask, char *mem_addr) -{ - int8x8_t shr_mask = vshr_n_s8(vreinterpret_s8_m64(mask), 7); - __m128 b = _mm_load_ps((const float *) mem_addr); - int8x8_t masked = - vbsl_s8(vreinterpret_u8_s8(shr_mask), vreinterpret_s8_m64(a), - vreinterpret_s8_u64(vget_low_u64(vreinterpretq_u64_m128(b)))); - vst1_s8((int8_t *) mem_addr, masked); -} - -// Conditionally store 8-bit integer elements from a into memory using mask -// (elements are not stored when the highest bit is not set in the corresponding -// element) and a non-temporal memory hint. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_m_maskmovq -#define _m_maskmovq(a, mask, mem_addr) _mm_maskmove_si64(a, mask, mem_addr) - -// Compare packed signed 16-bit integers in a and b, and store packed maximum -// values in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_pi16 -FORCE_INLINE __m64 _mm_max_pi16(__m64 a, __m64 b) -{ - return vreinterpret_m64_s16( - vmax_s16(vreinterpret_s16_m64(a), vreinterpret_s16_m64(b))); -} - -// Compare packed single-precision (32-bit) floating-point elements in a and b, -// and store packed maximum values in dst. dst does not follow the IEEE Standard -// for Floating-Point Arithmetic (IEEE 754) maximum value when inputs are NaN or -// signed-zero values. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_ps -FORCE_INLINE __m128 _mm_max_ps(__m128 a, __m128 b) -{ -#if SSE2NEON_PRECISE_MINMAX - float32x4_t _a = vreinterpretq_f32_m128(a); - float32x4_t _b = vreinterpretq_f32_m128(b); - return vreinterpretq_m128_f32(vbslq_f32(vcgtq_f32(_a, _b), _a, _b)); -#else - return vreinterpretq_m128_f32( - vmaxq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); -#endif -} - -// Compare packed unsigned 8-bit integers in a and b, and store packed maximum -// values in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_pu8 -FORCE_INLINE __m64 _mm_max_pu8(__m64 a, __m64 b) -{ - return vreinterpret_m64_u8( - vmax_u8(vreinterpret_u8_m64(a), vreinterpret_u8_m64(b))); -} - -// Compare the lower single-precision (32-bit) floating-point elements in a and -// b, store the maximum value in the lower element of dst, and copy the upper 3 -// packed elements from a to the upper element of dst. dst does not follow the -// IEEE Standard for Floating-Point Arithmetic (IEEE 754) maximum value when -// inputs are NaN or signed-zero values. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_ss -FORCE_INLINE __m128 _mm_max_ss(__m128 a, __m128 b) -{ - float32_t value = vgetq_lane_f32(_mm_max_ps(a, b), 0); - return vreinterpretq_m128_f32( - vsetq_lane_f32(value, vreinterpretq_f32_m128(a), 0)); -} - -// Compare packed signed 16-bit integers in a and b, and store packed minimum -// values in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_min_pi16 -FORCE_INLINE __m64 _mm_min_pi16(__m64 a, __m64 b) -{ - return vreinterpret_m64_s16( - vmin_s16(vreinterpret_s16_m64(a), vreinterpret_s16_m64(b))); -} - -// Compare packed single-precision (32-bit) floating-point elements in a and b, -// and store packed minimum values in dst. dst does not follow the IEEE Standard -// for Floating-Point Arithmetic (IEEE 754) minimum value when inputs are NaN or -// signed-zero values. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_min_ps -FORCE_INLINE __m128 _mm_min_ps(__m128 a, __m128 b) -{ -#if SSE2NEON_PRECISE_MINMAX - float32x4_t _a = vreinterpretq_f32_m128(a); - float32x4_t _b = vreinterpretq_f32_m128(b); - return vreinterpretq_m128_f32(vbslq_f32(vcltq_f32(_a, _b), _a, _b)); -#else - return vreinterpretq_m128_f32( - vminq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); -#endif -} - -// Compare packed unsigned 8-bit integers in a and b, and store packed minimum -// values in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_min_pu8 -FORCE_INLINE __m64 _mm_min_pu8(__m64 a, __m64 b) -{ - return vreinterpret_m64_u8( - vmin_u8(vreinterpret_u8_m64(a), vreinterpret_u8_m64(b))); -} - -// Compare the lower single-precision (32-bit) floating-point elements in a and -// b, store the minimum value in the lower element of dst, and copy the upper 3 -// packed elements from a to the upper element of dst. dst does not follow the -// IEEE Standard for Floating-Point Arithmetic (IEEE 754) minimum value when -// inputs are NaN or signed-zero values. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_min_ss -FORCE_INLINE __m128 _mm_min_ss(__m128 a, __m128 b) -{ - float32_t value = vgetq_lane_f32(_mm_min_ps(a, b), 0); - return vreinterpretq_m128_f32( - vsetq_lane_f32(value, vreinterpretq_f32_m128(a), 0)); -} - -// Move the lower single-precision (32-bit) floating-point element from b to the -// lower element of dst, and copy the upper 3 packed elements from a to the -// upper elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_move_ss -FORCE_INLINE __m128 _mm_move_ss(__m128 a, __m128 b) -{ - return vreinterpretq_m128_f32( - vsetq_lane_f32(vgetq_lane_f32(vreinterpretq_f32_m128(b), 0), - vreinterpretq_f32_m128(a), 0)); -} - -// Move the upper 2 single-precision (32-bit) floating-point elements from b to -// the lower 2 elements of dst, and copy the upper 2 elements from a to the -// upper 2 elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_movehl_ps -FORCE_INLINE __m128 _mm_movehl_ps(__m128 a, __m128 b) -{ -#if defined(aarch64__) - return vreinterpretq_m128_u64( - vzip2q_u64(vreinterpretq_u64_m128(b), vreinterpretq_u64_m128(a))); -#else - float32x2_t a32 = vget_high_f32(vreinterpretq_f32_m128(a)); - float32x2_t b32 = vget_high_f32(vreinterpretq_f32_m128(b)); - return vreinterpretq_m128_f32(vcombine_f32(b32, a32)); -#endif -} - -// Move the lower 2 single-precision (32-bit) floating-point elements from b to -// the upper 2 elements of dst, and copy the lower 2 elements from a to the -// lower 2 elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_movelh_ps -FORCE_INLINE __m128 _mm_movelh_ps(__m128 __A, __m128 __B) -{ - float32x2_t a10 = vget_low_f32(vreinterpretq_f32_m128(__A)); - float32x2_t b10 = vget_low_f32(vreinterpretq_f32_m128(__B)); - return vreinterpretq_m128_f32(vcombine_f32(a10, b10)); -} - -// Create mask from the most significant bit of each 8-bit element in a, and -// store the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_movemask_pi8 -FORCE_INLINE int _mm_movemask_pi8(__m64 a) -{ - uint8x8_t input = vreinterpret_u8_m64(a); -#if defined(__aarch64__) || defined(_M_ARM64) - static const int8_t shift[8] = {0, 1, 2, 3, 4, 5, 6, 7}; - uint8x8_t tmp = vshr_n_u8(input, 7); - return vaddv_u8(vshl_u8(tmp, vld1_s8(shift))); -#else - // Refer the implementation of `_mm_movemask_epi8` - uint16x4_t high_bits = vreinterpret_u16_u8(vshr_n_u8(input, 7)); - uint32x2_t paired16 = - vreinterpret_u32_u16(vsra_n_u16(high_bits, high_bits, 7)); - uint8x8_t paired32 = - vreinterpret_u8_u32(vsra_n_u32(paired16, paired16, 14)); - return vget_lane_u8(paired32, 0) | ((int) vget_lane_u8(paired32, 4) << 4); -#endif -} - -// Set each bit of mask dst based on the most significant bit of the -// corresponding packed single-precision (32-bit) floating-point element in a. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_movemask_ps -FORCE_INLINE int _mm_movemask_ps(__m128 a) -{ - uint32x4_t input = vreinterpretq_u32_m128(a); -#if defined(__aarch64__) || defined(_M_ARM64) - static const int32_t shift[4] = {0, 1, 2, 3}; - uint32x4_t tmp = vshrq_n_u32(input, 31); - return vaddvq_u32(vshlq_u32(tmp, vld1q_s32(shift))); -#else - // Uses the exact same method as _mm_movemask_epi8, see that for details. - // Shift out everything but the sign bits with a 32-bit unsigned shift - // right. - uint64x2_t high_bits = vreinterpretq_u64_u32(vshrq_n_u32(input, 31)); - // Merge the two pairs together with a 64-bit unsigned shift right + add. - uint8x16_t paired = - vreinterpretq_u8_u64(vsraq_n_u64(high_bits, high_bits, 31)); - // Extract the result. - return vgetq_lane_u8(paired, 0) | (vgetq_lane_u8(paired, 8) << 2); -#endif -} - -// Multiply packed single-precision (32-bit) floating-point elements in a and b, -// and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mul_ps -FORCE_INLINE __m128 _mm_mul_ps(__m128 a, __m128 b) -{ - return vreinterpretq_m128_f32( - vmulq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); -} - -// Multiply the lower single-precision (32-bit) floating-point element in a and -// b, store the result in the lower element of dst, and copy the upper 3 packed -// elements from a to the upper elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mul_ss -FORCE_INLINE __m128 _mm_mul_ss(__m128 a, __m128 b) -{ - return _mm_move_ss(a, _mm_mul_ps(a, b)); -} - -// Multiply the packed unsigned 16-bit integers in a and b, producing -// intermediate 32-bit integers, and store the high 16 bits of the intermediate -// integers in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mulhi_pu16 -FORCE_INLINE __m64 _mm_mulhi_pu16(__m64 a, __m64 b) -{ - return vreinterpret_m64_u16(vshrn_n_u32( - vmull_u16(vreinterpret_u16_m64(a), vreinterpret_u16_m64(b)), 16)); -} - -// Compute the bitwise OR of packed single-precision (32-bit) floating-point -// elements in a and b, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_or_ps -FORCE_INLINE __m128 _mm_or_ps(__m128 a, __m128 b) -{ - return vreinterpretq_m128_s32( - vorrq_s32(vreinterpretq_s32_m128(a), vreinterpretq_s32_m128(b))); -} - -// Average packed unsigned 8-bit integers in a and b, and store the results in -// dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_m_pavgb -#define _m_pavgb(a, b) _mm_avg_pu8(a, b) - -// Average packed unsigned 16-bit integers in a and b, and store the results in -// dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_m_pavgw -#define _m_pavgw(a, b) _mm_avg_pu16(a, b) - -// Extract a 16-bit integer from a, selected with imm8, and store the result in -// the lower element of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_m_pextrw -#define _m_pextrw(a, imm) _mm_extract_pi16(a, imm) - -// Copy a to dst, and insert the 16-bit integer i into dst at the location -// specified by imm8. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=m_pinsrw -#define _m_pinsrw(a, i, imm) _mm_insert_pi16(a, i, imm) - -// Compare packed signed 16-bit integers in a and b, and store packed maximum -// values in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_m_pmaxsw -#define _m_pmaxsw(a, b) _mm_max_pi16(a, b) - -// Compare packed unsigned 8-bit integers in a and b, and store packed maximum -// values in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_m_pmaxub -#define _m_pmaxub(a, b) _mm_max_pu8(a, b) - -// Compare packed signed 16-bit integers in a and b, and store packed minimum -// values in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_m_pminsw -#define _m_pminsw(a, b) _mm_min_pi16(a, b) - -// Compare packed unsigned 8-bit integers in a and b, and store packed minimum -// values in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_m_pminub -#define _m_pminub(a, b) _mm_min_pu8(a, b) - -// Create mask from the most significant bit of each 8-bit element in a, and -// store the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_m_pmovmskb -#define _m_pmovmskb(a) _mm_movemask_pi8(a) - -// Multiply the packed unsigned 16-bit integers in a and b, producing -// intermediate 32-bit integers, and store the high 16 bits of the intermediate -// integers in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_m_pmulhuw -#define _m_pmulhuw(a, b) _mm_mulhi_pu16(a, b) - -// Fetch the line of data from memory that contains address p to a location in -// the cache hierarchy specified by the locality hint i. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_prefetch -FORCE_INLINE void _mm_prefetch(char const *p, int i) -{ - (void) i; -#if defined(_MSC_VER) - switch (i) { - case _MM_HINT_NTA: - __prefetch2(p, 1); - break; - case _MM_HINT_T0: - __prefetch2(p, 0); - break; - case _MM_HINT_T1: - __prefetch2(p, 2); - break; - case _MM_HINT_T2: - __prefetch2(p, 4); - break; - } -#else - switch (i) { - case _MM_HINT_NTA: - __builtin_prefetch(p, 0, 0); - break; - case _MM_HINT_T0: - __builtin_prefetch(p, 0, 3); - break; - case _MM_HINT_T1: - __builtin_prefetch(p, 0, 2); - break; - case _MM_HINT_T2: - __builtin_prefetch(p, 0, 1); - break; - } -#endif -} - -// Compute the absolute differences of packed unsigned 8-bit integers in a and -// b, then horizontally sum each consecutive 8 differences to produce four -// unsigned 16-bit integers, and pack these unsigned 16-bit integers in the low -// 16 bits of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=m_psadbw -#define _m_psadbw(a, b) _mm_sad_pu8(a, b) - -// Shuffle 16-bit integers in a using the control in imm8, and store the results -// in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_m_pshufw -#define _m_pshufw(a, imm) _mm_shuffle_pi16(a, imm) - -// Compute the approximate reciprocal of packed single-precision (32-bit) -// floating-point elements in a, and store the results in dst. The maximum -// relative error for this approximation is less than 1.5*2^-12. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_rcp_ps -FORCE_INLINE __m128 _mm_rcp_ps(__m128 in) -{ - float32x4_t recip = vrecpeq_f32(vreinterpretq_f32_m128(in)); - recip = vmulq_f32(recip, vrecpsq_f32(recip, vreinterpretq_f32_m128(in))); -#if SSE2NEON_PRECISE_DIV - // Additional Netwon-Raphson iteration for accuracy - recip = vmulq_f32(recip, vrecpsq_f32(recip, vreinterpretq_f32_m128(in))); -#endif - return vreinterpretq_m128_f32(recip); -} - -// Compute the approximate reciprocal of the lower single-precision (32-bit) -// floating-point element in a, store the result in the lower element of dst, -// and copy the upper 3 packed elements from a to the upper elements of dst. The -// maximum relative error for this approximation is less than 1.5*2^-12. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_rcp_ss -FORCE_INLINE __m128 _mm_rcp_ss(__m128 a) -{ - return _mm_move_ss(a, _mm_rcp_ps(a)); -} - -// Compute the approximate reciprocal square root of packed single-precision -// (32-bit) floating-point elements in a, and store the results in dst. The -// maximum relative error for this approximation is less than 1.5*2^-12. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_rsqrt_ps -FORCE_INLINE __m128 _mm_rsqrt_ps(__m128 in) -{ - float32x4_t out = vrsqrteq_f32(vreinterpretq_f32_m128(in)); - - // Generate masks for detecting whether input has any 0.0f/-0.0f - // (which becomes positive/negative infinity by IEEE-754 arithmetic rules). - const uint32x4_t pos_inf = vdupq_n_u32(0x7F800000); - const uint32x4_t neg_inf = vdupq_n_u32(0xFF800000); - const uint32x4_t has_pos_zero = - vceqq_u32(pos_inf, vreinterpretq_u32_f32(out)); - const uint32x4_t has_neg_zero = - vceqq_u32(neg_inf, vreinterpretq_u32_f32(out)); - - out = vmulq_f32( - out, vrsqrtsq_f32(vmulq_f32(vreinterpretq_f32_m128(in), out), out)); -#if SSE2NEON_PRECISE_SQRT - // Additional Netwon-Raphson iteration for accuracy - out = vmulq_f32( - out, vrsqrtsq_f32(vmulq_f32(vreinterpretq_f32_m128(in), out), out)); -#endif - - // Set output vector element to infinity/negative-infinity if - // the corresponding input vector element is 0.0f/-0.0f. - out = vbslq_f32(has_pos_zero, (float32x4_t) pos_inf, out); - out = vbslq_f32(has_neg_zero, (float32x4_t) neg_inf, out); - - return vreinterpretq_m128_f32(out); -} - -// Compute the approximate reciprocal square root of the lower single-precision -// (32-bit) floating-point element in a, store the result in the lower element -// of dst, and copy the upper 3 packed elements from a to the upper elements of -// dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_rsqrt_ss -FORCE_INLINE __m128 _mm_rsqrt_ss(__m128 in) -{ - return vsetq_lane_f32(vgetq_lane_f32(_mm_rsqrt_ps(in), 0), in, 0); -} - -// Compute the absolute differences of packed unsigned 8-bit integers in a and -// b, then horizontally sum each consecutive 8 differences to produce four -// unsigned 16-bit integers, and pack these unsigned 16-bit integers in the low -// 16 bits of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sad_pu8 -FORCE_INLINE __m64 _mm_sad_pu8(__m64 a, __m64 b) -{ - uint64x1_t t = vpaddl_u32(vpaddl_u16( - vpaddl_u8(vabd_u8(vreinterpret_u8_m64(a), vreinterpret_u8_m64(b))))); - return vreinterpret_m64_u16( - vset_lane_u16((int) vget_lane_u64(t, 0), vdup_n_u16(0), 0)); -} - -// Macro: Set the flush zero bits of the MXCSR control and status register to -// the value in unsigned 32-bit integer a. The flush zero may contain any of the -// following flags: _MM_FLUSH_ZERO_ON or _MM_FLUSH_ZERO_OFF -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_MM_SET_FLUSH_ZERO_MODE -FORCE_INLINE void _sse2neon_mm_set_flush_zero_mode(unsigned int flag) -{ - // AArch32 Advanced SIMD arithmetic always uses the Flush-to-zero setting, - // regardless of the value of the FZ bit. - union { - fpcr_bitfield field; -#if defined(__aarch64__) || defined(_M_ARM64) - uint64_t value; -#else - uint32_t value; -#endif - } r; - -#if defined(__aarch64__) || defined(_M_ARM64) - r.value = _sse2neon_get_fpcr(); -#else - __asm__ __volatile__("vmrs %0, FPSCR" : "=r"(r.value)); /* read */ -#endif - - r.field.bit24 = (flag & _MM_FLUSH_ZERO_MASK) == _MM_FLUSH_ZERO_ON; - -#if defined(__aarch64__) || defined(_M_ARM64) - _sse2neon_set_fpcr(r.value); -#else - __asm__ __volatile__("vmsr FPSCR, %0" ::"r"(r)); /* write */ -#endif -} - -// Set packed single-precision (32-bit) floating-point elements in dst with the -// supplied values. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set_ps -FORCE_INLINE __m128 _mm_set_ps(float w, float z, float y, float x) -{ - float ALIGN_STRUCT(16) data[4] = {x, y, z, w}; - return vreinterpretq_m128_f32(vld1q_f32(data)); -} - -// Broadcast single-precision (32-bit) floating-point value a to all elements of -// dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set_ps1 -FORCE_INLINE __m128 _mm_set_ps1(float _w) -{ - return vreinterpretq_m128_f32(vdupq_n_f32(_w)); -} - -// Macro: Set the rounding mode bits of the MXCSR control and status register to -// the value in unsigned 32-bit integer a. The rounding mode may contain any of -// the following flags: _MM_ROUND_NEAREST, _MM_ROUND_DOWN, _MM_ROUND_UP, -// _MM_ROUND_TOWARD_ZERO -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_MM_SET_ROUNDING_MODE -FORCE_INLINE void _MM_SET_ROUNDING_MODE(int rounding) -{ - union { - fpcr_bitfield field; -#if defined(__aarch64__) || defined(_M_ARM64) - uint64_t value; -#else - uint32_t value; -#endif - } r; - -#if defined(__aarch64__) || defined(_M_ARM64) - r.value = _sse2neon_get_fpcr(); -#else - __asm__ __volatile__("vmrs %0, FPSCR" : "=r"(r.value)); /* read */ -#endif - - switch (rounding) { - case _MM_ROUND_TOWARD_ZERO: - r.field.bit22 = 1; - r.field.bit23 = 1; - break; - case _MM_ROUND_DOWN: - r.field.bit22 = 0; - r.field.bit23 = 1; - break; - case _MM_ROUND_UP: - r.field.bit22 = 1; - r.field.bit23 = 0; - break; - default: //_MM_ROUND_NEAREST - r.field.bit22 = 0; - r.field.bit23 = 0; - } - -#if defined(__aarch64__) || defined(_M_ARM64) - _sse2neon_set_fpcr(r.value); -#else - __asm__ __volatile__("vmsr FPSCR, %0" ::"r"(r)); /* write */ -#endif -} - -// Copy single-precision (32-bit) floating-point element a to the lower element -// of dst, and zero the upper 3 elements. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set_ss -FORCE_INLINE __m128 _mm_set_ss(float a) -{ - return vreinterpretq_m128_f32(vsetq_lane_f32(a, vdupq_n_f32(0), 0)); -} - -// Broadcast single-precision (32-bit) floating-point value a to all elements of -// dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set1_ps -FORCE_INLINE __m128 _mm_set1_ps(float _w) -{ - return vreinterpretq_m128_f32(vdupq_n_f32(_w)); -} - -// Set the MXCSR control and status register with the value in unsigned 32-bit -// integer a. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_setcsr -// FIXME: _mm_setcsr() implementation supports changing the rounding mode only. -FORCE_INLINE void _mm_setcsr(unsigned int a) -{ - _MM_SET_ROUNDING_MODE(a); -} - -// Get the unsigned 32-bit value of the MXCSR control and status register. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_getcsr -// FIXME: _mm_getcsr() implementation supports reading the rounding mode only. -FORCE_INLINE unsigned int _mm_getcsr(void) -{ - return _MM_GET_ROUNDING_MODE(); -} - -// Set packed single-precision (32-bit) floating-point elements in dst with the -// supplied values in reverse order. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_setr_ps -FORCE_INLINE __m128 _mm_setr_ps(float w, float z, float y, float x) -{ - float ALIGN_STRUCT(16) data[4] = {w, z, y, x}; - return vreinterpretq_m128_f32(vld1q_f32(data)); -} - -// Return vector of type __m128 with all elements set to zero. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_setzero_ps -FORCE_INLINE __m128 _mm_setzero_ps(void) -{ - return vreinterpretq_m128_f32(vdupq_n_f32(0)); -} - -// Shuffle 16-bit integers in a using the control in imm8, and store the results -// in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_shuffle_pi16 -#ifdef _sse2neon_shuffle -#define _mm_shuffle_pi16(a, imm) \ - vreinterpret_m64_s16(vshuffle_s16( \ - vreinterpret_s16_m64(a), vreinterpret_s16_m64(a), (imm & 0x3), \ - ((imm >> 2) & 0x3), ((imm >> 4) & 0x3), ((imm >> 6) & 0x3))) -#else -#define _mm_shuffle_pi16(a, imm) \ - _sse2neon_define1( \ - __m64, a, int16x4_t ret; \ - ret = vmov_n_s16( \ - vget_lane_s16(vreinterpret_s16_m64(_a), (imm) & (0x3))); \ - ret = vset_lane_s16( \ - vget_lane_s16(vreinterpret_s16_m64(_a), ((imm) >> 2) & 0x3), ret, \ - 1); \ - ret = vset_lane_s16( \ - vget_lane_s16(vreinterpret_s16_m64(_a), ((imm) >> 4) & 0x3), ret, \ - 2); \ - ret = vset_lane_s16( \ - vget_lane_s16(vreinterpret_s16_m64(_a), ((imm) >> 6) & 0x3), ret, \ - 3); \ - _sse2neon_return(vreinterpret_m64_s16(ret));) -#endif - -// Perform a serializing operation on all store-to-memory instructions that were -// issued prior to this instruction. Guarantees that every store instruction -// that precedes, in program order, is globally visible before any store -// instruction which follows the fence in program order. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sfence -FORCE_INLINE void _mm_sfence(void) -{ - _sse2neon_smp_mb(); -} - -// Perform a serializing operation on all load-from-memory and store-to-memory -// instructions that were issued prior to this instruction. Guarantees that -// every memory access that precedes, in program order, the memory fence -// instruction is globally visible before any memory instruction which follows -// the fence in program order. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mfence -FORCE_INLINE void _mm_mfence(void) -{ - _sse2neon_smp_mb(); -} - -// Perform a serializing operation on all load-from-memory instructions that -// were issued prior to this instruction. Guarantees that every load instruction -// that precedes, in program order, is globally visible before any load -// instruction which follows the fence in program order. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_lfence -FORCE_INLINE void _mm_lfence(void) -{ - _sse2neon_smp_mb(); -} - -// FORCE_INLINE __m128 _mm_shuffle_ps(__m128 a, __m128 b, __constrange(0,255) -// int imm) -#ifdef _sse2neon_shuffle -#define _mm_shuffle_ps(a, b, imm) \ - __extension__({ \ - float32x4_t _input1 = vreinterpretq_f32_m128(a); \ - float32x4_t _input2 = vreinterpretq_f32_m128(b); \ - float32x4_t _shuf = \ - vshuffleq_s32(_input1, _input2, (imm) & (0x3), ((imm) >> 2) & 0x3, \ - (((imm) >> 4) & 0x3) + 4, (((imm) >> 6) & 0x3) + 4); \ - vreinterpretq_m128_f32(_shuf); \ - }) -#else // generic -#define _mm_shuffle_ps(a, b, imm) \ - _sse2neon_define2( \ - __m128, a, b, __m128 ret; switch (imm) { \ - case _MM_SHUFFLE(1, 0, 3, 2): \ - ret = _mm_shuffle_ps_1032(_a, _b); \ - break; \ - case _MM_SHUFFLE(2, 3, 0, 1): \ - ret = _mm_shuffle_ps_2301(_a, _b); \ - break; \ - case _MM_SHUFFLE(0, 3, 2, 1): \ - ret = _mm_shuffle_ps_0321(_a, _b); \ - break; \ - case _MM_SHUFFLE(2, 1, 0, 3): \ - ret = _mm_shuffle_ps_2103(_a, _b); \ - break; \ - case _MM_SHUFFLE(1, 0, 1, 0): \ - ret = _mm_movelh_ps(_a, _b); \ - break; \ - case _MM_SHUFFLE(1, 0, 0, 1): \ - ret = _mm_shuffle_ps_1001(_a, _b); \ - break; \ - case _MM_SHUFFLE(0, 1, 0, 1): \ - ret = _mm_shuffle_ps_0101(_a, _b); \ - break; \ - case _MM_SHUFFLE(3, 2, 1, 0): \ - ret = _mm_shuffle_ps_3210(_a, _b); \ - break; \ - case _MM_SHUFFLE(0, 0, 1, 1): \ - ret = _mm_shuffle_ps_0011(_a, _b); \ - break; \ - case _MM_SHUFFLE(0, 0, 2, 2): \ - ret = _mm_shuffle_ps_0022(_a, _b); \ - break; \ - case _MM_SHUFFLE(2, 2, 0, 0): \ - ret = _mm_shuffle_ps_2200(_a, _b); \ - break; \ - case _MM_SHUFFLE(3, 2, 0, 2): \ - ret = _mm_shuffle_ps_3202(_a, _b); \ - break; \ - case _MM_SHUFFLE(3, 2, 3, 2): \ - ret = _mm_movehl_ps(_b, _a); \ - break; \ - case _MM_SHUFFLE(1, 1, 3, 3): \ - ret = _mm_shuffle_ps_1133(_a, _b); \ - break; \ - case _MM_SHUFFLE(2, 0, 1, 0): \ - ret = _mm_shuffle_ps_2010(_a, _b); \ - break; \ - case _MM_SHUFFLE(2, 0, 0, 1): \ - ret = _mm_shuffle_ps_2001(_a, _b); \ - break; \ - case _MM_SHUFFLE(2, 0, 3, 2): \ - ret = _mm_shuffle_ps_2032(_a, _b); \ - break; \ - default: \ - ret = _mm_shuffle_ps_default(_a, _b, (imm)); \ - break; \ - } _sse2neon_return(ret);) -#endif - -// Compute the square root of packed single-precision (32-bit) floating-point -// elements in a, and store the results in dst. -// Due to ARMv7-A NEON's lack of a precise square root intrinsic, we implement -// square root by multiplying input in with its reciprocal square root before -// using the Newton-Raphson method to approximate the results. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sqrt_ps -FORCE_INLINE __m128 _mm_sqrt_ps(__m128 in) -{ -#if (defined(__aarch64__) || defined(_M_ARM64)) && !SSE2NEON_PRECISE_SQRT - return vreinterpretq_m128_f32(vsqrtq_f32(vreinterpretq_f32_m128(in))); -#else - float32x4_t recip = vrsqrteq_f32(vreinterpretq_f32_m128(in)); - - // Test for vrsqrteq_f32(0) -> positive infinity case. - // Change to zero, so that s * 1/sqrt(s) result is zero too. - const uint32x4_t pos_inf = vdupq_n_u32(0x7F800000); - const uint32x4_t div_by_zero = - vceqq_u32(pos_inf, vreinterpretq_u32_f32(recip)); - recip = vreinterpretq_f32_u32( - vandq_u32(vmvnq_u32(div_by_zero), vreinterpretq_u32_f32(recip))); - - recip = vmulq_f32( - vrsqrtsq_f32(vmulq_f32(recip, recip), vreinterpretq_f32_m128(in)), - recip); - // Additional Netwon-Raphson iteration for accuracy - recip = vmulq_f32( - vrsqrtsq_f32(vmulq_f32(recip, recip), vreinterpretq_f32_m128(in)), - recip); - - // sqrt(s) = s * 1/sqrt(s) - return vreinterpretq_m128_f32(vmulq_f32(vreinterpretq_f32_m128(in), recip)); -#endif -} - -// Compute the square root of the lower single-precision (32-bit) floating-point -// element in a, store the result in the lower element of dst, and copy the -// upper 3 packed elements from a to the upper elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sqrt_ss -FORCE_INLINE __m128 _mm_sqrt_ss(__m128 in) -{ - float32_t value = - vgetq_lane_f32(vreinterpretq_f32_m128(_mm_sqrt_ps(in)), 0); - return vreinterpretq_m128_f32( - vsetq_lane_f32(value, vreinterpretq_f32_m128(in), 0)); -} - -// Store 128-bits (composed of 4 packed single-precision (32-bit) floating-point -// elements) from a into memory. mem_addr must be aligned on a 16-byte boundary -// or a general-protection exception may be generated. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_store_ps -FORCE_INLINE void _mm_store_ps(float *p, __m128 a) -{ - vst1q_f32(p, vreinterpretq_f32_m128(a)); -} - -// Store the lower single-precision (32-bit) floating-point element from a into -// 4 contiguous elements in memory. mem_addr must be aligned on a 16-byte -// boundary or a general-protection exception may be generated. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_store_ps1 -FORCE_INLINE void _mm_store_ps1(float *p, __m128 a) -{ - float32_t a0 = vgetq_lane_f32(vreinterpretq_f32_m128(a), 0); - vst1q_f32(p, vdupq_n_f32(a0)); -} - -// Store the lower single-precision (32-bit) floating-point element from a into -// memory. mem_addr does not need to be aligned on any particular boundary. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_store_ss -FORCE_INLINE void _mm_store_ss(float *p, __m128 a) -{ - vst1q_lane_f32(p, vreinterpretq_f32_m128(a), 0); -} - -// Store the lower single-precision (32-bit) floating-point element from a into -// 4 contiguous elements in memory. mem_addr must be aligned on a 16-byte -// boundary or a general-protection exception may be generated. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_store1_ps -#define _mm_store1_ps _mm_store_ps1 - -// Store the upper 2 single-precision (32-bit) floating-point elements from a -// into memory. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storeh_pi -FORCE_INLINE void _mm_storeh_pi(__m64 *p, __m128 a) -{ - *p = vreinterpret_m64_f32(vget_high_f32(a)); -} - -// Store the lower 2 single-precision (32-bit) floating-point elements from a -// into memory. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storel_pi -FORCE_INLINE void _mm_storel_pi(__m64 *p, __m128 a) -{ - *p = vreinterpret_m64_f32(vget_low_f32(a)); -} - -// Store 4 single-precision (32-bit) floating-point elements from a into memory -// in reverse order. mem_addr must be aligned on a 16-byte boundary or a -// general-protection exception may be generated. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storer_ps -FORCE_INLINE void _mm_storer_ps(float *p, __m128 a) -{ - float32x4_t tmp = vrev64q_f32(vreinterpretq_f32_m128(a)); - float32x4_t rev = vextq_f32(tmp, tmp, 2); - vst1q_f32(p, rev); -} - -// Store 128-bits (composed of 4 packed single-precision (32-bit) floating-point -// elements) from a into memory. mem_addr does not need to be aligned on any -// particular boundary. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storeu_ps -FORCE_INLINE void _mm_storeu_ps(float *p, __m128 a) -{ - vst1q_f32(p, vreinterpretq_f32_m128(a)); -} - -// Stores 16-bits of integer data a at the address p. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storeu_si16 -FORCE_INLINE void _mm_storeu_si16(void *p, __m128i a) -{ - vst1q_lane_s16((int16_t *) p, vreinterpretq_s16_m128i(a), 0); -} - -// Stores 64-bits of integer data a at the address p. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storeu_si64 -FORCE_INLINE void _mm_storeu_si64(void *p, __m128i a) -{ - vst1q_lane_s64((int64_t *) p, vreinterpretq_s64_m128i(a), 0); -} - -// Store 64-bits of integer data from a into memory using a non-temporal memory -// hint. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_stream_pi -FORCE_INLINE void _mm_stream_pi(__m64 *p, __m64 a) -{ - vst1_s64((int64_t *) p, vreinterpret_s64_m64(a)); -} - -// Store 128-bits (composed of 4 packed single-precision (32-bit) floating- -// point elements) from a into memory using a non-temporal memory hint. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_stream_ps -FORCE_INLINE void _mm_stream_ps(float *p, __m128 a) -{ -#if __has_builtin(__builtin_nontemporal_store) - __builtin_nontemporal_store(a, (float32x4_t *) p); -#else - vst1q_f32(p, vreinterpretq_f32_m128(a)); -#endif -} - -// Subtract packed single-precision (32-bit) floating-point elements in b from -// packed single-precision (32-bit) floating-point elements in a, and store the -// results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sub_ps -FORCE_INLINE __m128 _mm_sub_ps(__m128 a, __m128 b) -{ - return vreinterpretq_m128_f32( - vsubq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); -} - -// Subtract the lower single-precision (32-bit) floating-point element in b from -// the lower single-precision (32-bit) floating-point element in a, store the -// result in the lower element of dst, and copy the upper 3 packed elements from -// a to the upper elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sub_ss -FORCE_INLINE __m128 _mm_sub_ss(__m128 a, __m128 b) -{ - return _mm_move_ss(a, _mm_sub_ps(a, b)); -} - -// Macro: Transpose the 4x4 matrix formed by the 4 rows of single-precision -// (32-bit) floating-point elements in row0, row1, row2, and row3, and store the -// transposed matrix in these vectors (row0 now contains column 0, etc.). -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=MM_TRANSPOSE4_PS -#define _MM_TRANSPOSE4_PS(row0, row1, row2, row3) \ - do { \ - float32x4x2_t ROW01 = vtrnq_f32(row0, row1); \ - float32x4x2_t ROW23 = vtrnq_f32(row2, row3); \ - row0 = vcombine_f32(vget_low_f32(ROW01.val[0]), \ - vget_low_f32(ROW23.val[0])); \ - row1 = vcombine_f32(vget_low_f32(ROW01.val[1]), \ - vget_low_f32(ROW23.val[1])); \ - row2 = vcombine_f32(vget_high_f32(ROW01.val[0]), \ - vget_high_f32(ROW23.val[0])); \ - row3 = vcombine_f32(vget_high_f32(ROW01.val[1]), \ - vget_high_f32(ROW23.val[1])); \ - } while (0) - -// according to the documentation, these intrinsics behave the same as the -// non-'u' versions. We'll just alias them here. -#define _mm_ucomieq_ss _mm_comieq_ss -#define _mm_ucomige_ss _mm_comige_ss -#define _mm_ucomigt_ss _mm_comigt_ss -#define _mm_ucomile_ss _mm_comile_ss -#define _mm_ucomilt_ss _mm_comilt_ss -#define _mm_ucomineq_ss _mm_comineq_ss - -// Return vector of type __m128i with undefined elements. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_undefined_si128 -FORCE_INLINE __m128i _mm_undefined_si128(void) -{ -#if defined(__GNUC__) || defined(__clang__) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wuninitialized" -#endif - __m128i a; -#if defined(_MSC_VER) - a = _mm_setzero_si128(); -#endif - return a; -#if defined(__GNUC__) || defined(__clang__) -#pragma GCC diagnostic pop -#endif -} - -// Return vector of type __m128 with undefined elements. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_undefined_ps -FORCE_INLINE __m128 _mm_undefined_ps(void) -{ -#if defined(__GNUC__) || defined(__clang__) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wuninitialized" -#endif - __m128 a; -#if defined(_MSC_VER) - a = _mm_setzero_ps(); -#endif - return a; -#if defined(__GNUC__) || defined(__clang__) -#pragma GCC diagnostic pop -#endif -} - -// Unpack and interleave single-precision (32-bit) floating-point elements from -// the high half a and b, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_unpackhi_ps -FORCE_INLINE __m128 _mm_unpackhi_ps(__m128 a, __m128 b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128_f32( - vzip2q_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); -#else - float32x2_t a1 = vget_high_f32(vreinterpretq_f32_m128(a)); - float32x2_t b1 = vget_high_f32(vreinterpretq_f32_m128(b)); - float32x2x2_t result = vzip_f32(a1, b1); - return vreinterpretq_m128_f32(vcombine_f32(result.val[0], result.val[1])); -#endif -} - -// Unpack and interleave single-precision (32-bit) floating-point elements from -// the low half of a and b, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_unpacklo_ps -FORCE_INLINE __m128 _mm_unpacklo_ps(__m128 a, __m128 b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128_f32( - vzip1q_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); -#else - float32x2_t a1 = vget_low_f32(vreinterpretq_f32_m128(a)); - float32x2_t b1 = vget_low_f32(vreinterpretq_f32_m128(b)); - float32x2x2_t result = vzip_f32(a1, b1); - return vreinterpretq_m128_f32(vcombine_f32(result.val[0], result.val[1])); -#endif -} - -// Compute the bitwise XOR of packed single-precision (32-bit) floating-point -// elements in a and b, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_xor_ps -FORCE_INLINE __m128 _mm_xor_ps(__m128 a, __m128 b) -{ - return vreinterpretq_m128_s32( - veorq_s32(vreinterpretq_s32_m128(a), vreinterpretq_s32_m128(b))); -} - -/* SSE2 */ - -// Add packed 16-bit integers in a and b, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_add_epi16 -FORCE_INLINE __m128i _mm_add_epi16(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_s16( - vaddq_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); -} - -// Add packed 32-bit integers in a and b, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_add_epi32 -FORCE_INLINE __m128i _mm_add_epi32(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_s32( - vaddq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); -} - -// Add packed 64-bit integers in a and b, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_add_epi64 -FORCE_INLINE __m128i _mm_add_epi64(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_s64( - vaddq_s64(vreinterpretq_s64_m128i(a), vreinterpretq_s64_m128i(b))); -} - -// Add packed 8-bit integers in a and b, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_add_epi8 -FORCE_INLINE __m128i _mm_add_epi8(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_s8( - vaddq_s8(vreinterpretq_s8_m128i(a), vreinterpretq_s8_m128i(b))); -} - -// Add packed double-precision (64-bit) floating-point elements in a and b, and -// store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_add_pd -FORCE_INLINE __m128d _mm_add_pd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_f64( - vaddq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); -#else - double *da = (double *) &a; - double *db = (double *) &b; - double c[2]; - c[0] = da[0] + db[0]; - c[1] = da[1] + db[1]; - return vld1q_f32((float32_t *) c); -#endif -} - -// Add the lower double-precision (64-bit) floating-point element in a and b, -// store the result in the lower element of dst, and copy the upper element from -// a to the upper element of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_add_sd -FORCE_INLINE __m128d _mm_add_sd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return _mm_move_sd(a, _mm_add_pd(a, b)); -#else - double *da = (double *) &a; - double *db = (double *) &b; - double c[2]; - c[0] = da[0] + db[0]; - c[1] = da[1]; - return vld1q_f32((float32_t *) c); -#endif -} - -// Add 64-bit integers a and b, and store the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_add_si64 -FORCE_INLINE __m64 _mm_add_si64(__m64 a, __m64 b) -{ - return vreinterpret_m64_s64( - vadd_s64(vreinterpret_s64_m64(a), vreinterpret_s64_m64(b))); -} - -// Add packed signed 16-bit integers in a and b using saturation, and store the -// results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_adds_epi16 -FORCE_INLINE __m128i _mm_adds_epi16(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_s16( - vqaddq_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); -} - -// Add packed signed 8-bit integers in a and b using saturation, and store the -// results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_adds_epi8 -FORCE_INLINE __m128i _mm_adds_epi8(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_s8( - vqaddq_s8(vreinterpretq_s8_m128i(a), vreinterpretq_s8_m128i(b))); -} - -// Add packed unsigned 16-bit integers in a and b using saturation, and store -// the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_adds_epu16 -FORCE_INLINE __m128i _mm_adds_epu16(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_u16( - vqaddq_u16(vreinterpretq_u16_m128i(a), vreinterpretq_u16_m128i(b))); -} - -// Add packed unsigned 8-bit integers in a and b using saturation, and store the -// results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_adds_epu8 -FORCE_INLINE __m128i _mm_adds_epu8(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_u8( - vqaddq_u8(vreinterpretq_u8_m128i(a), vreinterpretq_u8_m128i(b))); -} - -// Compute the bitwise AND of packed double-precision (64-bit) floating-point -// elements in a and b, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_and_pd -FORCE_INLINE __m128d _mm_and_pd(__m128d a, __m128d b) -{ - return vreinterpretq_m128d_s64( - vandq_s64(vreinterpretq_s64_m128d(a), vreinterpretq_s64_m128d(b))); -} - -// Compute the bitwise AND of 128 bits (representing integer data) in a and b, -// and store the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_and_si128 -FORCE_INLINE __m128i _mm_and_si128(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_s32( - vandq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); -} - -// Compute the bitwise NOT of packed double-precision (64-bit) floating-point -// elements in a and then AND with b, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_andnot_pd -FORCE_INLINE __m128d _mm_andnot_pd(__m128d a, __m128d b) -{ - // *NOTE* argument swap - return vreinterpretq_m128d_s64( - vbicq_s64(vreinterpretq_s64_m128d(b), vreinterpretq_s64_m128d(a))); -} - -// Compute the bitwise NOT of 128 bits (representing integer data) in a and then -// AND with b, and store the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_andnot_si128 -FORCE_INLINE __m128i _mm_andnot_si128(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_s32( - vbicq_s32(vreinterpretq_s32_m128i(b), - vreinterpretq_s32_m128i(a))); // *NOTE* argument swap -} - -// Average packed unsigned 16-bit integers in a and b, and store the results in -// dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_avg_epu16 -FORCE_INLINE __m128i _mm_avg_epu16(__m128i a, __m128i b) -{ - return (__m128i) vrhaddq_u16(vreinterpretq_u16_m128i(a), - vreinterpretq_u16_m128i(b)); -} - -// Average packed unsigned 8-bit integers in a and b, and store the results in -// dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_avg_epu8 -FORCE_INLINE __m128i _mm_avg_epu8(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_u8( - vrhaddq_u8(vreinterpretq_u8_m128i(a), vreinterpretq_u8_m128i(b))); -} - -// Shift a left by imm8 bytes while shifting in zeros, and store the results in -// dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_bslli_si128 -#define _mm_bslli_si128(a, imm) _mm_slli_si128(a, imm) - -// Shift a right by imm8 bytes while shifting in zeros, and store the results in -// dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_bsrli_si128 -#define _mm_bsrli_si128(a, imm) _mm_srli_si128(a, imm) - -// Cast vector of type __m128d to type __m128. This intrinsic is only used for -// compilation and does not generate any instructions, thus it has zero latency. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_castpd_ps -FORCE_INLINE __m128 _mm_castpd_ps(__m128d a) -{ - return vreinterpretq_m128_s64(vreinterpretq_s64_m128d(a)); -} - -// Cast vector of type __m128d to type __m128i. This intrinsic is only used for -// compilation and does not generate any instructions, thus it has zero latency. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_castpd_si128 -FORCE_INLINE __m128i _mm_castpd_si128(__m128d a) -{ - return vreinterpretq_m128i_s64(vreinterpretq_s64_m128d(a)); -} - -// Cast vector of type __m128 to type __m128d. This intrinsic is only used for -// compilation and does not generate any instructions, thus it has zero latency. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_castps_pd -FORCE_INLINE __m128d _mm_castps_pd(__m128 a) -{ - return vreinterpretq_m128d_s32(vreinterpretq_s32_m128(a)); -} - -// Cast vector of type __m128 to type __m128i. This intrinsic is only used for -// compilation and does not generate any instructions, thus it has zero latency. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_castps_si128 -FORCE_INLINE __m128i _mm_castps_si128(__m128 a) -{ - return vreinterpretq_m128i_s32(vreinterpretq_s32_m128(a)); -} - -// Cast vector of type __m128i to type __m128d. This intrinsic is only used for -// compilation and does not generate any instructions, thus it has zero latency. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_castsi128_pd -FORCE_INLINE __m128d _mm_castsi128_pd(__m128i a) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_f64(vreinterpretq_f64_m128i(a)); -#else - return vreinterpretq_m128d_f32(vreinterpretq_f32_m128i(a)); -#endif -} - -// Cast vector of type __m128i to type __m128. This intrinsic is only used for -// compilation and does not generate any instructions, thus it has zero latency. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_castsi128_ps -FORCE_INLINE __m128 _mm_castsi128_ps(__m128i a) -{ - return vreinterpretq_m128_s32(vreinterpretq_s32_m128i(a)); -} - -// Invalidate and flush the cache line that contains p from all levels of the -// cache hierarchy. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_clflush -#if defined(__APPLE__) -#include -#endif -FORCE_INLINE void _mm_clflush(void const *p) -{ - (void) p; - - /* sys_icache_invalidate is supported since macOS 10.5. - * However, it does not work on non-jailbroken iOS devices, although the - * compilation is successful. - */ -#if defined(__APPLE__) - sys_icache_invalidate((void *) (uintptr_t) p, SSE2NEON_CACHELINE_SIZE); -#elif defined(__GNUC__) || defined(__clang__) - uintptr_t ptr = (uintptr_t) p; - __builtin___clear_cache((char *) ptr, - (char *) ptr + SSE2NEON_CACHELINE_SIZE); -#elif (_MSC_VER) && SSE2NEON_INCLUDE_WINDOWS_H - FlushInstructionCache(GetCurrentProcess(), p, SSE2NEON_CACHELINE_SIZE); -#endif -} - -// Compare packed 16-bit integers in a and b for equality, and store the results -// in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpeq_epi16 -FORCE_INLINE __m128i _mm_cmpeq_epi16(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_u16( - vceqq_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); -} - -// Compare packed 32-bit integers in a and b for equality, and store the results -// in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpeq_epi32 -FORCE_INLINE __m128i _mm_cmpeq_epi32(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_u32( - vceqq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); -} - -// Compare packed 8-bit integers in a and b for equality, and store the results -// in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpeq_epi8 -FORCE_INLINE __m128i _mm_cmpeq_epi8(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_u8( - vceqq_s8(vreinterpretq_s8_m128i(a), vreinterpretq_s8_m128i(b))); -} - -// Compare packed double-precision (64-bit) floating-point elements in a and b -// for equality, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpeq_pd -FORCE_INLINE __m128d _mm_cmpeq_pd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_u64( - vceqq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); -#else - // (a == b) -> (a_lo == b_lo) && (a_hi == b_hi) - uint32x4_t cmp = - vceqq_u32(vreinterpretq_u32_m128d(a), vreinterpretq_u32_m128d(b)); - uint32x4_t swapped = vrev64q_u32(cmp); - return vreinterpretq_m128d_u32(vandq_u32(cmp, swapped)); -#endif -} - -// Compare the lower double-precision (64-bit) floating-point elements in a and -// b for equality, store the result in the lower element of dst, and copy the -// upper element from a to the upper element of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpeq_sd -FORCE_INLINE __m128d _mm_cmpeq_sd(__m128d a, __m128d b) -{ - return _mm_move_sd(a, _mm_cmpeq_pd(a, b)); -} - -// Compare packed double-precision (64-bit) floating-point elements in a and b -// for greater-than-or-equal, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpge_pd -FORCE_INLINE __m128d _mm_cmpge_pd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_u64( - vcgeq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); -#else - uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); - uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); - uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); - uint64_t b1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(b)); - uint64_t d[2]; - d[0] = (*(double *) &a0) >= (*(double *) &b0) ? ~UINT64_C(0) : UINT64_C(0); - d[1] = (*(double *) &a1) >= (*(double *) &b1) ? ~UINT64_C(0) : UINT64_C(0); - - return vreinterpretq_m128d_u64(vld1q_u64(d)); -#endif -} - -// Compare the lower double-precision (64-bit) floating-point elements in a and -// b for greater-than-or-equal, store the result in the lower element of dst, -// and copy the upper element from a to the upper element of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpge_sd -FORCE_INLINE __m128d _mm_cmpge_sd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return _mm_move_sd(a, _mm_cmpge_pd(a, b)); -#else - // expand "_mm_cmpge_pd()" to reduce unnecessary operations - uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); - uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); - uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); - uint64_t d[2]; - d[0] = (*(double *) &a0) >= (*(double *) &b0) ? ~UINT64_C(0) : UINT64_C(0); - d[1] = a1; - - return vreinterpretq_m128d_u64(vld1q_u64(d)); -#endif -} - -// Compare packed signed 16-bit integers in a and b for greater-than, and store -// the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpgt_epi16 -FORCE_INLINE __m128i _mm_cmpgt_epi16(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_u16( - vcgtq_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); -} - -// Compare packed signed 32-bit integers in a and b for greater-than, and store -// the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpgt_epi32 -FORCE_INLINE __m128i _mm_cmpgt_epi32(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_u32( - vcgtq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); -} - -// Compare packed signed 8-bit integers in a and b for greater-than, and store -// the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpgt_epi8 -FORCE_INLINE __m128i _mm_cmpgt_epi8(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_u8( - vcgtq_s8(vreinterpretq_s8_m128i(a), vreinterpretq_s8_m128i(b))); -} - -// Compare packed double-precision (64-bit) floating-point elements in a and b -// for greater-than, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpgt_pd -FORCE_INLINE __m128d _mm_cmpgt_pd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_u64( - vcgtq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); -#else - uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); - uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); - uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); - uint64_t b1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(b)); - uint64_t d[2]; - d[0] = (*(double *) &a0) > (*(double *) &b0) ? ~UINT64_C(0) : UINT64_C(0); - d[1] = (*(double *) &a1) > (*(double *) &b1) ? ~UINT64_C(0) : UINT64_C(0); - - return vreinterpretq_m128d_u64(vld1q_u64(d)); -#endif -} - -// Compare the lower double-precision (64-bit) floating-point elements in a and -// b for greater-than, store the result in the lower element of dst, and copy -// the upper element from a to the upper element of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpgt_sd -FORCE_INLINE __m128d _mm_cmpgt_sd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return _mm_move_sd(a, _mm_cmpgt_pd(a, b)); -#else - // expand "_mm_cmpge_pd()" to reduce unnecessary operations - uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); - uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); - uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); - uint64_t d[2]; - d[0] = (*(double *) &a0) > (*(double *) &b0) ? ~UINT64_C(0) : UINT64_C(0); - d[1] = a1; - - return vreinterpretq_m128d_u64(vld1q_u64(d)); -#endif -} - -// Compare packed double-precision (64-bit) floating-point elements in a and b -// for less-than-or-equal, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmple_pd -FORCE_INLINE __m128d _mm_cmple_pd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_u64( - vcleq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); -#else - uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); - uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); - uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); - uint64_t b1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(b)); - uint64_t d[2]; - d[0] = (*(double *) &a0) <= (*(double *) &b0) ? ~UINT64_C(0) : UINT64_C(0); - d[1] = (*(double *) &a1) <= (*(double *) &b1) ? ~UINT64_C(0) : UINT64_C(0); - - return vreinterpretq_m128d_u64(vld1q_u64(d)); -#endif -} - -// Compare the lower double-precision (64-bit) floating-point elements in a and -// b for less-than-or-equal, store the result in the lower element of dst, and -// copy the upper element from a to the upper element of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmple_sd -FORCE_INLINE __m128d _mm_cmple_sd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return _mm_move_sd(a, _mm_cmple_pd(a, b)); -#else - // expand "_mm_cmpge_pd()" to reduce unnecessary operations - uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); - uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); - uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); - uint64_t d[2]; - d[0] = (*(double *) &a0) <= (*(double *) &b0) ? ~UINT64_C(0) : UINT64_C(0); - d[1] = a1; - - return vreinterpretq_m128d_u64(vld1q_u64(d)); -#endif -} - -// Compare packed signed 16-bit integers in a and b for less-than, and store the -// results in dst. Note: This intrinsic emits the pcmpgtw instruction with the -// order of the operands switched. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmplt_epi16 -FORCE_INLINE __m128i _mm_cmplt_epi16(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_u16( - vcltq_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); -} - -// Compare packed signed 32-bit integers in a and b for less-than, and store the -// results in dst. Note: This intrinsic emits the pcmpgtd instruction with the -// order of the operands switched. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmplt_epi32 -FORCE_INLINE __m128i _mm_cmplt_epi32(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_u32( - vcltq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); -} - -// Compare packed signed 8-bit integers in a and b for less-than, and store the -// results in dst. Note: This intrinsic emits the pcmpgtb instruction with the -// order of the operands switched. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmplt_epi8 -FORCE_INLINE __m128i _mm_cmplt_epi8(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_u8( - vcltq_s8(vreinterpretq_s8_m128i(a), vreinterpretq_s8_m128i(b))); -} - -// Compare packed double-precision (64-bit) floating-point elements in a and b -// for less-than, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmplt_pd -FORCE_INLINE __m128d _mm_cmplt_pd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_u64( - vcltq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); -#else - uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); - uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); - uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); - uint64_t b1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(b)); - uint64_t d[2]; - d[0] = (*(double *) &a0) < (*(double *) &b0) ? ~UINT64_C(0) : UINT64_C(0); - d[1] = (*(double *) &a1) < (*(double *) &b1) ? ~UINT64_C(0) : UINT64_C(0); - - return vreinterpretq_m128d_u64(vld1q_u64(d)); -#endif -} - -// Compare the lower double-precision (64-bit) floating-point elements in a and -// b for less-than, store the result in the lower element of dst, and copy the -// upper element from a to the upper element of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmplt_sd -FORCE_INLINE __m128d _mm_cmplt_sd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return _mm_move_sd(a, _mm_cmplt_pd(a, b)); -#else - uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); - uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); - uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); - uint64_t d[2]; - d[0] = (*(double *) &a0) < (*(double *) &b0) ? ~UINT64_C(0) : UINT64_C(0); - d[1] = a1; - - return vreinterpretq_m128d_u64(vld1q_u64(d)); -#endif -} - -// Compare packed double-precision (64-bit) floating-point elements in a and b -// for not-equal, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpneq_pd -FORCE_INLINE __m128d _mm_cmpneq_pd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_s32(vmvnq_s32(vreinterpretq_s32_u64( - vceqq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))))); -#else - // (a == b) -> (a_lo == b_lo) && (a_hi == b_hi) - uint32x4_t cmp = - vceqq_u32(vreinterpretq_u32_m128d(a), vreinterpretq_u32_m128d(b)); - uint32x4_t swapped = vrev64q_u32(cmp); - return vreinterpretq_m128d_u32(vmvnq_u32(vandq_u32(cmp, swapped))); -#endif -} - -// Compare the lower double-precision (64-bit) floating-point elements in a and -// b for not-equal, store the result in the lower element of dst, and copy the -// upper element from a to the upper element of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpneq_sd -FORCE_INLINE __m128d _mm_cmpneq_sd(__m128d a, __m128d b) -{ - return _mm_move_sd(a, _mm_cmpneq_pd(a, b)); -} - -// Compare packed double-precision (64-bit) floating-point elements in a and b -// for not-greater-than-or-equal, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpnge_pd -FORCE_INLINE __m128d _mm_cmpnge_pd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_u64(veorq_u64( - vcgeq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b)), - vdupq_n_u64(UINT64_MAX))); -#else - uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); - uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); - uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); - uint64_t b1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(b)); - uint64_t d[2]; - d[0] = - !((*(double *) &a0) >= (*(double *) &b0)) ? ~UINT64_C(0) : UINT64_C(0); - d[1] = - !((*(double *) &a1) >= (*(double *) &b1)) ? ~UINT64_C(0) : UINT64_C(0); - - return vreinterpretq_m128d_u64(vld1q_u64(d)); -#endif -} - -// Compare the lower double-precision (64-bit) floating-point elements in a and -// b for not-greater-than-or-equal, store the result in the lower element of -// dst, and copy the upper element from a to the upper element of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpnge_sd -FORCE_INLINE __m128d _mm_cmpnge_sd(__m128d a, __m128d b) -{ - return _mm_move_sd(a, _mm_cmpnge_pd(a, b)); -} - -// Compare packed double-precision (64-bit) floating-point elements in a and b -// for not-greater-than, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_cmpngt_pd -FORCE_INLINE __m128d _mm_cmpngt_pd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_u64(veorq_u64( - vcgtq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b)), - vdupq_n_u64(UINT64_MAX))); -#else - uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); - uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); - uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); - uint64_t b1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(b)); - uint64_t d[2]; - d[0] = - !((*(double *) &a0) > (*(double *) &b0)) ? ~UINT64_C(0) : UINT64_C(0); - d[1] = - !((*(double *) &a1) > (*(double *) &b1)) ? ~UINT64_C(0) : UINT64_C(0); - - return vreinterpretq_m128d_u64(vld1q_u64(d)); -#endif -} - -// Compare the lower double-precision (64-bit) floating-point elements in a and -// b for not-greater-than, store the result in the lower element of dst, and -// copy the upper element from a to the upper element of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpngt_sd -FORCE_INLINE __m128d _mm_cmpngt_sd(__m128d a, __m128d b) -{ - return _mm_move_sd(a, _mm_cmpngt_pd(a, b)); -} - -// Compare packed double-precision (64-bit) floating-point elements in a and b -// for not-less-than-or-equal, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpnle_pd -FORCE_INLINE __m128d _mm_cmpnle_pd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_u64(veorq_u64( - vcleq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b)), - vdupq_n_u64(UINT64_MAX))); -#else - uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); - uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); - uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); - uint64_t b1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(b)); - uint64_t d[2]; - d[0] = - !((*(double *) &a0) <= (*(double *) &b0)) ? ~UINT64_C(0) : UINT64_C(0); - d[1] = - !((*(double *) &a1) <= (*(double *) &b1)) ? ~UINT64_C(0) : UINT64_C(0); - - return vreinterpretq_m128d_u64(vld1q_u64(d)); -#endif -} - -// Compare the lower double-precision (64-bit) floating-point elements in a and -// b for not-less-than-or-equal, store the result in the lower element of dst, -// and copy the upper element from a to the upper element of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpnle_sd -FORCE_INLINE __m128d _mm_cmpnle_sd(__m128d a, __m128d b) -{ - return _mm_move_sd(a, _mm_cmpnle_pd(a, b)); -} - -// Compare packed double-precision (64-bit) floating-point elements in a and b -// for not-less-than, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpnlt_pd -FORCE_INLINE __m128d _mm_cmpnlt_pd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_u64(veorq_u64( - vcltq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b)), - vdupq_n_u64(UINT64_MAX))); -#else - uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); - uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); - uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); - uint64_t b1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(b)); - uint64_t d[2]; - d[0] = - !((*(double *) &a0) < (*(double *) &b0)) ? ~UINT64_C(0) : UINT64_C(0); - d[1] = - !((*(double *) &a1) < (*(double *) &b1)) ? ~UINT64_C(0) : UINT64_C(0); - - return vreinterpretq_m128d_u64(vld1q_u64(d)); -#endif -} - -// Compare the lower double-precision (64-bit) floating-point elements in a and -// b for not-less-than, store the result in the lower element of dst, and copy -// the upper element from a to the upper element of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpnlt_sd -FORCE_INLINE __m128d _mm_cmpnlt_sd(__m128d a, __m128d b) -{ - return _mm_move_sd(a, _mm_cmpnlt_pd(a, b)); -} - -// Compare packed double-precision (64-bit) floating-point elements in a and b -// to see if neither is NaN, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpord_pd -FORCE_INLINE __m128d _mm_cmpord_pd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - // Excluding NaNs, any two floating point numbers can be compared. - uint64x2_t not_nan_a = - vceqq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(a)); - uint64x2_t not_nan_b = - vceqq_f64(vreinterpretq_f64_m128d(b), vreinterpretq_f64_m128d(b)); - return vreinterpretq_m128d_u64(vandq_u64(not_nan_a, not_nan_b)); -#else - uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); - uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); - uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); - uint64_t b1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(b)); - uint64_t d[2]; - d[0] = ((*(double *) &a0) == (*(double *) &a0) && - (*(double *) &b0) == (*(double *) &b0)) - ? ~UINT64_C(0) - : UINT64_C(0); - d[1] = ((*(double *) &a1) == (*(double *) &a1) && - (*(double *) &b1) == (*(double *) &b1)) - ? ~UINT64_C(0) - : UINT64_C(0); - - return vreinterpretq_m128d_u64(vld1q_u64(d)); -#endif -} - -// Compare the lower double-precision (64-bit) floating-point elements in a and -// b to see if neither is NaN, store the result in the lower element of dst, and -// copy the upper element from a to the upper element of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpord_sd -FORCE_INLINE __m128d _mm_cmpord_sd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return _mm_move_sd(a, _mm_cmpord_pd(a, b)); -#else - uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); - uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); - uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); - uint64_t d[2]; - d[0] = ((*(double *) &a0) == (*(double *) &a0) && - (*(double *) &b0) == (*(double *) &b0)) - ? ~UINT64_C(0) - : UINT64_C(0); - d[1] = a1; - - return vreinterpretq_m128d_u64(vld1q_u64(d)); -#endif -} - -// Compare packed double-precision (64-bit) floating-point elements in a and b -// to see if either is NaN, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpunord_pd -FORCE_INLINE __m128d _mm_cmpunord_pd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - // Two NaNs are not equal in comparison operation. - uint64x2_t not_nan_a = - vceqq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(a)); - uint64x2_t not_nan_b = - vceqq_f64(vreinterpretq_f64_m128d(b), vreinterpretq_f64_m128d(b)); - return vreinterpretq_m128d_s32( - vmvnq_s32(vreinterpretq_s32_u64(vandq_u64(not_nan_a, not_nan_b)))); -#else - uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); - uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); - uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); - uint64_t b1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(b)); - uint64_t d[2]; - d[0] = ((*(double *) &a0) == (*(double *) &a0) && - (*(double *) &b0) == (*(double *) &b0)) - ? UINT64_C(0) - : ~UINT64_C(0); - d[1] = ((*(double *) &a1) == (*(double *) &a1) && - (*(double *) &b1) == (*(double *) &b1)) - ? UINT64_C(0) - : ~UINT64_C(0); - - return vreinterpretq_m128d_u64(vld1q_u64(d)); -#endif -} - -// Compare the lower double-precision (64-bit) floating-point elements in a and -// b to see if either is NaN, store the result in the lower element of dst, and -// copy the upper element from a to the upper element of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpunord_sd -FORCE_INLINE __m128d _mm_cmpunord_sd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return _mm_move_sd(a, _mm_cmpunord_pd(a, b)); -#else - uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); - uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); - uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); - uint64_t d[2]; - d[0] = ((*(double *) &a0) == (*(double *) &a0) && - (*(double *) &b0) == (*(double *) &b0)) - ? UINT64_C(0) - : ~UINT64_C(0); - d[1] = a1; - - return vreinterpretq_m128d_u64(vld1q_u64(d)); -#endif -} - -// Compare the lower double-precision (64-bit) floating-point element in a and b -// for greater-than-or-equal, and return the boolean result (0 or 1). -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_comige_sd -FORCE_INLINE int _mm_comige_sd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vgetq_lane_u64(vcgeq_f64(a, b), 0) & 0x1; -#else - uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); - uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); - - return (*(double *) &a0 >= *(double *) &b0); -#endif -} - -// Compare the lower double-precision (64-bit) floating-point element in a and b -// for greater-than, and return the boolean result (0 or 1). -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_comigt_sd -FORCE_INLINE int _mm_comigt_sd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vgetq_lane_u64(vcgtq_f64(a, b), 0) & 0x1; -#else - uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); - uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); - - return (*(double *) &a0 > *(double *) &b0); -#endif -} - -// Compare the lower double-precision (64-bit) floating-point element in a and b -// for less-than-or-equal, and return the boolean result (0 or 1). -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_comile_sd -FORCE_INLINE int _mm_comile_sd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vgetq_lane_u64(vcleq_f64(a, b), 0) & 0x1; -#else - uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); - uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); - - return (*(double *) &a0 <= *(double *) &b0); -#endif -} - -// Compare the lower double-precision (64-bit) floating-point element in a and b -// for less-than, and return the boolean result (0 or 1). -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_comilt_sd -FORCE_INLINE int _mm_comilt_sd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vgetq_lane_u64(vcltq_f64(a, b), 0) & 0x1; -#else - uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); - uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); - - return (*(double *) &a0 < *(double *) &b0); -#endif -} - -// Compare the lower double-precision (64-bit) floating-point element in a and b -// for equality, and return the boolean result (0 or 1). -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_comieq_sd -FORCE_INLINE int _mm_comieq_sd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vgetq_lane_u64(vceqq_f64(a, b), 0) & 0x1; -#else - uint32x4_t a_not_nan = - vceqq_u32(vreinterpretq_u32_m128d(a), vreinterpretq_u32_m128d(a)); - uint32x4_t b_not_nan = - vceqq_u32(vreinterpretq_u32_m128d(b), vreinterpretq_u32_m128d(b)); - uint32x4_t a_and_b_not_nan = vandq_u32(a_not_nan, b_not_nan); - uint32x4_t a_eq_b = - vceqq_u32(vreinterpretq_u32_m128d(a), vreinterpretq_u32_m128d(b)); - uint64x2_t and_results = vandq_u64(vreinterpretq_u64_u32(a_and_b_not_nan), - vreinterpretq_u64_u32(a_eq_b)); - return vgetq_lane_u64(and_results, 0) & 0x1; -#endif -} - -// Compare the lower double-precision (64-bit) floating-point element in a and b -// for not-equal, and return the boolean result (0 or 1). -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_comineq_sd -FORCE_INLINE int _mm_comineq_sd(__m128d a, __m128d b) -{ - return !_mm_comieq_sd(a, b); -} - -// Convert packed signed 32-bit integers in a to packed double-precision -// (64-bit) floating-point elements, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepi32_pd -FORCE_INLINE __m128d _mm_cvtepi32_pd(__m128i a) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_f64( - vcvtq_f64_s64(vmovl_s32(vget_low_s32(vreinterpretq_s32_m128i(a))))); -#else - double a0 = (double) vgetq_lane_s32(vreinterpretq_s32_m128i(a), 0); - double a1 = (double) vgetq_lane_s32(vreinterpretq_s32_m128i(a), 1); - return _mm_set_pd(a1, a0); -#endif -} - -// Convert packed signed 32-bit integers in a to packed single-precision -// (32-bit) floating-point elements, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepi32_ps -FORCE_INLINE __m128 _mm_cvtepi32_ps(__m128i a) -{ - return vreinterpretq_m128_f32(vcvtq_f32_s32(vreinterpretq_s32_m128i(a))); -} - -// Convert packed double-precision (64-bit) floating-point elements in a to -// packed 32-bit integers, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtpd_epi32 -FORCE_INLINE __m128i _mm_cvtpd_epi32(__m128d a) -{ -// vrnd32xq_f64 not supported on clang -#if defined(__ARM_FEATURE_FRINT) && !defined(__clang__) - float64x2_t rounded = vrnd32xq_f64(vreinterpretq_f64_m128d(a)); - int64x2_t integers = vcvtq_s64_f64(rounded); - return vreinterpretq_m128i_s32( - vcombine_s32(vmovn_s64(integers), vdup_n_s32(0))); -#else - __m128d rnd = _mm_round_pd(a, _MM_FROUND_CUR_DIRECTION); - double d0 = ((double *) &rnd)[0]; - double d1 = ((double *) &rnd)[1]; - return _mm_set_epi32(0, 0, (int32_t) d1, (int32_t) d0); -#endif -} - -// Convert packed double-precision (64-bit) floating-point elements in a to -// packed 32-bit integers, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtpd_pi32 -FORCE_INLINE __m64 _mm_cvtpd_pi32(__m128d a) -{ - __m128d rnd = _mm_round_pd(a, _MM_FROUND_CUR_DIRECTION); - double d0 = ((double *) &rnd)[0]; - double d1 = ((double *) &rnd)[1]; - int32_t ALIGN_STRUCT(16) data[2] = {(int32_t) d0, (int32_t) d1}; - return vreinterpret_m64_s32(vld1_s32(data)); -} - -// Convert packed double-precision (64-bit) floating-point elements in a to -// packed single-precision (32-bit) floating-point elements, and store the -// results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtpd_ps -FORCE_INLINE __m128 _mm_cvtpd_ps(__m128d a) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - float32x2_t tmp = vcvt_f32_f64(vreinterpretq_f64_m128d(a)); - return vreinterpretq_m128_f32(vcombine_f32(tmp, vdup_n_f32(0))); -#else - float a0 = (float) ((double *) &a)[0]; - float a1 = (float) ((double *) &a)[1]; - return _mm_set_ps(0, 0, a1, a0); -#endif -} - -// Convert packed signed 32-bit integers in a to packed double-precision -// (64-bit) floating-point elements, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtpi32_pd -FORCE_INLINE __m128d _mm_cvtpi32_pd(__m64 a) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_f64( - vcvtq_f64_s64(vmovl_s32(vreinterpret_s32_m64(a)))); -#else - double a0 = (double) vget_lane_s32(vreinterpret_s32_m64(a), 0); - double a1 = (double) vget_lane_s32(vreinterpret_s32_m64(a), 1); - return _mm_set_pd(a1, a0); -#endif -} - -// Convert packed single-precision (32-bit) floating-point elements in a to -// packed 32-bit integers, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtps_epi32 -// *NOTE*. The default rounding mode on SSE is 'round to even', which ARMv7-A -// does not support! It is supported on ARMv8-A however. -FORCE_INLINE __m128i _mm_cvtps_epi32(__m128 a) -{ -#if defined(__ARM_FEATURE_FRINT) - return vreinterpretq_m128i_s32(vcvtq_s32_f32(vrnd32xq_f32(a))); -#elif (defined(__aarch64__) || defined(_M_ARM64)) || \ - defined(__ARM_FEATURE_DIRECTED_ROUNDING) - switch (_MM_GET_ROUNDING_MODE()) { - case _MM_ROUND_NEAREST: - return vreinterpretq_m128i_s32(vcvtnq_s32_f32(a)); - case _MM_ROUND_DOWN: - return vreinterpretq_m128i_s32(vcvtmq_s32_f32(a)); - case _MM_ROUND_UP: - return vreinterpretq_m128i_s32(vcvtpq_s32_f32(a)); - default: // _MM_ROUND_TOWARD_ZERO - return vreinterpretq_m128i_s32(vcvtq_s32_f32(a)); - } -#else - float *f = (float *) &a; - switch (_MM_GET_ROUNDING_MODE()) { - case _MM_ROUND_NEAREST: { - uint32x4_t signmask = vdupq_n_u32(0x80000000); - float32x4_t half = vbslq_f32(signmask, vreinterpretq_f32_m128(a), - vdupq_n_f32(0.5f)); /* +/- 0.5 */ - int32x4_t r_normal = vcvtq_s32_f32(vaddq_f32( - vreinterpretq_f32_m128(a), half)); /* round to integer: [a + 0.5]*/ - int32x4_t r_trunc = vcvtq_s32_f32( - vreinterpretq_f32_m128(a)); /* truncate to integer: [a] */ - int32x4_t plusone = vreinterpretq_s32_u32(vshrq_n_u32( - vreinterpretq_u32_s32(vnegq_s32(r_trunc)), 31)); /* 1 or 0 */ - int32x4_t r_even = vbicq_s32(vaddq_s32(r_trunc, plusone), - vdupq_n_s32(1)); /* ([a] + {0,1}) & ~1 */ - float32x4_t delta = vsubq_f32( - vreinterpretq_f32_m128(a), - vcvtq_f32_s32(r_trunc)); /* compute delta: delta = (a - [a]) */ - uint32x4_t is_delta_half = - vceqq_f32(delta, half); /* delta == +/- 0.5 */ - return vreinterpretq_m128i_s32( - vbslq_s32(is_delta_half, r_even, r_normal)); - } - case _MM_ROUND_DOWN: - return _mm_set_epi32(floorf(f[3]), floorf(f[2]), floorf(f[1]), - floorf(f[0])); - case _MM_ROUND_UP: - return _mm_set_epi32(ceilf(f[3]), ceilf(f[2]), ceilf(f[1]), - ceilf(f[0])); - default: // _MM_ROUND_TOWARD_ZERO - return _mm_set_epi32((int32_t) f[3], (int32_t) f[2], (int32_t) f[1], - (int32_t) f[0]); - } -#endif -} - -// Convert packed single-precision (32-bit) floating-point elements in a to -// packed double-precision (64-bit) floating-point elements, and store the -// results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtps_pd -FORCE_INLINE __m128d _mm_cvtps_pd(__m128 a) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_f64( - vcvt_f64_f32(vget_low_f32(vreinterpretq_f32_m128(a)))); -#else - double a0 = (double) vgetq_lane_f32(vreinterpretq_f32_m128(a), 0); - double a1 = (double) vgetq_lane_f32(vreinterpretq_f32_m128(a), 1); - return _mm_set_pd(a1, a0); -#endif -} - -// Copy the lower double-precision (64-bit) floating-point element of a to dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsd_f64 -FORCE_INLINE double _mm_cvtsd_f64(__m128d a) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return (double) vgetq_lane_f64(vreinterpretq_f64_m128d(a), 0); -#else - return ((double *) &a)[0]; -#endif -} - -// Convert the lower double-precision (64-bit) floating-point element in a to a -// 32-bit integer, and store the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsd_si32 -FORCE_INLINE int32_t _mm_cvtsd_si32(__m128d a) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return (int32_t) vgetq_lane_f64(vrndiq_f64(vreinterpretq_f64_m128d(a)), 0); -#else - __m128d rnd = _mm_round_pd(a, _MM_FROUND_CUR_DIRECTION); - double ret = ((double *) &rnd)[0]; - return (int32_t) ret; -#endif -} - -// Convert the lower double-precision (64-bit) floating-point element in a to a -// 64-bit integer, and store the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsd_si64 -FORCE_INLINE int64_t _mm_cvtsd_si64(__m128d a) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return (int64_t) vgetq_lane_f64(vrndiq_f64(vreinterpretq_f64_m128d(a)), 0); -#else - __m128d rnd = _mm_round_pd(a, _MM_FROUND_CUR_DIRECTION); - double ret = ((double *) &rnd)[0]; - return (int64_t) ret; -#endif -} - -// Convert the lower double-precision (64-bit) floating-point element in a to a -// 64-bit integer, and store the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsd_si64x -#define _mm_cvtsd_si64x _mm_cvtsd_si64 - -// Convert the lower double-precision (64-bit) floating-point element in b to a -// single-precision (32-bit) floating-point element, store the result in the -// lower element of dst, and copy the upper 3 packed elements from a to the -// upper elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsd_ss -FORCE_INLINE __m128 _mm_cvtsd_ss(__m128 a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128_f32(vsetq_lane_f32( - vget_lane_f32(vcvt_f32_f64(vreinterpretq_f64_m128d(b)), 0), - vreinterpretq_f32_m128(a), 0)); -#else - return vreinterpretq_m128_f32(vsetq_lane_f32((float) ((double *) &b)[0], - vreinterpretq_f32_m128(a), 0)); -#endif -} - -// Copy the lower 32-bit integer in a to dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi128_si32 -FORCE_INLINE int _mm_cvtsi128_si32(__m128i a) -{ - return vgetq_lane_s32(vreinterpretq_s32_m128i(a), 0); -} - -// Copy the lower 64-bit integer in a to dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi128_si64 -FORCE_INLINE int64_t _mm_cvtsi128_si64(__m128i a) -{ - return vgetq_lane_s64(vreinterpretq_s64_m128i(a), 0); -} - -// Copy the lower 64-bit integer in a to dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi128_si64x -#define _mm_cvtsi128_si64x(a) _mm_cvtsi128_si64(a) - -// Convert the signed 32-bit integer b to a double-precision (64-bit) -// floating-point element, store the result in the lower element of dst, and -// copy the upper element from a to the upper element of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi32_sd -FORCE_INLINE __m128d _mm_cvtsi32_sd(__m128d a, int32_t b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_f64( - vsetq_lane_f64((double) b, vreinterpretq_f64_m128d(a), 0)); -#else - double bf = (double) b; - return vreinterpretq_m128d_s64( - vsetq_lane_s64(*(int64_t *) &bf, vreinterpretq_s64_m128d(a), 0)); -#endif -} - -// Copy the lower 64-bit integer in a to dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi128_si64x -#define _mm_cvtsi128_si64x(a) _mm_cvtsi128_si64(a) - -// Copy 32-bit integer a to the lower elements of dst, and zero the upper -// elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi32_si128 -FORCE_INLINE __m128i _mm_cvtsi32_si128(int a) -{ - return vreinterpretq_m128i_s32(vsetq_lane_s32(a, vdupq_n_s32(0), 0)); -} - -// Convert the signed 64-bit integer b to a double-precision (64-bit) -// floating-point element, store the result in the lower element of dst, and -// copy the upper element from a to the upper element of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi64_sd -FORCE_INLINE __m128d _mm_cvtsi64_sd(__m128d a, int64_t b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_f64( - vsetq_lane_f64((double) b, vreinterpretq_f64_m128d(a), 0)); -#else - double bf = (double) b; - return vreinterpretq_m128d_s64( - vsetq_lane_s64(*(int64_t *) &bf, vreinterpretq_s64_m128d(a), 0)); -#endif -} - -// Copy 64-bit integer a to the lower element of dst, and zero the upper -// element. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi64_si128 -FORCE_INLINE __m128i _mm_cvtsi64_si128(int64_t a) -{ - return vreinterpretq_m128i_s64(vsetq_lane_s64(a, vdupq_n_s64(0), 0)); -} - -// Copy 64-bit integer a to the lower element of dst, and zero the upper -// element. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi64x_si128 -#define _mm_cvtsi64x_si128(a) _mm_cvtsi64_si128(a) - -// Convert the signed 64-bit integer b to a double-precision (64-bit) -// floating-point element, store the result in the lower element of dst, and -// copy the upper element from a to the upper element of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi64x_sd -#define _mm_cvtsi64x_sd(a, b) _mm_cvtsi64_sd(a, b) - -// Convert the lower single-precision (32-bit) floating-point element in b to a -// double-precision (64-bit) floating-point element, store the result in the -// lower element of dst, and copy the upper element from a to the upper element -// of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtss_sd -FORCE_INLINE __m128d _mm_cvtss_sd(__m128d a, __m128 b) -{ - double d = (double) vgetq_lane_f32(vreinterpretq_f32_m128(b), 0); -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_f64( - vsetq_lane_f64(d, vreinterpretq_f64_m128d(a), 0)); -#else - return vreinterpretq_m128d_s64( - vsetq_lane_s64(*(int64_t *) &d, vreinterpretq_s64_m128d(a), 0)); -#endif -} - -// Convert packed double-precision (64-bit) floating-point elements in a to -// packed 32-bit integers with truncation, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvttpd_epi32 -FORCE_INLINE __m128i _mm_cvttpd_epi32(__m128d a) -{ - double a0 = ((double *) &a)[0]; - double a1 = ((double *) &a)[1]; - return _mm_set_epi32(0, 0, (int32_t) a1, (int32_t) a0); -} - -// Convert packed double-precision (64-bit) floating-point elements in a to -// packed 32-bit integers with truncation, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvttpd_pi32 -FORCE_INLINE __m64 _mm_cvttpd_pi32(__m128d a) -{ - double a0 = ((double *) &a)[0]; - double a1 = ((double *) &a)[1]; - int32_t ALIGN_STRUCT(16) data[2] = {(int32_t) a0, (int32_t) a1}; - return vreinterpret_m64_s32(vld1_s32(data)); -} - -// Convert packed single-precision (32-bit) floating-point elements in a to -// packed 32-bit integers with truncation, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvttps_epi32 -FORCE_INLINE __m128i _mm_cvttps_epi32(__m128 a) -{ - return vreinterpretq_m128i_s32(vcvtq_s32_f32(vreinterpretq_f32_m128(a))); -} - -// Convert the lower double-precision (64-bit) floating-point element in a to a -// 32-bit integer with truncation, and store the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvttsd_si32 -FORCE_INLINE int32_t _mm_cvttsd_si32(__m128d a) -{ - double ret = *((double *) &a); - return (int32_t) ret; -} - -// Convert the lower double-precision (64-bit) floating-point element in a to a -// 64-bit integer with truncation, and store the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvttsd_si64 -FORCE_INLINE int64_t _mm_cvttsd_si64(__m128d a) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vgetq_lane_s64(vcvtq_s64_f64(vreinterpretq_f64_m128d(a)), 0); -#else - double ret = *((double *) &a); - return (int64_t) ret; -#endif -} - -// Convert the lower double-precision (64-bit) floating-point element in a to a -// 64-bit integer with truncation, and store the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvttsd_si64x -#define _mm_cvttsd_si64x(a) _mm_cvttsd_si64(a) - -// Divide packed double-precision (64-bit) floating-point elements in a by -// packed elements in b, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_div_pd -FORCE_INLINE __m128d _mm_div_pd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_f64( - vdivq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); -#else - double *da = (double *) &a; - double *db = (double *) &b; - double c[2]; - c[0] = da[0] / db[0]; - c[1] = da[1] / db[1]; - return vld1q_f32((float32_t *) c); -#endif -} - -// Divide the lower double-precision (64-bit) floating-point element in a by the -// lower double-precision (64-bit) floating-point element in b, store the result -// in the lower element of dst, and copy the upper element from a to the upper -// element of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_div_sd -FORCE_INLINE __m128d _mm_div_sd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - float64x2_t tmp = - vdivq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b)); - return vreinterpretq_m128d_f64( - vsetq_lane_f64(vgetq_lane_f64(vreinterpretq_f64_m128d(a), 1), tmp, 1)); -#else - return _mm_move_sd(a, _mm_div_pd(a, b)); -#endif -} - -// Extract a 16-bit integer from a, selected with imm8, and store the result in -// the lower element of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_extract_epi16 -// FORCE_INLINE int _mm_extract_epi16(__m128i a, __constrange(0,8) int imm) -#define _mm_extract_epi16(a, imm) \ - vgetq_lane_u16(vreinterpretq_u16_m128i(a), (imm)) - -// Copy a to dst, and insert the 16-bit integer i into dst at the location -// specified by imm8. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_insert_epi16 -// FORCE_INLINE __m128i _mm_insert_epi16(__m128i a, int b, -// __constrange(0,8) int imm) -#define _mm_insert_epi16(a, b, imm) \ - vreinterpretq_m128i_s16( \ - vsetq_lane_s16((b), vreinterpretq_s16_m128i(a), (imm))) - -// Load 128-bits (composed of 2 packed double-precision (64-bit) floating-point -// elements) from memory into dst. mem_addr must be aligned on a 16-byte -// boundary or a general-protection exception may be generated. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_load_pd -FORCE_INLINE __m128d _mm_load_pd(const double *p) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_f64(vld1q_f64(p)); -#else - const float *fp = (const float *) p; - float ALIGN_STRUCT(16) data[4] = {fp[0], fp[1], fp[2], fp[3]}; - return vreinterpretq_m128d_f32(vld1q_f32(data)); -#endif -} - -// Load a double-precision (64-bit) floating-point element from memory into both -// elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_load_pd1 -#define _mm_load_pd1 _mm_load1_pd - -// Load a double-precision (64-bit) floating-point element from memory into the -// lower of dst, and zero the upper element. mem_addr does not need to be -// aligned on any particular boundary. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_load_sd -FORCE_INLINE __m128d _mm_load_sd(const double *p) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_f64(vsetq_lane_f64(*p, vdupq_n_f64(0), 0)); -#else - const float *fp = (const float *) p; - float ALIGN_STRUCT(16) data[4] = {fp[0], fp[1], 0, 0}; - return vreinterpretq_m128d_f32(vld1q_f32(data)); -#endif -} - -// Load 128-bits of integer data from memory into dst. mem_addr must be aligned -// on a 16-byte boundary or a general-protection exception may be generated. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_load_si128 -FORCE_INLINE __m128i _mm_load_si128(const __m128i *p) -{ - return vreinterpretq_m128i_s32(vld1q_s32((const int32_t *) p)); -} - -// Load a double-precision (64-bit) floating-point element from memory into both -// elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_load1_pd -FORCE_INLINE __m128d _mm_load1_pd(const double *p) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_f64(vld1q_dup_f64(p)); -#else - return vreinterpretq_m128d_s64(vdupq_n_s64(*(const int64_t *) p)); -#endif -} - -// Load a double-precision (64-bit) floating-point element from memory into the -// upper element of dst, and copy the lower element from a to dst. mem_addr does -// not need to be aligned on any particular boundary. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadh_pd -FORCE_INLINE __m128d _mm_loadh_pd(__m128d a, const double *p) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_f64( - vcombine_f64(vget_low_f64(vreinterpretq_f64_m128d(a)), vld1_f64(p))); -#else - return vreinterpretq_m128d_f32(vcombine_f32( - vget_low_f32(vreinterpretq_f32_m128d(a)), vld1_f32((const float *) p))); -#endif -} - -// Load 64-bit integer from memory into the first element of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadl_epi64 -FORCE_INLINE __m128i _mm_loadl_epi64(__m128i const *p) -{ - /* Load the lower 64 bits of the value pointed to by p into the - * lower 64 bits of the result, zeroing the upper 64 bits of the result. - */ - return vreinterpretq_m128i_s32( - vcombine_s32(vld1_s32((int32_t const *) p), vcreate_s32(0))); -} - -// Load a double-precision (64-bit) floating-point element from memory into the -// lower element of dst, and copy the upper element from a to dst. mem_addr does -// not need to be aligned on any particular boundary. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadl_pd -FORCE_INLINE __m128d _mm_loadl_pd(__m128d a, const double *p) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_f64( - vcombine_f64(vld1_f64(p), vget_high_f64(vreinterpretq_f64_m128d(a)))); -#else - return vreinterpretq_m128d_f32( - vcombine_f32(vld1_f32((const float *) p), - vget_high_f32(vreinterpretq_f32_m128d(a)))); -#endif -} - -// Load 2 double-precision (64-bit) floating-point elements from memory into dst -// in reverse order. mem_addr must be aligned on a 16-byte boundary or a -// general-protection exception may be generated. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadr_pd -FORCE_INLINE __m128d _mm_loadr_pd(const double *p) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - float64x2_t v = vld1q_f64(p); - return vreinterpretq_m128d_f64(vextq_f64(v, v, 1)); -#else - int64x2_t v = vld1q_s64((const int64_t *) p); - return vreinterpretq_m128d_s64(vextq_s64(v, v, 1)); -#endif -} - -// Loads two double-precision from unaligned memory, floating-point values. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadu_pd -FORCE_INLINE __m128d _mm_loadu_pd(const double *p) -{ - return _mm_load_pd(p); -} - -// Load 128-bits of integer data from memory into dst. mem_addr does not need to -// be aligned on any particular boundary. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadu_si128 -FORCE_INLINE __m128i _mm_loadu_si128(const __m128i *p) -{ - return vreinterpretq_m128i_s32(vld1q_s32((const int32_t *) p)); -} - -// Load unaligned 32-bit integer from memory into the first element of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadu_si32 -FORCE_INLINE __m128i _mm_loadu_si32(const void *p) -{ - return vreinterpretq_m128i_s32( - vsetq_lane_s32(*(const int32_t *) p, vdupq_n_s32(0), 0)); -} - -// Multiply packed signed 16-bit integers in a and b, producing intermediate -// signed 32-bit integers. Horizontally add adjacent pairs of intermediate -// 32-bit integers, and pack the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_madd_epi16 -FORCE_INLINE __m128i _mm_madd_epi16(__m128i a, __m128i b) -{ - int32x4_t low = vmull_s16(vget_low_s16(vreinterpretq_s16_m128i(a)), - vget_low_s16(vreinterpretq_s16_m128i(b))); -#if defined(__aarch64__) || defined(_M_ARM64) - int32x4_t high = - vmull_high_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b)); - - return vreinterpretq_m128i_s32(vpaddq_s32(low, high)); -#else - int32x4_t high = vmull_s16(vget_high_s16(vreinterpretq_s16_m128i(a)), - vget_high_s16(vreinterpretq_s16_m128i(b))); - - int32x2_t low_sum = vpadd_s32(vget_low_s32(low), vget_high_s32(low)); - int32x2_t high_sum = vpadd_s32(vget_low_s32(high), vget_high_s32(high)); - - return vreinterpretq_m128i_s32(vcombine_s32(low_sum, high_sum)); -#endif -} - -// Conditionally store 8-bit integer elements from a into memory using mask -// (elements are not stored when the highest bit is not set in the corresponding -// element) and a non-temporal memory hint. mem_addr does not need to be aligned -// on any particular boundary. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskmoveu_si128 -FORCE_INLINE void _mm_maskmoveu_si128(__m128i a, __m128i mask, char *mem_addr) -{ - int8x16_t shr_mask = vshrq_n_s8(vreinterpretq_s8_m128i(mask), 7); - __m128 b = _mm_load_ps((const float *) mem_addr); - int8x16_t masked = - vbslq_s8(vreinterpretq_u8_s8(shr_mask), vreinterpretq_s8_m128i(a), - vreinterpretq_s8_m128(b)); - vst1q_s8((int8_t *) mem_addr, masked); -} - -// Compare packed signed 16-bit integers in a and b, and store packed maximum -// values in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_epi16 -FORCE_INLINE __m128i _mm_max_epi16(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_s16( - vmaxq_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); -} - -// Compare packed unsigned 8-bit integers in a and b, and store packed maximum -// values in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_epu8 -FORCE_INLINE __m128i _mm_max_epu8(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_u8( - vmaxq_u8(vreinterpretq_u8_m128i(a), vreinterpretq_u8_m128i(b))); -} - -// Compare packed double-precision (64-bit) floating-point elements in a and b, -// and store packed maximum values in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_pd -FORCE_INLINE __m128d _mm_max_pd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) -#if SSE2NEON_PRECISE_MINMAX - float64x2_t _a = vreinterpretq_f64_m128d(a); - float64x2_t _b = vreinterpretq_f64_m128d(b); - return vreinterpretq_m128d_f64(vbslq_f64(vcgtq_f64(_a, _b), _a, _b)); -#else - return vreinterpretq_m128d_f64( - vmaxq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); -#endif -#else - uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); - uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); - uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); - uint64_t b1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(b)); - uint64_t d[2]; - d[0] = (*(double *) &a0) > (*(double *) &b0) ? a0 : b0; - d[1] = (*(double *) &a1) > (*(double *) &b1) ? a1 : b1; - - return vreinterpretq_m128d_u64(vld1q_u64(d)); -#endif -} - -// Compare the lower double-precision (64-bit) floating-point elements in a and -// b, store the maximum value in the lower element of dst, and copy the upper -// element from a to the upper element of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_sd -FORCE_INLINE __m128d _mm_max_sd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return _mm_move_sd(a, _mm_max_pd(a, b)); -#else - double *da = (double *) &a; - double *db = (double *) &b; - double c[2] = {da[0] > db[0] ? da[0] : db[0], da[1]}; - return vreinterpretq_m128d_f32(vld1q_f32((float32_t *) c)); -#endif -} - -// Compare packed signed 16-bit integers in a and b, and store packed minimum -// values in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_min_epi16 -FORCE_INLINE __m128i _mm_min_epi16(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_s16( - vminq_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); -} - -// Compare packed unsigned 8-bit integers in a and b, and store packed minimum -// values in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_min_epu8 -FORCE_INLINE __m128i _mm_min_epu8(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_u8( - vminq_u8(vreinterpretq_u8_m128i(a), vreinterpretq_u8_m128i(b))); -} - -// Compare packed double-precision (64-bit) floating-point elements in a and b, -// and store packed minimum values in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_min_pd -FORCE_INLINE __m128d _mm_min_pd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) -#if SSE2NEON_PRECISE_MINMAX - float64x2_t _a = vreinterpretq_f64_m128d(a); - float64x2_t _b = vreinterpretq_f64_m128d(b); - return vreinterpretq_m128d_f64(vbslq_f64(vcltq_f64(_a, _b), _a, _b)); -#else - return vreinterpretq_m128d_f64( - vminq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); -#endif -#else - uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); - uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); - uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); - uint64_t b1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(b)); - uint64_t d[2]; - d[0] = (*(double *) &a0) < (*(double *) &b0) ? a0 : b0; - d[1] = (*(double *) &a1) < (*(double *) &b1) ? a1 : b1; - return vreinterpretq_m128d_u64(vld1q_u64(d)); -#endif -} - -// Compare the lower double-precision (64-bit) floating-point elements in a and -// b, store the minimum value in the lower element of dst, and copy the upper -// element from a to the upper element of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_min_sd -FORCE_INLINE __m128d _mm_min_sd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return _mm_move_sd(a, _mm_min_pd(a, b)); -#else - double *da = (double *) &a; - double *db = (double *) &b; - double c[2] = {da[0] < db[0] ? da[0] : db[0], da[1]}; - return vreinterpretq_m128d_f32(vld1q_f32((float32_t *) c)); -#endif -} - -// Copy the lower 64-bit integer in a to the lower element of dst, and zero the -// upper element. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_move_epi64 -FORCE_INLINE __m128i _mm_move_epi64(__m128i a) -{ - return vreinterpretq_m128i_s64( - vsetq_lane_s64(0, vreinterpretq_s64_m128i(a), 1)); -} - -// Move the lower double-precision (64-bit) floating-point element from b to the -// lower element of dst, and copy the upper element from a to the upper element -// of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_move_sd -FORCE_INLINE __m128d _mm_move_sd(__m128d a, __m128d b) -{ - return vreinterpretq_m128d_f32( - vcombine_f32(vget_low_f32(vreinterpretq_f32_m128d(b)), - vget_high_f32(vreinterpretq_f32_m128d(a)))); -} - -// Create mask from the most significant bit of each 8-bit element in a, and -// store the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_movemask_epi8 -FORCE_INLINE int _mm_movemask_epi8(__m128i a) -{ - // Use increasingly wide shifts+adds to collect the sign bits - // together. - // Since the widening shifts would be rather confusing to follow in little - // endian, everything will be illustrated in big endian order instead. This - // has a different result - the bits would actually be reversed on a big - // endian machine. - - // Starting input (only half the elements are shown): - // 89 ff 1d c0 00 10 99 33 - uint8x16_t input = vreinterpretq_u8_m128i(a); - - // Shift out everything but the sign bits with an unsigned shift right. - // - // Bytes of the vector:: - // 89 ff 1d c0 00 10 99 33 - // \ \ \ \ \ \ \ \ high_bits = (uint16x4_t)(input >> 7) - // | | | | | | | | - // 01 01 00 01 00 00 01 00 - // - // Bits of first important lane(s): - // 10001001 (89) - // \______ - // | - // 00000001 (01) - uint16x8_t high_bits = vreinterpretq_u16_u8(vshrq_n_u8(input, 7)); - - // Merge the even lanes together with a 16-bit unsigned shift right + add. - // 'xx' represents garbage data which will be ignored in the final result. - // In the important bytes, the add functions like a binary OR. - // - // 01 01 00 01 00 00 01 00 - // \_ | \_ | \_ | \_ | paired16 = (uint32x4_t)(input + (input >> 7)) - // \| \| \| \| - // xx 03 xx 01 xx 00 xx 02 - // - // 00000001 00000001 (01 01) - // \_______ | - // \| - // xxxxxxxx xxxxxx11 (xx 03) - uint32x4_t paired16 = - vreinterpretq_u32_u16(vsraq_n_u16(high_bits, high_bits, 7)); - - // Repeat with a wider 32-bit shift + add. - // xx 03 xx 01 xx 00 xx 02 - // \____ | \____ | paired32 = (uint64x1_t)(paired16 + (paired16 >> - // 14)) - // \| \| - // xx xx xx 0d xx xx xx 02 - // - // 00000011 00000001 (03 01) - // \\_____ || - // '----.\|| - // xxxxxxxx xxxx1101 (xx 0d) - uint64x2_t paired32 = - vreinterpretq_u64_u32(vsraq_n_u32(paired16, paired16, 14)); - - // Last, an even wider 64-bit shift + add to get our result in the low 8 bit - // lanes. xx xx xx 0d xx xx xx 02 - // \_________ | paired64 = (uint8x8_t)(paired32 + (paired32 >> - // 28)) - // \| - // xx xx xx xx xx xx xx d2 - // - // 00001101 00000010 (0d 02) - // \ \___ | | - // '---. \| | - // xxxxxxxx 11010010 (xx d2) - uint8x16_t paired64 = - vreinterpretq_u8_u64(vsraq_n_u64(paired32, paired32, 28)); - - // Extract the low 8 bits from each 64-bit lane with 2 8-bit extracts. - // xx xx xx xx xx xx xx d2 - // || return paired64[0] - // d2 - // Note: Little endian would return the correct value 4b (01001011) instead. - return vgetq_lane_u8(paired64, 0) | ((int) vgetq_lane_u8(paired64, 8) << 8); -} - -// Set each bit of mask dst based on the most significant bit of the -// corresponding packed double-precision (64-bit) floating-point element in a. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_movemask_pd -FORCE_INLINE int _mm_movemask_pd(__m128d a) -{ - uint64x2_t input = vreinterpretq_u64_m128d(a); - uint64x2_t high_bits = vshrq_n_u64(input, 63); - return (int) (vgetq_lane_u64(high_bits, 0) | - (vgetq_lane_u64(high_bits, 1) << 1)); -} - -// Copy the lower 64-bit integer in a to dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_movepi64_pi64 -FORCE_INLINE __m64 _mm_movepi64_pi64(__m128i a) -{ - return vreinterpret_m64_s64(vget_low_s64(vreinterpretq_s64_m128i(a))); -} - -// Copy the 64-bit integer a to the lower element of dst, and zero the upper -// element. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_movpi64_epi64 -FORCE_INLINE __m128i _mm_movpi64_epi64(__m64 a) -{ - return vreinterpretq_m128i_s64( - vcombine_s64(vreinterpret_s64_m64(a), vdup_n_s64(0))); -} - -// Multiply the low unsigned 32-bit integers from each packed 64-bit element in -// a and b, and store the unsigned 64-bit results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mul_epu32 -FORCE_INLINE __m128i _mm_mul_epu32(__m128i a, __m128i b) -{ - // vmull_u32 upcasts instead of masking, so we downcast. - uint32x2_t a_lo = vmovn_u64(vreinterpretq_u64_m128i(a)); - uint32x2_t b_lo = vmovn_u64(vreinterpretq_u64_m128i(b)); - return vreinterpretq_m128i_u64(vmull_u32(a_lo, b_lo)); -} - -// Multiply packed double-precision (64-bit) floating-point elements in a and b, -// and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mul_pd -FORCE_INLINE __m128d _mm_mul_pd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_f64( - vmulq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); -#else - double *da = (double *) &a; - double *db = (double *) &b; - double c[2]; - c[0] = da[0] * db[0]; - c[1] = da[1] * db[1]; - return vld1q_f32((float32_t *) c); -#endif -} - -// Multiply the lower double-precision (64-bit) floating-point element in a and -// b, store the result in the lower element of dst, and copy the upper element -// from a to the upper element of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mul_sd -FORCE_INLINE __m128d _mm_mul_sd(__m128d a, __m128d b) -{ - return _mm_move_sd(a, _mm_mul_pd(a, b)); -} - -// Multiply the low unsigned 32-bit integers from a and b, and store the -// unsigned 64-bit result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mul_su32 -FORCE_INLINE __m64 _mm_mul_su32(__m64 a, __m64 b) -{ - return vreinterpret_m64_u64(vget_low_u64( - vmull_u32(vreinterpret_u32_m64(a), vreinterpret_u32_m64(b)))); -} - -// Multiply the packed signed 16-bit integers in a and b, producing intermediate -// 32-bit integers, and store the high 16 bits of the intermediate integers in -// dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mulhi_epi16 -FORCE_INLINE __m128i _mm_mulhi_epi16(__m128i a, __m128i b) -{ - /* FIXME: issue with large values because of result saturation */ - // int16x8_t ret = vqdmulhq_s16(vreinterpretq_s16_m128i(a), - // vreinterpretq_s16_m128i(b)); /* =2*a*b */ return - // vreinterpretq_m128i_s16(vshrq_n_s16(ret, 1)); - int16x4_t a3210 = vget_low_s16(vreinterpretq_s16_m128i(a)); - int16x4_t b3210 = vget_low_s16(vreinterpretq_s16_m128i(b)); - int32x4_t ab3210 = vmull_s16(a3210, b3210); /* 3333222211110000 */ - int16x4_t a7654 = vget_high_s16(vreinterpretq_s16_m128i(a)); - int16x4_t b7654 = vget_high_s16(vreinterpretq_s16_m128i(b)); - int32x4_t ab7654 = vmull_s16(a7654, b7654); /* 7777666655554444 */ - uint16x8x2_t r = - vuzpq_u16(vreinterpretq_u16_s32(ab3210), vreinterpretq_u16_s32(ab7654)); - return vreinterpretq_m128i_u16(r.val[1]); -} - -// Multiply the packed unsigned 16-bit integers in a and b, producing -// intermediate 32-bit integers, and store the high 16 bits of the intermediate -// integers in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mulhi_epu16 -FORCE_INLINE __m128i _mm_mulhi_epu16(__m128i a, __m128i b) -{ - uint16x4_t a3210 = vget_low_u16(vreinterpretq_u16_m128i(a)); - uint16x4_t b3210 = vget_low_u16(vreinterpretq_u16_m128i(b)); - uint32x4_t ab3210 = vmull_u16(a3210, b3210); -#if defined(__aarch64__) || defined(_M_ARM64) - uint32x4_t ab7654 = - vmull_high_u16(vreinterpretq_u16_m128i(a), vreinterpretq_u16_m128i(b)); - uint16x8_t r = vuzp2q_u16(vreinterpretq_u16_u32(ab3210), - vreinterpretq_u16_u32(ab7654)); - return vreinterpretq_m128i_u16(r); -#else - uint16x4_t a7654 = vget_high_u16(vreinterpretq_u16_m128i(a)); - uint16x4_t b7654 = vget_high_u16(vreinterpretq_u16_m128i(b)); - uint32x4_t ab7654 = vmull_u16(a7654, b7654); - uint16x8x2_t r = - vuzpq_u16(vreinterpretq_u16_u32(ab3210), vreinterpretq_u16_u32(ab7654)); - return vreinterpretq_m128i_u16(r.val[1]); -#endif -} - -// Multiply the packed 16-bit integers in a and b, producing intermediate 32-bit -// integers, and store the low 16 bits of the intermediate integers in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mullo_epi16 -FORCE_INLINE __m128i _mm_mullo_epi16(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_s16( - vmulq_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); -} - -// Compute the bitwise OR of packed double-precision (64-bit) floating-point -// elements in a and b, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_or_pd -FORCE_INLINE __m128d _mm_or_pd(__m128d a, __m128d b) -{ - return vreinterpretq_m128d_s64( - vorrq_s64(vreinterpretq_s64_m128d(a), vreinterpretq_s64_m128d(b))); -} - -// Compute the bitwise OR of 128 bits (representing integer data) in a and b, -// and store the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_or_si128 -FORCE_INLINE __m128i _mm_or_si128(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_s32( - vorrq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); -} - -// Convert packed signed 16-bit integers from a and b to packed 8-bit integers -// using signed saturation, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_packs_epi16 -FORCE_INLINE __m128i _mm_packs_epi16(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_s8( - vcombine_s8(vqmovn_s16(vreinterpretq_s16_m128i(a)), - vqmovn_s16(vreinterpretq_s16_m128i(b)))); -} - -// Convert packed signed 32-bit integers from a and b to packed 16-bit integers -// using signed saturation, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_packs_epi32 -FORCE_INLINE __m128i _mm_packs_epi32(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_s16( - vcombine_s16(vqmovn_s32(vreinterpretq_s32_m128i(a)), - vqmovn_s32(vreinterpretq_s32_m128i(b)))); -} - -// Convert packed signed 16-bit integers from a and b to packed 8-bit integers -// using unsigned saturation, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_packus_epi16 -FORCE_INLINE __m128i _mm_packus_epi16(const __m128i a, const __m128i b) -{ - return vreinterpretq_m128i_u8( - vcombine_u8(vqmovun_s16(vreinterpretq_s16_m128i(a)), - vqmovun_s16(vreinterpretq_s16_m128i(b)))); -} - -// Pause the processor. This is typically used in spin-wait loops and depending -// on the x86 processor typical values are in the 40-100 cycle range. The -// 'yield' instruction isn't a good fit because it's effectively a nop on most -// Arm cores. Experience with several databases has shown has shown an 'isb' is -// a reasonable approximation. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_pause -FORCE_INLINE void _mm_pause(void) -{ -#if defined(_MSC_VER) - __isb(_ARM64_BARRIER_SY); -#else - __asm__ __volatile__("isb\n"); -#endif -} - -// Compute the absolute differences of packed unsigned 8-bit integers in a and -// b, then horizontally sum each consecutive 8 differences to produce two -// unsigned 16-bit integers, and pack these unsigned 16-bit integers in the low -// 16 bits of 64-bit elements in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sad_epu8 -FORCE_INLINE __m128i _mm_sad_epu8(__m128i a, __m128i b) -{ - uint16x8_t t = vpaddlq_u8(vabdq_u8((uint8x16_t) a, (uint8x16_t) b)); - return vreinterpretq_m128i_u64(vpaddlq_u32(vpaddlq_u16(t))); -} - -// Set packed 16-bit integers in dst with the supplied values. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set_epi16 -FORCE_INLINE __m128i _mm_set_epi16(short i7, - short i6, - short i5, - short i4, - short i3, - short i2, - short i1, - short i0) -{ - int16_t ALIGN_STRUCT(16) data[8] = {i0, i1, i2, i3, i4, i5, i6, i7}; - return vreinterpretq_m128i_s16(vld1q_s16(data)); -} - -// Set packed 32-bit integers in dst with the supplied values. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set_epi32 -FORCE_INLINE __m128i _mm_set_epi32(int i3, int i2, int i1, int i0) -{ - int32_t ALIGN_STRUCT(16) data[4] = {i0, i1, i2, i3}; - return vreinterpretq_m128i_s32(vld1q_s32(data)); -} - -// Set packed 64-bit integers in dst with the supplied values. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set_epi64 -FORCE_INLINE __m128i _mm_set_epi64(__m64 i1, __m64 i2) -{ - return _mm_set_epi64x(vget_lane_s64(i1, 0), vget_lane_s64(i2, 0)); -} - -// Set packed 64-bit integers in dst with the supplied values. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set_epi64x -FORCE_INLINE __m128i _mm_set_epi64x(int64_t i1, int64_t i2) -{ - return vreinterpretq_m128i_s64( - vcombine_s64(vcreate_s64(i2), vcreate_s64(i1))); -} - -// Set packed 8-bit integers in dst with the supplied values. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set_epi8 -FORCE_INLINE __m128i _mm_set_epi8(signed char b15, - signed char b14, - signed char b13, - signed char b12, - signed char b11, - signed char b10, - signed char b9, - signed char b8, - signed char b7, - signed char b6, - signed char b5, - signed char b4, - signed char b3, - signed char b2, - signed char b1, - signed char b0) -{ - int8_t ALIGN_STRUCT(16) - data[16] = {(int8_t) b0, (int8_t) b1, (int8_t) b2, (int8_t) b3, - (int8_t) b4, (int8_t) b5, (int8_t) b6, (int8_t) b7, - (int8_t) b8, (int8_t) b9, (int8_t) b10, (int8_t) b11, - (int8_t) b12, (int8_t) b13, (int8_t) b14, (int8_t) b15}; - return (__m128i) vld1q_s8(data); -} - -// Set packed double-precision (64-bit) floating-point elements in dst with the -// supplied values. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set_pd -FORCE_INLINE __m128d _mm_set_pd(double e1, double e0) -{ - double ALIGN_STRUCT(16) data[2] = {e0, e1}; -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_f64(vld1q_f64((float64_t *) data)); -#else - return vreinterpretq_m128d_f32(vld1q_f32((float32_t *) data)); -#endif -} - -// Broadcast double-precision (64-bit) floating-point value a to all elements of -// dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set_pd1 -#define _mm_set_pd1 _mm_set1_pd - -// Copy double-precision (64-bit) floating-point element a to the lower element -// of dst, and zero the upper element. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set_sd -FORCE_INLINE __m128d _mm_set_sd(double a) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_f64(vsetq_lane_f64(a, vdupq_n_f64(0), 0)); -#else - return _mm_set_pd(0, a); -#endif -} - -// Broadcast 16-bit integer a to all elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set1_epi16 -FORCE_INLINE __m128i _mm_set1_epi16(short w) -{ - return vreinterpretq_m128i_s16(vdupq_n_s16(w)); -} - -// Broadcast 32-bit integer a to all elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set1_epi32 -FORCE_INLINE __m128i _mm_set1_epi32(int _i) -{ - return vreinterpretq_m128i_s32(vdupq_n_s32(_i)); -} - -// Broadcast 64-bit integer a to all elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set1_epi64 -FORCE_INLINE __m128i _mm_set1_epi64(__m64 _i) -{ - return vreinterpretq_m128i_s64(vdupq_lane_s64(_i, 0)); -} - -// Broadcast 64-bit integer a to all elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set1_epi64x -FORCE_INLINE __m128i _mm_set1_epi64x(int64_t _i) -{ - return vreinterpretq_m128i_s64(vdupq_n_s64(_i)); -} - -// Broadcast 8-bit integer a to all elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set1_epi8 -FORCE_INLINE __m128i _mm_set1_epi8(signed char w) -{ - return vreinterpretq_m128i_s8(vdupq_n_s8(w)); -} - -// Broadcast double-precision (64-bit) floating-point value a to all elements of -// dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set1_pd -FORCE_INLINE __m128d _mm_set1_pd(double d) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_f64(vdupq_n_f64(d)); -#else - return vreinterpretq_m128d_s64(vdupq_n_s64(*(int64_t *) &d)); -#endif -} - -// Set packed 16-bit integers in dst with the supplied values in reverse order. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_setr_epi16 -FORCE_INLINE __m128i _mm_setr_epi16(short w0, - short w1, - short w2, - short w3, - short w4, - short w5, - short w6, - short w7) -{ - int16_t ALIGN_STRUCT(16) data[8] = {w0, w1, w2, w3, w4, w5, w6, w7}; - return vreinterpretq_m128i_s16(vld1q_s16((int16_t *) data)); -} - -// Set packed 32-bit integers in dst with the supplied values in reverse order. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_setr_epi32 -FORCE_INLINE __m128i _mm_setr_epi32(int i3, int i2, int i1, int i0) -{ - int32_t ALIGN_STRUCT(16) data[4] = {i3, i2, i1, i0}; - return vreinterpretq_m128i_s32(vld1q_s32(data)); -} - -// Set packed 64-bit integers in dst with the supplied values in reverse order. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_setr_epi64 -FORCE_INLINE __m128i _mm_setr_epi64(__m64 e1, __m64 e0) -{ - return vreinterpretq_m128i_s64(vcombine_s64(e1, e0)); -} - -// Set packed 8-bit integers in dst with the supplied values in reverse order. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_setr_epi8 -FORCE_INLINE __m128i _mm_setr_epi8(signed char b0, - signed char b1, - signed char b2, - signed char b3, - signed char b4, - signed char b5, - signed char b6, - signed char b7, - signed char b8, - signed char b9, - signed char b10, - signed char b11, - signed char b12, - signed char b13, - signed char b14, - signed char b15) -{ - int8_t ALIGN_STRUCT(16) - data[16] = {(int8_t) b0, (int8_t) b1, (int8_t) b2, (int8_t) b3, - (int8_t) b4, (int8_t) b5, (int8_t) b6, (int8_t) b7, - (int8_t) b8, (int8_t) b9, (int8_t) b10, (int8_t) b11, - (int8_t) b12, (int8_t) b13, (int8_t) b14, (int8_t) b15}; - return (__m128i) vld1q_s8(data); -} - -// Set packed double-precision (64-bit) floating-point elements in dst with the -// supplied values in reverse order. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_setr_pd -FORCE_INLINE __m128d _mm_setr_pd(double e1, double e0) -{ - return _mm_set_pd(e0, e1); -} - -// Return vector of type __m128d with all elements set to zero. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_setzero_pd -FORCE_INLINE __m128d _mm_setzero_pd(void) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_f64(vdupq_n_f64(0)); -#else - return vreinterpretq_m128d_f32(vdupq_n_f32(0)); -#endif -} - -// Return vector of type __m128i with all elements set to zero. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_setzero_si128 -FORCE_INLINE __m128i _mm_setzero_si128(void) -{ - return vreinterpretq_m128i_s32(vdupq_n_s32(0)); -} - -// Shuffle 32-bit integers in a using the control in imm8, and store the results -// in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_shuffle_epi32 -// FORCE_INLINE __m128i _mm_shuffle_epi32(__m128i a, -// __constrange(0,255) int imm) -#if defined(_sse2neon_shuffle) -#define _mm_shuffle_epi32(a, imm) \ - __extension__({ \ - int32x4_t _input = vreinterpretq_s32_m128i(a); \ - int32x4_t _shuf = \ - vshuffleq_s32(_input, _input, (imm) & (0x3), ((imm) >> 2) & 0x3, \ - ((imm) >> 4) & 0x3, ((imm) >> 6) & 0x3); \ - vreinterpretq_m128i_s32(_shuf); \ - }) -#else // generic -#define _mm_shuffle_epi32(a, imm) \ - _sse2neon_define1( \ - __m128i, a, __m128i ret; switch (imm) { \ - case _MM_SHUFFLE(1, 0, 3, 2): \ - ret = _mm_shuffle_epi_1032(_a); \ - break; \ - case _MM_SHUFFLE(2, 3, 0, 1): \ - ret = _mm_shuffle_epi_2301(_a); \ - break; \ - case _MM_SHUFFLE(0, 3, 2, 1): \ - ret = _mm_shuffle_epi_0321(_a); \ - break; \ - case _MM_SHUFFLE(2, 1, 0, 3): \ - ret = _mm_shuffle_epi_2103(_a); \ - break; \ - case _MM_SHUFFLE(1, 0, 1, 0): \ - ret = _mm_shuffle_epi_1010(_a); \ - break; \ - case _MM_SHUFFLE(1, 0, 0, 1): \ - ret = _mm_shuffle_epi_1001(_a); \ - break; \ - case _MM_SHUFFLE(0, 1, 0, 1): \ - ret = _mm_shuffle_epi_0101(_a); \ - break; \ - case _MM_SHUFFLE(2, 2, 1, 1): \ - ret = _mm_shuffle_epi_2211(_a); \ - break; \ - case _MM_SHUFFLE(0, 1, 2, 2): \ - ret = _mm_shuffle_epi_0122(_a); \ - break; \ - case _MM_SHUFFLE(3, 3, 3, 2): \ - ret = _mm_shuffle_epi_3332(_a); \ - break; \ - case _MM_SHUFFLE(0, 0, 0, 0): \ - ret = _mm_shuffle_epi32_splat(_a, 0); \ - break; \ - case _MM_SHUFFLE(1, 1, 1, 1): \ - ret = _mm_shuffle_epi32_splat(_a, 1); \ - break; \ - case _MM_SHUFFLE(2, 2, 2, 2): \ - ret = _mm_shuffle_epi32_splat(_a, 2); \ - break; \ - case _MM_SHUFFLE(3, 3, 3, 3): \ - ret = _mm_shuffle_epi32_splat(_a, 3); \ - break; \ - default: \ - ret = _mm_shuffle_epi32_default(_a, (imm)); \ - break; \ - } _sse2neon_return(ret);) -#endif - -// Shuffle double-precision (64-bit) floating-point elements using the control -// in imm8, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_shuffle_pd -#ifdef _sse2neon_shuffle -#define _mm_shuffle_pd(a, b, imm8) \ - vreinterpretq_m128d_s64( \ - vshuffleq_s64(vreinterpretq_s64_m128d(a), vreinterpretq_s64_m128d(b), \ - imm8 & 0x1, ((imm8 & 0x2) >> 1) + 2)) -#else -#define _mm_shuffle_pd(a, b, imm8) \ - _mm_castsi128_pd(_mm_set_epi64x( \ - vgetq_lane_s64(vreinterpretq_s64_m128d(b), (imm8 & 0x2) >> 1), \ - vgetq_lane_s64(vreinterpretq_s64_m128d(a), imm8 & 0x1))) -#endif - -// FORCE_INLINE __m128i _mm_shufflehi_epi16(__m128i a, -// __constrange(0,255) int imm) -#if defined(_sse2neon_shuffle) -#define _mm_shufflehi_epi16(a, imm) \ - __extension__({ \ - int16x8_t _input = vreinterpretq_s16_m128i(a); \ - int16x8_t _shuf = \ - vshuffleq_s16(_input, _input, 0, 1, 2, 3, ((imm) & (0x3)) + 4, \ - (((imm) >> 2) & 0x3) + 4, (((imm) >> 4) & 0x3) + 4, \ - (((imm) >> 6) & 0x3) + 4); \ - vreinterpretq_m128i_s16(_shuf); \ - }) -#else // generic -#define _mm_shufflehi_epi16(a, imm) _mm_shufflehi_epi16_function((a), (imm)) -#endif - -// FORCE_INLINE __m128i _mm_shufflelo_epi16(__m128i a, -// __constrange(0,255) int imm) -#if defined(_sse2neon_shuffle) -#define _mm_shufflelo_epi16(a, imm) \ - __extension__({ \ - int16x8_t _input = vreinterpretq_s16_m128i(a); \ - int16x8_t _shuf = vshuffleq_s16( \ - _input, _input, ((imm) & (0x3)), (((imm) >> 2) & 0x3), \ - (((imm) >> 4) & 0x3), (((imm) >> 6) & 0x3), 4, 5, 6, 7); \ - vreinterpretq_m128i_s16(_shuf); \ - }) -#else // generic -#define _mm_shufflelo_epi16(a, imm) _mm_shufflelo_epi16_function((a), (imm)) -#endif - -// Shift packed 16-bit integers in a left by count while shifting in zeros, and -// store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sll_epi16 -FORCE_INLINE __m128i _mm_sll_epi16(__m128i a, __m128i count) -{ - uint64_t c = vreinterpretq_nth_u64_m128i(count, 0); - if (_sse2neon_unlikely(c & ~15)) - return _mm_setzero_si128(); - - int16x8_t vc = vdupq_n_s16((int16_t) c); - return vreinterpretq_m128i_s16(vshlq_s16(vreinterpretq_s16_m128i(a), vc)); -} - -// Shift packed 32-bit integers in a left by count while shifting in zeros, and -// store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sll_epi32 -FORCE_INLINE __m128i _mm_sll_epi32(__m128i a, __m128i count) -{ - uint64_t c = vreinterpretq_nth_u64_m128i(count, 0); - if (_sse2neon_unlikely(c & ~31)) - return _mm_setzero_si128(); - - int32x4_t vc = vdupq_n_s32((int32_t) c); - return vreinterpretq_m128i_s32(vshlq_s32(vreinterpretq_s32_m128i(a), vc)); -} - -// Shift packed 64-bit integers in a left by count while shifting in zeros, and -// store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sll_epi64 -FORCE_INLINE __m128i _mm_sll_epi64(__m128i a, __m128i count) -{ - uint64_t c = vreinterpretq_nth_u64_m128i(count, 0); - if (_sse2neon_unlikely(c & ~63)) - return _mm_setzero_si128(); - - int64x2_t vc = vdupq_n_s64((int64_t) c); - return vreinterpretq_m128i_s64(vshlq_s64(vreinterpretq_s64_m128i(a), vc)); -} - -// Shift packed 16-bit integers in a left by imm8 while shifting in zeros, and -// store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_slli_epi16 -FORCE_INLINE __m128i _mm_slli_epi16(__m128i a, int imm) -{ - if (_sse2neon_unlikely(imm & ~15)) - return _mm_setzero_si128(); - return vreinterpretq_m128i_s16( - vshlq_s16(vreinterpretq_s16_m128i(a), vdupq_n_s16(imm))); -} - -// Shift packed 32-bit integers in a left by imm8 while shifting in zeros, and -// store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_slli_epi32 -FORCE_INLINE __m128i _mm_slli_epi32(__m128i a, int imm) -{ - if (_sse2neon_unlikely(imm & ~31)) - return _mm_setzero_si128(); - return vreinterpretq_m128i_s32( - vshlq_s32(vreinterpretq_s32_m128i(a), vdupq_n_s32(imm))); -} - -// Shift packed 64-bit integers in a left by imm8 while shifting in zeros, and -// store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_slli_epi64 -FORCE_INLINE __m128i _mm_slli_epi64(__m128i a, int imm) -{ - if (_sse2neon_unlikely(imm & ~63)) - return _mm_setzero_si128(); - return vreinterpretq_m128i_s64( - vshlq_s64(vreinterpretq_s64_m128i(a), vdupq_n_s64(imm))); -} - -// Shift a left by imm8 bytes while shifting in zeros, and store the results in -// dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_slli_si128 -#define _mm_slli_si128(a, imm) \ - _sse2neon_define1( \ - __m128i, a, int8x16_t ret; \ - if (_sse2neon_unlikely(imm == 0)) ret = vreinterpretq_s8_m128i(_a); \ - else if (_sse2neon_unlikely((imm) & ~15)) ret = vdupq_n_s8(0); \ - else ret = vextq_s8(vdupq_n_s8(0), vreinterpretq_s8_m128i(_a), \ - ((imm <= 0 || imm > 15) ? 0 : (16 - imm))); \ - _sse2neon_return(vreinterpretq_m128i_s8(ret));) - -// Compute the square root of packed double-precision (64-bit) floating-point -// elements in a, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sqrt_pd -FORCE_INLINE __m128d _mm_sqrt_pd(__m128d a) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_f64(vsqrtq_f64(vreinterpretq_f64_m128d(a))); -#else - double a0 = sqrt(((double *) &a)[0]); - double a1 = sqrt(((double *) &a)[1]); - return _mm_set_pd(a1, a0); -#endif -} - -// Compute the square root of the lower double-precision (64-bit) floating-point -// element in b, store the result in the lower element of dst, and copy the -// upper element from a to the upper element of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sqrt_sd -FORCE_INLINE __m128d _mm_sqrt_sd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return _mm_move_sd(a, _mm_sqrt_pd(b)); -#else - return _mm_set_pd(((double *) &a)[1], sqrt(((double *) &b)[0])); -#endif -} - -// Shift packed 16-bit integers in a right by count while shifting in sign bits, -// and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sra_epi16 -FORCE_INLINE __m128i _mm_sra_epi16(__m128i a, __m128i count) -{ - int64_t c = vgetq_lane_s64(count, 0); - if (_sse2neon_unlikely(c & ~15)) - return _mm_cmplt_epi16(a, _mm_setzero_si128()); - return vreinterpretq_m128i_s16( - vshlq_s16((int16x8_t) a, vdupq_n_s16((int) -c))); -} - -// Shift packed 32-bit integers in a right by count while shifting in sign bits, -// and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sra_epi32 -FORCE_INLINE __m128i _mm_sra_epi32(__m128i a, __m128i count) -{ - int64_t c = vgetq_lane_s64(count, 0); - if (_sse2neon_unlikely(c & ~31)) - return _mm_cmplt_epi32(a, _mm_setzero_si128()); - return vreinterpretq_m128i_s32( - vshlq_s32((int32x4_t) a, vdupq_n_s32((int) -c))); -} - -// Shift packed 16-bit integers in a right by imm8 while shifting in sign -// bits, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_srai_epi16 -FORCE_INLINE __m128i _mm_srai_epi16(__m128i a, int imm) -{ - const int count = (imm & ~15) ? 15 : imm; - return (__m128i) vshlq_s16((int16x8_t) a, vdupq_n_s16(-count)); -} - -// Shift packed 32-bit integers in a right by imm8 while shifting in sign bits, -// and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_srai_epi32 -// FORCE_INLINE __m128i _mm_srai_epi32(__m128i a, __constrange(0,255) int imm) -#define _mm_srai_epi32(a, imm) \ - _sse2neon_define0( \ - __m128i, a, __m128i ret; if (_sse2neon_unlikely((imm) == 0)) { \ - ret = _a; \ - } else if (_sse2neon_likely(0 < (imm) && (imm) < 32)) { \ - ret = vreinterpretq_m128i_s32( \ - vshlq_s32(vreinterpretq_s32_m128i(_a), vdupq_n_s32(-(imm)))); \ - } else { \ - ret = vreinterpretq_m128i_s32( \ - vshrq_n_s32(vreinterpretq_s32_m128i(_a), 31)); \ - } _sse2neon_return(ret);) - -// Shift packed 16-bit integers in a right by count while shifting in zeros, and -// store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_srl_epi16 -FORCE_INLINE __m128i _mm_srl_epi16(__m128i a, __m128i count) -{ - uint64_t c = vreinterpretq_nth_u64_m128i(count, 0); - if (_sse2neon_unlikely(c & ~15)) - return _mm_setzero_si128(); - - int16x8_t vc = vdupq_n_s16(-(int16_t) c); - return vreinterpretq_m128i_u16(vshlq_u16(vreinterpretq_u16_m128i(a), vc)); -} - -// Shift packed 32-bit integers in a right by count while shifting in zeros, and -// store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_srl_epi32 -FORCE_INLINE __m128i _mm_srl_epi32(__m128i a, __m128i count) -{ - uint64_t c = vreinterpretq_nth_u64_m128i(count, 0); - if (_sse2neon_unlikely(c & ~31)) - return _mm_setzero_si128(); - - int32x4_t vc = vdupq_n_s32(-(int32_t) c); - return vreinterpretq_m128i_u32(vshlq_u32(vreinterpretq_u32_m128i(a), vc)); -} - -// Shift packed 64-bit integers in a right by count while shifting in zeros, and -// store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_srl_epi64 -FORCE_INLINE __m128i _mm_srl_epi64(__m128i a, __m128i count) -{ - uint64_t c = vreinterpretq_nth_u64_m128i(count, 0); - if (_sse2neon_unlikely(c & ~63)) - return _mm_setzero_si128(); - - int64x2_t vc = vdupq_n_s64(-(int64_t) c); - return vreinterpretq_m128i_u64(vshlq_u64(vreinterpretq_u64_m128i(a), vc)); -} - -// Shift packed 16-bit integers in a right by imm8 while shifting in zeros, and -// store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_srli_epi16 -#define _mm_srli_epi16(a, imm) \ - _sse2neon_define0( \ - __m128i, a, __m128i ret; if (_sse2neon_unlikely((imm) & ~15)) { \ - ret = _mm_setzero_si128(); \ - } else { \ - ret = vreinterpretq_m128i_u16( \ - vshlq_u16(vreinterpretq_u16_m128i(_a), vdupq_n_s16(-(imm)))); \ - } _sse2neon_return(ret);) - -// Shift packed 32-bit integers in a right by imm8 while shifting in zeros, and -// store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_srli_epi32 -// FORCE_INLINE __m128i _mm_srli_epi32(__m128i a, __constrange(0,255) int imm) -#define _mm_srli_epi32(a, imm) \ - _sse2neon_define0( \ - __m128i, a, __m128i ret; if (_sse2neon_unlikely((imm) & ~31)) { \ - ret = _mm_setzero_si128(); \ - } else { \ - ret = vreinterpretq_m128i_u32( \ - vshlq_u32(vreinterpretq_u32_m128i(_a), vdupq_n_s32(-(imm)))); \ - } _sse2neon_return(ret);) - -// Shift packed 64-bit integers in a right by imm8 while shifting in zeros, and -// store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_srli_epi64 -#define _mm_srli_epi64(a, imm) \ - _sse2neon_define0( \ - __m128i, a, __m128i ret; if (_sse2neon_unlikely((imm) & ~63)) { \ - ret = _mm_setzero_si128(); \ - } else { \ - ret = vreinterpretq_m128i_u64( \ - vshlq_u64(vreinterpretq_u64_m128i(_a), vdupq_n_s64(-(imm)))); \ - } _sse2neon_return(ret);) - -// Shift a right by imm8 bytes while shifting in zeros, and store the results in -// dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_srli_si128 -#define _mm_srli_si128(a, imm) \ - _sse2neon_define1( \ - __m128i, a, int8x16_t ret; \ - if (_sse2neon_unlikely((imm) & ~15)) ret = vdupq_n_s8(0); \ - else ret = vextq_s8(vreinterpretq_s8_m128i(_a), vdupq_n_s8(0), \ - (imm > 15 ? 0 : imm)); \ - _sse2neon_return(vreinterpretq_m128i_s8(ret));) - -// Store 128-bits (composed of 2 packed double-precision (64-bit) floating-point -// elements) from a into memory. mem_addr must be aligned on a 16-byte boundary -// or a general-protection exception may be generated. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_store_pd -FORCE_INLINE void _mm_store_pd(double *mem_addr, __m128d a) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - vst1q_f64((float64_t *) mem_addr, vreinterpretq_f64_m128d(a)); -#else - vst1q_f32((float32_t *) mem_addr, vreinterpretq_f32_m128d(a)); -#endif -} - -// Store the lower double-precision (64-bit) floating-point element from a into -// 2 contiguous elements in memory. mem_addr must be aligned on a 16-byte -// boundary or a general-protection exception may be generated. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_store_pd1 -FORCE_INLINE void _mm_store_pd1(double *mem_addr, __m128d a) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - float64x1_t a_low = vget_low_f64(vreinterpretq_f64_m128d(a)); - vst1q_f64((float64_t *) mem_addr, - vreinterpretq_f64_m128d(vcombine_f64(a_low, a_low))); -#else - float32x2_t a_low = vget_low_f32(vreinterpretq_f32_m128d(a)); - vst1q_f32((float32_t *) mem_addr, - vreinterpretq_f32_m128d(vcombine_f32(a_low, a_low))); -#endif -} - -// Store the lower double-precision (64-bit) floating-point element from a into -// memory. mem_addr does not need to be aligned on any particular boundary. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_store_sd -FORCE_INLINE void _mm_store_sd(double *mem_addr, __m128d a) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - vst1_f64((float64_t *) mem_addr, vget_low_f64(vreinterpretq_f64_m128d(a))); -#else - vst1_u64((uint64_t *) mem_addr, vget_low_u64(vreinterpretq_u64_m128d(a))); -#endif -} - -// Store 128-bits of integer data from a into memory. mem_addr must be aligned -// on a 16-byte boundary or a general-protection exception may be generated. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_store_si128 -FORCE_INLINE void _mm_store_si128(__m128i *p, __m128i a) -{ - vst1q_s32((int32_t *) p, vreinterpretq_s32_m128i(a)); -} - -// Store the lower double-precision (64-bit) floating-point element from a into -// 2 contiguous elements in memory. mem_addr must be aligned on a 16-byte -// boundary or a general-protection exception may be generated. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#expand=9,526,5601&text=_mm_store1_pd -#define _mm_store1_pd _mm_store_pd1 - -// Store the upper double-precision (64-bit) floating-point element from a into -// memory. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storeh_pd -FORCE_INLINE void _mm_storeh_pd(double *mem_addr, __m128d a) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - vst1_f64((float64_t *) mem_addr, vget_high_f64(vreinterpretq_f64_m128d(a))); -#else - vst1_f32((float32_t *) mem_addr, vget_high_f32(vreinterpretq_f32_m128d(a))); -#endif -} - -// Store 64-bit integer from the first element of a into memory. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storel_epi64 -FORCE_INLINE void _mm_storel_epi64(__m128i *a, __m128i b) -{ - vst1_u64((uint64_t *) a, vget_low_u64(vreinterpretq_u64_m128i(b))); -} - -// Store the lower double-precision (64-bit) floating-point element from a into -// memory. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storel_pd -FORCE_INLINE void _mm_storel_pd(double *mem_addr, __m128d a) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - vst1_f64((float64_t *) mem_addr, vget_low_f64(vreinterpretq_f64_m128d(a))); -#else - vst1_f32((float32_t *) mem_addr, vget_low_f32(vreinterpretq_f32_m128d(a))); -#endif -} - -// Store 2 double-precision (64-bit) floating-point elements from a into memory -// in reverse order. mem_addr must be aligned on a 16-byte boundary or a -// general-protection exception may be generated. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storer_pd -FORCE_INLINE void _mm_storer_pd(double *mem_addr, __m128d a) -{ - float32x4_t f = vreinterpretq_f32_m128d(a); - _mm_store_pd(mem_addr, vreinterpretq_m128d_f32(vextq_f32(f, f, 2))); -} - -// Store 128-bits (composed of 2 packed double-precision (64-bit) floating-point -// elements) from a into memory. mem_addr does not need to be aligned on any -// particular boundary. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storeu_pd -FORCE_INLINE void _mm_storeu_pd(double *mem_addr, __m128d a) -{ - _mm_store_pd(mem_addr, a); -} - -// Store 128-bits of integer data from a into memory. mem_addr does not need to -// be aligned on any particular boundary. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storeu_si128 -FORCE_INLINE void _mm_storeu_si128(__m128i *p, __m128i a) -{ - vst1q_s32((int32_t *) p, vreinterpretq_s32_m128i(a)); -} - -// Store 32-bit integer from the first element of a into memory. mem_addr does -// not need to be aligned on any particular boundary. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storeu_si32 -FORCE_INLINE void _mm_storeu_si32(void *p, __m128i a) -{ - vst1q_lane_s32((int32_t *) p, vreinterpretq_s32_m128i(a), 0); -} - -// Store 128-bits (composed of 2 packed double-precision (64-bit) floating-point -// elements) from a into memory using a non-temporal memory hint. mem_addr must -// be aligned on a 16-byte boundary or a general-protection exception may be -// generated. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_stream_pd -FORCE_INLINE void _mm_stream_pd(double *p, __m128d a) -{ -#if __has_builtin(__builtin_nontemporal_store) - __builtin_nontemporal_store(a, (__m128d *) p); -#elif defined(__aarch64__) || defined(_M_ARM64) - vst1q_f64(p, vreinterpretq_f64_m128d(a)); -#else - vst1q_s64((int64_t *) p, vreinterpretq_s64_m128d(a)); -#endif -} - -// Store 128-bits of integer data from a into memory using a non-temporal memory -// hint. mem_addr must be aligned on a 16-byte boundary or a general-protection -// exception may be generated. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_stream_si128 -FORCE_INLINE void _mm_stream_si128(__m128i *p, __m128i a) -{ -#if __has_builtin(__builtin_nontemporal_store) - __builtin_nontemporal_store(a, p); -#else - vst1q_s64((int64_t *) p, vreinterpretq_s64_m128i(a)); -#endif -} - -// Store 32-bit integer a into memory using a non-temporal hint to minimize -// cache pollution. If the cache line containing address mem_addr is already in -// the cache, the cache will be updated. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_stream_si32 -FORCE_INLINE void _mm_stream_si32(int *p, int a) -{ - vst1q_lane_s32((int32_t *) p, vdupq_n_s32(a), 0); -} - -// Store 64-bit integer a into memory using a non-temporal hint to minimize -// cache pollution. If the cache line containing address mem_addr is already in -// the cache, the cache will be updated. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_stream_si64 -FORCE_INLINE void _mm_stream_si64(__int64 *p, __int64 a) -{ - vst1_s64((int64_t *) p, vdup_n_s64((int64_t) a)); -} - -// Subtract packed 16-bit integers in b from packed 16-bit integers in a, and -// store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sub_epi16 -FORCE_INLINE __m128i _mm_sub_epi16(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_s16( - vsubq_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); -} - -// Subtract packed 32-bit integers in b from packed 32-bit integers in a, and -// store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sub_epi32 -FORCE_INLINE __m128i _mm_sub_epi32(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_s32( - vsubq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); -} - -// Subtract packed 64-bit integers in b from packed 64-bit integers in a, and -// store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sub_epi64 -FORCE_INLINE __m128i _mm_sub_epi64(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_s64( - vsubq_s64(vreinterpretq_s64_m128i(a), vreinterpretq_s64_m128i(b))); -} - -// Subtract packed 8-bit integers in b from packed 8-bit integers in a, and -// store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sub_epi8 -FORCE_INLINE __m128i _mm_sub_epi8(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_s8( - vsubq_s8(vreinterpretq_s8_m128i(a), vreinterpretq_s8_m128i(b))); -} - -// Subtract packed double-precision (64-bit) floating-point elements in b from -// packed double-precision (64-bit) floating-point elements in a, and store the -// results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_sub_pd -FORCE_INLINE __m128d _mm_sub_pd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_f64( - vsubq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); -#else - double *da = (double *) &a; - double *db = (double *) &b; - double c[2]; - c[0] = da[0] - db[0]; - c[1] = da[1] - db[1]; - return vld1q_f32((float32_t *) c); -#endif -} - -// Subtract the lower double-precision (64-bit) floating-point element in b from -// the lower double-precision (64-bit) floating-point element in a, store the -// result in the lower element of dst, and copy the upper element from a to the -// upper element of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sub_sd -FORCE_INLINE __m128d _mm_sub_sd(__m128d a, __m128d b) -{ - return _mm_move_sd(a, _mm_sub_pd(a, b)); -} - -// Subtract 64-bit integer b from 64-bit integer a, and store the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sub_si64 -FORCE_INLINE __m64 _mm_sub_si64(__m64 a, __m64 b) -{ - return vreinterpret_m64_s64( - vsub_s64(vreinterpret_s64_m64(a), vreinterpret_s64_m64(b))); -} - -// Subtract packed signed 16-bit integers in b from packed 16-bit integers in a -// using saturation, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_subs_epi16 -FORCE_INLINE __m128i _mm_subs_epi16(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_s16( - vqsubq_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); -} - -// Subtract packed signed 8-bit integers in b from packed 8-bit integers in a -// using saturation, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_subs_epi8 -FORCE_INLINE __m128i _mm_subs_epi8(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_s8( - vqsubq_s8(vreinterpretq_s8_m128i(a), vreinterpretq_s8_m128i(b))); -} - -// Subtract packed unsigned 16-bit integers in b from packed unsigned 16-bit -// integers in a using saturation, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_subs_epu16 -FORCE_INLINE __m128i _mm_subs_epu16(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_u16( - vqsubq_u16(vreinterpretq_u16_m128i(a), vreinterpretq_u16_m128i(b))); -} - -// Subtract packed unsigned 8-bit integers in b from packed unsigned 8-bit -// integers in a using saturation, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_subs_epu8 -FORCE_INLINE __m128i _mm_subs_epu8(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_u8( - vqsubq_u8(vreinterpretq_u8_m128i(a), vreinterpretq_u8_m128i(b))); -} - -#define _mm_ucomieq_sd _mm_comieq_sd -#define _mm_ucomige_sd _mm_comige_sd -#define _mm_ucomigt_sd _mm_comigt_sd -#define _mm_ucomile_sd _mm_comile_sd -#define _mm_ucomilt_sd _mm_comilt_sd -#define _mm_ucomineq_sd _mm_comineq_sd - -// Return vector of type __m128d with undefined elements. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_undefined_pd -FORCE_INLINE __m128d _mm_undefined_pd(void) -{ -#if defined(__GNUC__) || defined(__clang__) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wuninitialized" -#endif - __m128d a; -#if defined(_MSC_VER) - a = _mm_setzero_pd(); -#endif - return a; -#if defined(__GNUC__) || defined(__clang__) -#pragma GCC diagnostic pop -#endif -} - -// Unpack and interleave 16-bit integers from the high half of a and b, and -// store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_unpackhi_epi16 -FORCE_INLINE __m128i _mm_unpackhi_epi16(__m128i a, __m128i b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128i_s16( - vzip2q_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); -#else - int16x4_t a1 = vget_high_s16(vreinterpretq_s16_m128i(a)); - int16x4_t b1 = vget_high_s16(vreinterpretq_s16_m128i(b)); - int16x4x2_t result = vzip_s16(a1, b1); - return vreinterpretq_m128i_s16(vcombine_s16(result.val[0], result.val[1])); -#endif -} - -// Unpack and interleave 32-bit integers from the high half of a and b, and -// store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_unpackhi_epi32 -FORCE_INLINE __m128i _mm_unpackhi_epi32(__m128i a, __m128i b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128i_s32( - vzip2q_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); -#else - int32x2_t a1 = vget_high_s32(vreinterpretq_s32_m128i(a)); - int32x2_t b1 = vget_high_s32(vreinterpretq_s32_m128i(b)); - int32x2x2_t result = vzip_s32(a1, b1); - return vreinterpretq_m128i_s32(vcombine_s32(result.val[0], result.val[1])); -#endif -} - -// Unpack and interleave 64-bit integers from the high half of a and b, and -// store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_unpackhi_epi64 -FORCE_INLINE __m128i _mm_unpackhi_epi64(__m128i a, __m128i b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128i_s64( - vzip2q_s64(vreinterpretq_s64_m128i(a), vreinterpretq_s64_m128i(b))); -#else - int64x1_t a_h = vget_high_s64(vreinterpretq_s64_m128i(a)); - int64x1_t b_h = vget_high_s64(vreinterpretq_s64_m128i(b)); - return vreinterpretq_m128i_s64(vcombine_s64(a_h, b_h)); -#endif -} - -// Unpack and interleave 8-bit integers from the high half of a and b, and store -// the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_unpackhi_epi8 -FORCE_INLINE __m128i _mm_unpackhi_epi8(__m128i a, __m128i b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128i_s8( - vzip2q_s8(vreinterpretq_s8_m128i(a), vreinterpretq_s8_m128i(b))); -#else - int8x8_t a1 = - vreinterpret_s8_s16(vget_high_s16(vreinterpretq_s16_m128i(a))); - int8x8_t b1 = - vreinterpret_s8_s16(vget_high_s16(vreinterpretq_s16_m128i(b))); - int8x8x2_t result = vzip_s8(a1, b1); - return vreinterpretq_m128i_s8(vcombine_s8(result.val[0], result.val[1])); -#endif -} - -// Unpack and interleave double-precision (64-bit) floating-point elements from -// the high half of a and b, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_unpackhi_pd -FORCE_INLINE __m128d _mm_unpackhi_pd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_f64( - vzip2q_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); -#else - return vreinterpretq_m128d_s64( - vcombine_s64(vget_high_s64(vreinterpretq_s64_m128d(a)), - vget_high_s64(vreinterpretq_s64_m128d(b)))); -#endif -} - -// Unpack and interleave 16-bit integers from the low half of a and b, and store -// the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_unpacklo_epi16 -FORCE_INLINE __m128i _mm_unpacklo_epi16(__m128i a, __m128i b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128i_s16( - vzip1q_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); -#else - int16x4_t a1 = vget_low_s16(vreinterpretq_s16_m128i(a)); - int16x4_t b1 = vget_low_s16(vreinterpretq_s16_m128i(b)); - int16x4x2_t result = vzip_s16(a1, b1); - return vreinterpretq_m128i_s16(vcombine_s16(result.val[0], result.val[1])); -#endif -} - -// Unpack and interleave 32-bit integers from the low half of a and b, and store -// the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_unpacklo_epi32 -FORCE_INLINE __m128i _mm_unpacklo_epi32(__m128i a, __m128i b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128i_s32( - vzip1q_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); -#else - int32x2_t a1 = vget_low_s32(vreinterpretq_s32_m128i(a)); - int32x2_t b1 = vget_low_s32(vreinterpretq_s32_m128i(b)); - int32x2x2_t result = vzip_s32(a1, b1); - return vreinterpretq_m128i_s32(vcombine_s32(result.val[0], result.val[1])); -#endif -} - -// Unpack and interleave 64-bit integers from the low half of a and b, and store -// the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_unpacklo_epi64 -FORCE_INLINE __m128i _mm_unpacklo_epi64(__m128i a, __m128i b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128i_s64( - vzip1q_s64(vreinterpretq_s64_m128i(a), vreinterpretq_s64_m128i(b))); -#else - int64x1_t a_l = vget_low_s64(vreinterpretq_s64_m128i(a)); - int64x1_t b_l = vget_low_s64(vreinterpretq_s64_m128i(b)); - return vreinterpretq_m128i_s64(vcombine_s64(a_l, b_l)); -#endif -} - -// Unpack and interleave 8-bit integers from the low half of a and b, and store -// the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_unpacklo_epi8 -FORCE_INLINE __m128i _mm_unpacklo_epi8(__m128i a, __m128i b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128i_s8( - vzip1q_s8(vreinterpretq_s8_m128i(a), vreinterpretq_s8_m128i(b))); -#else - int8x8_t a1 = vreinterpret_s8_s16(vget_low_s16(vreinterpretq_s16_m128i(a))); - int8x8_t b1 = vreinterpret_s8_s16(vget_low_s16(vreinterpretq_s16_m128i(b))); - int8x8x2_t result = vzip_s8(a1, b1); - return vreinterpretq_m128i_s8(vcombine_s8(result.val[0], result.val[1])); -#endif -} - -// Unpack and interleave double-precision (64-bit) floating-point elements from -// the low half of a and b, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_unpacklo_pd -FORCE_INLINE __m128d _mm_unpacklo_pd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_f64( - vzip1q_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); -#else - return vreinterpretq_m128d_s64( - vcombine_s64(vget_low_s64(vreinterpretq_s64_m128d(a)), - vget_low_s64(vreinterpretq_s64_m128d(b)))); -#endif -} - -// Compute the bitwise XOR of packed double-precision (64-bit) floating-point -// elements in a and b, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_xor_pd -FORCE_INLINE __m128d _mm_xor_pd(__m128d a, __m128d b) -{ - return vreinterpretq_m128d_s64( - veorq_s64(vreinterpretq_s64_m128d(a), vreinterpretq_s64_m128d(b))); -} - -// Compute the bitwise XOR of 128 bits (representing integer data) in a and b, -// and store the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_xor_si128 -FORCE_INLINE __m128i _mm_xor_si128(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_s32( - veorq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); -} - -/* SSE3 */ - -// Alternatively add and subtract packed double-precision (64-bit) -// floating-point elements in a to/from packed elements in b, and store the -// results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_addsub_pd -FORCE_INLINE __m128d _mm_addsub_pd(__m128d a, __m128d b) -{ - _sse2neon_const __m128d mask = _mm_set_pd(1.0f, -1.0f); -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_f64(vfmaq_f64(vreinterpretq_f64_m128d(a), - vreinterpretq_f64_m128d(b), - vreinterpretq_f64_m128d(mask))); -#else - return _mm_add_pd(_mm_mul_pd(b, mask), a); -#endif -} - -// Alternatively add and subtract packed single-precision (32-bit) -// floating-point elements in a to/from packed elements in b, and store the -// results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=addsub_ps -FORCE_INLINE __m128 _mm_addsub_ps(__m128 a, __m128 b) -{ - _sse2neon_const __m128 mask = _mm_setr_ps(-1.0f, 1.0f, -1.0f, 1.0f); -#if (defined(__aarch64__) || defined(_M_ARM64)) || \ - defined(__ARM_FEATURE_FMA) /* VFPv4+ */ - return vreinterpretq_m128_f32(vfmaq_f32(vreinterpretq_f32_m128(a), - vreinterpretq_f32_m128(mask), - vreinterpretq_f32_m128(b))); -#else - return _mm_add_ps(_mm_mul_ps(b, mask), a); -#endif -} - -// Horizontally add adjacent pairs of double-precision (64-bit) floating-point -// elements in a and b, and pack the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hadd_pd -FORCE_INLINE __m128d _mm_hadd_pd(__m128d a, __m128d b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_f64( - vpaddq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); -#else - double *da = (double *) &a; - double *db = (double *) &b; - double c[] = {da[0] + da[1], db[0] + db[1]}; - return vreinterpretq_m128d_u64(vld1q_u64((uint64_t *) c)); -#endif -} - -// Horizontally add adjacent pairs of single-precision (32-bit) floating-point -// elements in a and b, and pack the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hadd_ps -FORCE_INLINE __m128 _mm_hadd_ps(__m128 a, __m128 b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128_f32( - vpaddq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); -#else - float32x2_t a10 = vget_low_f32(vreinterpretq_f32_m128(a)); - float32x2_t a32 = vget_high_f32(vreinterpretq_f32_m128(a)); - float32x2_t b10 = vget_low_f32(vreinterpretq_f32_m128(b)); - float32x2_t b32 = vget_high_f32(vreinterpretq_f32_m128(b)); - return vreinterpretq_m128_f32( - vcombine_f32(vpadd_f32(a10, a32), vpadd_f32(b10, b32))); -#endif -} - -// Horizontally subtract adjacent pairs of double-precision (64-bit) -// floating-point elements in a and b, and pack the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hsub_pd -FORCE_INLINE __m128d _mm_hsub_pd(__m128d _a, __m128d _b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - float64x2_t a = vreinterpretq_f64_m128d(_a); - float64x2_t b = vreinterpretq_f64_m128d(_b); - return vreinterpretq_m128d_f64( - vsubq_f64(vuzp1q_f64(a, b), vuzp2q_f64(a, b))); -#else - double *da = (double *) &_a; - double *db = (double *) &_b; - double c[] = {da[0] - da[1], db[0] - db[1]}; - return vreinterpretq_m128d_u64(vld1q_u64((uint64_t *) c)); -#endif -} - -// Horizontally subtract adjacent pairs of single-precision (32-bit) -// floating-point elements in a and b, and pack the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hsub_ps -FORCE_INLINE __m128 _mm_hsub_ps(__m128 _a, __m128 _b) -{ - float32x4_t a = vreinterpretq_f32_m128(_a); - float32x4_t b = vreinterpretq_f32_m128(_b); -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128_f32( - vsubq_f32(vuzp1q_f32(a, b), vuzp2q_f32(a, b))); -#else - float32x4x2_t c = vuzpq_f32(a, b); - return vreinterpretq_m128_f32(vsubq_f32(c.val[0], c.val[1])); -#endif -} - -// Load 128-bits of integer data from unaligned memory into dst. This intrinsic -// may perform better than _mm_loadu_si128 when the data crosses a cache line -// boundary. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_lddqu_si128 -#define _mm_lddqu_si128 _mm_loadu_si128 - -// Load a double-precision (64-bit) floating-point element from memory into both -// elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loaddup_pd -#define _mm_loaddup_pd _mm_load1_pd - -// Duplicate the low double-precision (64-bit) floating-point element from a, -// and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_movedup_pd -FORCE_INLINE __m128d _mm_movedup_pd(__m128d a) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_f64( - vdupq_laneq_f64(vreinterpretq_f64_m128d(a), 0)); -#else - return vreinterpretq_m128d_u64( - vdupq_n_u64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0))); -#endif -} - -// Duplicate odd-indexed single-precision (32-bit) floating-point elements -// from a, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_movehdup_ps -FORCE_INLINE __m128 _mm_movehdup_ps(__m128 a) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128_f32( - vtrn2q_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(a))); -#elif defined(_sse2neon_shuffle) - return vreinterpretq_m128_f32(vshuffleq_s32( - vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(a), 1, 1, 3, 3)); -#else - float32_t a1 = vgetq_lane_f32(vreinterpretq_f32_m128(a), 1); - float32_t a3 = vgetq_lane_f32(vreinterpretq_f32_m128(a), 3); - float ALIGN_STRUCT(16) data[4] = {a1, a1, a3, a3}; - return vreinterpretq_m128_f32(vld1q_f32(data)); -#endif -} - -// Duplicate even-indexed single-precision (32-bit) floating-point elements -// from a, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_moveldup_ps -FORCE_INLINE __m128 _mm_moveldup_ps(__m128 a) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128_f32( - vtrn1q_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(a))); -#elif defined(_sse2neon_shuffle) - return vreinterpretq_m128_f32(vshuffleq_s32( - vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(a), 0, 0, 2, 2)); -#else - float32_t a0 = vgetq_lane_f32(vreinterpretq_f32_m128(a), 0); - float32_t a2 = vgetq_lane_f32(vreinterpretq_f32_m128(a), 2); - float ALIGN_STRUCT(16) data[4] = {a0, a0, a2, a2}; - return vreinterpretq_m128_f32(vld1q_f32(data)); -#endif -} - -/* SSSE3 */ - -// Compute the absolute value of packed signed 16-bit integers in a, and store -// the unsigned results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_abs_epi16 -FORCE_INLINE __m128i _mm_abs_epi16(__m128i a) -{ - return vreinterpretq_m128i_s16(vabsq_s16(vreinterpretq_s16_m128i(a))); -} - -// Compute the absolute value of packed signed 32-bit integers in a, and store -// the unsigned results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_abs_epi32 -FORCE_INLINE __m128i _mm_abs_epi32(__m128i a) -{ - return vreinterpretq_m128i_s32(vabsq_s32(vreinterpretq_s32_m128i(a))); -} - -// Compute the absolute value of packed signed 8-bit integers in a, and store -// the unsigned results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_abs_epi8 -FORCE_INLINE __m128i _mm_abs_epi8(__m128i a) -{ - return vreinterpretq_m128i_s8(vabsq_s8(vreinterpretq_s8_m128i(a))); -} - -// Compute the absolute value of packed signed 16-bit integers in a, and store -// the unsigned results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_abs_pi16 -FORCE_INLINE __m64 _mm_abs_pi16(__m64 a) -{ - return vreinterpret_m64_s16(vabs_s16(vreinterpret_s16_m64(a))); -} - -// Compute the absolute value of packed signed 32-bit integers in a, and store -// the unsigned results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_abs_pi32 -FORCE_INLINE __m64 _mm_abs_pi32(__m64 a) -{ - return vreinterpret_m64_s32(vabs_s32(vreinterpret_s32_m64(a))); -} - -// Compute the absolute value of packed signed 8-bit integers in a, and store -// the unsigned results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_abs_pi8 -FORCE_INLINE __m64 _mm_abs_pi8(__m64 a) -{ - return vreinterpret_m64_s8(vabs_s8(vreinterpret_s8_m64(a))); -} - -// Concatenate 16-byte blocks in a and b into a 32-byte temporary result, shift -// the result right by imm8 bytes, and store the low 16 bytes in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_alignr_epi8 -#if defined(__GNUC__) && !defined(__clang__) -#define _mm_alignr_epi8(a, b, imm) \ - __extension__({ \ - uint8x16_t _a = vreinterpretq_u8_m128i(a); \ - uint8x16_t _b = vreinterpretq_u8_m128i(b); \ - __m128i ret; \ - if (_sse2neon_unlikely((imm) & ~31)) \ - ret = vreinterpretq_m128i_u8(vdupq_n_u8(0)); \ - else if (imm >= 16) \ - ret = _mm_srli_si128(a, imm >= 16 ? imm - 16 : 0); \ - else \ - ret = \ - vreinterpretq_m128i_u8(vextq_u8(_b, _a, imm < 16 ? imm : 0)); \ - ret; \ - }) - -#else -#define _mm_alignr_epi8(a, b, imm) \ - _sse2neon_define2( \ - __m128i, a, b, uint8x16_t __a = vreinterpretq_u8_m128i(_a); \ - uint8x16_t __b = vreinterpretq_u8_m128i(_b); __m128i ret; \ - if (_sse2neon_unlikely((imm) & ~31)) ret = \ - vreinterpretq_m128i_u8(vdupq_n_u8(0)); \ - else if (imm >= 16) ret = \ - _mm_srli_si128(_a, imm >= 16 ? imm - 16 : 0); \ - else ret = \ - vreinterpretq_m128i_u8(vextq_u8(__b, __a, imm < 16 ? imm : 0)); \ - _sse2neon_return(ret);) - -#endif - -// Concatenate 8-byte blocks in a and b into a 16-byte temporary result, shift -// the result right by imm8 bytes, and store the low 8 bytes in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_alignr_pi8 -#define _mm_alignr_pi8(a, b, imm) \ - _sse2neon_define2( \ - __m64, a, b, __m64 ret; if (_sse2neon_unlikely((imm) >= 16)) { \ - ret = vreinterpret_m64_s8(vdup_n_s8(0)); \ - } else { \ - uint8x8_t tmp_low; \ - uint8x8_t tmp_high; \ - if ((imm) >= 8) { \ - const int idx = (imm) -8; \ - tmp_low = vreinterpret_u8_m64(_a); \ - tmp_high = vdup_n_u8(0); \ - ret = vreinterpret_m64_u8(vext_u8(tmp_low, tmp_high, idx)); \ - } else { \ - const int idx = (imm); \ - tmp_low = vreinterpret_u8_m64(_b); \ - tmp_high = vreinterpret_u8_m64(_a); \ - ret = vreinterpret_m64_u8(vext_u8(tmp_low, tmp_high, idx)); \ - } \ - } _sse2neon_return(ret);) - -// Horizontally add adjacent pairs of 16-bit integers in a and b, and pack the -// signed 16-bit results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hadd_epi16 -FORCE_INLINE __m128i _mm_hadd_epi16(__m128i _a, __m128i _b) -{ - int16x8_t a = vreinterpretq_s16_m128i(_a); - int16x8_t b = vreinterpretq_s16_m128i(_b); -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128i_s16(vpaddq_s16(a, b)); -#else - return vreinterpretq_m128i_s16( - vcombine_s16(vpadd_s16(vget_low_s16(a), vget_high_s16(a)), - vpadd_s16(vget_low_s16(b), vget_high_s16(b)))); -#endif -} - -// Horizontally add adjacent pairs of 32-bit integers in a and b, and pack the -// signed 32-bit results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hadd_epi32 -FORCE_INLINE __m128i _mm_hadd_epi32(__m128i _a, __m128i _b) -{ - int32x4_t a = vreinterpretq_s32_m128i(_a); - int32x4_t b = vreinterpretq_s32_m128i(_b); -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128i_s32(vpaddq_s32(a, b)); -#else - return vreinterpretq_m128i_s32( - vcombine_s32(vpadd_s32(vget_low_s32(a), vget_high_s32(a)), - vpadd_s32(vget_low_s32(b), vget_high_s32(b)))); -#endif -} - -// Horizontally add adjacent pairs of 16-bit integers in a and b, and pack the -// signed 16-bit results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hadd_pi16 -FORCE_INLINE __m64 _mm_hadd_pi16(__m64 a, __m64 b) -{ - return vreinterpret_m64_s16( - vpadd_s16(vreinterpret_s16_m64(a), vreinterpret_s16_m64(b))); -} - -// Horizontally add adjacent pairs of 32-bit integers in a and b, and pack the -// signed 32-bit results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hadd_pi32 -FORCE_INLINE __m64 _mm_hadd_pi32(__m64 a, __m64 b) -{ - return vreinterpret_m64_s32( - vpadd_s32(vreinterpret_s32_m64(a), vreinterpret_s32_m64(b))); -} - -// Horizontally add adjacent pairs of signed 16-bit integers in a and b using -// saturation, and pack the signed 16-bit results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hadds_epi16 -FORCE_INLINE __m128i _mm_hadds_epi16(__m128i _a, __m128i _b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - int16x8_t a = vreinterpretq_s16_m128i(_a); - int16x8_t b = vreinterpretq_s16_m128i(_b); - return vreinterpretq_s64_s16( - vqaddq_s16(vuzp1q_s16(a, b), vuzp2q_s16(a, b))); -#else - int32x4_t a = vreinterpretq_s32_m128i(_a); - int32x4_t b = vreinterpretq_s32_m128i(_b); - // Interleave using vshrn/vmovn - // [a0|a2|a4|a6|b0|b2|b4|b6] - // [a1|a3|a5|a7|b1|b3|b5|b7] - int16x8_t ab0246 = vcombine_s16(vmovn_s32(a), vmovn_s32(b)); - int16x8_t ab1357 = vcombine_s16(vshrn_n_s32(a, 16), vshrn_n_s32(b, 16)); - // Saturated add - return vreinterpretq_m128i_s16(vqaddq_s16(ab0246, ab1357)); -#endif -} - -// Horizontally add adjacent pairs of signed 16-bit integers in a and b using -// saturation, and pack the signed 16-bit results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hadds_pi16 -FORCE_INLINE __m64 _mm_hadds_pi16(__m64 _a, __m64 _b) -{ - int16x4_t a = vreinterpret_s16_m64(_a); - int16x4_t b = vreinterpret_s16_m64(_b); -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpret_s64_s16(vqadd_s16(vuzp1_s16(a, b), vuzp2_s16(a, b))); -#else - int16x4x2_t res = vuzp_s16(a, b); - return vreinterpret_s64_s16(vqadd_s16(res.val[0], res.val[1])); -#endif -} - -// Horizontally subtract adjacent pairs of 16-bit integers in a and b, and pack -// the signed 16-bit results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hsub_epi16 -FORCE_INLINE __m128i _mm_hsub_epi16(__m128i _a, __m128i _b) -{ - int16x8_t a = vreinterpretq_s16_m128i(_a); - int16x8_t b = vreinterpretq_s16_m128i(_b); -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128i_s16( - vsubq_s16(vuzp1q_s16(a, b), vuzp2q_s16(a, b))); -#else - int16x8x2_t c = vuzpq_s16(a, b); - return vreinterpretq_m128i_s16(vsubq_s16(c.val[0], c.val[1])); -#endif -} - -// Horizontally subtract adjacent pairs of 32-bit integers in a and b, and pack -// the signed 32-bit results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hsub_epi32 -FORCE_INLINE __m128i _mm_hsub_epi32(__m128i _a, __m128i _b) -{ - int32x4_t a = vreinterpretq_s32_m128i(_a); - int32x4_t b = vreinterpretq_s32_m128i(_b); -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128i_s32( - vsubq_s32(vuzp1q_s32(a, b), vuzp2q_s32(a, b))); -#else - int32x4x2_t c = vuzpq_s32(a, b); - return vreinterpretq_m128i_s32(vsubq_s32(c.val[0], c.val[1])); -#endif -} - -// Horizontally subtract adjacent pairs of 16-bit integers in a and b, and pack -// the signed 16-bit results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hsub_pi16 -FORCE_INLINE __m64 _mm_hsub_pi16(__m64 _a, __m64 _b) -{ - int16x4_t a = vreinterpret_s16_m64(_a); - int16x4_t b = vreinterpret_s16_m64(_b); -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpret_m64_s16(vsub_s16(vuzp1_s16(a, b), vuzp2_s16(a, b))); -#else - int16x4x2_t c = vuzp_s16(a, b); - return vreinterpret_m64_s16(vsub_s16(c.val[0], c.val[1])); -#endif -} - -// Horizontally subtract adjacent pairs of 32-bit integers in a and b, and pack -// the signed 32-bit results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_hsub_pi32 -FORCE_INLINE __m64 _mm_hsub_pi32(__m64 _a, __m64 _b) -{ - int32x2_t a = vreinterpret_s32_m64(_a); - int32x2_t b = vreinterpret_s32_m64(_b); -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpret_m64_s32(vsub_s32(vuzp1_s32(a, b), vuzp2_s32(a, b))); -#else - int32x2x2_t c = vuzp_s32(a, b); - return vreinterpret_m64_s32(vsub_s32(c.val[0], c.val[1])); -#endif -} - -// Horizontally subtract adjacent pairs of signed 16-bit integers in a and b -// using saturation, and pack the signed 16-bit results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hsubs_epi16 -FORCE_INLINE __m128i _mm_hsubs_epi16(__m128i _a, __m128i _b) -{ - int16x8_t a = vreinterpretq_s16_m128i(_a); - int16x8_t b = vreinterpretq_s16_m128i(_b); -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128i_s16( - vqsubq_s16(vuzp1q_s16(a, b), vuzp2q_s16(a, b))); -#else - int16x8x2_t c = vuzpq_s16(a, b); - return vreinterpretq_m128i_s16(vqsubq_s16(c.val[0], c.val[1])); -#endif -} - -// Horizontally subtract adjacent pairs of signed 16-bit integers in a and b -// using saturation, and pack the signed 16-bit results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hsubs_pi16 -FORCE_INLINE __m64 _mm_hsubs_pi16(__m64 _a, __m64 _b) -{ - int16x4_t a = vreinterpret_s16_m64(_a); - int16x4_t b = vreinterpret_s16_m64(_b); -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpret_m64_s16(vqsub_s16(vuzp1_s16(a, b), vuzp2_s16(a, b))); -#else - int16x4x2_t c = vuzp_s16(a, b); - return vreinterpret_m64_s16(vqsub_s16(c.val[0], c.val[1])); -#endif -} - -// Vertically multiply each unsigned 8-bit integer from a with the corresponding -// signed 8-bit integer from b, producing intermediate signed 16-bit integers. -// Horizontally add adjacent pairs of intermediate signed 16-bit integers, -// and pack the saturated results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maddubs_epi16 -FORCE_INLINE __m128i _mm_maddubs_epi16(__m128i _a, __m128i _b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - uint8x16_t a = vreinterpretq_u8_m128i(_a); - int8x16_t b = vreinterpretq_s8_m128i(_b); - int16x8_t tl = vmulq_s16(vreinterpretq_s16_u16(vmovl_u8(vget_low_u8(a))), - vmovl_s8(vget_low_s8(b))); - int16x8_t th = vmulq_s16(vreinterpretq_s16_u16(vmovl_u8(vget_high_u8(a))), - vmovl_s8(vget_high_s8(b))); - return vreinterpretq_m128i_s16( - vqaddq_s16(vuzp1q_s16(tl, th), vuzp2q_s16(tl, th))); -#else - // This would be much simpler if x86 would choose to zero extend OR sign - // extend, not both. This could probably be optimized better. - uint16x8_t a = vreinterpretq_u16_m128i(_a); - int16x8_t b = vreinterpretq_s16_m128i(_b); - - // Zero extend a - int16x8_t a_odd = vreinterpretq_s16_u16(vshrq_n_u16(a, 8)); - int16x8_t a_even = vreinterpretq_s16_u16(vbicq_u16(a, vdupq_n_u16(0xff00))); - - // Sign extend by shifting left then shifting right. - int16x8_t b_even = vshrq_n_s16(vshlq_n_s16(b, 8), 8); - int16x8_t b_odd = vshrq_n_s16(b, 8); - - // multiply - int16x8_t prod1 = vmulq_s16(a_even, b_even); - int16x8_t prod2 = vmulq_s16(a_odd, b_odd); - - // saturated add - return vreinterpretq_m128i_s16(vqaddq_s16(prod1, prod2)); -#endif -} - -// Vertically multiply each unsigned 8-bit integer from a with the corresponding -// signed 8-bit integer from b, producing intermediate signed 16-bit integers. -// Horizontally add adjacent pairs of intermediate signed 16-bit integers, and -// pack the saturated results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maddubs_pi16 -FORCE_INLINE __m64 _mm_maddubs_pi16(__m64 _a, __m64 _b) -{ - uint16x4_t a = vreinterpret_u16_m64(_a); - int16x4_t b = vreinterpret_s16_m64(_b); - - // Zero extend a - int16x4_t a_odd = vreinterpret_s16_u16(vshr_n_u16(a, 8)); - int16x4_t a_even = vreinterpret_s16_u16(vand_u16(a, vdup_n_u16(0xff))); - - // Sign extend by shifting left then shifting right. - int16x4_t b_even = vshr_n_s16(vshl_n_s16(b, 8), 8); - int16x4_t b_odd = vshr_n_s16(b, 8); - - // multiply - int16x4_t prod1 = vmul_s16(a_even, b_even); - int16x4_t prod2 = vmul_s16(a_odd, b_odd); - - // saturated add - return vreinterpret_m64_s16(vqadd_s16(prod1, prod2)); -} - -// Multiply packed signed 16-bit integers in a and b, producing intermediate -// signed 32-bit integers. Shift right by 15 bits while rounding up, and store -// the packed 16-bit integers in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mulhrs_epi16 -FORCE_INLINE __m128i _mm_mulhrs_epi16(__m128i a, __m128i b) -{ - // Has issues due to saturation - // return vreinterpretq_m128i_s16(vqrdmulhq_s16(a, b)); - - // Multiply - int32x4_t mul_lo = vmull_s16(vget_low_s16(vreinterpretq_s16_m128i(a)), - vget_low_s16(vreinterpretq_s16_m128i(b))); - int32x4_t mul_hi = vmull_s16(vget_high_s16(vreinterpretq_s16_m128i(a)), - vget_high_s16(vreinterpretq_s16_m128i(b))); - - // Rounding narrowing shift right - // narrow = (int16_t)((mul + 16384) >> 15); - int16x4_t narrow_lo = vrshrn_n_s32(mul_lo, 15); - int16x4_t narrow_hi = vrshrn_n_s32(mul_hi, 15); - - // Join together - return vreinterpretq_m128i_s16(vcombine_s16(narrow_lo, narrow_hi)); -} - -// Multiply packed signed 16-bit integers in a and b, producing intermediate -// signed 32-bit integers. Truncate each intermediate integer to the 18 most -// significant bits, round by adding 1, and store bits [16:1] to dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mulhrs_pi16 -FORCE_INLINE __m64 _mm_mulhrs_pi16(__m64 a, __m64 b) -{ - int32x4_t mul_extend = - vmull_s16((vreinterpret_s16_m64(a)), (vreinterpret_s16_m64(b))); - - // Rounding narrowing shift right - return vreinterpret_m64_s16(vrshrn_n_s32(mul_extend, 15)); -} - -// Shuffle packed 8-bit integers in a according to shuffle control mask in the -// corresponding 8-bit element of b, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_shuffle_epi8 -FORCE_INLINE __m128i _mm_shuffle_epi8(__m128i a, __m128i b) -{ - int8x16_t tbl = vreinterpretq_s8_m128i(a); // input a - uint8x16_t idx = vreinterpretq_u8_m128i(b); // input b - uint8x16_t idx_masked = - vandq_u8(idx, vdupq_n_u8(0x8F)); // avoid using meaningless bits -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128i_s8(vqtbl1q_s8(tbl, idx_masked)); -#elif defined(__GNUC__) - int8x16_t ret; - // %e and %f represent the even and odd D registers - // respectively. - __asm__ __volatile__( - "vtbl.8 %e[ret], {%e[tbl], %f[tbl]}, %e[idx]\n" - "vtbl.8 %f[ret], {%e[tbl], %f[tbl]}, %f[idx]\n" - : [ret] "=&w"(ret) - : [tbl] "w"(tbl), [idx] "w"(idx_masked)); - return vreinterpretq_m128i_s8(ret); -#else - // use this line if testing on aarch64 - int8x8x2_t a_split = {vget_low_s8(tbl), vget_high_s8(tbl)}; - return vreinterpretq_m128i_s8( - vcombine_s8(vtbl2_s8(a_split, vget_low_u8(idx_masked)), - vtbl2_s8(a_split, vget_high_u8(idx_masked)))); -#endif -} - -// Shuffle packed 8-bit integers in a according to shuffle control mask in the -// corresponding 8-bit element of b, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_shuffle_pi8 -FORCE_INLINE __m64 _mm_shuffle_pi8(__m64 a, __m64 b) -{ - const int8x8_t controlMask = - vand_s8(vreinterpret_s8_m64(b), vdup_n_s8((int8_t) (0x1 << 7 | 0x07))); - int8x8_t res = vtbl1_s8(vreinterpret_s8_m64(a), controlMask); - return vreinterpret_m64_s8(res); -} - -// Negate packed 16-bit integers in a when the corresponding signed -// 16-bit integer in b is negative, and store the results in dst. -// Element in dst are zeroed out when the corresponding element -// in b is zero. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sign_epi16 -FORCE_INLINE __m128i _mm_sign_epi16(__m128i _a, __m128i _b) -{ - int16x8_t a = vreinterpretq_s16_m128i(_a); - int16x8_t b = vreinterpretq_s16_m128i(_b); - - // signed shift right: faster than vclt - // (b < 0) ? 0xFFFF : 0 - uint16x8_t ltMask = vreinterpretq_u16_s16(vshrq_n_s16(b, 15)); - // (b == 0) ? 0xFFFF : 0 -#if defined(__aarch64__) || defined(_M_ARM64) - int16x8_t zeroMask = vreinterpretq_s16_u16(vceqzq_s16(b)); -#else - int16x8_t zeroMask = vreinterpretq_s16_u16(vceqq_s16(b, vdupq_n_s16(0))); -#endif - - // bitwise select either a or negative 'a' (vnegq_s16(a) equals to negative - // 'a') based on ltMask - int16x8_t masked = vbslq_s16(ltMask, vnegq_s16(a), a); - // res = masked & (~zeroMask) - int16x8_t res = vbicq_s16(masked, zeroMask); - return vreinterpretq_m128i_s16(res); -} - -// Negate packed 32-bit integers in a when the corresponding signed -// 32-bit integer in b is negative, and store the results in dst. -// Element in dst are zeroed out when the corresponding element -// in b is zero. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sign_epi32 -FORCE_INLINE __m128i _mm_sign_epi32(__m128i _a, __m128i _b) -{ - int32x4_t a = vreinterpretq_s32_m128i(_a); - int32x4_t b = vreinterpretq_s32_m128i(_b); - - // signed shift right: faster than vclt - // (b < 0) ? 0xFFFFFFFF : 0 - uint32x4_t ltMask = vreinterpretq_u32_s32(vshrq_n_s32(b, 31)); - - // (b == 0) ? 0xFFFFFFFF : 0 -#if defined(__aarch64__) || defined(_M_ARM64) - int32x4_t zeroMask = vreinterpretq_s32_u32(vceqzq_s32(b)); -#else - int32x4_t zeroMask = vreinterpretq_s32_u32(vceqq_s32(b, vdupq_n_s32(0))); -#endif - - // bitwise select either a or negative 'a' (vnegq_s32(a) equals to negative - // 'a') based on ltMask - int32x4_t masked = vbslq_s32(ltMask, vnegq_s32(a), a); - // res = masked & (~zeroMask) - int32x4_t res = vbicq_s32(masked, zeroMask); - return vreinterpretq_m128i_s32(res); -} - -// Negate packed 8-bit integers in a when the corresponding signed -// 8-bit integer in b is negative, and store the results in dst. -// Element in dst are zeroed out when the corresponding element -// in b is zero. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sign_epi8 -FORCE_INLINE __m128i _mm_sign_epi8(__m128i _a, __m128i _b) -{ - int8x16_t a = vreinterpretq_s8_m128i(_a); - int8x16_t b = vreinterpretq_s8_m128i(_b); - - // signed shift right: faster than vclt - // (b < 0) ? 0xFF : 0 - uint8x16_t ltMask = vreinterpretq_u8_s8(vshrq_n_s8(b, 7)); - - // (b == 0) ? 0xFF : 0 -#if defined(__aarch64__) || defined(_M_ARM64) - int8x16_t zeroMask = vreinterpretq_s8_u8(vceqzq_s8(b)); -#else - int8x16_t zeroMask = vreinterpretq_s8_u8(vceqq_s8(b, vdupq_n_s8(0))); -#endif - - // bitwise select either a or negative 'a' (vnegq_s8(a) return negative 'a') - // based on ltMask - int8x16_t masked = vbslq_s8(ltMask, vnegq_s8(a), a); - // res = masked & (~zeroMask) - int8x16_t res = vbicq_s8(masked, zeroMask); - - return vreinterpretq_m128i_s8(res); -} - -// Negate packed 16-bit integers in a when the corresponding signed 16-bit -// integer in b is negative, and store the results in dst. Element in dst are -// zeroed out when the corresponding element in b is zero. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sign_pi16 -FORCE_INLINE __m64 _mm_sign_pi16(__m64 _a, __m64 _b) -{ - int16x4_t a = vreinterpret_s16_m64(_a); - int16x4_t b = vreinterpret_s16_m64(_b); - - // signed shift right: faster than vclt - // (b < 0) ? 0xFFFF : 0 - uint16x4_t ltMask = vreinterpret_u16_s16(vshr_n_s16(b, 15)); - - // (b == 0) ? 0xFFFF : 0 -#if defined(__aarch64__) || defined(_M_ARM64) - int16x4_t zeroMask = vreinterpret_s16_u16(vceqz_s16(b)); -#else - int16x4_t zeroMask = vreinterpret_s16_u16(vceq_s16(b, vdup_n_s16(0))); -#endif - - // bitwise select either a or negative 'a' (vneg_s16(a) return negative 'a') - // based on ltMask - int16x4_t masked = vbsl_s16(ltMask, vneg_s16(a), a); - // res = masked & (~zeroMask) - int16x4_t res = vbic_s16(masked, zeroMask); - - return vreinterpret_m64_s16(res); -} - -// Negate packed 32-bit integers in a when the corresponding signed 32-bit -// integer in b is negative, and store the results in dst. Element in dst are -// zeroed out when the corresponding element in b is zero. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sign_pi32 -FORCE_INLINE __m64 _mm_sign_pi32(__m64 _a, __m64 _b) -{ - int32x2_t a = vreinterpret_s32_m64(_a); - int32x2_t b = vreinterpret_s32_m64(_b); - - // signed shift right: faster than vclt - // (b < 0) ? 0xFFFFFFFF : 0 - uint32x2_t ltMask = vreinterpret_u32_s32(vshr_n_s32(b, 31)); - - // (b == 0) ? 0xFFFFFFFF : 0 -#if defined(__aarch64__) || defined(_M_ARM64) - int32x2_t zeroMask = vreinterpret_s32_u32(vceqz_s32(b)); -#else - int32x2_t zeroMask = vreinterpret_s32_u32(vceq_s32(b, vdup_n_s32(0))); -#endif - - // bitwise select either a or negative 'a' (vneg_s32(a) return negative 'a') - // based on ltMask - int32x2_t masked = vbsl_s32(ltMask, vneg_s32(a), a); - // res = masked & (~zeroMask) - int32x2_t res = vbic_s32(masked, zeroMask); - - return vreinterpret_m64_s32(res); -} - -// Negate packed 8-bit integers in a when the corresponding signed 8-bit integer -// in b is negative, and store the results in dst. Element in dst are zeroed out -// when the corresponding element in b is zero. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sign_pi8 -FORCE_INLINE __m64 _mm_sign_pi8(__m64 _a, __m64 _b) -{ - int8x8_t a = vreinterpret_s8_m64(_a); - int8x8_t b = vreinterpret_s8_m64(_b); - - // signed shift right: faster than vclt - // (b < 0) ? 0xFF : 0 - uint8x8_t ltMask = vreinterpret_u8_s8(vshr_n_s8(b, 7)); - - // (b == 0) ? 0xFF : 0 -#if defined(__aarch64__) || defined(_M_ARM64) - int8x8_t zeroMask = vreinterpret_s8_u8(vceqz_s8(b)); -#else - int8x8_t zeroMask = vreinterpret_s8_u8(vceq_s8(b, vdup_n_s8(0))); -#endif - - // bitwise select either a or negative 'a' (vneg_s8(a) return negative 'a') - // based on ltMask - int8x8_t masked = vbsl_s8(ltMask, vneg_s8(a), a); - // res = masked & (~zeroMask) - int8x8_t res = vbic_s8(masked, zeroMask); - - return vreinterpret_m64_s8(res); -} - -/* SSE4.1 */ - -// Blend packed 16-bit integers from a and b using control mask imm8, and store -// the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_blend_epi16 -// FORCE_INLINE __m128i _mm_blend_epi16(__m128i a, __m128i b, -// __constrange(0,255) int imm) -#define _mm_blend_epi16(a, b, imm) \ - _sse2neon_define2( \ - __m128i, a, b, \ - const uint16_t _mask[8] = \ - _sse2neon_init(((imm) & (1 << 0)) ? (uint16_t) -1 : 0x0, \ - ((imm) & (1 << 1)) ? (uint16_t) -1 : 0x0, \ - ((imm) & (1 << 2)) ? (uint16_t) -1 : 0x0, \ - ((imm) & (1 << 3)) ? (uint16_t) -1 : 0x0, \ - ((imm) & (1 << 4)) ? (uint16_t) -1 : 0x0, \ - ((imm) & (1 << 5)) ? (uint16_t) -1 : 0x0, \ - ((imm) & (1 << 6)) ? (uint16_t) -1 : 0x0, \ - ((imm) & (1 << 7)) ? (uint16_t) -1 : 0x0); \ - uint16x8_t _mask_vec = vld1q_u16(_mask); \ - uint16x8_t __a = vreinterpretq_u16_m128i(_a); \ - uint16x8_t __b = vreinterpretq_u16_m128i(_b); _sse2neon_return( \ - vreinterpretq_m128i_u16(vbslq_u16(_mask_vec, __b, __a)));) - -// Blend packed double-precision (64-bit) floating-point elements from a and b -// using control mask imm8, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_blend_pd -#define _mm_blend_pd(a, b, imm) \ - _sse2neon_define2( \ - __m128d, a, b, \ - const uint64_t _mask[2] = \ - _sse2neon_init(((imm) & (1 << 0)) ? ~UINT64_C(0) : UINT64_C(0), \ - ((imm) & (1 << 1)) ? ~UINT64_C(0) : UINT64_C(0)); \ - uint64x2_t _mask_vec = vld1q_u64(_mask); \ - uint64x2_t __a = vreinterpretq_u64_m128d(_a); \ - uint64x2_t __b = vreinterpretq_u64_m128d(_b); _sse2neon_return( \ - vreinterpretq_m128d_u64(vbslq_u64(_mask_vec, __b, __a)));) - -// Blend packed single-precision (32-bit) floating-point elements from a and b -// using mask, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_blend_ps -FORCE_INLINE __m128 _mm_blend_ps(__m128 _a, __m128 _b, const char imm8) -{ - const uint32_t ALIGN_STRUCT(16) - data[4] = {((imm8) & (1 << 0)) ? UINT32_MAX : 0, - ((imm8) & (1 << 1)) ? UINT32_MAX : 0, - ((imm8) & (1 << 2)) ? UINT32_MAX : 0, - ((imm8) & (1 << 3)) ? UINT32_MAX : 0}; - uint32x4_t mask = vld1q_u32(data); - float32x4_t a = vreinterpretq_f32_m128(_a); - float32x4_t b = vreinterpretq_f32_m128(_b); - return vreinterpretq_m128_f32(vbslq_f32(mask, b, a)); -} - -// Blend packed 8-bit integers from a and b using mask, and store the results in -// dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_blendv_epi8 -FORCE_INLINE __m128i _mm_blendv_epi8(__m128i _a, __m128i _b, __m128i _mask) -{ - // Use a signed shift right to create a mask with the sign bit - uint8x16_t mask = - vreinterpretq_u8_s8(vshrq_n_s8(vreinterpretq_s8_m128i(_mask), 7)); - uint8x16_t a = vreinterpretq_u8_m128i(_a); - uint8x16_t b = vreinterpretq_u8_m128i(_b); - return vreinterpretq_m128i_u8(vbslq_u8(mask, b, a)); -} - -// Blend packed double-precision (64-bit) floating-point elements from a and b -// using mask, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_blendv_pd -FORCE_INLINE __m128d _mm_blendv_pd(__m128d _a, __m128d _b, __m128d _mask) -{ - uint64x2_t mask = - vreinterpretq_u64_s64(vshrq_n_s64(vreinterpretq_s64_m128d(_mask), 63)); -#if defined(__aarch64__) || defined(_M_ARM64) - float64x2_t a = vreinterpretq_f64_m128d(_a); - float64x2_t b = vreinterpretq_f64_m128d(_b); - return vreinterpretq_m128d_f64(vbslq_f64(mask, b, a)); -#else - uint64x2_t a = vreinterpretq_u64_m128d(_a); - uint64x2_t b = vreinterpretq_u64_m128d(_b); - return vreinterpretq_m128d_u64(vbslq_u64(mask, b, a)); -#endif -} - -// Blend packed single-precision (32-bit) floating-point elements from a and b -// using mask, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_blendv_ps -FORCE_INLINE __m128 _mm_blendv_ps(__m128 _a, __m128 _b, __m128 _mask) -{ - // Use a signed shift right to create a mask with the sign bit - uint32x4_t mask = - vreinterpretq_u32_s32(vshrq_n_s32(vreinterpretq_s32_m128(_mask), 31)); - float32x4_t a = vreinterpretq_f32_m128(_a); - float32x4_t b = vreinterpretq_f32_m128(_b); - return vreinterpretq_m128_f32(vbslq_f32(mask, b, a)); -} - -// Round the packed double-precision (64-bit) floating-point elements in a up -// to an integer value, and store the results as packed double-precision -// floating-point elements in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_ceil_pd -FORCE_INLINE __m128d _mm_ceil_pd(__m128d a) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_f64(vrndpq_f64(vreinterpretq_f64_m128d(a))); -#else - double *f = (double *) &a; - return _mm_set_pd(ceil(f[1]), ceil(f[0])); -#endif -} - -// Round the packed single-precision (32-bit) floating-point elements in a up to -// an integer value, and store the results as packed single-precision -// floating-point elements in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_ceil_ps -FORCE_INLINE __m128 _mm_ceil_ps(__m128 a) -{ -#if (defined(__aarch64__) || defined(_M_ARM64)) || \ - defined(__ARM_FEATURE_DIRECTED_ROUNDING) - return vreinterpretq_m128_f32(vrndpq_f32(vreinterpretq_f32_m128(a))); -#else - float *f = (float *) &a; - return _mm_set_ps(ceilf(f[3]), ceilf(f[2]), ceilf(f[1]), ceilf(f[0])); -#endif -} - -// Round the lower double-precision (64-bit) floating-point element in b up to -// an integer value, store the result as a double-precision floating-point -// element in the lower element of dst, and copy the upper element from a to the -// upper element of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_ceil_sd -FORCE_INLINE __m128d _mm_ceil_sd(__m128d a, __m128d b) -{ - return _mm_move_sd(a, _mm_ceil_pd(b)); -} - -// Round the lower single-precision (32-bit) floating-point element in b up to -// an integer value, store the result as a single-precision floating-point -// element in the lower element of dst, and copy the upper 3 packed elements -// from a to the upper elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_ceil_ss -FORCE_INLINE __m128 _mm_ceil_ss(__m128 a, __m128 b) -{ - return _mm_move_ss(a, _mm_ceil_ps(b)); -} - -// Compare packed 64-bit integers in a and b for equality, and store the results -// in dst -FORCE_INLINE __m128i _mm_cmpeq_epi64(__m128i a, __m128i b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128i_u64( - vceqq_u64(vreinterpretq_u64_m128i(a), vreinterpretq_u64_m128i(b))); -#else - // ARMv7 lacks vceqq_u64 - // (a == b) -> (a_lo == b_lo) && (a_hi == b_hi) - uint32x4_t cmp = - vceqq_u32(vreinterpretq_u32_m128i(a), vreinterpretq_u32_m128i(b)); - uint32x4_t swapped = vrev64q_u32(cmp); - return vreinterpretq_m128i_u32(vandq_u32(cmp, swapped)); -#endif -} - -// Sign extend packed 16-bit integers in a to packed 32-bit integers, and store -// the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepi16_epi32 -FORCE_INLINE __m128i _mm_cvtepi16_epi32(__m128i a) -{ - return vreinterpretq_m128i_s32( - vmovl_s16(vget_low_s16(vreinterpretq_s16_m128i(a)))); -} - -// Sign extend packed 16-bit integers in a to packed 64-bit integers, and store -// the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepi16_epi64 -FORCE_INLINE __m128i _mm_cvtepi16_epi64(__m128i a) -{ - int16x8_t s16x8 = vreinterpretq_s16_m128i(a); /* xxxx xxxx xxxx 0B0A */ - int32x4_t s32x4 = vmovl_s16(vget_low_s16(s16x8)); /* 000x 000x 000B 000A */ - int64x2_t s64x2 = vmovl_s32(vget_low_s32(s32x4)); /* 0000 000B 0000 000A */ - return vreinterpretq_m128i_s64(s64x2); -} - -// Sign extend packed 32-bit integers in a to packed 64-bit integers, and store -// the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepi32_epi64 -FORCE_INLINE __m128i _mm_cvtepi32_epi64(__m128i a) -{ - return vreinterpretq_m128i_s64( - vmovl_s32(vget_low_s32(vreinterpretq_s32_m128i(a)))); -} - -// Sign extend packed 8-bit integers in a to packed 16-bit integers, and store -// the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepi8_epi16 -FORCE_INLINE __m128i _mm_cvtepi8_epi16(__m128i a) -{ - int8x16_t s8x16 = vreinterpretq_s8_m128i(a); /* xxxx xxxx xxxx DCBA */ - int16x8_t s16x8 = vmovl_s8(vget_low_s8(s8x16)); /* 0x0x 0x0x 0D0C 0B0A */ - return vreinterpretq_m128i_s16(s16x8); -} - -// Sign extend packed 8-bit integers in a to packed 32-bit integers, and store -// the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepi8_epi32 -FORCE_INLINE __m128i _mm_cvtepi8_epi32(__m128i a) -{ - int8x16_t s8x16 = vreinterpretq_s8_m128i(a); /* xxxx xxxx xxxx DCBA */ - int16x8_t s16x8 = vmovl_s8(vget_low_s8(s8x16)); /* 0x0x 0x0x 0D0C 0B0A */ - int32x4_t s32x4 = vmovl_s16(vget_low_s16(s16x8)); /* 000D 000C 000B 000A */ - return vreinterpretq_m128i_s32(s32x4); -} - -// Sign extend packed 8-bit integers in the low 8 bytes of a to packed 64-bit -// integers, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepi8_epi64 -FORCE_INLINE __m128i _mm_cvtepi8_epi64(__m128i a) -{ - int8x16_t s8x16 = vreinterpretq_s8_m128i(a); /* xxxx xxxx xxxx xxBA */ - int16x8_t s16x8 = vmovl_s8(vget_low_s8(s8x16)); /* 0x0x 0x0x 0x0x 0B0A */ - int32x4_t s32x4 = vmovl_s16(vget_low_s16(s16x8)); /* 000x 000x 000B 000A */ - int64x2_t s64x2 = vmovl_s32(vget_low_s32(s32x4)); /* 0000 000B 0000 000A */ - return vreinterpretq_m128i_s64(s64x2); -} - -// Zero extend packed unsigned 16-bit integers in a to packed 32-bit integers, -// and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepu16_epi32 -FORCE_INLINE __m128i _mm_cvtepu16_epi32(__m128i a) -{ - return vreinterpretq_m128i_u32( - vmovl_u16(vget_low_u16(vreinterpretq_u16_m128i(a)))); -} - -// Zero extend packed unsigned 16-bit integers in a to packed 64-bit integers, -// and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepu16_epi64 -FORCE_INLINE __m128i _mm_cvtepu16_epi64(__m128i a) -{ - uint16x8_t u16x8 = vreinterpretq_u16_m128i(a); /* xxxx xxxx xxxx 0B0A */ - uint32x4_t u32x4 = vmovl_u16(vget_low_u16(u16x8)); /* 000x 000x 000B 000A */ - uint64x2_t u64x2 = vmovl_u32(vget_low_u32(u32x4)); /* 0000 000B 0000 000A */ - return vreinterpretq_m128i_u64(u64x2); -} - -// Zero extend packed unsigned 32-bit integers in a to packed 64-bit integers, -// and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepu32_epi64 -FORCE_INLINE __m128i _mm_cvtepu32_epi64(__m128i a) -{ - return vreinterpretq_m128i_u64( - vmovl_u32(vget_low_u32(vreinterpretq_u32_m128i(a)))); -} - -// Zero extend packed unsigned 8-bit integers in a to packed 16-bit integers, -// and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepu8_epi16 -FORCE_INLINE __m128i _mm_cvtepu8_epi16(__m128i a) -{ - uint8x16_t u8x16 = vreinterpretq_u8_m128i(a); /* xxxx xxxx HGFE DCBA */ - uint16x8_t u16x8 = vmovl_u8(vget_low_u8(u8x16)); /* 0H0G 0F0E 0D0C 0B0A */ - return vreinterpretq_m128i_u16(u16x8); -} - -// Zero extend packed unsigned 8-bit integers in a to packed 32-bit integers, -// and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepu8_epi32 -FORCE_INLINE __m128i _mm_cvtepu8_epi32(__m128i a) -{ - uint8x16_t u8x16 = vreinterpretq_u8_m128i(a); /* xxxx xxxx xxxx DCBA */ - uint16x8_t u16x8 = vmovl_u8(vget_low_u8(u8x16)); /* 0x0x 0x0x 0D0C 0B0A */ - uint32x4_t u32x4 = vmovl_u16(vget_low_u16(u16x8)); /* 000D 000C 000B 000A */ - return vreinterpretq_m128i_u32(u32x4); -} - -// Zero extend packed unsigned 8-bit integers in the low 8 bytes of a to packed -// 64-bit integers, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepu8_epi64 -FORCE_INLINE __m128i _mm_cvtepu8_epi64(__m128i a) -{ - uint8x16_t u8x16 = vreinterpretq_u8_m128i(a); /* xxxx xxxx xxxx xxBA */ - uint16x8_t u16x8 = vmovl_u8(vget_low_u8(u8x16)); /* 0x0x 0x0x 0x0x 0B0A */ - uint32x4_t u32x4 = vmovl_u16(vget_low_u16(u16x8)); /* 000x 000x 000B 000A */ - uint64x2_t u64x2 = vmovl_u32(vget_low_u32(u32x4)); /* 0000 000B 0000 000A */ - return vreinterpretq_m128i_u64(u64x2); -} - -// Conditionally multiply the packed double-precision (64-bit) floating-point -// elements in a and b using the high 4 bits in imm8, sum the four products, and -// conditionally store the sum in dst using the low 4 bits of imm8. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_dp_pd -FORCE_INLINE __m128d _mm_dp_pd(__m128d a, __m128d b, const int imm) -{ - // Generate mask value from constant immediate bit value - const int64_t bit0Mask = imm & 0x01 ? UINT64_MAX : 0; - const int64_t bit1Mask = imm & 0x02 ? UINT64_MAX : 0; -#if !SSE2NEON_PRECISE_DP - const int64_t bit4Mask = imm & 0x10 ? UINT64_MAX : 0; - const int64_t bit5Mask = imm & 0x20 ? UINT64_MAX : 0; -#endif - // Conditional multiplication -#if !SSE2NEON_PRECISE_DP - __m128d mul = _mm_mul_pd(a, b); - const __m128d mulMask = - _mm_castsi128_pd(_mm_set_epi64x(bit5Mask, bit4Mask)); - __m128d tmp = _mm_and_pd(mul, mulMask); -#else -#if defined(__aarch64__) || defined(_M_ARM64) - double d0 = (imm & 0x10) ? vgetq_lane_f64(vreinterpretq_f64_m128d(a), 0) * - vgetq_lane_f64(vreinterpretq_f64_m128d(b), 0) - : 0; - double d1 = (imm & 0x20) ? vgetq_lane_f64(vreinterpretq_f64_m128d(a), 1) * - vgetq_lane_f64(vreinterpretq_f64_m128d(b), 1) - : 0; -#else - double d0 = (imm & 0x10) ? ((double *) &a)[0] * ((double *) &b)[0] : 0; - double d1 = (imm & 0x20) ? ((double *) &a)[1] * ((double *) &b)[1] : 0; -#endif - __m128d tmp = _mm_set_pd(d1, d0); -#endif - // Sum the products -#if defined(__aarch64__) || defined(_M_ARM64) - double sum = vpaddd_f64(vreinterpretq_f64_m128d(tmp)); -#else - double sum = *((double *) &tmp) + *(((double *) &tmp) + 1); -#endif - // Conditionally store the sum - const __m128d sumMask = - _mm_castsi128_pd(_mm_set_epi64x(bit1Mask, bit0Mask)); - __m128d res = _mm_and_pd(_mm_set_pd1(sum), sumMask); - return res; -} - -// Conditionally multiply the packed single-precision (32-bit) floating-point -// elements in a and b using the high 4 bits in imm8, sum the four products, -// and conditionally store the sum in dst using the low 4 bits of imm. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_dp_ps -FORCE_INLINE __m128 _mm_dp_ps(__m128 a, __m128 b, const int imm) -{ - float32x4_t elementwise_prod = _mm_mul_ps(a, b); - -#if defined(__aarch64__) || defined(_M_ARM64) - /* shortcuts */ - if (imm == 0xFF) { - return _mm_set1_ps(vaddvq_f32(elementwise_prod)); - } - - if ((imm & 0x0F) == 0x0F) { - if (!(imm & (1 << 4))) - elementwise_prod = vsetq_lane_f32(0.0f, elementwise_prod, 0); - if (!(imm & (1 << 5))) - elementwise_prod = vsetq_lane_f32(0.0f, elementwise_prod, 1); - if (!(imm & (1 << 6))) - elementwise_prod = vsetq_lane_f32(0.0f, elementwise_prod, 2); - if (!(imm & (1 << 7))) - elementwise_prod = vsetq_lane_f32(0.0f, elementwise_prod, 3); - - return _mm_set1_ps(vaddvq_f32(elementwise_prod)); - } -#endif - - float s = 0.0f; - - if (imm & (1 << 4)) - s += vgetq_lane_f32(elementwise_prod, 0); - if (imm & (1 << 5)) - s += vgetq_lane_f32(elementwise_prod, 1); - if (imm & (1 << 6)) - s += vgetq_lane_f32(elementwise_prod, 2); - if (imm & (1 << 7)) - s += vgetq_lane_f32(elementwise_prod, 3); - - const float32_t res[4] = { - (imm & 0x1) ? s : 0.0f, - (imm & 0x2) ? s : 0.0f, - (imm & 0x4) ? s : 0.0f, - (imm & 0x8) ? s : 0.0f, - }; - return vreinterpretq_m128_f32(vld1q_f32(res)); -} - -// Extract a 32-bit integer from a, selected with imm8, and store the result in -// dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_extract_epi32 -// FORCE_INLINE int _mm_extract_epi32(__m128i a, __constrange(0,4) int imm) -#define _mm_extract_epi32(a, imm) \ - vgetq_lane_s32(vreinterpretq_s32_m128i(a), (imm)) - -// Extract a 64-bit integer from a, selected with imm8, and store the result in -// dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_extract_epi64 -// FORCE_INLINE __int64 _mm_extract_epi64(__m128i a, __constrange(0,2) int imm) -#define _mm_extract_epi64(a, imm) \ - vgetq_lane_s64(vreinterpretq_s64_m128i(a), (imm)) - -// Extract an 8-bit integer from a, selected with imm8, and store the result in -// the lower element of dst. FORCE_INLINE int _mm_extract_epi8(__m128i a, -// __constrange(0,16) int imm) -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_extract_epi8 -#define _mm_extract_epi8(a, imm) vgetq_lane_u8(vreinterpretq_u8_m128i(a), (imm)) - -// Extracts the selected single-precision (32-bit) floating-point from a. -// FORCE_INLINE int _mm_extract_ps(__m128 a, __constrange(0,4) int imm) -#define _mm_extract_ps(a, imm) vgetq_lane_s32(vreinterpretq_s32_m128(a), (imm)) - -// Round the packed double-precision (64-bit) floating-point elements in a down -// to an integer value, and store the results as packed double-precision -// floating-point elements in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_floor_pd -FORCE_INLINE __m128d _mm_floor_pd(__m128d a) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128d_f64(vrndmq_f64(vreinterpretq_f64_m128d(a))); -#else - double *f = (double *) &a; - return _mm_set_pd(floor(f[1]), floor(f[0])); -#endif -} - -// Round the packed single-precision (32-bit) floating-point elements in a down -// to an integer value, and store the results as packed single-precision -// floating-point elements in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_floor_ps -FORCE_INLINE __m128 _mm_floor_ps(__m128 a) -{ -#if (defined(__aarch64__) || defined(_M_ARM64)) || \ - defined(__ARM_FEATURE_DIRECTED_ROUNDING) - return vreinterpretq_m128_f32(vrndmq_f32(vreinterpretq_f32_m128(a))); -#else - float *f = (float *) &a; - return _mm_set_ps(floorf(f[3]), floorf(f[2]), floorf(f[1]), floorf(f[0])); -#endif -} - -// Round the lower double-precision (64-bit) floating-point element in b down to -// an integer value, store the result as a double-precision floating-point -// element in the lower element of dst, and copy the upper element from a to the -// upper element of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_floor_sd -FORCE_INLINE __m128d _mm_floor_sd(__m128d a, __m128d b) -{ - return _mm_move_sd(a, _mm_floor_pd(b)); -} - -// Round the lower single-precision (32-bit) floating-point element in b down to -// an integer value, store the result as a single-precision floating-point -// element in the lower element of dst, and copy the upper 3 packed elements -// from a to the upper elements of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_floor_ss -FORCE_INLINE __m128 _mm_floor_ss(__m128 a, __m128 b) -{ - return _mm_move_ss(a, _mm_floor_ps(b)); -} - -// Copy a to dst, and insert the 32-bit integer i into dst at the location -// specified by imm8. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_insert_epi32 -// FORCE_INLINE __m128i _mm_insert_epi32(__m128i a, int b, -// __constrange(0,4) int imm) -#define _mm_insert_epi32(a, b, imm) \ - vreinterpretq_m128i_s32( \ - vsetq_lane_s32((b), vreinterpretq_s32_m128i(a), (imm))) - -// Copy a to dst, and insert the 64-bit integer i into dst at the location -// specified by imm8. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_insert_epi64 -// FORCE_INLINE __m128i _mm_insert_epi64(__m128i a, __int64 b, -// __constrange(0,2) int imm) -#define _mm_insert_epi64(a, b, imm) \ - vreinterpretq_m128i_s64( \ - vsetq_lane_s64((b), vreinterpretq_s64_m128i(a), (imm))) - -// Copy a to dst, and insert the lower 8-bit integer from i into dst at the -// location specified by imm8. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_insert_epi8 -// FORCE_INLINE __m128i _mm_insert_epi8(__m128i a, int b, -// __constrange(0,16) int imm) -#define _mm_insert_epi8(a, b, imm) \ - vreinterpretq_m128i_s8(vsetq_lane_s8((b), vreinterpretq_s8_m128i(a), (imm))) - -// Copy a to tmp, then insert a single-precision (32-bit) floating-point -// element from b into tmp using the control in imm8. Store tmp to dst using -// the mask in imm8 (elements are zeroed out when the corresponding bit is set). -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=insert_ps -#define _mm_insert_ps(a, b, imm8) \ - _sse2neon_define2( \ - __m128, a, b, \ - float32x4_t tmp1 = \ - vsetq_lane_f32(vgetq_lane_f32(_b, (imm8 >> 6) & 0x3), \ - vreinterpretq_f32_m128(_a), 0); \ - float32x4_t tmp2 = \ - vsetq_lane_f32(vgetq_lane_f32(tmp1, 0), \ - vreinterpretq_f32_m128(_a), ((imm8 >> 4) & 0x3)); \ - const uint32_t data[4] = \ - _sse2neon_init(((imm8) & (1 << 0)) ? UINT32_MAX : 0, \ - ((imm8) & (1 << 1)) ? UINT32_MAX : 0, \ - ((imm8) & (1 << 2)) ? UINT32_MAX : 0, \ - ((imm8) & (1 << 3)) ? UINT32_MAX : 0); \ - uint32x4_t mask = vld1q_u32(data); \ - float32x4_t all_zeros = vdupq_n_f32(0); \ - \ - _sse2neon_return(vreinterpretq_m128_f32( \ - vbslq_f32(mask, all_zeros, vreinterpretq_f32_m128(tmp2))));) - -// Compare packed signed 32-bit integers in a and b, and store packed maximum -// values in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_epi32 -FORCE_INLINE __m128i _mm_max_epi32(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_s32( - vmaxq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); -} - -// Compare packed signed 8-bit integers in a and b, and store packed maximum -// values in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_epi8 -FORCE_INLINE __m128i _mm_max_epi8(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_s8( - vmaxq_s8(vreinterpretq_s8_m128i(a), vreinterpretq_s8_m128i(b))); -} - -// Compare packed unsigned 16-bit integers in a and b, and store packed maximum -// values in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_epu16 -FORCE_INLINE __m128i _mm_max_epu16(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_u16( - vmaxq_u16(vreinterpretq_u16_m128i(a), vreinterpretq_u16_m128i(b))); -} - -// Compare packed unsigned 32-bit integers in a and b, and store packed maximum -// values in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_epu32 -FORCE_INLINE __m128i _mm_max_epu32(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_u32( - vmaxq_u32(vreinterpretq_u32_m128i(a), vreinterpretq_u32_m128i(b))); -} - -// Compare packed signed 32-bit integers in a and b, and store packed minimum -// values in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_min_epi32 -FORCE_INLINE __m128i _mm_min_epi32(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_s32( - vminq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); -} - -// Compare packed signed 8-bit integers in a and b, and store packed minimum -// values in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_min_epi8 -FORCE_INLINE __m128i _mm_min_epi8(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_s8( - vminq_s8(vreinterpretq_s8_m128i(a), vreinterpretq_s8_m128i(b))); -} - -// Compare packed unsigned 16-bit integers in a and b, and store packed minimum -// values in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_min_epu16 -FORCE_INLINE __m128i _mm_min_epu16(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_u16( - vminq_u16(vreinterpretq_u16_m128i(a), vreinterpretq_u16_m128i(b))); -} - -// Compare packed unsigned 32-bit integers in a and b, and store packed minimum -// values in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_epu32 -FORCE_INLINE __m128i _mm_min_epu32(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_u32( - vminq_u32(vreinterpretq_u32_m128i(a), vreinterpretq_u32_m128i(b))); -} - -// Horizontally compute the minimum amongst the packed unsigned 16-bit integers -// in a, store the minimum and index in dst, and zero the remaining bits in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_minpos_epu16 -FORCE_INLINE __m128i _mm_minpos_epu16(__m128i a) -{ - __m128i dst; - uint16_t min, idx = 0; -#if defined(__aarch64__) || defined(_M_ARM64) - // Find the minimum value - min = vminvq_u16(vreinterpretq_u16_m128i(a)); - - // Get the index of the minimum value - static const uint16_t idxv[] = {0, 1, 2, 3, 4, 5, 6, 7}; - uint16x8_t minv = vdupq_n_u16(min); - uint16x8_t cmeq = vceqq_u16(minv, vreinterpretq_u16_m128i(a)); - idx = vminvq_u16(vornq_u16(vld1q_u16(idxv), cmeq)); -#else - // Find the minimum value - __m64 tmp; - tmp = vreinterpret_m64_u16( - vmin_u16(vget_low_u16(vreinterpretq_u16_m128i(a)), - vget_high_u16(vreinterpretq_u16_m128i(a)))); - tmp = vreinterpret_m64_u16( - vpmin_u16(vreinterpret_u16_m64(tmp), vreinterpret_u16_m64(tmp))); - tmp = vreinterpret_m64_u16( - vpmin_u16(vreinterpret_u16_m64(tmp), vreinterpret_u16_m64(tmp))); - min = vget_lane_u16(vreinterpret_u16_m64(tmp), 0); - // Get the index of the minimum value - int i; - for (i = 0; i < 8; i++) { - if (min == vgetq_lane_u16(vreinterpretq_u16_m128i(a), 0)) { - idx = (uint16_t) i; - break; - } - a = _mm_srli_si128(a, 2); - } -#endif - // Generate result - dst = _mm_setzero_si128(); - dst = vreinterpretq_m128i_u16( - vsetq_lane_u16(min, vreinterpretq_u16_m128i(dst), 0)); - dst = vreinterpretq_m128i_u16( - vsetq_lane_u16(idx, vreinterpretq_u16_m128i(dst), 1)); - return dst; -} - -// Compute the sum of absolute differences (SADs) of quadruplets of unsigned -// 8-bit integers in a compared to those in b, and store the 16-bit results in -// dst. Eight SADs are performed using one quadruplet from b and eight -// quadruplets from a. One quadruplet is selected from b starting at on the -// offset specified in imm8. Eight quadruplets are formed from sequential 8-bit -// integers selected from a starting at the offset specified in imm8. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mpsadbw_epu8 -FORCE_INLINE __m128i _mm_mpsadbw_epu8(__m128i a, __m128i b, const int imm) -{ - uint8x16_t _a, _b; - - switch (imm & 0x4) { - case 0: - // do nothing - _a = vreinterpretq_u8_m128i(a); - break; - case 4: - _a = vreinterpretq_u8_u32(vextq_u32(vreinterpretq_u32_m128i(a), - vreinterpretq_u32_m128i(a), 1)); - break; - default: -#if defined(__GNUC__) || defined(__clang__) - __builtin_unreachable(); -#elif defined(_MSC_VER) - __assume(0); -#endif - break; - } - - switch (imm & 0x3) { - case 0: - _b = vreinterpretq_u8_u32( - vdupq_n_u32(vgetq_lane_u32(vreinterpretq_u32_m128i(b), 0))); - break; - case 1: - _b = vreinterpretq_u8_u32( - vdupq_n_u32(vgetq_lane_u32(vreinterpretq_u32_m128i(b), 1))); - break; - case 2: - _b = vreinterpretq_u8_u32( - vdupq_n_u32(vgetq_lane_u32(vreinterpretq_u32_m128i(b), 2))); - break; - case 3: - _b = vreinterpretq_u8_u32( - vdupq_n_u32(vgetq_lane_u32(vreinterpretq_u32_m128i(b), 3))); - break; - default: -#if defined(__GNUC__) || defined(__clang__) - __builtin_unreachable(); -#elif defined(_MSC_VER) - __assume(0); -#endif - break; - } - - int16x8_t c04, c15, c26, c37; - uint8x8_t low_b = vget_low_u8(_b); - c04 = vreinterpretq_s16_u16(vabdl_u8(vget_low_u8(_a), low_b)); - uint8x16_t _a_1 = vextq_u8(_a, _a, 1); - c15 = vreinterpretq_s16_u16(vabdl_u8(vget_low_u8(_a_1), low_b)); - uint8x16_t _a_2 = vextq_u8(_a, _a, 2); - c26 = vreinterpretq_s16_u16(vabdl_u8(vget_low_u8(_a_2), low_b)); - uint8x16_t _a_3 = vextq_u8(_a, _a, 3); - c37 = vreinterpretq_s16_u16(vabdl_u8(vget_low_u8(_a_3), low_b)); -#if defined(__aarch64__) || defined(_M_ARM64) - // |0|4|2|6| - c04 = vpaddq_s16(c04, c26); - // |1|5|3|7| - c15 = vpaddq_s16(c15, c37); - - int32x4_t trn1_c = - vtrn1q_s32(vreinterpretq_s32_s16(c04), vreinterpretq_s32_s16(c15)); - int32x4_t trn2_c = - vtrn2q_s32(vreinterpretq_s32_s16(c04), vreinterpretq_s32_s16(c15)); - return vreinterpretq_m128i_s16(vpaddq_s16(vreinterpretq_s16_s32(trn1_c), - vreinterpretq_s16_s32(trn2_c))); -#else - int16x4_t c01, c23, c45, c67; - c01 = vpadd_s16(vget_low_s16(c04), vget_low_s16(c15)); - c23 = vpadd_s16(vget_low_s16(c26), vget_low_s16(c37)); - c45 = vpadd_s16(vget_high_s16(c04), vget_high_s16(c15)); - c67 = vpadd_s16(vget_high_s16(c26), vget_high_s16(c37)); - - return vreinterpretq_m128i_s16( - vcombine_s16(vpadd_s16(c01, c23), vpadd_s16(c45, c67))); -#endif -} - -// Multiply the low signed 32-bit integers from each packed 64-bit element in -// a and b, and store the signed 64-bit results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mul_epi32 -FORCE_INLINE __m128i _mm_mul_epi32(__m128i a, __m128i b) -{ - // vmull_s32 upcasts instead of masking, so we downcast. - int32x2_t a_lo = vmovn_s64(vreinterpretq_s64_m128i(a)); - int32x2_t b_lo = vmovn_s64(vreinterpretq_s64_m128i(b)); - return vreinterpretq_m128i_s64(vmull_s32(a_lo, b_lo)); -} - -// Multiply the packed 32-bit integers in a and b, producing intermediate 64-bit -// integers, and store the low 32 bits of the intermediate integers in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mullo_epi32 -FORCE_INLINE __m128i _mm_mullo_epi32(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_s32( - vmulq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); -} - -// Convert packed signed 32-bit integers from a and b to packed 16-bit integers -// using unsigned saturation, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_packus_epi32 -FORCE_INLINE __m128i _mm_packus_epi32(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_u16( - vcombine_u16(vqmovun_s32(vreinterpretq_s32_m128i(a)), - vqmovun_s32(vreinterpretq_s32_m128i(b)))); -} - -// Round the packed double-precision (64-bit) floating-point elements in a using -// the rounding parameter, and store the results as packed double-precision -// floating-point elements in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_round_pd -FORCE_INLINE __m128d _mm_round_pd(__m128d a, int rounding) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - switch (rounding) { - case (_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC): - return vreinterpretq_m128d_f64(vrndnq_f64(vreinterpretq_f64_m128d(a))); - case (_MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC): - return _mm_floor_pd(a); - case (_MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC): - return _mm_ceil_pd(a); - case (_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC): - return vreinterpretq_m128d_f64(vrndq_f64(vreinterpretq_f64_m128d(a))); - default: //_MM_FROUND_CUR_DIRECTION - return vreinterpretq_m128d_f64(vrndiq_f64(vreinterpretq_f64_m128d(a))); - } -#else - double *v_double = (double *) &a; - - if (rounding == (_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC) || - (rounding == _MM_FROUND_CUR_DIRECTION && - _MM_GET_ROUNDING_MODE() == _MM_ROUND_NEAREST)) { - double res[2], tmp; - for (int i = 0; i < 2; i++) { - tmp = (v_double[i] < 0) ? -v_double[i] : v_double[i]; - double roundDown = floor(tmp); // Round down value - double roundUp = ceil(tmp); // Round up value - double diffDown = tmp - roundDown; - double diffUp = roundUp - tmp; - if (diffDown < diffUp) { - /* If it's closer to the round down value, then use it */ - res[i] = roundDown; - } else if (diffDown > diffUp) { - /* If it's closer to the round up value, then use it */ - res[i] = roundUp; - } else { - /* If it's equidistant between round up and round down value, - * pick the one which is an even number */ - double half = roundDown / 2; - if (half != floor(half)) { - /* If the round down value is odd, return the round up value - */ - res[i] = roundUp; - } else { - /* If the round up value is odd, return the round down value - */ - res[i] = roundDown; - } - } - res[i] = (v_double[i] < 0) ? -res[i] : res[i]; - } - return _mm_set_pd(res[1], res[0]); - } else if (rounding == (_MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC) || - (rounding == _MM_FROUND_CUR_DIRECTION && - _MM_GET_ROUNDING_MODE() == _MM_ROUND_DOWN)) { - return _mm_floor_pd(a); - } else if (rounding == (_MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC) || - (rounding == _MM_FROUND_CUR_DIRECTION && - _MM_GET_ROUNDING_MODE() == _MM_ROUND_UP)) { - return _mm_ceil_pd(a); - } - return _mm_set_pd(v_double[1] > 0 ? floor(v_double[1]) : ceil(v_double[1]), - v_double[0] > 0 ? floor(v_double[0]) : ceil(v_double[0])); -#endif -} - -// Round the packed single-precision (32-bit) floating-point elements in a using -// the rounding parameter, and store the results as packed single-precision -// floating-point elements in dst. -// software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_round_ps -FORCE_INLINE __m128 _mm_round_ps(__m128 a, int rounding) -{ -#if (defined(__aarch64__) || defined(_M_ARM64)) || \ - defined(__ARM_FEATURE_DIRECTED_ROUNDING) - switch (rounding) { - case (_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC): - return vreinterpretq_m128_f32(vrndnq_f32(vreinterpretq_f32_m128(a))); - case (_MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC): - return _mm_floor_ps(a); - case (_MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC): - return _mm_ceil_ps(a); - case (_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC): - return vreinterpretq_m128_f32(vrndq_f32(vreinterpretq_f32_m128(a))); - default: //_MM_FROUND_CUR_DIRECTION - return vreinterpretq_m128_f32(vrndiq_f32(vreinterpretq_f32_m128(a))); - } -#else - float *v_float = (float *) &a; - - if (rounding == (_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC) || - (rounding == _MM_FROUND_CUR_DIRECTION && - _MM_GET_ROUNDING_MODE() == _MM_ROUND_NEAREST)) { - uint32x4_t signmask = vdupq_n_u32(0x80000000); - float32x4_t half = vbslq_f32(signmask, vreinterpretq_f32_m128(a), - vdupq_n_f32(0.5f)); /* +/- 0.5 */ - int32x4_t r_normal = vcvtq_s32_f32(vaddq_f32( - vreinterpretq_f32_m128(a), half)); /* round to integer: [a + 0.5]*/ - int32x4_t r_trunc = vcvtq_s32_f32( - vreinterpretq_f32_m128(a)); /* truncate to integer: [a] */ - int32x4_t plusone = vreinterpretq_s32_u32(vshrq_n_u32( - vreinterpretq_u32_s32(vnegq_s32(r_trunc)), 31)); /* 1 or 0 */ - int32x4_t r_even = vbicq_s32(vaddq_s32(r_trunc, plusone), - vdupq_n_s32(1)); /* ([a] + {0,1}) & ~1 */ - float32x4_t delta = vsubq_f32( - vreinterpretq_f32_m128(a), - vcvtq_f32_s32(r_trunc)); /* compute delta: delta = (a - [a]) */ - uint32x4_t is_delta_half = - vceqq_f32(delta, half); /* delta == +/- 0.5 */ - return vreinterpretq_m128_f32( - vcvtq_f32_s32(vbslq_s32(is_delta_half, r_even, r_normal))); - } else if (rounding == (_MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC) || - (rounding == _MM_FROUND_CUR_DIRECTION && - _MM_GET_ROUNDING_MODE() == _MM_ROUND_DOWN)) { - return _mm_floor_ps(a); - } else if (rounding == (_MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC) || - (rounding == _MM_FROUND_CUR_DIRECTION && - _MM_GET_ROUNDING_MODE() == _MM_ROUND_UP)) { - return _mm_ceil_ps(a); - } - return _mm_set_ps(v_float[3] > 0 ? floorf(v_float[3]) : ceilf(v_float[3]), - v_float[2] > 0 ? floorf(v_float[2]) : ceilf(v_float[2]), - v_float[1] > 0 ? floorf(v_float[1]) : ceilf(v_float[1]), - v_float[0] > 0 ? floorf(v_float[0]) : ceilf(v_float[0])); -#endif -} - -// Round the lower double-precision (64-bit) floating-point element in b using -// the rounding parameter, store the result as a double-precision floating-point -// element in the lower element of dst, and copy the upper element from a to the -// upper element of dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_round_sd -FORCE_INLINE __m128d _mm_round_sd(__m128d a, __m128d b, int rounding) -{ - return _mm_move_sd(a, _mm_round_pd(b, rounding)); -} - -// Round the lower single-precision (32-bit) floating-point element in b using -// the rounding parameter, store the result as a single-precision floating-point -// element in the lower element of dst, and copy the upper 3 packed elements -// from a to the upper elements of dst. Rounding is done according to the -// rounding[3:0] parameter, which can be one of: -// (_MM_FROUND_TO_NEAREST_INT |_MM_FROUND_NO_EXC) // round to nearest, and -// suppress exceptions -// (_MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC) // round down, and -// suppress exceptions -// (_MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC) // round up, and suppress -// exceptions -// (_MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC) // truncate, and suppress -// exceptions _MM_FROUND_CUR_DIRECTION // use MXCSR.RC; see -// _MM_SET_ROUNDING_MODE -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_round_ss -FORCE_INLINE __m128 _mm_round_ss(__m128 a, __m128 b, int rounding) -{ - return _mm_move_ss(a, _mm_round_ps(b, rounding)); -} - -// Load 128-bits of integer data from memory into dst using a non-temporal -// memory hint. mem_addr must be aligned on a 16-byte boundary or a -// general-protection exception may be generated. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_stream_load_si128 -FORCE_INLINE __m128i _mm_stream_load_si128(__m128i *p) -{ -#if __has_builtin(__builtin_nontemporal_store) - return __builtin_nontemporal_load(p); -#else - return vreinterpretq_m128i_s64(vld1q_s64((int64_t *) p)); -#endif -} - -// Compute the bitwise NOT of a and then AND with a 128-bit vector containing -// all 1's, and return 1 if the result is zero, otherwise return 0. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_test_all_ones -FORCE_INLINE int _mm_test_all_ones(__m128i a) -{ - return (uint64_t) (vgetq_lane_s64(a, 0) & vgetq_lane_s64(a, 1)) == - ~(uint64_t) 0; -} - -// Compute the bitwise AND of 128 bits (representing integer data) in a and -// mask, and return 1 if the result is zero, otherwise return 0. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_test_all_zeros -FORCE_INLINE int _mm_test_all_zeros(__m128i a, __m128i mask) -{ - int64x2_t a_and_mask = - vandq_s64(vreinterpretq_s64_m128i(a), vreinterpretq_s64_m128i(mask)); - return !(vgetq_lane_s64(a_and_mask, 0) | vgetq_lane_s64(a_and_mask, 1)); -} - -// Compute the bitwise AND of 128 bits (representing integer data) in a and -// mask, and set ZF to 1 if the result is zero, otherwise set ZF to 0. Compute -// the bitwise NOT of a and then AND with mask, and set CF to 1 if the result is -// zero, otherwise set CF to 0. Return 1 if both the ZF and CF values are zero, -// otherwise return 0. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_test_mix_ones_zero -// Note: Argument names may be wrong in the Intel intrinsics guide. -FORCE_INLINE int _mm_test_mix_ones_zeros(__m128i a, __m128i mask) -{ - uint64x2_t v = vreinterpretq_u64_m128i(a); - uint64x2_t m = vreinterpretq_u64_m128i(mask); - - // find ones (set-bits) and zeros (clear-bits) under clip mask - uint64x2_t ones = vandq_u64(m, v); - uint64x2_t zeros = vbicq_u64(m, v); - - // If both 128-bit variables are populated (non-zero) then return 1. - // For comparision purposes, first compact each var down to 32-bits. - uint32x2_t reduced = vpmax_u32(vqmovn_u64(ones), vqmovn_u64(zeros)); - - // if folding minimum is non-zero then both vars must be non-zero - return (vget_lane_u32(vpmin_u32(reduced, reduced), 0) != 0); -} - -// Compute the bitwise AND of 128 bits (representing integer data) in a and b, -// and set ZF to 1 if the result is zero, otherwise set ZF to 0. Compute the -// bitwise NOT of a and then AND with b, and set CF to 1 if the result is zero, -// otherwise set CF to 0. Return the CF value. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_testc_si128 -FORCE_INLINE int _mm_testc_si128(__m128i a, __m128i b) -{ - int64x2_t s64 = - vbicq_s64(vreinterpretq_s64_m128i(b), vreinterpretq_s64_m128i(a)); - return !(vgetq_lane_s64(s64, 0) | vgetq_lane_s64(s64, 1)); -} - -// Compute the bitwise AND of 128 bits (representing integer data) in a and b, -// and set ZF to 1 if the result is zero, otherwise set ZF to 0. Compute the -// bitwise NOT of a and then AND with b, and set CF to 1 if the result is zero, -// otherwise set CF to 0. Return 1 if both the ZF and CF values are zero, -// otherwise return 0. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_testnzc_si128 -#define _mm_testnzc_si128(a, b) _mm_test_mix_ones_zeros(a, b) - -// Compute the bitwise AND of 128 bits (representing integer data) in a and b, -// and set ZF to 1 if the result is zero, otherwise set ZF to 0. Compute the -// bitwise NOT of a and then AND with b, and set CF to 1 if the result is zero, -// otherwise set CF to 0. Return the ZF value. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_testz_si128 -FORCE_INLINE int _mm_testz_si128(__m128i a, __m128i b) -{ - int64x2_t s64 = - vandq_s64(vreinterpretq_s64_m128i(a), vreinterpretq_s64_m128i(b)); - return !(vgetq_lane_s64(s64, 0) | vgetq_lane_s64(s64, 1)); -} - -/* SSE4.2 */ - -static const uint16_t ALIGN_STRUCT(16) _sse2neon_cmpestr_mask16b[8] = { - 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, -}; -static const uint8_t ALIGN_STRUCT(16) _sse2neon_cmpestr_mask8b[16] = { - 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, - 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, -}; - -/* specify the source data format */ -#define _SIDD_UBYTE_OPS 0x00 /* unsigned 8-bit characters */ -#define _SIDD_UWORD_OPS 0x01 /* unsigned 16-bit characters */ -#define _SIDD_SBYTE_OPS 0x02 /* signed 8-bit characters */ -#define _SIDD_SWORD_OPS 0x03 /* signed 16-bit characters */ - -/* specify the comparison operation */ -#define _SIDD_CMP_EQUAL_ANY 0x00 /* compare equal any: strchr */ -#define _SIDD_CMP_RANGES 0x04 /* compare ranges */ -#define _SIDD_CMP_EQUAL_EACH 0x08 /* compare equal each: strcmp */ -#define _SIDD_CMP_EQUAL_ORDERED 0x0C /* compare equal ordered */ - -/* specify the polarity */ -#define _SIDD_POSITIVE_POLARITY 0x00 -#define _SIDD_MASKED_POSITIVE_POLARITY 0x20 -#define _SIDD_NEGATIVE_POLARITY 0x10 /* negate results */ -#define _SIDD_MASKED_NEGATIVE_POLARITY \ - 0x30 /* negate results only before end of string */ - -/* specify the output selection in _mm_cmpXstri */ -#define _SIDD_LEAST_SIGNIFICANT 0x00 -#define _SIDD_MOST_SIGNIFICANT 0x40 - -/* specify the output selection in _mm_cmpXstrm */ -#define _SIDD_BIT_MASK 0x00 -#define _SIDD_UNIT_MASK 0x40 - -/* Pattern Matching for C macros. - * https://github.com/pfultz2/Cloak/wiki/C-Preprocessor-tricks,-tips,-and-idioms - */ - -/* catenate */ -#define SSE2NEON_PRIMITIVE_CAT(a, ...) a##__VA_ARGS__ -#define SSE2NEON_CAT(a, b) SSE2NEON_PRIMITIVE_CAT(a, b) - -#define SSE2NEON_IIF(c) SSE2NEON_PRIMITIVE_CAT(SSE2NEON_IIF_, c) -/* run the 2nd parameter */ -#define SSE2NEON_IIF_0(t, ...) __VA_ARGS__ -/* run the 1st parameter */ -#define SSE2NEON_IIF_1(t, ...) t - -#define SSE2NEON_COMPL(b) SSE2NEON_PRIMITIVE_CAT(SSE2NEON_COMPL_, b) -#define SSE2NEON_COMPL_0 1 -#define SSE2NEON_COMPL_1 0 - -#define SSE2NEON_DEC(x) SSE2NEON_PRIMITIVE_CAT(SSE2NEON_DEC_, x) -#define SSE2NEON_DEC_1 0 -#define SSE2NEON_DEC_2 1 -#define SSE2NEON_DEC_3 2 -#define SSE2NEON_DEC_4 3 -#define SSE2NEON_DEC_5 4 -#define SSE2NEON_DEC_6 5 -#define SSE2NEON_DEC_7 6 -#define SSE2NEON_DEC_8 7 -#define SSE2NEON_DEC_9 8 -#define SSE2NEON_DEC_10 9 -#define SSE2NEON_DEC_11 10 -#define SSE2NEON_DEC_12 11 -#define SSE2NEON_DEC_13 12 -#define SSE2NEON_DEC_14 13 -#define SSE2NEON_DEC_15 14 -#define SSE2NEON_DEC_16 15 - -/* detection */ -#define SSE2NEON_CHECK_N(x, n, ...) n -#define SSE2NEON_CHECK(...) SSE2NEON_CHECK_N(__VA_ARGS__, 0, ) -#define SSE2NEON_PROBE(x) x, 1, - -#define SSE2NEON_NOT(x) SSE2NEON_CHECK(SSE2NEON_PRIMITIVE_CAT(SSE2NEON_NOT_, x)) -#define SSE2NEON_NOT_0 SSE2NEON_PROBE(~) - -#define SSE2NEON_BOOL(x) SSE2NEON_COMPL(SSE2NEON_NOT(x)) -#define SSE2NEON_IF(c) SSE2NEON_IIF(SSE2NEON_BOOL(c)) - -#define SSE2NEON_EAT(...) -#define SSE2NEON_EXPAND(...) __VA_ARGS__ -#define SSE2NEON_WHEN(c) SSE2NEON_IF(c)(SSE2NEON_EXPAND, SSE2NEON_EAT) - -/* recursion */ -/* deferred expression */ -#define SSE2NEON_EMPTY() -#define SSE2NEON_DEFER(id) id SSE2NEON_EMPTY() -#define SSE2NEON_OBSTRUCT(...) __VA_ARGS__ SSE2NEON_DEFER(SSE2NEON_EMPTY)() -#define SSE2NEON_EXPAND(...) __VA_ARGS__ - -#define SSE2NEON_EVAL(...) \ - SSE2NEON_EVAL1(SSE2NEON_EVAL1(SSE2NEON_EVAL1(__VA_ARGS__))) -#define SSE2NEON_EVAL1(...) \ - SSE2NEON_EVAL2(SSE2NEON_EVAL2(SSE2NEON_EVAL2(__VA_ARGS__))) -#define SSE2NEON_EVAL2(...) \ - SSE2NEON_EVAL3(SSE2NEON_EVAL3(SSE2NEON_EVAL3(__VA_ARGS__))) -#define SSE2NEON_EVAL3(...) __VA_ARGS__ - -#define SSE2NEON_REPEAT(count, macro, ...) \ - SSE2NEON_WHEN(count) \ - (SSE2NEON_OBSTRUCT(SSE2NEON_REPEAT_INDIRECT)()( \ - SSE2NEON_DEC(count), macro, \ - __VA_ARGS__) SSE2NEON_OBSTRUCT(macro)(SSE2NEON_DEC(count), \ - __VA_ARGS__)) -#define SSE2NEON_REPEAT_INDIRECT() SSE2NEON_REPEAT - -#define SSE2NEON_SIZE_OF_byte 8 -#define SSE2NEON_NUMBER_OF_LANES_byte 16 -#define SSE2NEON_SIZE_OF_word 16 -#define SSE2NEON_NUMBER_OF_LANES_word 8 - -#define SSE2NEON_COMPARE_EQUAL_THEN_FILL_LANE(i, type) \ - mtx[i] = vreinterpretq_m128i_##type(vceqq_##type( \ - vdupq_n_##type(vgetq_lane_##type(vreinterpretq_##type##_m128i(b), i)), \ - vreinterpretq_##type##_m128i(a))); - -#define SSE2NEON_FILL_LANE(i, type) \ - vec_b[i] = \ - vdupq_n_##type(vgetq_lane_##type(vreinterpretq_##type##_m128i(b), i)); - -#define PCMPSTR_RANGES(a, b, mtx, data_type_prefix, type_prefix, size, \ - number_of_lanes, byte_or_word) \ - do { \ - SSE2NEON_CAT( \ - data_type_prefix, \ - SSE2NEON_CAT(size, \ - SSE2NEON_CAT(x, SSE2NEON_CAT(number_of_lanes, _t)))) \ - vec_b[number_of_lanes]; \ - __m128i mask = SSE2NEON_IIF(byte_or_word)( \ - vreinterpretq_m128i_u16(vdupq_n_u16(0xff)), \ - vreinterpretq_m128i_u32(vdupq_n_u32(0xffff))); \ - SSE2NEON_EVAL(SSE2NEON_REPEAT(number_of_lanes, SSE2NEON_FILL_LANE, \ - SSE2NEON_CAT(type_prefix, size))) \ - for (int i = 0; i < number_of_lanes; i++) { \ - mtx[i] = SSE2NEON_CAT(vreinterpretq_m128i_u, \ - size)(SSE2NEON_CAT(vbslq_u, size)( \ - SSE2NEON_CAT(vreinterpretq_u, \ - SSE2NEON_CAT(size, _m128i))(mask), \ - SSE2NEON_CAT(vcgeq_, SSE2NEON_CAT(type_prefix, size))( \ - vec_b[i], \ - SSE2NEON_CAT( \ - vreinterpretq_, \ - SSE2NEON_CAT(type_prefix, \ - SSE2NEON_CAT(size, _m128i(a))))), \ - SSE2NEON_CAT(vcleq_, SSE2NEON_CAT(type_prefix, size))( \ - vec_b[i], \ - SSE2NEON_CAT( \ - vreinterpretq_, \ - SSE2NEON_CAT(type_prefix, \ - SSE2NEON_CAT(size, _m128i(a))))))); \ - } \ - } while (0) - -#define PCMPSTR_EQ(a, b, mtx, size, number_of_lanes) \ - do { \ - SSE2NEON_EVAL(SSE2NEON_REPEAT(number_of_lanes, \ - SSE2NEON_COMPARE_EQUAL_THEN_FILL_LANE, \ - SSE2NEON_CAT(u, size))) \ - } while (0) - -#define SSE2NEON_CMP_EQUAL_ANY_IMPL(type) \ - static int _sse2neon_cmp_##type##_equal_any(__m128i a, int la, __m128i b, \ - int lb) \ - { \ - __m128i mtx[16]; \ - PCMPSTR_EQ(a, b, mtx, SSE2NEON_CAT(SSE2NEON_SIZE_OF_, type), \ - SSE2NEON_CAT(SSE2NEON_NUMBER_OF_LANES_, type)); \ - return SSE2NEON_CAT( \ - _sse2neon_aggregate_equal_any_, \ - SSE2NEON_CAT( \ - SSE2NEON_CAT(SSE2NEON_SIZE_OF_, type), \ - SSE2NEON_CAT(x, SSE2NEON_CAT(SSE2NEON_NUMBER_OF_LANES_, \ - type))))(la, lb, mtx); \ - } - -#define SSE2NEON_CMP_RANGES_IMPL(type, data_type, us, byte_or_word) \ - static int _sse2neon_cmp_##us##type##_ranges(__m128i a, int la, __m128i b, \ - int lb) \ - { \ - __m128i mtx[16]; \ - PCMPSTR_RANGES( \ - a, b, mtx, data_type, us, SSE2NEON_CAT(SSE2NEON_SIZE_OF_, type), \ - SSE2NEON_CAT(SSE2NEON_NUMBER_OF_LANES_, type), byte_or_word); \ - return SSE2NEON_CAT( \ - _sse2neon_aggregate_ranges_, \ - SSE2NEON_CAT( \ - SSE2NEON_CAT(SSE2NEON_SIZE_OF_, type), \ - SSE2NEON_CAT(x, SSE2NEON_CAT(SSE2NEON_NUMBER_OF_LANES_, \ - type))))(la, lb, mtx); \ - } - -#define SSE2NEON_CMP_EQUAL_ORDERED_IMPL(type) \ - static int _sse2neon_cmp_##type##_equal_ordered(__m128i a, int la, \ - __m128i b, int lb) \ - { \ - __m128i mtx[16]; \ - PCMPSTR_EQ(a, b, mtx, SSE2NEON_CAT(SSE2NEON_SIZE_OF_, type), \ - SSE2NEON_CAT(SSE2NEON_NUMBER_OF_LANES_, type)); \ - return SSE2NEON_CAT( \ - _sse2neon_aggregate_equal_ordered_, \ - SSE2NEON_CAT( \ - SSE2NEON_CAT(SSE2NEON_SIZE_OF_, type), \ - SSE2NEON_CAT(x, \ - SSE2NEON_CAT(SSE2NEON_NUMBER_OF_LANES_, type))))( \ - SSE2NEON_CAT(SSE2NEON_NUMBER_OF_LANES_, type), la, lb, mtx); \ - } - -static int _sse2neon_aggregate_equal_any_8x16(int la, int lb, __m128i mtx[16]) -{ - int res = 0; - int m = (1 << la) - 1; - uint8x8_t vec_mask = vld1_u8(_sse2neon_cmpestr_mask8b); - uint8x8_t t_lo = vtst_u8(vdup_n_u8(m & 0xff), vec_mask); - uint8x8_t t_hi = vtst_u8(vdup_n_u8(m >> 8), vec_mask); - uint8x16_t vec = vcombine_u8(t_lo, t_hi); - for (int j = 0; j < lb; j++) { - mtx[j] = vreinterpretq_m128i_u8( - vandq_u8(vec, vreinterpretq_u8_m128i(mtx[j]))); - mtx[j] = vreinterpretq_m128i_u8( - vshrq_n_u8(vreinterpretq_u8_m128i(mtx[j]), 7)); - int tmp = _sse2neon_vaddvq_u8(vreinterpretq_u8_m128i(mtx[j])) ? 1 : 0; - res |= (tmp << j); - } - return res; -} - -static int _sse2neon_aggregate_equal_any_16x8(int la, int lb, __m128i mtx[16]) -{ - int res = 0; - int m = (1 << la) - 1; - uint16x8_t vec = - vtstq_u16(vdupq_n_u16(m), vld1q_u16(_sse2neon_cmpestr_mask16b)); - for (int j = 0; j < lb; j++) { - mtx[j] = vreinterpretq_m128i_u16( - vandq_u16(vec, vreinterpretq_u16_m128i(mtx[j]))); - mtx[j] = vreinterpretq_m128i_u16( - vshrq_n_u16(vreinterpretq_u16_m128i(mtx[j]), 15)); - int tmp = _sse2neon_vaddvq_u16(vreinterpretq_u16_m128i(mtx[j])) ? 1 : 0; - res |= (tmp << j); - } - return res; -} - -/* clang-format off */ -#define SSE2NEON_GENERATE_CMP_EQUAL_ANY(prefix) \ - prefix##IMPL(byte) \ - prefix##IMPL(word) -/* clang-format on */ - -SSE2NEON_GENERATE_CMP_EQUAL_ANY(SSE2NEON_CMP_EQUAL_ANY_) - -static int _sse2neon_aggregate_ranges_16x8(int la, int lb, __m128i mtx[16]) -{ - int res = 0; - int m = (1 << la) - 1; - uint16x8_t vec = - vtstq_u16(vdupq_n_u16(m), vld1q_u16(_sse2neon_cmpestr_mask16b)); - for (int j = 0; j < lb; j++) { - mtx[j] = vreinterpretq_m128i_u16( - vandq_u16(vec, vreinterpretq_u16_m128i(mtx[j]))); - mtx[j] = vreinterpretq_m128i_u16( - vshrq_n_u16(vreinterpretq_u16_m128i(mtx[j]), 15)); - __m128i tmp = vreinterpretq_m128i_u32( - vshrq_n_u32(vreinterpretq_u32_m128i(mtx[j]), 16)); - uint32x4_t vec_res = vandq_u32(vreinterpretq_u32_m128i(mtx[j]), - vreinterpretq_u32_m128i(tmp)); -#if defined(__aarch64__) || defined(_M_ARM64) - int t = vaddvq_u32(vec_res) ? 1 : 0; -#else - uint64x2_t sumh = vpaddlq_u32(vec_res); - int t = vgetq_lane_u64(sumh, 0) + vgetq_lane_u64(sumh, 1); -#endif - res |= (t << j); - } - return res; -} - -static int _sse2neon_aggregate_ranges_8x16(int la, int lb, __m128i mtx[16]) -{ - int res = 0; - int m = (1 << la) - 1; - uint8x8_t vec_mask = vld1_u8(_sse2neon_cmpestr_mask8b); - uint8x8_t t_lo = vtst_u8(vdup_n_u8(m & 0xff), vec_mask); - uint8x8_t t_hi = vtst_u8(vdup_n_u8(m >> 8), vec_mask); - uint8x16_t vec = vcombine_u8(t_lo, t_hi); - for (int j = 0; j < lb; j++) { - mtx[j] = vreinterpretq_m128i_u8( - vandq_u8(vec, vreinterpretq_u8_m128i(mtx[j]))); - mtx[j] = vreinterpretq_m128i_u8( - vshrq_n_u8(vreinterpretq_u8_m128i(mtx[j]), 7)); - __m128i tmp = vreinterpretq_m128i_u16( - vshrq_n_u16(vreinterpretq_u16_m128i(mtx[j]), 8)); - uint16x8_t vec_res = vandq_u16(vreinterpretq_u16_m128i(mtx[j]), - vreinterpretq_u16_m128i(tmp)); - int t = _sse2neon_vaddvq_u16(vec_res) ? 1 : 0; - res |= (t << j); - } - return res; -} - -#define SSE2NEON_CMP_RANGES_IS_BYTE 1 -#define SSE2NEON_CMP_RANGES_IS_WORD 0 - -/* clang-format off */ -#define SSE2NEON_GENERATE_CMP_RANGES(prefix) \ - prefix##IMPL(byte, uint, u, prefix##IS_BYTE) \ - prefix##IMPL(byte, int, s, prefix##IS_BYTE) \ - prefix##IMPL(word, uint, u, prefix##IS_WORD) \ - prefix##IMPL(word, int, s, prefix##IS_WORD) -/* clang-format on */ - -SSE2NEON_GENERATE_CMP_RANGES(SSE2NEON_CMP_RANGES_) - -#undef SSE2NEON_CMP_RANGES_IS_BYTE -#undef SSE2NEON_CMP_RANGES_IS_WORD - -static int _sse2neon_cmp_byte_equal_each(__m128i a, int la, __m128i b, int lb) -{ - uint8x16_t mtx = - vceqq_u8(vreinterpretq_u8_m128i(a), vreinterpretq_u8_m128i(b)); - int m0 = (la < lb) ? 0 : ((1 << la) - (1 << lb)); - int m1 = 0x10000 - (1 << la); - int tb = 0x10000 - (1 << lb); - uint8x8_t vec_mask, vec0_lo, vec0_hi, vec1_lo, vec1_hi; - uint8x8_t tmp_lo, tmp_hi, res_lo, res_hi; - vec_mask = vld1_u8(_sse2neon_cmpestr_mask8b); - vec0_lo = vtst_u8(vdup_n_u8(m0), vec_mask); - vec0_hi = vtst_u8(vdup_n_u8(m0 >> 8), vec_mask); - vec1_lo = vtst_u8(vdup_n_u8(m1), vec_mask); - vec1_hi = vtst_u8(vdup_n_u8(m1 >> 8), vec_mask); - tmp_lo = vtst_u8(vdup_n_u8(tb), vec_mask); - tmp_hi = vtst_u8(vdup_n_u8(tb >> 8), vec_mask); - - res_lo = vbsl_u8(vec0_lo, vdup_n_u8(0), vget_low_u8(mtx)); - res_hi = vbsl_u8(vec0_hi, vdup_n_u8(0), vget_high_u8(mtx)); - res_lo = vbsl_u8(vec1_lo, tmp_lo, res_lo); - res_hi = vbsl_u8(vec1_hi, tmp_hi, res_hi); - res_lo = vand_u8(res_lo, vec_mask); - res_hi = vand_u8(res_hi, vec_mask); - - int res = _sse2neon_vaddv_u8(res_lo) + (_sse2neon_vaddv_u8(res_hi) << 8); - return res; -} - -static int _sse2neon_cmp_word_equal_each(__m128i a, int la, __m128i b, int lb) -{ - uint16x8_t mtx = - vceqq_u16(vreinterpretq_u16_m128i(a), vreinterpretq_u16_m128i(b)); - int m0 = (la < lb) ? 0 : ((1 << la) - (1 << lb)); - int m1 = 0x100 - (1 << la); - int tb = 0x100 - (1 << lb); - uint16x8_t vec_mask = vld1q_u16(_sse2neon_cmpestr_mask16b); - uint16x8_t vec0 = vtstq_u16(vdupq_n_u16(m0), vec_mask); - uint16x8_t vec1 = vtstq_u16(vdupq_n_u16(m1), vec_mask); - uint16x8_t tmp = vtstq_u16(vdupq_n_u16(tb), vec_mask); - mtx = vbslq_u16(vec0, vdupq_n_u16(0), mtx); - mtx = vbslq_u16(vec1, tmp, mtx); - mtx = vandq_u16(mtx, vec_mask); - return _sse2neon_vaddvq_u16(mtx); -} - -#define SSE2NEON_AGGREGATE_EQUAL_ORDER_IS_UBYTE 1 -#define SSE2NEON_AGGREGATE_EQUAL_ORDER_IS_UWORD 0 - -#define SSE2NEON_AGGREGATE_EQUAL_ORDER_IMPL(size, number_of_lanes, data_type) \ - static int _sse2neon_aggregate_equal_ordered_##size##x##number_of_lanes( \ - int bound, int la, int lb, __m128i mtx[16]) \ - { \ - int res = 0; \ - int m1 = SSE2NEON_IIF(data_type)(0x10000, 0x100) - (1 << la); \ - uint##size##x8_t vec_mask = SSE2NEON_IIF(data_type)( \ - vld1_u##size(_sse2neon_cmpestr_mask##size##b), \ - vld1q_u##size(_sse2neon_cmpestr_mask##size##b)); \ - uint##size##x##number_of_lanes##_t vec1 = SSE2NEON_IIF(data_type)( \ - vcombine_u##size(vtst_u##size(vdup_n_u##size(m1), vec_mask), \ - vtst_u##size(vdup_n_u##size(m1 >> 8), vec_mask)), \ - vtstq_u##size(vdupq_n_u##size(m1), vec_mask)); \ - uint##size##x##number_of_lanes##_t vec_minusone = vdupq_n_u##size(-1); \ - uint##size##x##number_of_lanes##_t vec_zero = vdupq_n_u##size(0); \ - for (int j = 0; j < lb; j++) { \ - mtx[j] = vreinterpretq_m128i_u##size(vbslq_u##size( \ - vec1, vec_minusone, vreinterpretq_u##size##_m128i(mtx[j]))); \ - } \ - for (int j = lb; j < bound; j++) { \ - mtx[j] = vreinterpretq_m128i_u##size( \ - vbslq_u##size(vec1, vec_minusone, vec_zero)); \ - } \ - unsigned SSE2NEON_IIF(data_type)(char, short) *ptr = \ - (unsigned SSE2NEON_IIF(data_type)(char, short) *) mtx; \ - for (int i = 0; i < bound; i++) { \ - int val = 1; \ - for (int j = 0, k = i; j < bound - i && k < bound; j++, k++) \ - val &= ptr[k * bound + j]; \ - res += val << i; \ - } \ - return res; \ - } - -/* clang-format off */ -#define SSE2NEON_GENERATE_AGGREGATE_EQUAL_ORDER(prefix) \ - prefix##IMPL(8, 16, prefix##IS_UBYTE) \ - prefix##IMPL(16, 8, prefix##IS_UWORD) -/* clang-format on */ - -SSE2NEON_GENERATE_AGGREGATE_EQUAL_ORDER(SSE2NEON_AGGREGATE_EQUAL_ORDER_) - -#undef SSE2NEON_AGGREGATE_EQUAL_ORDER_IS_UBYTE -#undef SSE2NEON_AGGREGATE_EQUAL_ORDER_IS_UWORD - -/* clang-format off */ -#define SSE2NEON_GENERATE_CMP_EQUAL_ORDERED(prefix) \ - prefix##IMPL(byte) \ - prefix##IMPL(word) -/* clang-format on */ - -SSE2NEON_GENERATE_CMP_EQUAL_ORDERED(SSE2NEON_CMP_EQUAL_ORDERED_) - -#define SSE2NEON_CMPESTR_LIST \ - _(CMP_UBYTE_EQUAL_ANY, cmp_byte_equal_any) \ - _(CMP_UWORD_EQUAL_ANY, cmp_word_equal_any) \ - _(CMP_SBYTE_EQUAL_ANY, cmp_byte_equal_any) \ - _(CMP_SWORD_EQUAL_ANY, cmp_word_equal_any) \ - _(CMP_UBYTE_RANGES, cmp_ubyte_ranges) \ - _(CMP_UWORD_RANGES, cmp_uword_ranges) \ - _(CMP_SBYTE_RANGES, cmp_sbyte_ranges) \ - _(CMP_SWORD_RANGES, cmp_sword_ranges) \ - _(CMP_UBYTE_EQUAL_EACH, cmp_byte_equal_each) \ - _(CMP_UWORD_EQUAL_EACH, cmp_word_equal_each) \ - _(CMP_SBYTE_EQUAL_EACH, cmp_byte_equal_each) \ - _(CMP_SWORD_EQUAL_EACH, cmp_word_equal_each) \ - _(CMP_UBYTE_EQUAL_ORDERED, cmp_byte_equal_ordered) \ - _(CMP_UWORD_EQUAL_ORDERED, cmp_word_equal_ordered) \ - _(CMP_SBYTE_EQUAL_ORDERED, cmp_byte_equal_ordered) \ - _(CMP_SWORD_EQUAL_ORDERED, cmp_word_equal_ordered) - -enum { -#define _(name, func_suffix) name, - SSE2NEON_CMPESTR_LIST -#undef _ -}; -typedef int (*cmpestr_func_t)(__m128i a, int la, __m128i b, int lb); -static cmpestr_func_t _sse2neon_cmpfunc_table[] = { -#define _(name, func_suffix) _sse2neon_##func_suffix, - SSE2NEON_CMPESTR_LIST -#undef _ -}; - -FORCE_INLINE int _sse2neon_sido_negative(int res, int lb, int imm8, int bound) -{ - switch (imm8 & 0x30) { - case _SIDD_NEGATIVE_POLARITY: - res ^= 0xffffffff; - break; - case _SIDD_MASKED_NEGATIVE_POLARITY: - res ^= (1 << lb) - 1; - break; - default: - break; - } - - return res & ((bound == 8) ? 0xFF : 0xFFFF); -} - -FORCE_INLINE int _sse2neon_clz(unsigned int x) -{ -#ifdef _MSC_VER - unsigned long cnt = 0; - if (_BitScanReverse(&cnt, x)) - return 31 - cnt; - return 32; -#else - return x != 0 ? __builtin_clz(x) : 32; -#endif -} - -FORCE_INLINE int _sse2neon_ctz(unsigned int x) -{ -#ifdef _MSC_VER - unsigned long cnt = 0; - if (_BitScanForward(&cnt, x)) - return cnt; - return 32; -#else - return x != 0 ? __builtin_ctz(x) : 32; -#endif -} - -FORCE_INLINE int _sse2neon_ctzll(unsigned long long x) -{ -#ifdef _MSC_VER - unsigned long cnt; -#if defined(SSE2NEON_HAS_BITSCAN64) - if (_BitScanForward64(&cnt, x)) - return (int) (cnt); -#else - if (_BitScanForward(&cnt, (unsigned long) (x))) - return (int) cnt; - if (_BitScanForward(&cnt, (unsigned long) (x >> 32))) - return (int) (cnt + 32); -#endif /* SSE2NEON_HAS_BITSCAN64 */ - return 64; -#else /* assume GNU compatible compilers */ - return x != 0 ? __builtin_ctzll(x) : 64; -#endif -} - -#define SSE2NEON_MIN(x, y) (x) < (y) ? (x) : (y) - -#define SSE2NEON_CMPSTR_SET_UPPER(var, imm) \ - const int var = (imm & 0x01) ? 8 : 16 - -#define SSE2NEON_CMPESTRX_LEN_PAIR(a, b, la, lb) \ - int tmp1 = la ^ (la >> 31); \ - la = tmp1 - (la >> 31); \ - int tmp2 = lb ^ (lb >> 31); \ - lb = tmp2 - (lb >> 31); \ - la = SSE2NEON_MIN(la, bound); \ - lb = SSE2NEON_MIN(lb, bound) - -// Compare all pairs of character in string a and b, -// then aggregate the result. -// As the only difference of PCMPESTR* and PCMPISTR* is the way to calculate the -// length of string, we use SSE2NEON_CMP{I,E}STRX_GET_LEN to get the length of -// string a and b. -#define SSE2NEON_COMP_AGG(a, b, la, lb, imm8, IE) \ - SSE2NEON_CMPSTR_SET_UPPER(bound, imm8); \ - SSE2NEON_##IE##_LEN_PAIR(a, b, la, lb); \ - int r2 = (_sse2neon_cmpfunc_table[imm8 & 0x0f])(a, la, b, lb); \ - r2 = _sse2neon_sido_negative(r2, lb, imm8, bound) - -#define SSE2NEON_CMPSTR_GENERATE_INDEX(r2, bound, imm8) \ - return (r2 == 0) ? bound \ - : ((imm8 & 0x40) ? (31 - _sse2neon_clz(r2)) \ - : _sse2neon_ctz(r2)) - -#define SSE2NEON_CMPSTR_GENERATE_MASK(dst) \ - __m128i dst = vreinterpretq_m128i_u8(vdupq_n_u8(0)); \ - if (imm8 & 0x40) { \ - if (bound == 8) { \ - uint16x8_t tmp = vtstq_u16(vdupq_n_u16(r2), \ - vld1q_u16(_sse2neon_cmpestr_mask16b)); \ - dst = vreinterpretq_m128i_u16(vbslq_u16( \ - tmp, vdupq_n_u16(-1), vreinterpretq_u16_m128i(dst))); \ - } else { \ - uint8x16_t vec_r2 = \ - vcombine_u8(vdup_n_u8(r2), vdup_n_u8(r2 >> 8)); \ - uint8x16_t tmp = \ - vtstq_u8(vec_r2, vld1q_u8(_sse2neon_cmpestr_mask8b)); \ - dst = vreinterpretq_m128i_u8( \ - vbslq_u8(tmp, vdupq_n_u8(-1), vreinterpretq_u8_m128i(dst))); \ - } \ - } else { \ - if (bound == 16) { \ - dst = vreinterpretq_m128i_u16( \ - vsetq_lane_u16(r2 & 0xffff, vreinterpretq_u16_m128i(dst), 0)); \ - } else { \ - dst = vreinterpretq_m128i_u8( \ - vsetq_lane_u8(r2 & 0xff, vreinterpretq_u8_m128i(dst), 0)); \ - } \ - } \ - return dst - -// Compare packed strings in a and b with lengths la and lb using the control -// in imm8, and returns 1 if b did not contain a null character and the -// resulting mask was zero, and 0 otherwise. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpestra -FORCE_INLINE int _mm_cmpestra(__m128i a, - int la, - __m128i b, - int lb, - const int imm8) -{ - int lb_cpy = lb; - SSE2NEON_COMP_AGG(a, b, la, lb, imm8, CMPESTRX); - return !r2 & (lb_cpy > bound); -} - -// Compare packed strings in a and b with lengths la and lb using the control in -// imm8, and returns 1 if the resulting mask was non-zero, and 0 otherwise. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpestrc -FORCE_INLINE int _mm_cmpestrc(__m128i a, - int la, - __m128i b, - int lb, - const int imm8) -{ - SSE2NEON_COMP_AGG(a, b, la, lb, imm8, CMPESTRX); - return r2 != 0; -} - -// Compare packed strings in a and b with lengths la and lb using the control -// in imm8, and store the generated index in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpestri -FORCE_INLINE int _mm_cmpestri(__m128i a, - int la, - __m128i b, - int lb, - const int imm8) -{ - SSE2NEON_COMP_AGG(a, b, la, lb, imm8, CMPESTRX); - SSE2NEON_CMPSTR_GENERATE_INDEX(r2, bound, imm8); -} - -// Compare packed strings in a and b with lengths la and lb using the control -// in imm8, and store the generated mask in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpestrm -FORCE_INLINE __m128i -_mm_cmpestrm(__m128i a, int la, __m128i b, int lb, const int imm8) -{ - SSE2NEON_COMP_AGG(a, b, la, lb, imm8, CMPESTRX); - SSE2NEON_CMPSTR_GENERATE_MASK(dst); -} - -// Compare packed strings in a and b with lengths la and lb using the control in -// imm8, and returns bit 0 of the resulting bit mask. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpestro -FORCE_INLINE int _mm_cmpestro(__m128i a, - int la, - __m128i b, - int lb, - const int imm8) -{ - SSE2NEON_COMP_AGG(a, b, la, lb, imm8, CMPESTRX); - return r2 & 1; -} - -// Compare packed strings in a and b with lengths la and lb using the control in -// imm8, and returns 1 if any character in a was null, and 0 otherwise. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpestrs -FORCE_INLINE int _mm_cmpestrs(__m128i a, - int la, - __m128i b, - int lb, - const int imm8) -{ - (void) a; - (void) b; - (void) lb; - SSE2NEON_CMPSTR_SET_UPPER(bound, imm8); - return la <= (bound - 1); -} - -// Compare packed strings in a and b with lengths la and lb using the control in -// imm8, and returns 1 if any character in b was null, and 0 otherwise. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpestrz -FORCE_INLINE int _mm_cmpestrz(__m128i a, - int la, - __m128i b, - int lb, - const int imm8) -{ - (void) a; - (void) b; - (void) la; - SSE2NEON_CMPSTR_SET_UPPER(bound, imm8); - return lb <= (bound - 1); -} - -#define SSE2NEON_CMPISTRX_LENGTH(str, len, imm8) \ - do { \ - if (imm8 & 0x01) { \ - uint16x8_t equal_mask_##str = \ - vceqq_u16(vreinterpretq_u16_m128i(str), vdupq_n_u16(0)); \ - uint8x8_t res_##str = vshrn_n_u16(equal_mask_##str, 4); \ - uint64_t matches_##str = \ - vget_lane_u64(vreinterpret_u64_u8(res_##str), 0); \ - len = _sse2neon_ctzll(matches_##str) >> 3; \ - } else { \ - uint16x8_t equal_mask_##str = vreinterpretq_u16_u8( \ - vceqq_u8(vreinterpretq_u8_m128i(str), vdupq_n_u8(0))); \ - uint8x8_t res_##str = vshrn_n_u16(equal_mask_##str, 4); \ - uint64_t matches_##str = \ - vget_lane_u64(vreinterpret_u64_u8(res_##str), 0); \ - len = _sse2neon_ctzll(matches_##str) >> 2; \ - } \ - } while (0) - -#define SSE2NEON_CMPISTRX_LEN_PAIR(a, b, la, lb) \ - int la, lb; \ - do { \ - SSE2NEON_CMPISTRX_LENGTH(a, la, imm8); \ - SSE2NEON_CMPISTRX_LENGTH(b, lb, imm8); \ - } while (0) - -// Compare packed strings with implicit lengths in a and b using the control in -// imm8, and returns 1 if b did not contain a null character and the resulting -// mask was zero, and 0 otherwise. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpistra -FORCE_INLINE int _mm_cmpistra(__m128i a, __m128i b, const int imm8) -{ - SSE2NEON_COMP_AGG(a, b, la, lb, imm8, CMPISTRX); - return !r2 & (lb >= bound); -} - -// Compare packed strings with implicit lengths in a and b using the control in -// imm8, and returns 1 if the resulting mask was non-zero, and 0 otherwise. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpistrc -FORCE_INLINE int _mm_cmpistrc(__m128i a, __m128i b, const int imm8) -{ - SSE2NEON_COMP_AGG(a, b, la, lb, imm8, CMPISTRX); - return r2 != 0; -} - -// Compare packed strings with implicit lengths in a and b using the control in -// imm8, and store the generated index in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpistri -FORCE_INLINE int _mm_cmpistri(__m128i a, __m128i b, const int imm8) -{ - SSE2NEON_COMP_AGG(a, b, la, lb, imm8, CMPISTRX); - SSE2NEON_CMPSTR_GENERATE_INDEX(r2, bound, imm8); -} - -// Compare packed strings with implicit lengths in a and b using the control in -// imm8, and store the generated mask in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpistrm -FORCE_INLINE __m128i _mm_cmpistrm(__m128i a, __m128i b, const int imm8) -{ - SSE2NEON_COMP_AGG(a, b, la, lb, imm8, CMPISTRX); - SSE2NEON_CMPSTR_GENERATE_MASK(dst); -} - -// Compare packed strings with implicit lengths in a and b using the control in -// imm8, and returns bit 0 of the resulting bit mask. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpistro -FORCE_INLINE int _mm_cmpistro(__m128i a, __m128i b, const int imm8) -{ - SSE2NEON_COMP_AGG(a, b, la, lb, imm8, CMPISTRX); - return r2 & 1; -} - -// Compare packed strings with implicit lengths in a and b using the control in -// imm8, and returns 1 if any character in a was null, and 0 otherwise. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpistrs -FORCE_INLINE int _mm_cmpistrs(__m128i a, __m128i b, const int imm8) -{ - (void) b; - SSE2NEON_CMPSTR_SET_UPPER(bound, imm8); - int la; - SSE2NEON_CMPISTRX_LENGTH(a, la, imm8); - return la <= (bound - 1); -} - -// Compare packed strings with implicit lengths in a and b using the control in -// imm8, and returns 1 if any character in b was null, and 0 otherwise. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpistrz -FORCE_INLINE int _mm_cmpistrz(__m128i a, __m128i b, const int imm8) -{ - (void) a; - SSE2NEON_CMPSTR_SET_UPPER(bound, imm8); - int lb; - SSE2NEON_CMPISTRX_LENGTH(b, lb, imm8); - return lb <= (bound - 1); -} - -// Compares the 2 signed 64-bit integers in a and the 2 signed 64-bit integers -// in b for greater than. -FORCE_INLINE __m128i _mm_cmpgt_epi64(__m128i a, __m128i b) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - return vreinterpretq_m128i_u64( - vcgtq_s64(vreinterpretq_s64_m128i(a), vreinterpretq_s64_m128i(b))); -#else - return vreinterpretq_m128i_s64(vshrq_n_s64( - vqsubq_s64(vreinterpretq_s64_m128i(b), vreinterpretq_s64_m128i(a)), - 63)); -#endif -} - -// Starting with the initial value in crc, accumulates a CRC32 value for -// unsigned 16-bit integer v, and stores the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_crc32_u16 -FORCE_INLINE uint32_t _mm_crc32_u16(uint32_t crc, uint16_t v) -{ -#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) - __asm__ __volatile__("crc32ch %w[c], %w[c], %w[v]\n\t" - : [c] "+r"(crc) - : [v] "r"(v)); -#elif ((__ARM_ARCH == 8) && defined(__ARM_FEATURE_CRC32)) || \ - (defined(_M_ARM64) && !defined(__clang__)) - crc = __crc32ch(crc, v); -#else - crc = _mm_crc32_u8(crc, v & 0xff); - crc = _mm_crc32_u8(crc, (v >> 8) & 0xff); -#endif - return crc; -} - -// Starting with the initial value in crc, accumulates a CRC32 value for -// unsigned 32-bit integer v, and stores the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_crc32_u32 -FORCE_INLINE uint32_t _mm_crc32_u32(uint32_t crc, uint32_t v) -{ -#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) - __asm__ __volatile__("crc32cw %w[c], %w[c], %w[v]\n\t" - : [c] "+r"(crc) - : [v] "r"(v)); -#elif ((__ARM_ARCH == 8) && defined(__ARM_FEATURE_CRC32)) || \ - (defined(_M_ARM64) && !defined(__clang__)) - crc = __crc32cw(crc, v); -#else - crc = _mm_crc32_u16(crc, v & 0xffff); - crc = _mm_crc32_u16(crc, (v >> 16) & 0xffff); -#endif - return crc; -} - -// Starting with the initial value in crc, accumulates a CRC32 value for -// unsigned 64-bit integer v, and stores the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_crc32_u64 -FORCE_INLINE uint64_t _mm_crc32_u64(uint64_t crc, uint64_t v) -{ -#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) - __asm__ __volatile__("crc32cx %w[c], %w[c], %x[v]\n\t" - : [c] "+r"(crc) - : [v] "r"(v)); -#elif (defined(_M_ARM64) && !defined(__clang__)) - crc = __crc32cd((uint32_t) crc, v); -#else - crc = _mm_crc32_u32((uint32_t) (crc), v & 0xffffffff); - crc = _mm_crc32_u32((uint32_t) (crc), (v >> 32) & 0xffffffff); -#endif - return crc; -} - -// Starting with the initial value in crc, accumulates a CRC32 value for -// unsigned 8-bit integer v, and stores the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_crc32_u8 -FORCE_INLINE uint32_t _mm_crc32_u8(uint32_t crc, uint8_t v) -{ -#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) - __asm__ __volatile__("crc32cb %w[c], %w[c], %w[v]\n\t" - : [c] "+r"(crc) - : [v] "r"(v)); -#elif ((__ARM_ARCH == 8) && defined(__ARM_FEATURE_CRC32)) || \ - (defined(_M_ARM64) && !defined(__clang__)) - crc = __crc32cb(crc, v); -#else - crc ^= v; -#if defined(__ARM_FEATURE_CRYPTO) - // Adapted from: https://mary.rs/lab/crc32/ - // Barrent reduction - uint64x2_t orig = - vcombine_u64(vcreate_u64((uint64_t) (crc) << 24), vcreate_u64(0x0)); - uint64x2_t tmp = orig; - - // Polynomial P(x) of CRC32C - uint64_t p = 0x105EC76F1; - // Barrett Reduction (in bit-reflected form) constant mu_{64} = \lfloor - // 2^{64} / P(x) \rfloor = 0x11f91caf6 - uint64_t mu = 0x1dea713f1; - - // Multiply by mu_{64} - tmp = _sse2neon_vmull_p64(vget_low_u64(tmp), vcreate_u64(mu)); - // Divide by 2^{64} (mask away the unnecessary bits) - tmp = - vandq_u64(tmp, vcombine_u64(vcreate_u64(0xFFFFFFFF), vcreate_u64(0x0))); - // Multiply by P(x) (shifted left by 1 for alignment reasons) - tmp = _sse2neon_vmull_p64(vget_low_u64(tmp), vcreate_u64(p)); - // Subtract original from result - tmp = veorq_u64(tmp, orig); - - // Extract the 'lower' (in bit-reflected sense) 32 bits - crc = vgetq_lane_u32(vreinterpretq_u32_u64(tmp), 1); -#else // Fall back to the generic table lookup approach - // Adapted from: https://create.stephan-brumme.com/crc32/ - // Apply half-byte comparision algorithm for the best ratio between - // performance and lookup table. - - // The lookup table just needs to store every 16th entry - // of the standard look-up table. - static const uint32_t crc32_half_byte_tbl[] = { - 0x00000000, 0x105ec76f, 0x20bd8ede, 0x30e349b1, 0x417b1dbc, 0x5125dad3, - 0x61c69362, 0x7198540d, 0x82f63b78, 0x92a8fc17, 0xa24bb5a6, 0xb21572c9, - 0xc38d26c4, 0xd3d3e1ab, 0xe330a81a, 0xf36e6f75, - }; - - crc = (crc >> 4) ^ crc32_half_byte_tbl[crc & 0x0F]; - crc = (crc >> 4) ^ crc32_half_byte_tbl[crc & 0x0F]; -#endif -#endif - return crc; -} - -/* AES */ - -#if !defined(__ARM_FEATURE_CRYPTO) && (!defined(_M_ARM64) || defined(__clang__)) -/* clang-format off */ -#define SSE2NEON_AES_SBOX(w) \ - { \ - w(0x63), w(0x7c), w(0x77), w(0x7b), w(0xf2), w(0x6b), w(0x6f), \ - w(0xc5), w(0x30), w(0x01), w(0x67), w(0x2b), w(0xfe), w(0xd7), \ - w(0xab), w(0x76), w(0xca), w(0x82), w(0xc9), w(0x7d), w(0xfa), \ - w(0x59), w(0x47), w(0xf0), w(0xad), w(0xd4), w(0xa2), w(0xaf), \ - w(0x9c), w(0xa4), w(0x72), w(0xc0), w(0xb7), w(0xfd), w(0x93), \ - w(0x26), w(0x36), w(0x3f), w(0xf7), w(0xcc), w(0x34), w(0xa5), \ - w(0xe5), w(0xf1), w(0x71), w(0xd8), w(0x31), w(0x15), w(0x04), \ - w(0xc7), w(0x23), w(0xc3), w(0x18), w(0x96), w(0x05), w(0x9a), \ - w(0x07), w(0x12), w(0x80), w(0xe2), w(0xeb), w(0x27), w(0xb2), \ - w(0x75), w(0x09), w(0x83), w(0x2c), w(0x1a), w(0x1b), w(0x6e), \ - w(0x5a), w(0xa0), w(0x52), w(0x3b), w(0xd6), w(0xb3), w(0x29), \ - w(0xe3), w(0x2f), w(0x84), w(0x53), w(0xd1), w(0x00), w(0xed), \ - w(0x20), w(0xfc), w(0xb1), w(0x5b), w(0x6a), w(0xcb), w(0xbe), \ - w(0x39), w(0x4a), w(0x4c), w(0x58), w(0xcf), w(0xd0), w(0xef), \ - w(0xaa), w(0xfb), w(0x43), w(0x4d), w(0x33), w(0x85), w(0x45), \ - w(0xf9), w(0x02), w(0x7f), w(0x50), w(0x3c), w(0x9f), w(0xa8), \ - w(0x51), w(0xa3), w(0x40), w(0x8f), w(0x92), w(0x9d), w(0x38), \ - w(0xf5), w(0xbc), w(0xb6), w(0xda), w(0x21), w(0x10), w(0xff), \ - w(0xf3), w(0xd2), w(0xcd), w(0x0c), w(0x13), w(0xec), w(0x5f), \ - w(0x97), w(0x44), w(0x17), w(0xc4), w(0xa7), w(0x7e), w(0x3d), \ - w(0x64), w(0x5d), w(0x19), w(0x73), w(0x60), w(0x81), w(0x4f), \ - w(0xdc), w(0x22), w(0x2a), w(0x90), w(0x88), w(0x46), w(0xee), \ - w(0xb8), w(0x14), w(0xde), w(0x5e), w(0x0b), w(0xdb), w(0xe0), \ - w(0x32), w(0x3a), w(0x0a), w(0x49), w(0x06), w(0x24), w(0x5c), \ - w(0xc2), w(0xd3), w(0xac), w(0x62), w(0x91), w(0x95), w(0xe4), \ - w(0x79), w(0xe7), w(0xc8), w(0x37), w(0x6d), w(0x8d), w(0xd5), \ - w(0x4e), w(0xa9), w(0x6c), w(0x56), w(0xf4), w(0xea), w(0x65), \ - w(0x7a), w(0xae), w(0x08), w(0xba), w(0x78), w(0x25), w(0x2e), \ - w(0x1c), w(0xa6), w(0xb4), w(0xc6), w(0xe8), w(0xdd), w(0x74), \ - w(0x1f), w(0x4b), w(0xbd), w(0x8b), w(0x8a), w(0x70), w(0x3e), \ - w(0xb5), w(0x66), w(0x48), w(0x03), w(0xf6), w(0x0e), w(0x61), \ - w(0x35), w(0x57), w(0xb9), w(0x86), w(0xc1), w(0x1d), w(0x9e), \ - w(0xe1), w(0xf8), w(0x98), w(0x11), w(0x69), w(0xd9), w(0x8e), \ - w(0x94), w(0x9b), w(0x1e), w(0x87), w(0xe9), w(0xce), w(0x55), \ - w(0x28), w(0xdf), w(0x8c), w(0xa1), w(0x89), w(0x0d), w(0xbf), \ - w(0xe6), w(0x42), w(0x68), w(0x41), w(0x99), w(0x2d), w(0x0f), \ - w(0xb0), w(0x54), w(0xbb), w(0x16) \ - } -#define SSE2NEON_AES_RSBOX(w) \ - { \ - w(0x52), w(0x09), w(0x6a), w(0xd5), w(0x30), w(0x36), w(0xa5), \ - w(0x38), w(0xbf), w(0x40), w(0xa3), w(0x9e), w(0x81), w(0xf3), \ - w(0xd7), w(0xfb), w(0x7c), w(0xe3), w(0x39), w(0x82), w(0x9b), \ - w(0x2f), w(0xff), w(0x87), w(0x34), w(0x8e), w(0x43), w(0x44), \ - w(0xc4), w(0xde), w(0xe9), w(0xcb), w(0x54), w(0x7b), w(0x94), \ - w(0x32), w(0xa6), w(0xc2), w(0x23), w(0x3d), w(0xee), w(0x4c), \ - w(0x95), w(0x0b), w(0x42), w(0xfa), w(0xc3), w(0x4e), w(0x08), \ - w(0x2e), w(0xa1), w(0x66), w(0x28), w(0xd9), w(0x24), w(0xb2), \ - w(0x76), w(0x5b), w(0xa2), w(0x49), w(0x6d), w(0x8b), w(0xd1), \ - w(0x25), w(0x72), w(0xf8), w(0xf6), w(0x64), w(0x86), w(0x68), \ - w(0x98), w(0x16), w(0xd4), w(0xa4), w(0x5c), w(0xcc), w(0x5d), \ - w(0x65), w(0xb6), w(0x92), w(0x6c), w(0x70), w(0x48), w(0x50), \ - w(0xfd), w(0xed), w(0xb9), w(0xda), w(0x5e), w(0x15), w(0x46), \ - w(0x57), w(0xa7), w(0x8d), w(0x9d), w(0x84), w(0x90), w(0xd8), \ - w(0xab), w(0x00), w(0x8c), w(0xbc), w(0xd3), w(0x0a), w(0xf7), \ - w(0xe4), w(0x58), w(0x05), w(0xb8), w(0xb3), w(0x45), w(0x06), \ - w(0xd0), w(0x2c), w(0x1e), w(0x8f), w(0xca), w(0x3f), w(0x0f), \ - w(0x02), w(0xc1), w(0xaf), w(0xbd), w(0x03), w(0x01), w(0x13), \ - w(0x8a), w(0x6b), w(0x3a), w(0x91), w(0x11), w(0x41), w(0x4f), \ - w(0x67), w(0xdc), w(0xea), w(0x97), w(0xf2), w(0xcf), w(0xce), \ - w(0xf0), w(0xb4), w(0xe6), w(0x73), w(0x96), w(0xac), w(0x74), \ - w(0x22), w(0xe7), w(0xad), w(0x35), w(0x85), w(0xe2), w(0xf9), \ - w(0x37), w(0xe8), w(0x1c), w(0x75), w(0xdf), w(0x6e), w(0x47), \ - w(0xf1), w(0x1a), w(0x71), w(0x1d), w(0x29), w(0xc5), w(0x89), \ - w(0x6f), w(0xb7), w(0x62), w(0x0e), w(0xaa), w(0x18), w(0xbe), \ - w(0x1b), w(0xfc), w(0x56), w(0x3e), w(0x4b), w(0xc6), w(0xd2), \ - w(0x79), w(0x20), w(0x9a), w(0xdb), w(0xc0), w(0xfe), w(0x78), \ - w(0xcd), w(0x5a), w(0xf4), w(0x1f), w(0xdd), w(0xa8), w(0x33), \ - w(0x88), w(0x07), w(0xc7), w(0x31), w(0xb1), w(0x12), w(0x10), \ - w(0x59), w(0x27), w(0x80), w(0xec), w(0x5f), w(0x60), w(0x51), \ - w(0x7f), w(0xa9), w(0x19), w(0xb5), w(0x4a), w(0x0d), w(0x2d), \ - w(0xe5), w(0x7a), w(0x9f), w(0x93), w(0xc9), w(0x9c), w(0xef), \ - w(0xa0), w(0xe0), w(0x3b), w(0x4d), w(0xae), w(0x2a), w(0xf5), \ - w(0xb0), w(0xc8), w(0xeb), w(0xbb), w(0x3c), w(0x83), w(0x53), \ - w(0x99), w(0x61), w(0x17), w(0x2b), w(0x04), w(0x7e), w(0xba), \ - w(0x77), w(0xd6), w(0x26), w(0xe1), w(0x69), w(0x14), w(0x63), \ - w(0x55), w(0x21), w(0x0c), w(0x7d) \ - } -/* clang-format on */ - -/* X Macro trick. See https://en.wikipedia.org/wiki/X_Macro */ -#define SSE2NEON_AES_H0(x) (x) -static const uint8_t _sse2neon_sbox[256] = SSE2NEON_AES_SBOX(SSE2NEON_AES_H0); -static const uint8_t _sse2neon_rsbox[256] = SSE2NEON_AES_RSBOX(SSE2NEON_AES_H0); -#undef SSE2NEON_AES_H0 - -/* x_time function and matrix multiply function */ -#if !defined(__aarch64__) && !defined(_M_ARM64) -#define SSE2NEON_XT(x) (((x) << 1) ^ ((((x) >> 7) & 1) * 0x1b)) -#define SSE2NEON_MULTIPLY(x, y) \ - (((y & 1) * x) ^ ((y >> 1 & 1) * SSE2NEON_XT(x)) ^ \ - ((y >> 2 & 1) * SSE2NEON_XT(SSE2NEON_XT(x))) ^ \ - ((y >> 3 & 1) * SSE2NEON_XT(SSE2NEON_XT(SSE2NEON_XT(x)))) ^ \ - ((y >> 4 & 1) * SSE2NEON_XT(SSE2NEON_XT(SSE2NEON_XT(SSE2NEON_XT(x)))))) -#endif - -// In the absence of crypto extensions, implement aesenc using regular NEON -// intrinsics instead. See: -// https://www.workofard.com/2017/01/accelerated-aes-for-the-arm64-linux-kernel/ -// https://www.workofard.com/2017/07/ghash-for-low-end-cores/ and -// for more information. -FORCE_INLINE __m128i _mm_aesenc_si128(__m128i a, __m128i RoundKey) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - static const uint8_t shift_rows[] = { - 0x0, 0x5, 0xa, 0xf, 0x4, 0x9, 0xe, 0x3, - 0x8, 0xd, 0x2, 0x7, 0xc, 0x1, 0x6, 0xb, - }; - static const uint8_t ror32by8[] = { - 0x1, 0x2, 0x3, 0x0, 0x5, 0x6, 0x7, 0x4, - 0x9, 0xa, 0xb, 0x8, 0xd, 0xe, 0xf, 0xc, - }; - - uint8x16_t v; - uint8x16_t w = vreinterpretq_u8_m128i(a); - - /* shift rows */ - w = vqtbl1q_u8(w, vld1q_u8(shift_rows)); - - /* sub bytes */ - // Here, we separate the whole 256-bytes table into 4 64-bytes tables, and - // look up each of the table. After each lookup, we load the next table - // which locates at the next 64-bytes. In the meantime, the index in the - // table would be smaller than it was, so the index parameters of - // `vqtbx4q_u8()` need to be added the same constant as the loaded tables. - v = vqtbl4q_u8(_sse2neon_vld1q_u8_x4(_sse2neon_sbox), w); - // 'w-0x40' equals to 'vsubq_u8(w, vdupq_n_u8(0x40))' - v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_sbox + 0x40), w - 0x40); - v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_sbox + 0x80), w - 0x80); - v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_sbox + 0xc0), w - 0xc0); - - /* mix columns */ - w = (v << 1) ^ (uint8x16_t) (((int8x16_t) v >> 7) & 0x1b); - w ^= (uint8x16_t) vrev32q_u16((uint16x8_t) v); - w ^= vqtbl1q_u8(v ^ w, vld1q_u8(ror32by8)); - - /* add round key */ - return vreinterpretq_m128i_u8(w) ^ RoundKey; - -#else /* ARMv7-A implementation for a table-based AES */ -#define SSE2NEON_AES_B2W(b0, b1, b2, b3) \ - (((uint32_t) (b3) << 24) | ((uint32_t) (b2) << 16) | \ - ((uint32_t) (b1) << 8) | (uint32_t) (b0)) -// muliplying 'x' by 2 in GF(2^8) -#define SSE2NEON_AES_F2(x) ((x << 1) ^ (((x >> 7) & 1) * 0x011b /* WPOLY */)) -// muliplying 'x' by 3 in GF(2^8) -#define SSE2NEON_AES_F3(x) (SSE2NEON_AES_F2(x) ^ x) -#define SSE2NEON_AES_U0(p) \ - SSE2NEON_AES_B2W(SSE2NEON_AES_F2(p), p, p, SSE2NEON_AES_F3(p)) -#define SSE2NEON_AES_U1(p) \ - SSE2NEON_AES_B2W(SSE2NEON_AES_F3(p), SSE2NEON_AES_F2(p), p, p) -#define SSE2NEON_AES_U2(p) \ - SSE2NEON_AES_B2W(p, SSE2NEON_AES_F3(p), SSE2NEON_AES_F2(p), p) -#define SSE2NEON_AES_U3(p) \ - SSE2NEON_AES_B2W(p, p, SSE2NEON_AES_F3(p), SSE2NEON_AES_F2(p)) - - // this generates a table containing every possible permutation of - // shift_rows() and sub_bytes() with mix_columns(). - static const uint32_t ALIGN_STRUCT(16) aes_table[4][256] = { - SSE2NEON_AES_SBOX(SSE2NEON_AES_U0), - SSE2NEON_AES_SBOX(SSE2NEON_AES_U1), - SSE2NEON_AES_SBOX(SSE2NEON_AES_U2), - SSE2NEON_AES_SBOX(SSE2NEON_AES_U3), - }; -#undef SSE2NEON_AES_B2W -#undef SSE2NEON_AES_F2 -#undef SSE2NEON_AES_F3 -#undef SSE2NEON_AES_U0 -#undef SSE2NEON_AES_U1 -#undef SSE2NEON_AES_U2 -#undef SSE2NEON_AES_U3 - - uint32_t x0 = _mm_cvtsi128_si32(a); // get a[31:0] - uint32_t x1 = - _mm_cvtsi128_si32(_mm_shuffle_epi32(a, 0x55)); // get a[63:32] - uint32_t x2 = - _mm_cvtsi128_si32(_mm_shuffle_epi32(a, 0xAA)); // get a[95:64] - uint32_t x3 = - _mm_cvtsi128_si32(_mm_shuffle_epi32(a, 0xFF)); // get a[127:96] - - // finish the modulo addition step in mix_columns() - __m128i out = _mm_set_epi32( - (aes_table[0][x3 & 0xff] ^ aes_table[1][(x0 >> 8) & 0xff] ^ - aes_table[2][(x1 >> 16) & 0xff] ^ aes_table[3][x2 >> 24]), - (aes_table[0][x2 & 0xff] ^ aes_table[1][(x3 >> 8) & 0xff] ^ - aes_table[2][(x0 >> 16) & 0xff] ^ aes_table[3][x1 >> 24]), - (aes_table[0][x1 & 0xff] ^ aes_table[1][(x2 >> 8) & 0xff] ^ - aes_table[2][(x3 >> 16) & 0xff] ^ aes_table[3][x0 >> 24]), - (aes_table[0][x0 & 0xff] ^ aes_table[1][(x1 >> 8) & 0xff] ^ - aes_table[2][(x2 >> 16) & 0xff] ^ aes_table[3][x3 >> 24])); - - return _mm_xor_si128(out, RoundKey); -#endif -} - -// Perform one round of an AES decryption flow on data (state) in a using the -// round key in RoundKey, and store the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_aesdec_si128 -FORCE_INLINE __m128i _mm_aesdec_si128(__m128i a, __m128i RoundKey) -{ -#if defined(__aarch64__) - static const uint8_t inv_shift_rows[] = { - 0x0, 0xd, 0xa, 0x7, 0x4, 0x1, 0xe, 0xb, - 0x8, 0x5, 0x2, 0xf, 0xc, 0x9, 0x6, 0x3, - }; - static const uint8_t ror32by8[] = { - 0x1, 0x2, 0x3, 0x0, 0x5, 0x6, 0x7, 0x4, - 0x9, 0xa, 0xb, 0x8, 0xd, 0xe, 0xf, 0xc, - }; - - uint8x16_t v; - uint8x16_t w = vreinterpretq_u8_m128i(a); - - // inverse shift rows - w = vqtbl1q_u8(w, vld1q_u8(inv_shift_rows)); - - // inverse sub bytes - v = vqtbl4q_u8(_sse2neon_vld1q_u8_x4(_sse2neon_rsbox), w); - v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_rsbox + 0x40), w - 0x40); - v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_rsbox + 0x80), w - 0x80); - v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_rsbox + 0xc0), w - 0xc0); - - // inverse mix columns - // multiplying 'v' by 4 in GF(2^8) - w = (v << 1) ^ (uint8x16_t) (((int8x16_t) v >> 7) & 0x1b); - w = (w << 1) ^ (uint8x16_t) (((int8x16_t) w >> 7) & 0x1b); - v ^= w; - v ^= (uint8x16_t) vrev32q_u16((uint16x8_t) w); - - w = (v << 1) ^ (uint8x16_t) (((int8x16_t) v >> 7) & - 0x1b); // muliplying 'v' by 2 in GF(2^8) - w ^= (uint8x16_t) vrev32q_u16((uint16x8_t) v); - w ^= vqtbl1q_u8(v ^ w, vld1q_u8(ror32by8)); - - // add round key - return vreinterpretq_m128i_u8(w) ^ RoundKey; - -#else /* ARMv7-A NEON implementation */ - /* FIXME: optimized for NEON */ - uint8_t i, e, f, g, h, v[4][4]; - uint8_t *_a = (uint8_t *) &a; - for (i = 0; i < 16; ++i) { - v[((i / 4) + (i % 4)) % 4][i % 4] = _sse2neon_rsbox[_a[i]]; - } - - // inverse mix columns - for (i = 0; i < 4; ++i) { - e = v[i][0]; - f = v[i][1]; - g = v[i][2]; - h = v[i][3]; - - v[i][0] = SSE2NEON_MULTIPLY(e, 0x0e) ^ SSE2NEON_MULTIPLY(f, 0x0b) ^ - SSE2NEON_MULTIPLY(g, 0x0d) ^ SSE2NEON_MULTIPLY(h, 0x09); - v[i][1] = SSE2NEON_MULTIPLY(e, 0x09) ^ SSE2NEON_MULTIPLY(f, 0x0e) ^ - SSE2NEON_MULTIPLY(g, 0x0b) ^ SSE2NEON_MULTIPLY(h, 0x0d); - v[i][2] = SSE2NEON_MULTIPLY(e, 0x0d) ^ SSE2NEON_MULTIPLY(f, 0x09) ^ - SSE2NEON_MULTIPLY(g, 0x0e) ^ SSE2NEON_MULTIPLY(h, 0x0b); - v[i][3] = SSE2NEON_MULTIPLY(e, 0x0b) ^ SSE2NEON_MULTIPLY(f, 0x0d) ^ - SSE2NEON_MULTIPLY(g, 0x09) ^ SSE2NEON_MULTIPLY(h, 0x0e); - } - - return vreinterpretq_m128i_u8(vld1q_u8((uint8_t *) v)) ^ RoundKey; -#endif -} - -// Perform the last round of an AES encryption flow on data (state) in a using -// the round key in RoundKey, and store the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_aesenclast_si128 -FORCE_INLINE __m128i _mm_aesenclast_si128(__m128i a, __m128i RoundKey) -{ -#if defined(__aarch64__) - static const uint8_t shift_rows[] = { - 0x0, 0x5, 0xa, 0xf, 0x4, 0x9, 0xe, 0x3, - 0x8, 0xd, 0x2, 0x7, 0xc, 0x1, 0x6, 0xb, - }; - - uint8x16_t v; - uint8x16_t w = vreinterpretq_u8_m128i(a); - - // shift rows - w = vqtbl1q_u8(w, vld1q_u8(shift_rows)); - - // sub bytes - v = vqtbl4q_u8(_sse2neon_vld1q_u8_x4(_sse2neon_sbox), w); - v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_sbox + 0x40), w - 0x40); - v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_sbox + 0x80), w - 0x80); - v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_sbox + 0xc0), w - 0xc0); - - // add round key - return vreinterpretq_m128i_u8(v) ^ RoundKey; - -#else /* ARMv7-A implementation */ - uint8_t v[16] = { - _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 0)], - _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 5)], - _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 10)], - _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 15)], - _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 4)], - _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 9)], - _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 14)], - _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 3)], - _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 8)], - _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 13)], - _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 2)], - _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 7)], - _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 12)], - _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 1)], - _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 6)], - _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 11)], - }; - - return vreinterpretq_m128i_u8(vld1q_u8(v)) ^ RoundKey; -#endif -} - -// Perform the last round of an AES decryption flow on data (state) in a using -// the round key in RoundKey, and store the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_aesdeclast_si128 -FORCE_INLINE __m128i _mm_aesdeclast_si128(__m128i a, __m128i RoundKey) -{ -#if defined(__aarch64__) - static const uint8_t inv_shift_rows[] = { - 0x0, 0xd, 0xa, 0x7, 0x4, 0x1, 0xe, 0xb, - 0x8, 0x5, 0x2, 0xf, 0xc, 0x9, 0x6, 0x3, - }; - - uint8x16_t v; - uint8x16_t w = vreinterpretq_u8_m128i(a); - - // inverse shift rows - w = vqtbl1q_u8(w, vld1q_u8(inv_shift_rows)); - - // inverse sub bytes - v = vqtbl4q_u8(_sse2neon_vld1q_u8_x4(_sse2neon_rsbox), w); - v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_rsbox + 0x40), w - 0x40); - v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_rsbox + 0x80), w - 0x80); - v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_rsbox + 0xc0), w - 0xc0); - - // add round key - return vreinterpretq_m128i_u8(v) ^ RoundKey; - -#else /* ARMv7-A NEON implementation */ - /* FIXME: optimized for NEON */ - uint8_t v[4][4]; - uint8_t *_a = (uint8_t *) &a; - for (int i = 0; i < 16; ++i) { - v[((i / 4) + (i % 4)) % 4][i % 4] = _sse2neon_rsbox[_a[i]]; - } - - return vreinterpretq_m128i_u8(vld1q_u8((uint8_t *) v)) ^ RoundKey; -#endif -} - -// Perform the InvMixColumns transformation on a and store the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_aesimc_si128 -FORCE_INLINE __m128i _mm_aesimc_si128(__m128i a) -{ -#if defined(__aarch64__) - static const uint8_t ror32by8[] = { - 0x1, 0x2, 0x3, 0x0, 0x5, 0x6, 0x7, 0x4, - 0x9, 0xa, 0xb, 0x8, 0xd, 0xe, 0xf, 0xc, - }; - uint8x16_t v = vreinterpretq_u8_m128i(a); - uint8x16_t w; - - // multiplying 'v' by 4 in GF(2^8) - w = (v << 1) ^ (uint8x16_t) (((int8x16_t) v >> 7) & 0x1b); - w = (w << 1) ^ (uint8x16_t) (((int8x16_t) w >> 7) & 0x1b); - v ^= w; - v ^= (uint8x16_t) vrev32q_u16((uint16x8_t) w); - - // multiplying 'v' by 2 in GF(2^8) - w = (v << 1) ^ (uint8x16_t) (((int8x16_t) v >> 7) & 0x1b); - w ^= (uint8x16_t) vrev32q_u16((uint16x8_t) v); - w ^= vqtbl1q_u8(v ^ w, vld1q_u8(ror32by8)); - return vreinterpretq_m128i_u8(w); - -#else /* ARMv7-A NEON implementation */ - uint8_t i, e, f, g, h, v[4][4]; - vst1q_u8((uint8_t *) v, vreinterpretq_u8_m128i(a)); - for (i = 0; i < 4; ++i) { - e = v[i][0]; - f = v[i][1]; - g = v[i][2]; - h = v[i][3]; - - v[i][0] = SSE2NEON_MULTIPLY(e, 0x0e) ^ SSE2NEON_MULTIPLY(f, 0x0b) ^ - SSE2NEON_MULTIPLY(g, 0x0d) ^ SSE2NEON_MULTIPLY(h, 0x09); - v[i][1] = SSE2NEON_MULTIPLY(e, 0x09) ^ SSE2NEON_MULTIPLY(f, 0x0e) ^ - SSE2NEON_MULTIPLY(g, 0x0b) ^ SSE2NEON_MULTIPLY(h, 0x0d); - v[i][2] = SSE2NEON_MULTIPLY(e, 0x0d) ^ SSE2NEON_MULTIPLY(f, 0x09) ^ - SSE2NEON_MULTIPLY(g, 0x0e) ^ SSE2NEON_MULTIPLY(h, 0x0b); - v[i][3] = SSE2NEON_MULTIPLY(e, 0x0b) ^ SSE2NEON_MULTIPLY(f, 0x0d) ^ - SSE2NEON_MULTIPLY(g, 0x09) ^ SSE2NEON_MULTIPLY(h, 0x0e); - } - - return vreinterpretq_m128i_u8(vld1q_u8((uint8_t *) v)); -#endif -} - -// Assist in expanding the AES cipher key by computing steps towards generating -// a round key for encryption cipher using data from a and an 8-bit round -// constant specified in imm8, and store the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_aeskeygenassist_si128 -// -// Emits the Advanced Encryption Standard (AES) instruction aeskeygenassist. -// This instruction generates a round key for AES encryption. See -// https://kazakov.life/2017/11/01/cryptocurrency-mining-on-ios-devices/ -// for details. -FORCE_INLINE __m128i _mm_aeskeygenassist_si128(__m128i a, const int rcon) -{ -#if defined(__aarch64__) - uint8x16_t _a = vreinterpretq_u8_m128i(a); - uint8x16_t v = vqtbl4q_u8(_sse2neon_vld1q_u8_x4(_sse2neon_sbox), _a); - v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_sbox + 0x40), _a - 0x40); - v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_sbox + 0x80), _a - 0x80); - v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_sbox + 0xc0), _a - 0xc0); - - uint32x4_t v_u32 = vreinterpretq_u32_u8(v); - uint32x4_t ror_v = vorrq_u32(vshrq_n_u32(v_u32, 8), vshlq_n_u32(v_u32, 24)); - uint32x4_t ror_xor_v = veorq_u32(ror_v, vdupq_n_u32(rcon)); - - return vreinterpretq_m128i_u32(vtrn2q_u32(v_u32, ror_xor_v)); - -#else /* ARMv7-A NEON implementation */ - uint32_t X1 = _mm_cvtsi128_si32(_mm_shuffle_epi32(a, 0x55)); - uint32_t X3 = _mm_cvtsi128_si32(_mm_shuffle_epi32(a, 0xFF)); - for (int i = 0; i < 4; ++i) { - ((uint8_t *) &X1)[i] = _sse2neon_sbox[((uint8_t *) &X1)[i]]; - ((uint8_t *) &X3)[i] = _sse2neon_sbox[((uint8_t *) &X3)[i]]; - } - return _mm_set_epi32(((X3 >> 8) | (X3 << 24)) ^ rcon, X3, - ((X1 >> 8) | (X1 << 24)) ^ rcon, X1); -#endif -} -#undef SSE2NEON_AES_SBOX -#undef SSE2NEON_AES_RSBOX - -#if defined(__aarch64__) -#undef SSE2NEON_XT -#undef SSE2NEON_MULTIPLY -#endif - -#else /* __ARM_FEATURE_CRYPTO */ -// Implements equivalent of 'aesenc' by combining AESE (with an empty key) and -// AESMC and then manually applying the real key as an xor operation. This -// unfortunately means an additional xor op; the compiler should be able to -// optimize this away for repeated calls however. See -// https://blog.michaelbrase.com/2018/05/08/emulating-x86-aes-intrinsics-on-armv8-a -// for more details. -FORCE_INLINE __m128i _mm_aesenc_si128(__m128i a, __m128i b) -{ - return vreinterpretq_m128i_u8(veorq_u8( - vaesmcq_u8(vaeseq_u8(vreinterpretq_u8_m128i(a), vdupq_n_u8(0))), - vreinterpretq_u8_m128i(b))); -} - -// Perform one round of an AES decryption flow on data (state) in a using the -// round key in RoundKey, and store the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_aesdec_si128 -FORCE_INLINE __m128i _mm_aesdec_si128(__m128i a, __m128i RoundKey) -{ - return vreinterpretq_m128i_u8(veorq_u8( - vaesimcq_u8(vaesdq_u8(vreinterpretq_u8_m128i(a), vdupq_n_u8(0))), - vreinterpretq_u8_m128i(RoundKey))); -} - -// Perform the last round of an AES encryption flow on data (state) in a using -// the round key in RoundKey, and store the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_aesenclast_si128 -FORCE_INLINE __m128i _mm_aesenclast_si128(__m128i a, __m128i RoundKey) -{ - return _mm_xor_si128(vreinterpretq_m128i_u8(vaeseq_u8( - vreinterpretq_u8_m128i(a), vdupq_n_u8(0))), - RoundKey); -} - -// Perform the last round of an AES decryption flow on data (state) in a using -// the round key in RoundKey, and store the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_aesdeclast_si128 -FORCE_INLINE __m128i _mm_aesdeclast_si128(__m128i a, __m128i RoundKey) -{ - return vreinterpretq_m128i_u8( - veorq_u8(vaesdq_u8(vreinterpretq_u8_m128i(a), vdupq_n_u8(0)), - vreinterpretq_u8_m128i(RoundKey))); -} - -// Perform the InvMixColumns transformation on a and store the result in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_aesimc_si128 -FORCE_INLINE __m128i _mm_aesimc_si128(__m128i a) -{ - return vreinterpretq_m128i_u8(vaesimcq_u8(vreinterpretq_u8_m128i(a))); -} - -// Assist in expanding the AES cipher key by computing steps towards generating -// a round key for encryption cipher using data from a and an 8-bit round -// constant specified in imm8, and store the result in dst." -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_aeskeygenassist_si128 -FORCE_INLINE __m128i _mm_aeskeygenassist_si128(__m128i a, const int rcon) -{ - // AESE does ShiftRows and SubBytes on A - uint8x16_t u8 = vaeseq_u8(vreinterpretq_u8_m128i(a), vdupq_n_u8(0)); - -#ifndef _MSC_VER - uint8x16_t dest = { - // Undo ShiftRows step from AESE and extract X1 and X3 - u8[0x4], u8[0x1], u8[0xE], u8[0xB], // SubBytes(X1) - u8[0x1], u8[0xE], u8[0xB], u8[0x4], // ROT(SubBytes(X1)) - u8[0xC], u8[0x9], u8[0x6], u8[0x3], // SubBytes(X3) - u8[0x9], u8[0x6], u8[0x3], u8[0xC], // ROT(SubBytes(X3)) - }; - uint32x4_t r = {0, (unsigned) rcon, 0, (unsigned) rcon}; - return vreinterpretq_m128i_u8(dest) ^ vreinterpretq_m128i_u32(r); -#else - // We have to do this hack because MSVC is strictly adhering to the CPP - // standard, in particular C++03 8.5.1 sub-section 15, which states that - // unions must be initialized by their first member type. - - // As per the Windows ARM64 ABI, it is always little endian, so this works - __n128 dest{ - ((uint64_t) u8.n128_u8[0x4] << 0) | ((uint64_t) u8.n128_u8[0x1] << 8) | - ((uint64_t) u8.n128_u8[0xE] << 16) | - ((uint64_t) u8.n128_u8[0xB] << 24) | - ((uint64_t) u8.n128_u8[0x1] << 32) | - ((uint64_t) u8.n128_u8[0xE] << 40) | - ((uint64_t) u8.n128_u8[0xB] << 48) | - ((uint64_t) u8.n128_u8[0x4] << 56), - ((uint64_t) u8.n128_u8[0xC] << 0) | ((uint64_t) u8.n128_u8[0x9] << 8) | - ((uint64_t) u8.n128_u8[0x6] << 16) | - ((uint64_t) u8.n128_u8[0x3] << 24) | - ((uint64_t) u8.n128_u8[0x9] << 32) | - ((uint64_t) u8.n128_u8[0x6] << 40) | - ((uint64_t) u8.n128_u8[0x3] << 48) | - ((uint64_t) u8.n128_u8[0xC] << 56)}; - - dest.n128_u32[1] = dest.n128_u32[1] ^ rcon; - dest.n128_u32[3] = dest.n128_u32[3] ^ rcon; - - return dest; -#endif -} -#endif - -/* Others */ - -// Perform a carry-less multiplication of two 64-bit integers, selected from a -// and b according to imm8, and store the results in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_clmulepi64_si128 -FORCE_INLINE __m128i _mm_clmulepi64_si128(__m128i _a, __m128i _b, const int imm) -{ - uint64x2_t a = vreinterpretq_u64_m128i(_a); - uint64x2_t b = vreinterpretq_u64_m128i(_b); - switch (imm & 0x11) { - case 0x00: - return vreinterpretq_m128i_u64( - _sse2neon_vmull_p64(vget_low_u64(a), vget_low_u64(b))); - case 0x01: - return vreinterpretq_m128i_u64( - _sse2neon_vmull_p64(vget_high_u64(a), vget_low_u64(b))); - case 0x10: - return vreinterpretq_m128i_u64( - _sse2neon_vmull_p64(vget_low_u64(a), vget_high_u64(b))); - case 0x11: - return vreinterpretq_m128i_u64( - _sse2neon_vmull_p64(vget_high_u64(a), vget_high_u64(b))); - default: - abort(); - } -} - -FORCE_INLINE unsigned int _sse2neon_mm_get_denormals_zero_mode(void) -{ - union { - fpcr_bitfield field; -#if defined(__aarch64__) || defined(_M_ARM64) - uint64_t value; -#else - uint32_t value; -#endif - } r; - -#if defined(__aarch64__) || defined(_M_ARM64) - r.value = _sse2neon_get_fpcr(); -#else - __asm__ __volatile__("vmrs %0, FPSCR" : "=r"(r.value)); /* read */ -#endif - - return r.field.bit24 ? _MM_DENORMALS_ZERO_ON : _MM_DENORMALS_ZERO_OFF; -} - -// Count the number of bits set to 1 in unsigned 32-bit integer a, and -// return that count in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_popcnt_u32 -FORCE_INLINE int _mm_popcnt_u32(unsigned int a) -{ -#if defined(__aarch64__) || defined(_M_ARM64) -#if __has_builtin(__builtin_popcount) - return __builtin_popcount(a); -#elif defined(_MSC_VER) - return _CountOneBits(a); -#else - return (int) vaddlv_u8(vcnt_u8(vcreate_u8((uint64_t) a))); -#endif -#else - uint32_t count = 0; - uint8x8_t input_val, count8x8_val; - uint16x4_t count16x4_val; - uint32x2_t count32x2_val; - - input_val = vld1_u8((uint8_t *) &a); - count8x8_val = vcnt_u8(input_val); - count16x4_val = vpaddl_u8(count8x8_val); - count32x2_val = vpaddl_u16(count16x4_val); - - vst1_u32(&count, count32x2_val); - return count; -#endif -} - -// Count the number of bits set to 1 in unsigned 64-bit integer a, and -// return that count in dst. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_popcnt_u64 -FORCE_INLINE int64_t _mm_popcnt_u64(uint64_t a) -{ -#if defined(__aarch64__) || defined(_M_ARM64) -#if __has_builtin(__builtin_popcountll) - return __builtin_popcountll(a); -#elif defined(_MSC_VER) - return _CountOneBits64(a); -#else - return (int64_t) vaddlv_u8(vcnt_u8(vcreate_u8(a))); -#endif -#else - uint64_t count = 0; - uint8x8_t input_val, count8x8_val; - uint16x4_t count16x4_val; - uint32x2_t count32x2_val; - uint64x1_t count64x1_val; - - input_val = vld1_u8((uint8_t *) &a); - count8x8_val = vcnt_u8(input_val); - count16x4_val = vpaddl_u8(count8x8_val); - count32x2_val = vpaddl_u16(count16x4_val); - count64x1_val = vpaddl_u32(count32x2_val); - vst1_u64(&count, count64x1_val); - return count; -#endif -} - -FORCE_INLINE void _sse2neon_mm_set_denormals_zero_mode(unsigned int flag) -{ - // AArch32 Advanced SIMD arithmetic always uses the Flush-to-zero setting, - // regardless of the value of the FZ bit. - union { - fpcr_bitfield field; -#if defined(__aarch64__) || defined(_M_ARM64) - uint64_t value; -#else - uint32_t value; -#endif - } r; - -#if defined(__aarch64__) || defined(_M_ARM64) - r.value = _sse2neon_get_fpcr(); -#else - __asm__ __volatile__("vmrs %0, FPSCR" : "=r"(r.value)); /* read */ -#endif - - r.field.bit24 = (flag & _MM_DENORMALS_ZERO_MASK) == _MM_DENORMALS_ZERO_ON; - -#if defined(__aarch64__) || defined(_M_ARM64) - _sse2neon_set_fpcr(r.value); -#else - __asm__ __volatile__("vmsr FPSCR, %0" ::"r"(r)); /* write */ -#endif -} - -// Return the current 64-bit value of the processor's time-stamp counter. -// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=rdtsc -FORCE_INLINE uint64_t _rdtsc(void) -{ -#if defined(__aarch64__) || defined(_M_ARM64) - uint64_t val; - - /* According to ARM DDI 0487F.c, from Armv8.0 to Armv8.5 inclusive, the - * system counter is at least 56 bits wide; from Armv8.6, the counter - * must be 64 bits wide. So the system counter could be less than 64 - * bits wide and it is attributed with the flag 'cap_user_time_short' - * is true. - */ -#if defined(_MSC_VER) - val = _ReadStatusReg(ARM64_SYSREG(3, 3, 14, 0, 2)); -#else - __asm__ __volatile__("mrs %0, cntvct_el0" : "=r"(val)); -#endif - - return val; -#else - uint32_t pmccntr, pmuseren, pmcntenset; - // Read the user mode Performance Monitoring Unit (PMU) - // User Enable Register (PMUSERENR) access permissions. - __asm__ __volatile__("mrc p15, 0, %0, c9, c14, 0" : "=r"(pmuseren)); - if (pmuseren & 1) { // Allows reading PMUSERENR for user mode code. - __asm__ __volatile__("mrc p15, 0, %0, c9, c12, 1" : "=r"(pmcntenset)); - if (pmcntenset & 0x80000000UL) { // Is it counting? - __asm__ __volatile__("mrc p15, 0, %0, c9, c13, 0" : "=r"(pmccntr)); - // The counter is set up to count every 64th cycle - return (uint64_t) (pmccntr) << 6; - } - } - - // Fallback to syscall as we can't enable PMUSERENR in user mode. - struct timeval tv; - gettimeofday(&tv, NULL); - return (uint64_t) (tv.tv_sec) * 1000000 + tv.tv_usec; -#endif -} - -#if defined(__GNUC__) || defined(__clang__) -#pragma pop_macro("ALIGN_STRUCT") -#pragma pop_macro("FORCE_INLINE") -#endif - -#if defined(__GNUC__) && !defined(__clang__) -#pragma GCC pop_options -#endif - -#endif diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000000..d8257b88d9 --- /dev/null +++ b/shell.nix @@ -0,0 +1,23 @@ +let + nixpkgs = fetchTarball "https://github.com/NixOS/nixpkgs/tarball/nixos-24.05"; + pkgs = import nixpkgs { config = {}; overlays = []; }; +in +pkgs.mkShellNoCC { + packages = with pkgs; [ + # essential programs + git cmake clang gnumake patch jq pkg-config + # libraries + openssl boost fmt nlohmann_json lz4 zlib zstd + enet libopus vulkan-headers vulkan-utility-libraries + spirv-tools spirv-headers vulkan-loader unzip + glslang python3 httplib cpp-jwt ffmpeg-headless + libusb1 cubeb + # eden + qt6.qtbase qt6.qtmultimedia qt6.qtwayland qt6.qttools + qt6.qtwebengine qt6.qt5compat + # eden-cli + SDL2 + # optional components + discord-rpc gamemode + ]; +} diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index bd1285b2bc..7df229d9f4 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,5 +1,6 @@ -# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project # SPDX-License-Identifier: GPL-3.0-or-later + # SPDX-FileCopyrightText: 2018 yuzu Emulator Project # SPDX-License-Identifier: GPL-2.0-or-later @@ -7,8 +8,7 @@ include_directories(.) # Dynarmic -if ((ARCHITECTURE_x86_64 OR ARCHITECTURE_arm64)) - set(DYNARMIC_IGNORE_ASSERTS ON) +if ((ARCHITECTURE_x86_64 OR ARCHITECTURE_arm64 OR ARCHITECTURE_riscv64) AND NOT YUZU_STATIC_ROOM) add_subdirectory(dynarmic) add_library(dynarmic::dynarmic ALIAS dynarmic) endif() @@ -17,25 +17,32 @@ endif() set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $<$:_DEBUG> $<$>:NDEBUG>) +if (YUZU_STATIC_BUILD) + add_compile_definitions(QT_STATICPLUGIN) +endif() + +if (NIGHTLY_BUILD) + add_compile_definitions(NIGHTLY_BUILD) +endif() + # Set compilation flags -if (MSVC) +if (MSVC AND NOT CXX_CLANG) set(CMAKE_CONFIGURATION_TYPES Debug Release CACHE STRING "" FORCE) # Silence "deprecation" warnings - add_definitions(-D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS) + add_compile_definitions(_CRT_SECURE_NO_WARNINGS _CRT_NONSTDC_NO_DEPRECATE _SCL_SECURE_NO_WARNINGS) # Avoid windows.h junk - add_definitions(-DNOMINMAX) + add_compile_definitions(NOMINMAX) # Avoid windows.h from including some usually unused libs like winsocks.h, since this might cause some redefinition errors. - add_definitions(-DWIN32_LEAN_AND_MEAN) + add_compile_definitions(WIN32_LEAN_AND_MEAN) # Ensure that projects are built with Unicode support. - add_definitions(-DUNICODE -D_UNICODE) + add_compile_definitions(UNICODE _UNICODE) # /W4 - Level 4 warnings # /MP - Multi-threaded compilation - # /Zi - Output debugging information # /Zm - Specifies the precompiled header memory allocation limit # /Zo - Enhanced debug info for optimized builds # /permissive- - Enables stricter C++ standards conformance checks @@ -62,17 +69,10 @@ if (MSVC) /Zc:throwingNew /GT - # Modules - /experimental:module- # Explicitly disable module support due to conflicts with precompiled headers. - # External headers diagnostics /external:anglebrackets # Treats all headers included by #include
, where the header file is enclosed in angle brackets (< >), as external headers /external:W0 # Sets the default warning level to 0 for external headers, effectively disabling warnings for them. - # Warnings - /W4 - /WX- - /we4062 # Enumerator 'identifier' in a switch of enum 'enumeration' is not handled /we4189 # 'identifier': local variable is initialized but not referenced /we4265 # 'class': class has virtual functions, but destructor is not virtual @@ -95,72 +95,75 @@ if (MSVC) /wd4324 # 'struct_name': structure was padded due to __declspec(align()) /wd4201 # nonstandard extension used : nameless struct/union /wd4702 # unreachable code (when used with LTO) + + $<$:/GS-> # No stack buffer overflow checks + /Gy # Enable function level linking + /GR- # Disable run time type information ) - if (USE_CCACHE OR YUZU_USE_PRECOMPILED_HEADERS) - # when caching, we need to use /Z7 to downgrade debug info to use an older but more cacheable format - # Precompiled headers are deleted if not using /Z7. See https://github.com/nanoant/CMakePCHCompiler/issues/21 - add_compile_options(/Z7) - # Avoid D9025 warning - string(REPLACE "/Zi" "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") - string(REPLACE "/Zi" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") - else() - add_compile_options(/Zi) + if (NOT CXX_CLANG) + add_compile_options( + # Warnings + /W4 + /WX- + ) endif() if (ARCHITECTURE_x86_64) add_compile_options(/QIntel-jcc-erratum) endif() - # /GS- - No stack buffer overflow checks - add_compile_options("$<$:/GS->") - set(CMAKE_EXE_LINKER_FLAGS_DEBUG "/DEBUG /MANIFEST:NO" CACHE STRING "" FORCE) set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/DEBUG /MANIFEST:NO /INCREMENTAL:NO /OPT:REF,ICF" CACHE STRING "" FORCE) else() - add_compile_options( - -fwrapv - - -Werror=all - -Werror=extra - -Werror=missing-declarations - -Werror=shadow - -Werror=unused - - -Wno-attributes - -Wno-invalid-offsetof - -Wno-unused-parameter - -Wno-missing-field-initializers - ) - - if (CMAKE_CXX_COMPILER_ID MATCHES Clang OR CMAKE_CXX_COMPILER_ID MATCHES IntelLLVM) # Clang or AppleClang + if (NOT MSVC) add_compile_options( - -Wno-braced-scalar-init - -Wno-unused-private-field - -Wno-nullability-completeness - -Werror=shadow-uncaptured-local - -Werror=implicit-fallthrough - -Werror=type-limits - ) + $<$:-fwrapv> + $<$:-pipe> + # Disable RTTI (C++ only) + $<$:-fno-rtti>) + endif() + + add_compile_options( + $<$:-Werror=all> + $<$:-Werror=extra> + $<$:-Werror=missing-declarations> + $<$:-Werror=shadow> + $<$:-Werror=unused> + $<$:-Wno-attributes> + $<$:-Wno-invalid-offsetof> + $<$:-Wno-unused-parameter> + $<$:-Wno-missing-field-initializers>) + + if (CXX_CLANG OR CXX_ICC OR CXX_APPLE) # Clang, AppleClang, or Intel C++ + if (NOT MSVC) + add_compile_options( + $<$:-Werror=shadow-uncaptured-local> + $<$:-Werror=implicit-fallthrough> + $<$:-Werror=type-limits>) + endif() + add_compile_options( + $<$:-Wno-braced-scalar-init> + $<$:-Wno-unused-private-field> + $<$:-Wno-nullability-completeness>) endif() if (ARCHITECTURE_x86_64) - add_compile_options("-mcx16") + add_compile_options(-mcx16) endif() - if (APPLE AND CMAKE_CXX_COMPILER_ID STREQUAL Clang) - add_compile_options("-stdlib=libc++") + if (APPLE AND CXX_CLANG) + add_compile_options($<$:-stdlib=libc++>) endif() # GCC bugs - if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "11" AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "11" AND CXX_GCC) # These diagnostics would be great if they worked, but are just completely broken # and produce bogus errors on external libraries like fmt. add_compile_options( - -Wno-array-bounds - -Wno-stringop-overread - -Wno-stringop-overflow - ) + $<$:-Wno-array-bounds> + $<$:-Wno-stringop-overread> + $<$:-Wno-stringop-overflow>) endif() # Set file offset size to 64 bits. @@ -169,16 +172,23 @@ else() # glibc, which may default to 32 bits. glibc allows this to be configured # by setting _FILE_OFFSET_BITS. if(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR MINGW) - add_definitions(-D_FILE_OFFSET_BITS=64) + add_compile_definitions(_FILE_OFFSET_BITS=64) + endif() + + if (YUZU_STATIC_BUILD AND NOT APPLE) + add_compile_options(-static) + + # yuzu-cmd requires us to explicitly link libpthread, libgcc, and libstdc++ as static + add_link_options(-Wl,-Bstatic -static -lpthread) + add_link_options(-static-libgcc -static-libstdc++) endif() if (MINGW) - add_definitions(-DMINGW_HAS_SECURE_API) - add_compile_options("-msse4.1") + add_compile_definitions(MINGW_HAS_SECURE_API) - if (MINGW_STATIC_BUILD) - add_definitions(-DQT_STATICPLUGIN) - add_compile_options("-static") + # Only windows has this requirement + if (WIN32 AND ARCHITECTURE_x86_64) + add_compile_options("-msse4.1") endif() endif() @@ -193,34 +203,40 @@ else() endif() add_subdirectory(common) -add_subdirectory(core) -add_subdirectory(audio_core) -add_subdirectory(video_core) -add_subdirectory(hid_core) add_subdirectory(network) -add_subdirectory(input_common) -add_subdirectory(frontend_common) -add_subdirectory(shader_recompiler) if (YUZU_ROOM) add_subdirectory(dedicated_room) endif() -if (YUZU_TESTS) - add_subdirectory(tests) -endif() - -if (ENABLE_SDL2 AND YUZU_CMD) - add_subdirectory(yuzu_cmd) - set_target_properties(yuzu-cmd PROPERTIES OUTPUT_NAME "eden-cli") -endif() - if (YUZU_ROOM_STANDALONE) add_subdirectory(yuzu_room_standalone) set_target_properties(yuzu-room PROPERTIES OUTPUT_NAME "eden-room") endif() +if (YUZU_STATIC_ROOM) + return() +endif() + +add_subdirectory(core) +add_subdirectory(audio_core) +add_subdirectory(video_core) +add_subdirectory(hid_core) +add_subdirectory(input_common) +add_subdirectory(frontend_common) +add_subdirectory(shader_recompiler) + +if (YUZU_TESTS) + add_subdirectory(tests) +endif() + +if (YUZU_CMD) + add_subdirectory(yuzu_cmd) + set_target_properties(yuzu-cmd PROPERTIES OUTPUT_NAME "eden-cli") +endif() + if (ENABLE_QT) + add_subdirectory(qt_common) add_subdirectory(yuzu) endif() diff --git a/src/android/app/build.gradle.kts b/src/android/app/build.gradle.kts index 0cbb29b01b..3279a2202f 100644 --- a/src/android/app/build.gradle.kts +++ b/src/android/app/build.gradle.kts @@ -1,13 +1,15 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright yuzu/Citra Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -import android.annotation.SuppressLint +// import android.annotation.SuppressLint +import com.android.build.gradle.api.ApplicationVariant import kotlin.collections.setOf import org.jlleitschuh.gradle.ktlint.reporter.ReporterType import com.github.triplet.gradle.androidpublisher.ReleaseStatus +import org.gradle.api.tasks.Copy plugins { id("com.android.application") @@ -17,6 +19,7 @@ plugins { id("androidx.navigation.safeargs.kotlin") id("org.jlleitschuh.gradle.ktlint") version "11.4.0" id("com.github.triplet.play") version "3.8.6" + id("idea") } /** @@ -26,16 +29,20 @@ plugins { */ val autoVersion = (((System.currentTimeMillis() / 1000) - 1451606400) / 10).toInt() +val edenDir = project(":Eden").projectDir + @Suppress("UnstableApiUsage") android { namespace = "org.yuzu.yuzu_emu" - compileSdkVersion = "android-35" - ndkVersion = "26.1.10909125" + compileSdkVersion = "android-36" + ndkVersion = "28.2.13676358" + + val isNightly = + providers.gradleProperty("nightly").orNull?.toBooleanStrictOrNull() ?: false buildFeatures { viewBinding = true - buildConfig = true } compileOptions { @@ -57,21 +64,44 @@ android { } defaultConfig { - // TODO If this is ever modified, change application_id in strings.xml applicationId = "dev.eden.eden_emulator" - minSdk = 30 + minSdk = 24 targetSdk = 36 versionName = getGitVersion() - versionCode = autoVersion - ndk { - @SuppressLint("ChromeOsAbiSupport") - abiFilters += listOf("arm64-v8a") - } + externalNativeBuild { + cmake { + val extraCMakeArgs = + (project.findProperty("YUZU_ANDROID_ARGS") as String?)?.split("\\s+".toRegex()) + ?: emptyList() - buildConfigField("String", "GIT_HASH", "\"${getGitHash()}\"") - buildConfigField("String", "BRANCH", "\"${getBranch()}\"") + arguments.addAll( + listOf( + "-DENABLE_QT=0", // Don't use QT + "-DENABLE_WEB_SERVICE=1", // Enable web service + "-DANDROID_ARM_NEON=true", // cryptopp requires Neon to work + "-DYUZU_USE_CPM=ON", + "-DCPMUTIL_FORCE_BUNDLED=ON", + "-DYUZU_USE_BUNDLED_FFMPEG=ON", + "-DCMAKE_EXPORT_COMPILE_COMMANDS=ON", + "-DBUILD_TESTING=OFF", + "-DYUZU_TESTS=OFF", + "-DDYNARMIC_TESTS=OFF", + *extraCMakeArgs.toTypedArray() + ) + ) + + if (isNightly) { + arguments.addAll(listOf( + "-DENABLE_UPDATE_CHECKER=ON", + "-DNIGHTLY_BUILD=ON", + )) + } + + abiFilters("arm64-v8a") + } + } } val keystoreFile = System.getenv("ANDROID_KEYSTORE_FILE") @@ -92,9 +122,11 @@ android { } } + // The app name is constructed with the appNameSuffix and appNameBase manifest placeholders + // suffix is used for build type--remember to include a space beforehand + // Define build types, which are orthogonal to product flavors. buildTypes { - // Signed by release key, allowing for upload to Play Store. release { signingConfig = if (keystoreFile != null) { @@ -103,11 +135,17 @@ android { signingConfigs.getByName("default") } - resValue("string", "app_name_suffixed", "Eden") + if (isNightly) { + applicationIdSuffix = ".nightly" + manifestPlaceholders += mapOf("appNameSuffix" to " Nightly") + } else { + manifestPlaceholders += mapOf("appNameSuffix" to "") + } + isMinifyEnabled = true isDebuggable = false proguardFiles( - getDefaultProguardFile("proguard-android.txt"), + getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } @@ -116,13 +154,15 @@ android { // Attaches 'debug' suffix to version and package name, allowing installation alongside the release build. register("relWithDebInfo") { isDefault = true - resValue("string", "app_name_suffixed", "Eden Debug Release") signingConfig = signingConfigs.getByName("default") isDebuggable = true proguardFiles( - getDefaultProguardFile("proguard-android.txt"), + getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) + + manifestPlaceholders += mapOf("appNameSuffix" to " Debug Release") + versionNameSuffix = "-relWithDebInfo" applicationIdSuffix = ".relWithDebInfo" isJniDebuggable = true @@ -132,26 +172,78 @@ android { // Attaches 'debug' suffix to version and package name, allowing installation alongside the release build. debug { signingConfig = signingConfigs.getByName("default") - resValue("string", "app_name_suffixed", "Eden Debug") isDebuggable = true isJniDebuggable = true versionNameSuffix = "-debug" applicationIdSuffix = ".debug" + + manifestPlaceholders += mapOf("appNameSuffix" to " Debug") } } - android { - flavorDimensions.add("version") - productFlavors { - create("mainline") { - dimension = "version" - // No need to set applicationId here + // appNameBase is used for the primary identifier + // this should be "Eden " + flavorDimensions.add("version") + productFlavors { + create("mainline") { + dimension = "version" + isDefault = true + + manifestPlaceholders += mapOf("appNameBase" to "Eden") + resValue("string", "app_name_suffixed", "Eden") + + ndk { + abiFilters += listOf("arm64-v8a") + } + } + + create("genshinSpoof") { + dimension = "version" + manifestPlaceholders += mapOf("appNameBase" to "Eden Optimized") + resValue("string", "app_name_suffixed", "Eden Optimized") + applicationId = "com.miHoYo.Yuanshen" + + ndk { + abiFilters += listOf("arm64-v8a") + } + } + + create("legacy") { + dimension = "version" + manifestPlaceholders += mapOf("appNameBase" to "Eden Legacy") + resValue("string", "app_name_suffixed", "Eden Legacy") + applicationId = "dev.legacy.eden_emulator" + + externalNativeBuild { + cmake { + arguments.add("-DYUZU_LEGACY=ON") + } } - create("genshinSpoof") { - dimension = "version" - resValue("string", "app_name_suffixed", "Eden Optimised") - applicationId = "com.miHoYo.Yuanshen" + sourceSets { + getByName("legacy") { + res.srcDirs("src/main/legacy") + } + } + + ndk { + abiFilters += listOf("arm64-v8a") + } + } + + create("chromeOS") { + dimension = "version" + manifestPlaceholders += mapOf("appNameBase" to "Eden ChromeOS") + resValue("string", "app_name_suffixed", "Eden ChromeOS") + + ndk { + abiFilters += listOf("x86_64") + } + + externalNativeBuild { + cmake { + abiFilters("x86_64") + } } } } @@ -159,28 +251,27 @@ android { externalNativeBuild { cmake { version = "3.22.1" - path = file("../../../CMakeLists.txt") + path = file("${edenDir}/CMakeLists.txt") } } - defaultConfig { - externalNativeBuild { - cmake { - arguments( - "-DENABLE_QT=0", // Don't use QT - "-DENABLE_SDL2=0", // Don't use SDL - "-DENABLE_WEB_SERVICE=1", // Enable web service - "-DENABLE_OPENSSL=ON", - "-DANDROID_ARM_NEON=true", // cryptopp requires Neon to work - "-DYUZU_USE_CPM=ON", - "-DYUZU_USE_BUNDLED_FFMPEG=ON", - "-DYUZU_ENABLE_LTO=ON", - "-DCMAKE_EXPORT_COMPILE_COMMANDS=ON" - ) + productFlavors.all { + val currentName = manifestPlaceholders["appNameBase"] as? String ?: "Eden" + val suffix = if (isNightly) " Nightly" else "" - abiFilters("arm64-v8a") - } - } + // apply nightly suffix I/A + resValue("string", "app_name_suffixed", "$currentName$suffix") + resValue("string", "app_name", "Eden$suffix") + } +} + +idea { + module { + // Inclusion to exclude build/ dir from non-Android + excludeDirs.add(file("${edenDir}/build")) + + // also exclude CPM cache from automatic indexing + excludeDirs.add(file("${edenDir}/.cache")) } } @@ -191,7 +282,7 @@ tasks.register("ktlintReset", fun Delete.() { val showFormatHelp = { logger.lifecycle( "If this check fails, please try running \"gradlew ktlintFormat\" for automatic " + - "codestyle fixes" + "codestyle fixes" ) } tasks.getByPath("ktlintKotlinScriptCheck").doFirst { showFormatHelp.invoke() } @@ -238,7 +329,6 @@ dependencies { implementation("androidx.core:core-splashscreen:1.0.1") implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.17.2") implementation("androidx.window:window:1.3.0") - implementation("androidx.constraintlayout:constraintlayout:2.2.1") implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0") implementation("org.commonmark:commonmark:0.22.0") implementation("androidx.navigation:navigation-fragment-ktx:2.8.9") @@ -256,7 +346,9 @@ fun runGitCommand(command: List): String { .directory(project.rootDir) .redirectOutput(ProcessBuilder.Redirect.PIPE) .redirectError(ProcessBuilder.Redirect.PIPE) - .start().inputStream.bufferedReader().use { it.readText() } + .start() + .inputStream.bufferedReader() + .use { it.readText() } .trim() } catch (e: Exception) { logger.error("Cannot find git") @@ -281,8 +373,34 @@ fun getGitVersion(): String { return versionName.ifEmpty { "0.0" } } -fun getGitHash(): String = - runGitCommand(listOf("git", "rev-parse", "--short", "HEAD")).ifEmpty { "dummy-hash" } +afterEvaluate { + val artifactsDir = layout.projectDirectory.dir("${edenDir}/artifacts") + val outputsDir = layout.buildDirectory.dir("outputs").get() -fun getBranch(): String = - runGitCommand(listOf("git", "rev-parse", "--abbrev-ref", "HEAD")).ifEmpty { "dummy-hash" } + android.applicationVariants.forEach { variant -> + val variantName = variant.name + val variantTask = variantName.replaceFirstChar { it.uppercaseChar() } + + val flavor = variant.flavorName + val type = variant.buildType.name + + val baseName = "app-$flavor-$type" + + val apkFile = outputsDir.file("apk/$flavor/$type/$baseName.apk") + val aabFile = outputsDir.file("bundle/$variantName/$baseName.aab") + + val taskName = "copy${variantTask}Outputs" + + tasks.register(taskName) { + group = "publishing" + description = "Copy APK and AAB for $variantName to $artifactsDir" + + from(apkFile) + from(aabFile) + into(artifactsDir) + + dependsOn("assemble${variantTask}") + dependsOn("bundle${variantTask}") + } + } +} diff --git a/src/android/app/src/main/AndroidManifest.xml b/src/android/app/src/main/AndroidManifest.xml index d31deaa355..b899ca07fa 100644 --- a/src/android/app/src/main/AndroidManifest.xml +++ b/src/android/app/src/main/AndroidManifest.xml @@ -24,16 +24,20 @@ SPDX-License-Identifier: GPL-3.0-or-later - - - + + + + + + + + + + + + + + + + diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt index ba50bcad34..397b44c9f9 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: 2023 yuzu Emulator Project @@ -26,6 +26,7 @@ import org.yuzu.yuzu_emu.model.InstallResult import org.yuzu.yuzu_emu.model.Patch import org.yuzu.yuzu_emu.model.GameVerificationResult import org.yuzu.yuzu_emu.network.NetPlayManager +import org.yuzu.yuzu_emu.applets.web.WebBrowser /** * Class which contains methods that interact @@ -151,6 +152,10 @@ object NativeLibrary { external fun surfaceDestroyed() + external fun getAppletCaptureBuffer(): ByteArray + external fun getAppletCaptureWidth(): Int + external fun getAppletCaptureHeight(): Int + /** * Unpauses emulation from a paused state. */ @@ -200,12 +205,85 @@ object NativeLibrary { external fun logSettings() + external fun getDebugKnobAt(index: Int): Boolean + + /** + * Set the current speed limit to the configured turbo speed. + */ + external fun setTurboSpeedLimit(enabled: Boolean) + + /** + * Set the current speed limit to the configured slow speed. + */ + external fun setSlowSpeedLimit(enabled: Boolean) + + /** + * Set the current speed limit to the configured standard speed. + */ + external fun setStandardSpeedLimit(enabled: Boolean) + + external fun isTurboMode(): Boolean + external fun isSlowMode(): Boolean + + /** + * Returns Vulkan driver version / API version / GPU model + */ + external fun getVulkanDriverVersion(): String + external fun getVulkanApiVersion(): String + external fun getGpuModel(): String + + /** + * Returns a summary of detailed information about the CPU. + */ + external fun getCpuSummary(): String + + /** + * Checks for available updates. + */ + external fun checkForUpdate(): Array? + + /** + * Return the URL to the release page + */ + external fun getUpdateUrl(version: String): String + + /** + * Return the URL to download the APK for the given version + */ + external fun getUpdateApkUrl(tag: String, artifact: String, packageId: String): String + + /** + * Returns whether the update checker is enabled through CMAKE options. + */ + external fun isUpdateCheckerEnabled(): Boolean + + /** + * Returns whether or not this is a nightly build. + */ + external fun isNightlyBuild(): Boolean + + /** + * Returns the build version generated by CMake (BUILD_VERSION). + */ + external fun getBuildVersion(): String + enum class CoreError { ErrorSystemFiles, ErrorSavestate, ErrorUnknown } + /** + * playtime tracking + */ + external fun playTimeManagerInit() + external fun playTimeManagerStart() + external fun playTimeManagerStop() + external fun playTimeManagerGetPlayTime(programId: String): Long + external fun playTimeManagerGetCurrentTitleId(): Long + external fun playTimeManagerResetProgramPlayTime(programId: String) + external fun playTimeManagerSetPlayTime(programId: String, playTimeSeconds: Long) + var coreErrorAlertResult = false val coreErrorAlertLock = Object() @@ -407,6 +485,17 @@ object NativeLibrary { */ external fun setCurrentAppletId(appletId: Int) + /** + * Launch external URL when Web applet and opens browser + * + * @param String URL + */ + @Keep + @JvmStatic + fun openExternalUrl(url: String) { + WebBrowser.openExternal(url) + } + /** * Sets the cabinet mode for launching the cabinet applet. * @@ -428,13 +517,6 @@ object NativeLibrary { */ external fun firmwareVersion(): String - /** - * Verifies installed firmware. - * - * @return The result code. - */ - external fun verifyFirmware(): Int - /** * Check if a game requires firmware to be playable. * @@ -525,11 +607,32 @@ object NativeLibrary { */ external fun addFileToFilesystemProvider(path: String) + /** + * Adds a game-folder file to the manual filesystem provider, respecting the internal gate for + * game-folder external-content mounting. + */ + external fun addGameFolderFileToFilesystemProvider(path: String) + /** * Clears all files added to the manual filesystem provider in our EmulationSession instance */ external fun clearFilesystemProvider() + /** + * Gets the current virtual amiibo state reported by the core. + * + * @return Native enum value for the current amiibo state. + */ + external fun getVirtualAmiiboState(): Int + + /** + * Loads amiibo data into the currently running emulation session. + * + * @param data Raw amiibo file contents. + * @return Native enum value representing the load result. + */ + external fun loadAmiibo(data: ByteArray): Int + /** * Checks if all necessary keys are present for decryption */ @@ -539,4 +642,23 @@ object NativeLibrary { * Updates the device power state to global variables */ external fun updatePowerState(percentage: Int, isCharging: Boolean, hasBattery: Boolean) + + /** + * Profile manager native calls + */ + external fun getAllUsers(): Array? + external fun getUserUsername(uuid: String): String? + external fun getUserCount(): Long + external fun canCreateUser(): Boolean + external fun createUser(uuid: String, username: String): Boolean + external fun updateUserUsername(uuid: String, username: String): Boolean + external fun removeUser(uuid: String): Boolean + external fun getCurrentUser(): String? + external fun setCurrentUser(uuid: String): Boolean + external fun getUserImagePath(uuid: String): String? + external fun saveUserImage(uuid: String, imagePath: String): Boolean + external fun reloadProfiles() + external fun getFirmwareAvatarCount(): Int + external fun getFirmwareAvatarImage(index: Int): ByteArray? + external fun getDefaultAccountBackupJpeg(): ByteArray } diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/YuzuApplication.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/YuzuApplication.kt index 664442b20e..55282cad1c 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/YuzuApplication.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/YuzuApplication.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: 2023 yuzu Emulator Project @@ -12,16 +12,36 @@ import android.app.NotificationManager import android.content.Context import org.yuzu.yuzu_emu.features.input.NativeInput import java.io.File +import java.io.FileOutputStream +import java.security.KeyStore +import javax.net.ssl.TrustManagerFactory +import javax.net.ssl.X509TrustManager +import android.content.res.Configuration +import android.os.LocaleList +import org.yuzu.yuzu_emu.features.settings.model.IntSetting import org.yuzu.yuzu_emu.utils.DirectoryInitialization import org.yuzu.yuzu_emu.utils.DocumentsTree import org.yuzu.yuzu_emu.utils.GpuDriverHelper import org.yuzu.yuzu_emu.utils.Log import org.yuzu.yuzu_emu.utils.PowerStateUpdater +import org.yuzu.yuzu_emu.utils.ControllerNavigationGlobalHook +import java.util.Locale fun Context.getPublicFilesDir(): File = getExternalFilesDir(null) ?: filesDir class YuzuApplication : Application() { private fun createNotificationChannels() { + val name: CharSequence = getString(R.string.app_notification_channel_name) + val description = getString(R.string.app_notification_channel_description) + val foregroundService = NotificationChannel( + getString(R.string.app_notification_channel_id), + name, + NotificationManager.IMPORTANCE_DEFAULT + ) + foregroundService.description = description + foregroundService.setSound(null, null) + foregroundService.vibrationPattern = null + val noticeChannel = NotificationChannel( getString(R.string.notice_notification_channel_id), getString(R.string.notice_notification_channel_name), @@ -34,6 +54,7 @@ class YuzuApplication : Application() { // or other notification behaviors after this val notificationManager = getSystemService(NotificationManager::class.java) notificationManager.createNotificationChannel(noticeChannel) + notificationManager.createNotificationChannel(foregroundService) } override fun onCreate() { @@ -41,11 +62,18 @@ class YuzuApplication : Application() { application = this documentsTree = DocumentsTree() DirectoryInitialization.start() + + // Initialize Freedreno config BEFORE loading native library + // This ensures GPU driver environment variables are set before adrenotools initializes + GpuDriverHelper.initializeFreedrenoConfigEarly() + + NativeLibrary.playTimeManagerInit() GpuDriverHelper.initializeDriverParameters() NativeInput.reloadInputDevices() NativeLibrary.logDeviceInfo() PowerStateUpdater.start() Log.logDeviceInfo() + ControllerNavigationGlobalHook.install(this) createNotificationChannels() } @@ -56,5 +84,38 @@ class YuzuApplication : Application() { val appContext: Context get() = application.applicationContext + + private val LANGUAGE_CODES = arrayOf( + "system", "en", "es", "fr", "de", "it", "pt", "pt-BR", "ru", "ja", "ko", + "zh-CN", "zh-TW", "pl", "cs", "nb", "hu", "uk", "vi", "id", "ar", "ckb", "fa", "he", "sr" + ) + + fun applyLanguage(context: Context): Context { + val languageIndex = IntSetting.APP_LANGUAGE.getInt() + val langCode = if (languageIndex in LANGUAGE_CODES.indices) { + LANGUAGE_CODES[languageIndex] + } else { + "system" + } + + if (langCode == "system") { + return context + } + + val locale = when { + langCode.contains("-") -> { + val parts = langCode.split("-") + Locale.Builder().setLanguage(parts[0]).setRegion(parts[1]).build() + } + else -> Locale.Builder().setLanguage(langCode).build() + } + + Locale.setDefault(locale) + + val config = Configuration(context.resources.configuration) + config.setLocales(LocaleList(locale)) + + return context.createConfigurationContext(config) + } } } 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 e01dc754eb..949edc1ee3 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 @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: 2023 yuzu Emulator Project @@ -7,6 +7,7 @@ package org.yuzu.yuzu_emu.activities import android.annotation.SuppressLint +import android.app.Activity import android.app.PendingIntent import android.app.PictureInPictureParams import android.app.RemoteAction @@ -17,12 +18,18 @@ import android.content.IntentFilter import android.content.res.Configuration import android.graphics.Rect import android.graphics.drawable.Icon +import android.hardware.input.InputManager import android.hardware.Sensor import android.hardware.SensorEvent import android.hardware.SensorEventListener import android.hardware.SensorManager import android.os.Build import android.os.Bundle +import android.os.Handler +import android.os.Looper +import androidx.navigation.NavOptions +import org.yuzu.yuzu_emu.fragments.EmulationFragment +import org.yuzu.yuzu_emu.utils.CustomSettingsHandler import android.util.Rational import android.view.InputDevice import android.view.KeyEvent @@ -59,12 +66,18 @@ import org.yuzu.yuzu_emu.utils.ParamPackage import org.yuzu.yuzu_emu.utils.ThemeHelper import java.text.NumberFormat import kotlin.math.roundToInt +import org.yuzu.yuzu_emu.utils.ForegroundService +import androidx.core.os.BundleCompat -class EmulationActivity : AppCompatActivity(), SensorEventListener { +class EmulationActivity : AppCompatActivity(), SensorEventListener, InputManager.InputDeviceListener { private lateinit var binding: ActivityEmulationBinding var isActivityRecreated = false private lateinit var nfcReader: NfcReader + private lateinit var inputManager: InputManager + + private var touchDownTime: Long = 0 + private val maxTapDuration = 500L private val gyro = FloatArray(3) private val accel = FloatArray(3) @@ -78,6 +91,34 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener { private val emulationViewModel: EmulationViewModel by viewModels() + private var foregroundService: Intent? = null + private val mainHandler = Handler(Looper.getMainLooper()) + private var pendingRomSwapIntent: Intent? = null + private var isWaitingForRomSwapStop = false + private var romSwapNativeStopped = false + private var romSwapThreadStopped = false + private var romSwapGeneration = 0 + private var hasEmulationSession = processHasEmulationSession + private val romSwapStopTimeoutRunnable = Runnable { onRomSwapStopTimeout() } + + private fun onRomSwapStopTimeout() { + if (!isWaitingForRomSwapStop) { + return + } + Log.warning("[EmulationActivity] ROM swap stop timed out; retrying native stop and continuing to wait") + NativeLibrary.stopEmulation() + scheduleRomSwapStopTimeout() + } + + private fun scheduleRomSwapStopTimeout() { + mainHandler.removeCallbacks(romSwapStopTimeoutRunnable) + mainHandler.postDelayed(romSwapStopTimeoutRunnable, ROM_SWAP_STOP_TIMEOUT_MS) + } + + override fun attachBaseContext(base: Context) { + super.attachBaseContext(YuzuApplication.applyLanguage(base)) + } + override fun onCreate(savedInstanceState: Bundle?) { Log.gameLaunched = true ThemeHelper.setTheme(this) @@ -114,9 +155,29 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener { binding = ActivityEmulationBinding.inflate(layoutInflater) setContentView(binding.root) + val launchIntent = Intent(intent) + val shouldDeferLaunchForSwap = hasEmulationSession && isSwapIntent(launchIntent) + if (shouldDeferLaunchForSwap) { + Log.info("[EmulationActivity] onCreate detected existing session; deferring new game setup for swap") + emulationViewModel.setIsEmulationStopping(true) + emulationViewModel.setEmulationStopped(false) + } + val navHostFragment = supportFragmentManager.findFragmentById(R.id.fragment_container) as NavHostFragment - navHostFragment.navController.setGraph(R.navigation.emulation_navigation, intent.extras) + val initialArgs = if (shouldDeferLaunchForSwap) { + Bundle(intent.extras ?: Bundle()).apply { + processSessionGame?.let { putParcelable("game", it) } + } + } else { + intent.extras + } + navHostFragment.navController.setGraph(R.navigation.emulation_navigation, initialArgs) + if (shouldDeferLaunchForSwap) { + mainHandler.post { + handleSwapIntent(launchIntent) + } + } isActivityRecreated = savedInstanceState != null @@ -128,6 +189,12 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener { nfcReader = NfcReader(this) nfcReader.initialize() + inputManager = getSystemService(INPUT_SERVICE) as InputManager + inputManager.registerInputDeviceListener(this, null) + + foregroundService = Intent(this, ForegroundService::class.java) + startForegroundService(foregroundService) + val preferences = PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext) if (!preferences.getBoolean(Settings.PREF_MEMORY_WARNING_SHOWN, false)) { if (MemoryUtil.isLessThan(MemoryUtil.REQUIRED_MEMORY, MemoryUtil.totalMemory)) { @@ -179,14 +246,23 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener { nfcReader.startScanning() startMotionSensorListener() InputHandler.updateControllerData() + notifyPhysicalControllerState() buildPictureInPictureParams() } override fun onPause() { - super.onPause() nfcReader.stopScanning() stopMotionSensorListener() + super.onPause() + } + + override fun onDestroy() { + mainHandler.removeCallbacks(romSwapStopTimeoutRunnable) + super.onDestroy() + inputManager.unregisterInputDeviceListener(this) + stopForegroundService(this) + NativeLibrary.playTimeManagerStop() } override fun onUserLeaveHint() { @@ -201,20 +277,138 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener { override fun onNewIntent(intent: Intent) { super.onNewIntent(intent) - setIntent(intent) - - // Reset navigation graph with new intent data to recreate EmulationFragment - val navHostFragment = - supportFragmentManager.findFragmentById(R.id.fragment_container) as NavHostFragment - navHostFragment.navController.setGraph(R.navigation.emulation_navigation, intent.extras) - + handleSwapIntent(intent) nfcReader.onNewIntent(intent) InputHandler.updateControllerData() } + private fun isSwapIntent(intent: Intent): Boolean { + return when { + intent.getBooleanExtra(EXTRA_OVERLAY_GAMELESS_EDIT_MODE, false) -> false + intent.action == CustomSettingsHandler.CUSTOM_CONFIG_ACTION -> true + intent.data != null -> true + else -> { + val extras = intent.extras + extras != null && + BundleCompat.getParcelable(extras, EXTRA_SELECTED_GAME, Game::class.java) != null + } + } + } + + private fun handleSwapIntent(intent: Intent) { + if (!isSwapIntent(intent)) { + return + } + + pendingRomSwapIntent = Intent(intent) + + if (!isWaitingForRomSwapStop) { + Log.info("[EmulationActivity] Begin ROM swap: data=${intent.data}") + isWaitingForRomSwapStop = true + romSwapNativeStopped = false + romSwapThreadStopped = false + romSwapGeneration += 1 + val thisSwapGeneration = romSwapGeneration + emulationViewModel.setIsEmulationStopping(true) + emulationViewModel.setEmulationStopped(false) + val navHostFragment = + supportFragmentManager.findFragmentById(R.id.fragment_container) as? NavHostFragment + val childFragmentManager = navHostFragment?.childFragmentManager + val stoppingFragmentForSwap = + (childFragmentManager?.primaryNavigationFragment as? EmulationFragment) ?: + childFragmentManager + ?.fragments + ?.asReversed() + ?.firstOrNull { + it is EmulationFragment && + it.isAdded && + it.view != null && + !it.isRemoving + } as? EmulationFragment + + val hasSessionForSwap = hasEmulationSession || stoppingFragmentForSwap != null + + if (!hasSessionForSwap) { + romSwapNativeStopped = true + romSwapThreadStopped = true + } else { + if (stoppingFragmentForSwap != null) { + stoppingFragmentForSwap.stopForRomSwap() + stoppingFragmentForSwap.notifyWhenEmulationThreadStops { + if (!isWaitingForRomSwapStop || romSwapGeneration != thisSwapGeneration) { + return@notifyWhenEmulationThreadStops + } + romSwapThreadStopped = true + Log.info("[EmulationActivity] ROM swap thread stop acknowledged") + launchPendingRomSwap(force = false) + } + } else { + Log.warning("[EmulationActivity] ROM swap stop target fragment not found; requesting native stop") + romSwapThreadStopped = true + NativeLibrary.stopEmulation() + } + + scheduleRomSwapStopTimeout() + } + } + + launchPendingRomSwap(force = false) + } + + private fun launchPendingRomSwap(force: Boolean) { + if (!isWaitingForRomSwapStop) { + return + } + if (!force && (!romSwapNativeStopped || !romSwapThreadStopped)) { + return + } + val swapIntent = pendingRomSwapIntent ?: return + Log.info("[EmulationActivity] Launching pending ROM swap: data=${swapIntent.data}") + pendingRomSwapIntent = null + isWaitingForRomSwapStop = false + romSwapNativeStopped = false + romSwapThreadStopped = false + mainHandler.removeCallbacks(romSwapStopTimeoutRunnable) + applyGameLaunchIntent(swapIntent) + } + + private fun applyGameLaunchIntent(intent: Intent) { + hasEmulationSession = true + processHasEmulationSession = true + emulationViewModel.setIsEmulationStopping(false) + emulationViewModel.setEmulationStopped(false) + setIntent(Intent(intent)) + val navHostFragment = + supportFragmentManager.findFragmentById(R.id.fragment_container) as NavHostFragment + val navController = navHostFragment.navController + val startArgs = intent.extras?.let { Bundle(it) } ?: Bundle() + val navOptions = NavOptions.Builder() + .setPopUpTo(R.id.emulationFragment, true) + .build() + + runCatching { + navController.navigate(R.id.emulationFragment, startArgs, navOptions) + }.onFailure { + Log.warning("[EmulationActivity] ROM swap navigate fallback to setGraph: ${it.message}") + navController.setGraph(R.navigation.emulation_navigation, startArgs) + } + } + override fun dispatchKeyEvent(event: KeyEvent): Boolean { - if (event.source and InputDevice.SOURCE_JOYSTICK != InputDevice.SOURCE_JOYSTICK && - event.source and InputDevice.SOURCE_GAMEPAD != InputDevice.SOURCE_GAMEPAD + + if (event.keyCode == KeyEvent.KEYCODE_VOLUME_UP || + event.keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) { + return super.dispatchKeyEvent(event) + } + + val isPhysicalKeyboard = event.source and InputDevice.SOURCE_KEYBOARD == InputDevice.SOURCE_KEYBOARD && + event.device?.isVirtual == false + + val isControllerInput = InputHandler.isPhysicalGameController(event.device) + + if (!isControllerInput && + event.source and InputDevice.SOURCE_MOUSE != InputDevice.SOURCE_MOUSE && + !isPhysicalKeyboard ) { return super.dispatchKeyEvent(event) } @@ -223,12 +417,19 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener { return super.dispatchKeyEvent(event) } + if (isControllerInput && event.action == KeyEvent.ACTION_DOWN) { + notifyControllerInput() + } + return InputHandler.dispatchKeyEvent(event) } override fun dispatchGenericMotionEvent(event: MotionEvent): Boolean { - if (event.source and InputDevice.SOURCE_JOYSTICK != InputDevice.SOURCE_JOYSTICK && - event.source and InputDevice.SOURCE_GAMEPAD != InputDevice.SOURCE_GAMEPAD + val isControllerInput = InputHandler.isPhysicalGameController(event.device) + + if (!isControllerInput && + event.source and InputDevice.SOURCE_KEYBOARD != InputDevice.SOURCE_KEYBOARD && + event.source and InputDevice.SOURCE_MOUSE != InputDevice.SOURCE_MOUSE ) { return super.dispatchGenericMotionEvent(event) } @@ -242,10 +443,57 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener { return true } + if (isControllerInput) { + notifyControllerInput() + } + return InputHandler.dispatchGenericMotionEvent(event) } + private fun notifyControllerInput() { + val navHostFragment = + supportFragmentManager.findFragmentById(R.id.fragment_container) as? NavHostFragment + val emulationFragment = + navHostFragment?.childFragmentManager?.fragments?.firstOrNull() as? org.yuzu.yuzu_emu.fragments.EmulationFragment + emulationFragment?.onControllerInputDetected() + } + + private fun isGameController(deviceId: Int): Boolean { + return InputHandler.isPhysicalGameController(InputDevice.getDevice(deviceId)) + } + + override fun onInputDeviceAdded(deviceId: Int) { + if (isGameController(deviceId)) { + InputHandler.updateControllerData() + notifyPhysicalControllerState() + } + } + + override fun onInputDeviceRemoved(deviceId: Int) { + InputHandler.updateControllerData() + notifyPhysicalControllerState() + } + + override fun onInputDeviceChanged(deviceId: Int) { + if (isGameController(deviceId)) { + InputHandler.updateControllerData() + notifyPhysicalControllerState() + } + } + + private fun notifyPhysicalControllerState() { + val navHostFragment = + supportFragmentManager.findFragmentById(R.id.fragment_container) as? NavHostFragment + val emulationFragment = + navHostFragment?.childFragmentManager?.fragments?.firstOrNull() as? org.yuzu.yuzu_emu.fragments.EmulationFragment + emulationFragment?.onPhysicalControllerStateChanged(InputHandler.androidControllers.isNotEmpty()) + } + override fun onSensorChanged(event: SensorEvent) { + if (!NativeLibrary.isRunning() || NativeLibrary.isPaused()) { + return + } + val rotation = this.display?.rotation if (rotation == Surface.ROTATION_90) { flipMotionOrientation = true @@ -476,18 +724,83 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener { } } + override fun dispatchTouchEvent(event: MotionEvent): Boolean { + val navHostFragment = supportFragmentManager.findFragmentById(R.id.fragment_container) as? NavHostFragment + val emulationFragment = navHostFragment?.childFragmentManager?.fragments?.firstOrNull() as? org.yuzu.yuzu_emu.fragments.EmulationFragment + + emulationFragment?.let { fragment -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + touchDownTime = System.currentTimeMillis() + // show overlay immediately on touch and cancel timer when only auto-hide is enabled + if (!emulationViewModel.drawerOpen.value && + BooleanSetting.ENABLE_INPUT_OVERLAY_AUTO_HIDE.getBoolean() && + !BooleanSetting.HIDE_OVERLAY_ON_CONTROLLER_INPUT.getBoolean()) { + fragment.handler.removeCallbacksAndMessages(null) + fragment.toggleOverlay(true) + } + } + MotionEvent.ACTION_UP -> { + if (!emulationViewModel.drawerOpen.value) { + val touchDuration = System.currentTimeMillis() - touchDownTime + + if (touchDuration <= maxTapDuration) { + fragment.handleScreenTap(false) + } else { + // just start the auto-hide timer without toggling visibility + fragment.handleScreenTap(true) + } + } + } + } + } + + return super.dispatchTouchEvent(event) + } + fun onEmulationStarted() { + if (Looper.myLooper() != Looper.getMainLooper()) { + mainHandler.post { onEmulationStarted() } + return + } + hasEmulationSession = true + processHasEmulationSession = true emulationViewModel.setEmulationStarted(true) + emulationViewModel.setIsEmulationStopping(false) + emulationViewModel.setEmulationStopped(false) + NativeLibrary.playTimeManagerStart() + } fun onEmulationStopped(status: Int) { - if (status == 0 && emulationViewModel.programChanged.value == -1) { + if (Looper.myLooper() != Looper.getMainLooper()) { + mainHandler.post { onEmulationStopped(status) } + return + } + hasEmulationSession = false + processHasEmulationSession = false + if (isWaitingForRomSwapStop) { + romSwapNativeStopped = true + Log.info("[EmulationActivity] ROM swap native stop acknowledged") + launchPendingRomSwap(force = false) + } else if (status == 0 && emulationViewModel.programChanged.value == -1) { + processSessionGame = null finish() + } else if (!isWaitingForRomSwapStop) { + processSessionGame = null } emulationViewModel.setEmulationStopped(true) } + fun updateSessionGame(game: Game?) { + processSessionGame = game + } + fun onProgramChanged(programIndex: Int) { + if (Looper.myLooper() != Looper.getMainLooper()) { + mainHandler.post { onProgramChanged(programIndex) } + return + } emulationViewModel.setProgramChanged(programIndex) } @@ -510,6 +823,18 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener { companion object { const val EXTRA_SELECTED_GAME = "SelectedGame" + const val EXTRA_OVERLAY_GAMELESS_EDIT_MODE = "overlayGamelessEditMode" + private const val ROM_SWAP_STOP_TIMEOUT_MS = 5000L + @Volatile + private var processHasEmulationSession = false + @Volatile + private var processSessionGame: Game? = null + + fun stopForegroundService(activity: Activity) { + val startIntent = Intent(activity, ForegroundService::class.java) + startIntent.action = ForegroundService.ACTION_STOP + activity.startForegroundService(startIntent) + } fun launch(activity: AppCompatActivity, game: Game) { val launcher = Intent(activity, EmulationActivity::class.java) @@ -517,6 +842,12 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener { activity.startActivity(launcher) } + fun launchForOverlayEdit(context: Context): Intent { + return Intent(context, EmulationActivity::class.java).apply { + putExtra(EXTRA_OVERLAY_GAMELESS_EDIT_MODE, true) + } + } + private fun areCoordinatesOutside(view: View?, x: Float, y: Float): Boolean { if (view == null) { return true diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/AddonAdapter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/AddonAdapter.kt index ff254d9b77..cbca66e13a 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/AddonAdapter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/AddonAdapter.kt @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later @@ -7,6 +10,7 @@ import android.view.LayoutInflater import android.view.ViewGroup import org.yuzu.yuzu_emu.databinding.ListItemAddonBinding import org.yuzu.yuzu_emu.model.Patch +import org.yuzu.yuzu_emu.model.PatchType import org.yuzu.yuzu_emu.model.AddonViewModel import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder @@ -20,17 +24,36 @@ class AddonAdapter(val addonViewModel: AddonViewModel) : inner class AddonViewHolder(val binding: ListItemAddonBinding) : AbstractViewHolder(binding) { override fun bind(model: Patch) { - binding.root.setOnClickListener { - binding.addonCheckbox.isChecked = !binding.addonCheckbox.isChecked + binding.addonCard.setOnClickListener { + binding.addonSwitch.performClick() } binding.title.text = model.name binding.version.text = model.version - binding.addonCheckbox.setOnCheckedChangeListener { _, checked -> - model.enabled = checked + binding.addonSwitch.isChecked = model.enabled + + binding.addonSwitch.setOnCheckedChangeListener { _, checked -> + if (PatchType.from(model.type) == PatchType.Update && checked) { + addonViewModel.enableOnlyThisUpdate(model) + notifyDataSetChanged() + } else { + model.enabled = checked + } } - binding.addonCheckbox.isChecked = model.enabled - binding.buttonDelete.setOnClickListener { - addonViewModel.setAddonToDelete(model) + + val canDelete = model.isRemovable + binding.deleteCard.isEnabled = canDelete + binding.buttonDelete.isEnabled = canDelete + binding.deleteCard.alpha = if (canDelete) 1f else 0.38f + + if (canDelete) { + val deleteAction = { + addonViewModel.setAddonToDelete(model) + } + binding.deleteCard.setOnClickListener { deleteAction() } + binding.buttonDelete.setOnClickListener { deleteAction() } + } else { + binding.deleteCard.setOnClickListener(null) + binding.buttonDelete.setOnClickListener(null) } } } diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/AppletAdapter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/AppletAdapter.kt index 41d7f72b8f..a547334404 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/AppletAdapter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/AppletAdapter.kt @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later @@ -6,10 +9,10 @@ package org.yuzu.yuzu_emu.adapters import android.view.LayoutInflater import android.view.ViewGroup import android.widget.Toast +import androidx.core.os.bundleOf import androidx.core.content.res.ResourcesCompat import androidx.fragment.app.FragmentActivity import androidx.navigation.findNavController -import org.yuzu.yuzu_emu.HomeNavigationDirections import org.yuzu.yuzu_emu.NativeLibrary import org.yuzu.yuzu_emu.R import org.yuzu.yuzu_emu.YuzuApplication @@ -67,8 +70,13 @@ class AppletAdapter(val activity: FragmentActivity, applets: List) : title = YuzuApplication.appContext.getString(applet.titleId), path = appletPath ) - val action = HomeNavigationDirections.actionGlobalEmulationActivity(appletGame) - binding.root.findNavController().navigate(action) + binding.root.findNavController().navigate( + R.id.action_global_emulationActivity, + bundleOf( + "game" to appletGame, + "custom" to false + ) + ) } } } diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/FirmwareAvatarAdapter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/FirmwareAvatarAdapter.kt new file mode 100644 index 0000000000..68bc6a9ad4 --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/FirmwareAvatarAdapter.kt @@ -0,0 +1,55 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +package org.yuzu.yuzu_emu.adapters + +import android.graphics.Bitmap +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import org.yuzu.yuzu_emu.databinding.ItemFirmwareAvatarBinding + +class FirmwareAvatarAdapter( + private val avatars: List, + private val onAvatarSelected: (Bitmap) -> Unit +) : RecyclerView.Adapter() { + + private var selectedPosition = -1 + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): AvatarViewHolder { + val binding = ItemFirmwareAvatarBinding.inflate( + LayoutInflater.from(parent.context), + parent, + false + ) + return AvatarViewHolder(binding) + } + + override fun onBindViewHolder(holder: AvatarViewHolder, position: Int) { + holder.bind(avatars[position], position == selectedPosition) + } + + override fun getItemCount(): Int = avatars.size + + inner class AvatarViewHolder( + private val binding: ItemFirmwareAvatarBinding + ) : RecyclerView.ViewHolder(binding.root) { + + fun bind(avatar: Bitmap, isSelected: Boolean) { + binding.imageAvatar.setImageBitmap(avatar) + binding.root.isChecked = isSelected + + binding.root.setOnClickListener { + val previousSelected = selectedPosition + selectedPosition = bindingAdapterPosition + + if (previousSelected != -1) { + notifyItemChanged(previousSelected) + } + notifyItemChanged(selectedPosition) + + onAvatarSelected(avatar) + } + } + } +} diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/FolderAdapter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/FolderAdapter.kt index 5cbd15d2ac..d53bebf796 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/FolderAdapter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/FolderAdapter.kt @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later @@ -7,8 +10,10 @@ import android.net.Uri import android.view.LayoutInflater import android.view.ViewGroup import androidx.fragment.app.FragmentActivity +import org.yuzu.yuzu_emu.R import org.yuzu.yuzu_emu.databinding.CardFolderBinding import org.yuzu.yuzu_emu.fragments.GameFolderPropertiesDialogFragment +import org.yuzu.yuzu_emu.model.DirectoryType import org.yuzu.yuzu_emu.model.GameDir import org.yuzu.yuzu_emu.model.GamesViewModel import org.yuzu.yuzu_emu.utils.ViewUtils.marquee @@ -31,6 +36,12 @@ class FolderAdapter(val activity: FragmentActivity, val gamesViewModel: GamesVie path.text = Uri.parse(model.uriString).path path.marquee() + // Set type indicator, shows below folder name, to see if DLC or Games + typeIndicator.text = when (model.type) { + DirectoryType.GAME -> activity.getString(R.string.games) + DirectoryType.EXTERNAL_CONTENT -> activity.getString(R.string.external_content) + } + buttonEdit.setOnClickListener { GameFolderPropertiesDialogFragment.newInstance(model) .show( diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/FreedrenoPresetAdapter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/FreedrenoPresetAdapter.kt new file mode 100644 index 0000000000..242ae588f2 --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/FreedrenoPresetAdapter.kt @@ -0,0 +1,58 @@ +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +package org.yuzu.yuzu_emu.adapters + +import android.content.Context +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.DiffUtil +import androidx.recyclerview.widget.ListAdapter +import androidx.recyclerview.widget.RecyclerView +import org.yuzu.yuzu_emu.utils.FreedrenoPreset +import org.yuzu.yuzu_emu.databinding.ListItemFreedrenoPresetBinding + +/** + * Adapter for displaying Freedreno preset configurations in a horizontal list. + */ +class FreedrenoPresetAdapter( + private val onPresetClicked: (FreedrenoPreset) -> Unit +) : ListAdapter(DiffCallback) { + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PresetViewHolder { + val binding = ListItemFreedrenoPresetBinding.inflate( + LayoutInflater.from(parent.context), + parent, + false + ) + return PresetViewHolder(binding) + } + + override fun onBindViewHolder(holder: PresetViewHolder, position: Int) { + holder.bind(getItem(position)) + } + + inner class PresetViewHolder(private val binding: ListItemFreedrenoPresetBinding) : + RecyclerView.ViewHolder(binding.root) { + + fun bind(preset: FreedrenoPreset) { + binding.presetButton.apply { + text = preset.name + setOnClickListener { + onPresetClicked(preset) + } + contentDescription = "${preset.name}: ${preset.description}" + } + } + } + + companion object { + private val DiffCallback = object : DiffUtil.ItemCallback() { + override fun areItemsTheSame(oldItem: FreedrenoPreset, newItem: FreedrenoPreset): Boolean = + oldItem.name == newItem.name + + override fun areContentsTheSame(oldItem: FreedrenoPreset, newItem: FreedrenoPreset): Boolean = + oldItem == newItem + } + } +} diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/FreedrenoVariableAdapter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/FreedrenoVariableAdapter.kt new file mode 100644 index 0000000000..1288711a0d --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/FreedrenoVariableAdapter.kt @@ -0,0 +1,61 @@ +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +package org.yuzu.yuzu_emu.adapters + +import android.content.Context +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.DiffUtil +import androidx.recyclerview.widget.ListAdapter +import androidx.recyclerview.widget.RecyclerView +import org.yuzu.yuzu_emu.databinding.ListItemFreedrenoVariableBinding +import org.yuzu.yuzu_emu.fragments.FreedrenoVariable +import org.yuzu.yuzu_emu.utils.NativeFreedrenoConfig + +/** + * Adapter for displaying currently set Freedreno environment variables in a list. + */ +class FreedrenoVariableAdapter( + private val context: Context, + private val onItemClicked: (FreedrenoVariable, () -> Unit) -> Unit +) : ListAdapter(DiffCallback) { + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VariableViewHolder { + val binding = ListItemFreedrenoVariableBinding.inflate( + LayoutInflater.from(parent.context), + parent, + false + ) + return VariableViewHolder(binding) + } + + override fun onBindViewHolder(holder: VariableViewHolder, position: Int) { + holder.bind(getItem(position)) + } + + inner class VariableViewHolder(private val binding: ListItemFreedrenoVariableBinding) : + RecyclerView.ViewHolder(binding.root) { + + fun bind(variable: FreedrenoVariable) { + binding.variableName.text = variable.name + binding.variableValue.text = variable.value + + binding.buttonDelete.setOnClickListener { + onItemClicked(variable) { + NativeFreedrenoConfig.clearFreedrenoEnv(variable.name) + } + } + } + } + + companion object { + private val DiffCallback = object : DiffUtil.ItemCallback() { + override fun areItemsTheSame(oldItem: FreedrenoVariable, newItem: FreedrenoVariable): Boolean = + oldItem.name == newItem.name + + override fun areContentsTheSame(oldItem: FreedrenoVariable, newItem: FreedrenoVariable): Boolean = + oldItem == newItem + } + } +} diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/GameAdapter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/GameAdapter.kt index 11b81a01a6..9ea2a9ee17 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/GameAdapter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/GameAdapter.kt @@ -36,14 +36,18 @@ import androidx.core.net.toUri import androidx.core.content.edit import com.google.android.material.dialog.MaterialAlertDialogBuilder import org.yuzu.yuzu_emu.NativeLibrary +import org.yuzu.yuzu_emu.databinding.CardGameGridCompactBinding +import org.yuzu.yuzu_emu.features.settings.model.BooleanSetting +import org.yuzu.yuzu_emu.features.settings.model.Settings class GameAdapter(private val activity: AppCompatActivity) : AbstractDiffAdapter(exact = false) { companion object { const val VIEW_TYPE_GRID = 0 - const val VIEW_TYPE_LIST = 1 - const val VIEW_TYPE_CAROUSEL = 2 + const val VIEW_TYPE_GRID_COMPACT = 1 + const val VIEW_TYPE_LIST = 2 + const val VIEW_TYPE_CAROUSEL = 3 } private var viewType = 0 @@ -77,6 +81,7 @@ class GameAdapter(private val activity: AppCompatActivity) : listBinding.root.layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT listBinding.root.layoutParams.height = ViewGroup.LayoutParams.WRAP_CONTENT } + VIEW_TYPE_GRID -> { val gridBinding = holder.binding as CardGameGridBinding gridBinding.cardGameGrid.scaleX = 1f @@ -86,6 +91,17 @@ class GameAdapter(private val activity: AppCompatActivity) : gridBinding.root.layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT gridBinding.root.layoutParams.height = ViewGroup.LayoutParams.WRAP_CONTENT } + + VIEW_TYPE_GRID_COMPACT -> { + val gridCompactBinding = holder.binding as CardGameGridCompactBinding + gridCompactBinding.cardGameGridCompact.scaleX = 1f + gridCompactBinding.cardGameGridCompact.scaleY = 1f + gridCompactBinding.cardGameGridCompact.alpha = 1f + // Reset layout params to XML defaults (same as normal grid) + gridCompactBinding.root.layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT + gridCompactBinding.root.layoutParams.height = ViewGroup.LayoutParams.WRAP_CONTENT + } + VIEW_TYPE_CAROUSEL -> { val carouselBinding = holder.binding as CardGameCarouselBinding // soothens transient flickering @@ -102,16 +118,25 @@ class GameAdapter(private val activity: AppCompatActivity) : parent, false ) + VIEW_TYPE_GRID -> CardGameGridBinding.inflate( LayoutInflater.from(parent.context), parent, false ) + + VIEW_TYPE_GRID_COMPACT -> CardGameGridCompactBinding.inflate( + LayoutInflater.from(parent.context), + parent, + false + ) + VIEW_TYPE_CAROUSEL -> CardGameCarouselBinding.inflate( LayoutInflater.from(parent.context), parent, false ) + else -> throw IllegalArgumentException("Invalid view type") } return GameViewHolder(binding, viewType) @@ -127,6 +152,7 @@ class GameAdapter(private val activity: AppCompatActivity) : VIEW_TYPE_LIST -> bindListView(model) VIEW_TYPE_GRID -> bindGridView(model) VIEW_TYPE_CAROUSEL -> bindCarouselView(model) + VIEW_TYPE_GRID_COMPACT -> bindGridCompactView(model) } } @@ -165,6 +191,23 @@ class GameAdapter(private val activity: AppCompatActivity) : gridBinding.root.layoutParams.height = ViewGroup.LayoutParams.WRAP_CONTENT } + private fun bindGridCompactView(model: Game) { + val gridCompactBinding = binding as CardGameGridCompactBinding + + gridCompactBinding.imageGameScreenCompact.scaleType = ImageView.ScaleType.CENTER_CROP + GameIconUtils.loadGameIcon(model, gridCompactBinding.imageGameScreenCompact) + + gridCompactBinding.textGameTitleCompact.text = model.title.replace("[\\t\\n\\r]+".toRegex(), " ") + + gridCompactBinding.textGameTitleCompact.marquee() + gridCompactBinding.cardGameGridCompact.setOnClickListener { onClick(model) } + gridCompactBinding.cardGameGridCompact.setOnLongClickListener { onLongClick(model) } + + // Reset layout params to XML defaults (same as normal grid) + gridCompactBinding.root.layoutParams.width = ViewGroup.LayoutParams.MATCH_PARENT + gridCompactBinding.root.layoutParams.height = ViewGroup.LayoutParams.WRAP_CONTENT + } + private fun bindCarouselView(model: Game) { val carouselBinding = binding as CardGameCarouselBinding diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/GamePropertiesAdapter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/GamePropertiesAdapter.kt index 7366e2c778..5566423af6 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/GamePropertiesAdapter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/GamePropertiesAdapter.kt @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later @@ -7,6 +10,8 @@ import android.view.LayoutInflater import android.view.ViewGroup import androidx.core.content.res.ResourcesCompat import androidx.lifecycle.LifecycleOwner +import com.google.android.material.button.MaterialButton +import org.yuzu.yuzu_emu.R import org.yuzu.yuzu_emu.databinding.CardInstallableIconBinding import org.yuzu.yuzu_emu.databinding.CardSimpleOutlinedBinding import org.yuzu.yuzu_emu.model.GameProperty @@ -83,6 +88,38 @@ class GamePropertiesAdapter( } else { binding.details.setVisible(false) } + + + val hasVisibleActions = submenuProperty.secondaryActions?.any { it.isShown } == true + binding.layoutSecondaryActions.removeAllViews() + binding.dividerSecondaryActions.setVisible(false) + + if (hasVisibleActions) { + binding.layoutSecondaryActions.setVisible(true) + + val visibleActions = submenuProperty.secondaryActions!!.filter { it.isShown } + val inflater = LayoutInflater.from(binding.root.context) + visibleActions.forEachIndexed { index, secondaryAction -> + val button = inflater.inflate( + R.layout.item_secondary_action_button, + binding.layoutSecondaryActions, + false + ) as MaterialButton + button.setIconResource(secondaryAction.iconId) + button.text = "" + button.contentDescription = binding.root.context + .getString(secondaryAction.descriptionId) + button.tooltipText = binding.root.context + .getString(secondaryAction.descriptionId) + if (index == visibleActions.lastIndex) { + (button.layoutParams as ViewGroup.MarginLayoutParams).marginEnd = 0 + } + button.setOnClickListener { secondaryAction.action.invoke() } + binding.layoutSecondaryActions.addView(button) + } + } else { + binding.layoutSecondaryActions.setVisible(false) + } } } diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/ProfileAdapter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/ProfileAdapter.kt new file mode 100644 index 0000000000..994256b7d1 --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/ProfileAdapter.kt @@ -0,0 +1,112 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +package org.yuzu.yuzu_emu.adapters + +import android.graphics.BitmapFactory +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.AsyncListDiffer +import androidx.recyclerview.widget.DiffUtil +import androidx.recyclerview.widget.RecyclerView +import org.yuzu.yuzu_emu.R +import org.yuzu.yuzu_emu.databinding.ListItemProfileBinding +import org.yuzu.yuzu_emu.model.UserProfile +import java.io.File +import org.yuzu.yuzu_emu.NativeLibrary + +class ProfileAdapter( + private val onProfileClick: (UserProfile) -> Unit, + private val onEditClick: (UserProfile) -> Unit, + private val onDeleteClick: (UserProfile) -> Unit +) : RecyclerView.Adapter() { + + private var currentUserUUID: String = "" + + private val differ = AsyncListDiffer(this, object : DiffUtil.ItemCallback() { + override fun areItemsTheSame(oldItem: UserProfile, newItem: UserProfile): Boolean { + return oldItem.uuid == newItem.uuid + } + + override fun areContentsTheSame(oldItem: UserProfile, newItem: UserProfile): Boolean { + return oldItem == newItem + } + }) + + fun submitList(list: List) { + differ.submitList(list) + } + + fun setCurrentUser(uuid: String) { + currentUserUUID = uuid + notifyDataSetChanged() + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ProfileViewHolder { + val binding = ListItemProfileBinding.inflate( + LayoutInflater.from(parent.context), + parent, + false + ) + return ProfileViewHolder(binding) + } + + override fun onBindViewHolder(holder: ProfileViewHolder, position: Int) { + holder.bind(differ.currentList[position]) + } + + override fun getItemCount(): Int = differ.currentList.size + + inner class ProfileViewHolder(private val binding: ListItemProfileBinding) : + RecyclerView.ViewHolder(binding.root) { + + fun bind(profile: UserProfile) { + binding.textUsername.text = profile.username + binding.textUuid.text = formatUUID(profile.uuid) + + val imageFile = File(profile.imagePath) + if (imageFile.exists()) { + val bitmap = BitmapFactory.decodeFile(profile.imagePath) + binding.imageAvatar.setImageBitmap(bitmap) + } else { + val jpegData = NativeLibrary.getDefaultAccountBackupJpeg() + val bitmap = BitmapFactory.decodeByteArray(jpegData, 0, jpegData.size) + binding.imageAvatar.setImageBitmap(bitmap) + } + + if (profile.uuid == currentUserUUID) { + binding.checkContainer.visibility = View.VISIBLE + } else { + binding.checkContainer.visibility = View.GONE + } + + binding.root.setOnClickListener { + onProfileClick(profile) + } + + binding.buttonEdit.setOnClickListener { + onEditClick(profile) + } + + binding.buttonDelete.setOnClickListener { + onDeleteClick(profile) + } + } + + private fun formatUUID(uuid: String): String { + if (uuid.length != 32) return uuid + return buildString { + append(uuid.substring(0, 8)) + append("-") + append(uuid.substring(8, 12)) + append("-") + append(uuid.substring(12, 16)) + append("-") + append(uuid.substring(16, 20)) + append("-") + append(uuid.substring(20, 32)) + } + } + } +} diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/SetupAdapter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/SetupAdapter.kt index a5f610b317..3057eea3e4 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/SetupAdapter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/SetupAdapter.kt @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later @@ -8,16 +11,16 @@ import android.view.LayoutInflater import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity import androidx.core.content.res.ResourcesCompat -import androidx.lifecycle.ViewModelProvider import com.google.android.material.button.MaterialButton import org.yuzu.yuzu_emu.databinding.PageSetupBinding -import org.yuzu.yuzu_emu.model.HomeViewModel +import org.yuzu.yuzu_emu.model.PageState import org.yuzu.yuzu_emu.model.SetupCallback import org.yuzu.yuzu_emu.model.SetupPage -import org.yuzu.yuzu_emu.model.StepState import org.yuzu.yuzu_emu.utils.ViewUtils -import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder +import android.content.res.ColorStateList +import org.yuzu.yuzu_emu.R +import org.yuzu.yuzu_emu.model.ButtonState class SetupAdapter(val activity: AppCompatActivity, pages: List) : AbstractListAdapter(pages) { @@ -29,9 +32,40 @@ class SetupAdapter(val activity: AppCompatActivity, pages: List) : inner class SetupPageViewHolder(val binding: PageSetupBinding) : AbstractViewHolder(binding), SetupCallback { override fun bind(model: SetupPage) { - if (model.stepCompleted.invoke() == StepState.COMPLETE) { - binding.buttonAction.setVisible(visible = false, gone = false) - binding.textConfirmation.setVisible(true) + if (model.pageSteps.invoke() == PageState.COMPLETE) { + onStepCompleted(0, pageFullyCompleted = true) + } + + if (model.pageButtons != null && model.pageSteps.invoke() != PageState.COMPLETE) { + for (pageButton in model.pageButtons) { + val pageButtonView = LayoutInflater.from(activity) + .inflate( + R.layout.page_button, + binding.pageButtonContainer, + false + ) as MaterialButton + + pageButtonView.apply { + id = pageButton.titleId + icon = ResourcesCompat.getDrawable( + activity.resources, + pageButton.iconId, + activity.theme + ) + text = activity.resources.getString(pageButton.titleId) + } + + pageButtonView.setOnClickListener { + pageButton.buttonAction.invoke(this@SetupPageViewHolder) + } + + binding.pageButtonContainer.addView(pageButtonView) + + // Disable buton add if its already completed + if (pageButton.buttonState.invoke() == ButtonState.BUTTON_ACTION_COMPLETE) { + onStepCompleted(pageButton.titleId, pageFullyCompleted = false) + } + } } binding.icon.setImageDrawable( @@ -44,32 +78,26 @@ class SetupAdapter(val activity: AppCompatActivity, pages: List) : binding.textTitle.text = activity.resources.getString(model.titleId) binding.textDescription.text = Html.fromHtml(activity.resources.getString(model.descriptionId), 0) - - binding.buttonAction.apply { - text = activity.resources.getString(model.buttonTextId) - if (model.buttonIconId != 0) { - icon = ResourcesCompat.getDrawable( - activity.resources, - model.buttonIconId, - activity.theme - ) - } - iconGravity = - if (model.leftAlignedIcon) { - MaterialButton.ICON_GRAVITY_START - } else { - MaterialButton.ICON_GRAVITY_END - } - setOnClickListener { - model.buttonAction.invoke(this@SetupPageViewHolder) - } - } } - override fun onStepCompleted() { - ViewUtils.hideView(binding.buttonAction, 200) - ViewUtils.showView(binding.textConfirmation, 200) - ViewModelProvider(activity)[HomeViewModel::class.java].setShouldPageForward(true) + override fun onStepCompleted(pageButtonId: Int, pageFullyCompleted: Boolean) { + val button = binding.pageButtonContainer.findViewById(pageButtonId) + + if (pageFullyCompleted) { + ViewUtils.hideView(binding.pageButtonContainer, 200) + ViewUtils.showView(binding.textConfirmation, 200) + } + + if (button != null) { + button.isEnabled = false + button.animate() + .alpha(0.38f) + .setDuration(200) + .start() + button.setTextColor(button.context.getColor(com.google.android.material.R.color.material_on_surface_disabled)) + button.iconTint = + ColorStateList.valueOf(button.context.getColor(com.google.android.material.R.color.material_on_surface_disabled)) + } } } } diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/applets/web/WebBrowser.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/applets/web/WebBrowser.kt new file mode 100644 index 0000000000..898c88f4ac --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/applets/web/WebBrowser.kt @@ -0,0 +1,35 @@ +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +package org.yuzu.yuzu_emu.applets.web + +import android.content.Intent +import android.net.Uri +import androidx.annotation.Keep +import org.yuzu.yuzu_emu.NativeLibrary +import org.yuzu.yuzu_emu.utils.Log + +/** + Should run WebBrowser as a new intent. +*/ + +@Keep +object WebBrowser { + @JvmStatic + fun openExternal(url: String) { + val activity = NativeLibrary.sEmulationActivity.get() ?: run { + return + } + + activity.runOnUiThread { + try { + val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url)).apply { + addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + } + activity.startActivity(intent) + } catch (e: Exception) { + Log.error("WebBrowser failed to launch $url: ${e.message}") + } + } + } +} diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/dialogs/ChatDialog.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/dialogs/ChatDialog.kt index 5d6679bd28..431125ca8e 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/dialogs/ChatDialog.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/dialogs/ChatDialog.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later package org.yuzu.yuzu_emu.dialogs @@ -20,6 +20,8 @@ import org.yuzu.yuzu_emu.databinding.DialogChatBinding import org.yuzu.yuzu_emu.databinding.ItemChatMessageBinding import org.yuzu.yuzu_emu.features.settings.model.StringSetting import org.yuzu.yuzu_emu.network.NetPlayManager +import org.yuzu.yuzu_emu.utils.CompatUtils +import org.yuzu.yuzu_emu.utils.FullscreenHelper import java.text.SimpleDateFormat import java.util.* @@ -34,6 +36,13 @@ class ChatDialog(context: Context) : BottomSheetDialog(context) { private lateinit var binding: DialogChatBinding private lateinit var chatAdapter: ChatAdapter private val handler = Handler(Looper.getMainLooper()) + private val hideSystemBars: Boolean by lazy { + runCatching { + FullscreenHelper.shouldHideSystemBars(CompatUtils.findActivity(context)) + }.getOrElse { + FullscreenHelper.isFullscreenEnabled(context) + } + } // TODO(alekpop, crueter): Top drawer for message notifications, perhaps use system notifs? // TODO(alekpop, crueter): Context menu actions for chat users @@ -41,6 +50,7 @@ class ChatDialog(context: Context) : BottomSheetDialog(context) { @SuppressLint("NotifyDataSetChanged") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + setOnShowListener { applyFullscreenMode() } binding = DialogChatBinding.inflate(LayoutInflater.from(context)) setContentView(binding.root) @@ -75,6 +85,11 @@ class ChatDialog(context: Context) : BottomSheetDialog(context) { } } + override fun onStart() { + super.onStart() + applyFullscreenMode() + } + override fun dismiss() { NetPlayManager.setChatOpen(false) super.dismiss() @@ -108,6 +123,12 @@ class ChatDialog(context: Context) : BottomSheetDialog(context) { private fun scrollToBottom() { binding.chatRecyclerView.scrollToPosition(chatAdapter.itemCount - 1) } + + private fun applyFullscreenMode() { + window?.let { window -> + FullscreenHelper.applyToWindow(window, hideSystemBars) + } + } } class ChatAdapter(private val messages: List) : diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/dialogs/LobbyBrowser.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/dialogs/LobbyBrowser.kt index 57fd551e02..10ff2da6c7 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/dialogs/LobbyBrowser.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/dialogs/LobbyBrowser.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later package org.yuzu.yuzu_emu.dialogs @@ -14,6 +14,7 @@ import android.view.View import android.view.ViewGroup import android.view.inputmethod.EditorInfo import android.view.inputmethod.InputMethodManager +import android.widget.FrameLayout import androidx.core.content.getSystemService import androidx.core.widget.doOnTextChanged import androidx.recyclerview.widget.DividerItemDecoration @@ -30,15 +31,25 @@ import org.yuzu.yuzu_emu.databinding.DialogLobbyBrowserBinding import org.yuzu.yuzu_emu.databinding.ItemLobbyRoomBinding import org.yuzu.yuzu_emu.features.settings.model.StringSetting import org.yuzu.yuzu_emu.network.NetPlayManager +import org.yuzu.yuzu_emu.utils.CompatUtils +import org.yuzu.yuzu_emu.utils.FullscreenHelper import java.util.Locale class LobbyBrowser(context: Context) : BottomSheetDialog(context) { private lateinit var binding: DialogLobbyBrowserBinding private lateinit var adapter: LobbyRoomAdapter private val handler = Handler(Looper.getMainLooper()) + private val hideSystemBars: Boolean by lazy { + runCatching { + FullscreenHelper.shouldHideSystemBars(CompatUtils.findActivity(context)) + }.getOrElse { + FullscreenHelper.isFullscreenEnabled(context) + } + } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + setOnShowListener { applyFullscreenMode() } behavior.state = BottomSheetBehavior.STATE_EXPANDED behavior.skipCollapsed = @@ -58,6 +69,31 @@ class LobbyBrowser(context: Context) : BottomSheetDialog(context) { setupSearchBar() } + override fun onStart() { + super.onStart() + + window?.setLayout( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.MATCH_PARENT + ) + + val bottomSheet = + findViewById(com.google.android.material.R.id.design_bottom_sheet) + if (bottomSheet != null) { + bottomSheet.layoutParams = bottomSheet.layoutParams.apply { + width = ViewGroup.LayoutParams.MATCH_PARENT + height = ViewGroup.LayoutParams.MATCH_PARENT + } + bottomSheet.requestLayout() + } + + behavior.isFitToContents = false + behavior.expandedOffset = 0 + behavior.skipCollapsed = true + behavior.state = BottomSheetBehavior.STATE_EXPANDED + applyFullscreenMode() + } + private fun setupRecyclerView() { adapter = LobbyRoomAdapter { room -> handleRoomSelection(room) } @@ -249,4 +285,10 @@ class LobbyBrowser(context: Context) : BottomSheetDialog(context) { } private inner class ScoreItem(val score: Double, val item: NetPlayManager.RoomInfo) + + private fun applyFullscreenMode() { + window?.let { window -> + FullscreenHelper.applyToWindow(window, hideSystemBars) + } + } } diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/dialogs/NetPlayDialog.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/dialogs/NetPlayDialog.kt index 73452b4b69..45ce5fb0cf 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/dialogs/NetPlayDialog.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/dialogs/NetPlayDialog.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later package org.yuzu.yuzu_emu.dialogs @@ -36,6 +36,7 @@ import org.yuzu.yuzu_emu.features.settings.model.StringSetting import org.yuzu.yuzu_emu.network.NetDataValidators import org.yuzu.yuzu_emu.network.NetPlayManager import org.yuzu.yuzu_emu.utils.CompatUtils +import org.yuzu.yuzu_emu.utils.FullscreenHelper import org.yuzu.yuzu_emu.utils.GameHelper class NetPlayDialog(context: Context) : BottomSheetDialog(context) { @@ -43,9 +44,17 @@ class NetPlayDialog(context: Context) : BottomSheetDialog(context) { private val gameNameList: MutableList> = mutableListOf() private val gameIdList: MutableList> = mutableListOf() + private val hideSystemBars: Boolean by lazy { + runCatching { + FullscreenHelper.shouldHideSystemBars(CompatUtils.findActivity(context)) + }.getOrElse { + FullscreenHelper.isFullscreenEnabled(context) + } + } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + setOnShowListener { applyFullscreenMode() } behavior.state = BottomSheetBehavior.STATE_EXPANDED behavior.state = BottomSheetBehavior.STATE_EXPANDED @@ -118,6 +127,11 @@ class NetPlayDialog(context: Context) : BottomSheetDialog(context) { } } + override fun onStart() { + super.onStart() + applyFullscreenMode() + } + data class NetPlayItems( val option: Int, val name: String, @@ -352,6 +366,11 @@ class NetPlayDialog(context: Context) : BottomSheetDialog(context) { TextValidatorWatcher.validStates.clear() val activity = CompatUtils.findActivity(context) val dialog = BottomSheetDialog(activity) + dialog.setOnShowListener { + dialog.window?.let { window -> + FullscreenHelper.applyToWindow(window, hideSystemBars) + } + } dialog.behavior.state = BottomSheetBehavior.STATE_EXPANDED dialog.behavior.state = BottomSheetBehavior.STATE_EXPANDED @@ -582,6 +601,12 @@ class NetPlayDialog(context: Context) : BottomSheetDialog(context) { dialog.show() } + private fun applyFullscreenMode() { + window?.let { window -> + FullscreenHelper.applyToWindow(window, hideSystemBars) + } + } + private fun showModerationDialog() { val activity = CompatUtils.findActivity(context) val dialog = MaterialAlertDialogBuilder(activity) diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/dialogs/QuickSettings.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/dialogs/QuickSettings.kt new file mode 100644 index 0000000000..7ba7772bd7 --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/dialogs/QuickSettings.kt @@ -0,0 +1,240 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +package org.yuzu.yuzu_emu.dialogs + +import android.view.LayoutInflater +import android.view.MotionEvent +import android.view.View +import android.view.ViewGroup +import android.widget.RadioGroup +import android.widget.TextView +import androidx.drawerlayout.widget.DrawerLayout +import com.google.android.material.color.MaterialColors +import com.google.android.material.materialswitch.MaterialSwitch +import org.yuzu.yuzu_emu.R +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.fragments.EmulationFragment +import org.yuzu.yuzu_emu.utils.NativeConfig +import org.yuzu.yuzu_emu.features.settings.model.AbstractSetting +import org.yuzu.yuzu_emu.features.settings.model.AbstractShortSetting +import org.yuzu.yuzu_emu.features.settings.model.AbstractIntSetting + +class QuickSettings(val emulationFragment: EmulationFragment) { + private fun saveSettings() { + if (emulationFragment.shouldUseCustom) { + NativeConfig.savePerGameConfig() + } else { + NativeConfig.saveGlobalConfig() + } + } + + fun addPerGameConfigStatusIndicator(container: ViewGroup) { + val inflater = LayoutInflater.from(emulationFragment.requireContext()) + val statusView = inflater.inflate(R.layout.item_quick_settings_status, container, false) + + val statusIcon = statusView.findViewById(R.id.status_icon) + val statusText = statusView.findViewById(R.id.status_text) + + statusIcon.setImageResource(R.drawable.ic_settings_outline) + statusText.text = emulationFragment.getString(R.string.using_per_game_config) + statusText.setTextColor( + MaterialColors.getColor( + statusText, + com.google.android.material.R.attr.colorPrimary + ) + ) + + container.addView(statusView) + } + + // settings + + fun addIntSetting( + name: Int, + container: ViewGroup, + setting: IntSetting, + namesArrayId: Int, + valuesArrayId: Int, + onValueChanged: ((Int) -> Unit)? = null + ) { + val inflater = LayoutInflater.from(emulationFragment.requireContext()) + val itemView = inflater.inflate(R.layout.item_quick_settings_menu, container, false) + val headerView = itemView.findViewById(R.id.setting_header) + val titleView = itemView.findViewById(R.id.setting_title) + val valueView = itemView.findViewById(R.id.setting_value) + val expandIcon = itemView.findViewById(R.id.expand_icon) + val radioGroup = itemView.findViewById(R.id.radio_group) + + titleView.text = YuzuApplication.appContext.getString(name) + + val names = emulationFragment.resources.getStringArray(namesArrayId) + val values = emulationFragment.resources.getIntArray(valuesArrayId) + val currentIndex = values.indexOf(setting.getInt()) + + valueView.text = if (currentIndex >= 0) names[currentIndex] else "Null" + headerView.visibility = View.VISIBLE + + var isExpanded = false + names.forEachIndexed { index, name -> + val radioButton = com.google.android.material.radiobutton.MaterialRadioButton(emulationFragment.requireContext()) + radioButton.text = name + radioButton.id = View.generateViewId() + radioButton.isChecked = index == currentIndex + radioButton.setPadding(16, 8, 16, 8) + + radioButton.setOnCheckedChangeListener { _, isChecked -> + if (isChecked) { + setting.setInt(values[index]) + saveSettings() + valueView.text = name + onValueChanged?.invoke(values[index]) + } + } + radioGroup.addView(radioButton) + } + + headerView.setOnClickListener { + isExpanded = !isExpanded + if (isExpanded) { + radioGroup.visibility = View.VISIBLE + expandIcon.animate().rotation(180f).setDuration(200).start() + } else { + radioGroup.visibility = View.GONE + expandIcon.animate().rotation(0f).setDuration(200).start() + } + } + + container.addView(itemView) + } + + fun addBooleanSetting( + name: Int, + + container: ViewGroup, + setting: BooleanSetting + ) { + val inflater = LayoutInflater.from(emulationFragment.requireContext()) + val itemView = inflater.inflate(R.layout.item_quick_settings_menu, container, false) + + val switchContainer = itemView.findViewById(R.id.switch_container) + val titleView = itemView.findViewById(R.id.switch_title) + val switchView = itemView.findViewById(R.id.setting_switch) + + titleView.text = YuzuApplication.appContext.getString(name) + switchContainer.visibility = View.VISIBLE + switchView.isChecked = setting.getBoolean() + + switchView.setOnCheckedChangeListener { _, isChecked -> + setting.setBoolean(isChecked) + saveSettings() + } + + switchContainer.setOnClickListener { + switchView.toggle() + } + container.addView(itemView) + } + + fun addCustomToggle( + name: Int, + isChecked: Boolean, + isEnabled: Boolean, + + container: ViewGroup, + callback: (Boolean) -> Unit + ): MaterialSwitch? { + val inflater = LayoutInflater.from(emulationFragment.requireContext()) + val itemView = inflater.inflate(R.layout.item_quick_settings_menu, container, false) + + val switchContainer = itemView.findViewById(R.id.switch_container) + val titleView = itemView.findViewById(R.id.switch_title) + val switchView = itemView.findViewById(R.id.setting_switch) + + titleView.text = YuzuApplication.appContext.getString(name) + switchContainer.visibility = View.VISIBLE + + switchView.isChecked = isChecked + + switchView.setOnCheckedChangeListener { _, checked -> + callback(checked) + saveSettings() + } + + switchContainer.setOnClickListener { + switchView.toggle() + } + container.addView(itemView) + + return switchView + } + + fun addSliderSetting( + name: Int, + container: ViewGroup, + setting: AbstractSetting, + minValue: Int = 0, + maxValue: Int = 100, + units: String = "" + ) { + val inflater = LayoutInflater.from(emulationFragment.requireContext()) + val itemView = inflater.inflate(R.layout.item_quick_settings_menu, container, false) + + val sliderContainer = itemView.findViewById(R.id.slider_container) + val titleView = itemView.findViewById(R.id.slider_title) + val valueDisplay = itemView.findViewById(R.id.slider_value_display) + val slider = itemView.findViewById(R.id.setting_slider) + + + titleView.text = YuzuApplication.appContext.getString(name) + sliderContainer.visibility = View.VISIBLE + + slider.valueFrom = minValue.toFloat() + slider.valueTo = maxValue.toFloat() + slider.stepSize = 1f + val currentValue = when (setting) { + is AbstractShortSetting -> setting.getShort(needsGlobal = false).toInt() + is AbstractIntSetting -> setting.getInt(needsGlobal = false) + else -> 0 + } + slider.value = currentValue.toFloat().coerceIn(minValue.toFloat(), maxValue.toFloat()) + + val displayValue = "${slider.value.toInt()}$units" + valueDisplay.text = displayValue + + slider.addOnChangeListener { _, value, chanhed -> + if (chanhed) { + val intValue = value.toInt() + when (setting) { + is AbstractShortSetting -> setting.setShort(intValue.toShort()) + is AbstractIntSetting -> setting.setInt(intValue) + } + saveSettings() + valueDisplay.text = "$intValue$units" + } + } + + slider.setOnTouchListener { _, event -> + val drawer = emulationFragment.view?.findViewById(R.id.drawer_layout) + when (event.action) { + MotionEvent.ACTION_DOWN -> { + drawer?.requestDisallowInterceptTouchEvent(true) + } + MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> { + drawer?.requestDisallowInterceptTouchEvent(false) + } + } + false + } + + container.addView(itemView) + } + + fun addDivider(container: ViewGroup) { + val inflater = LayoutInflater.from(emulationFragment.requireContext()) + val dividerView = inflater.inflate(R.layout.item_quick_settings_divider, container, false) + container.addView(dividerView) + } +} \ No newline at end of file diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/fetcher/ReleaseAdapter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/fetcher/ReleaseAdapter.kt index e35ef741fd..23b980d302 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/fetcher/ReleaseAdapter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/fetcher/ReleaseAdapter.kt @@ -143,8 +143,21 @@ class ReleaseAdapter( binding.containerDownloads.removeAllViews() release.artifacts.forEach { artifact -> + val alreadyInstalled = try { + // Prefer fast check via ViewModel list; fallback to helper if needed + driverViewModel.driverData.any { + File(it.first).name.equals(artifact.name, ignoreCase = true) + } || GpuDriverHelper.isDriverZipInstalledByName(artifact.name) + } catch (_: Exception) { + false + } + val button = MaterialButton(binding.root.context).apply { - text = artifact.name + text = if (alreadyInstalled) { + context.getString(R.string.installed_label, artifact.name) + } else { + artifact.name + } setTextAppearance( com.google.android.material.R.style.TextAppearance_Material3_LabelLarge ) @@ -154,7 +167,7 @@ class ReleaseAdapter( com.google.android.material.R.color.m3_button_background_color_selector ) ) - setIconResource(R.drawable.ic_import) + setIconResource(if (alreadyInstalled) R.drawable.ic_check else R.drawable.ic_import) iconTint = ColorStateList.valueOf( MaterialColors.getColor( this, @@ -167,7 +180,22 @@ class ReleaseAdapter( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT ) + isEnabled = !alreadyInstalled setOnClickListener { + // Double-check just before starting (race-proof) + if (GpuDriverHelper.isDriverZipInstalledByName(artifact.name)) { + Toast.makeText( + context, + context.getString(R.string.driver_already_installed), + Toast.LENGTH_SHORT + ).show() + // Update UI to reflect installed state + this.isEnabled = false + this.text = context.getString(R.string.installed_label, artifact.name) + this.setIconResource(R.drawable.ic_check) + return@setOnClickListener + } + val dialogBinding = DialogProgressBinding.inflate(LayoutInflater.from(context)) dialogBinding.progressBar.isIndeterminate = true @@ -233,6 +261,10 @@ class ReleaseAdapter( driverViewModel.onDriverAdded(Pair(driverPath, driverData)) progressDialog.dismiss() + // Update button to installed state + this@apply.isEnabled = false + this@apply.text = context.getString(R.string.installed_label, artifact.name) + this@apply.setIconResource(R.drawable.ic_check) Toast.makeText( context, context.getString( diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/fetcher/SpacingItemDecoration.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/fetcher/SpacingItemDecoration.kt index f3d000a739..b3ffcc2a35 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/fetcher/SpacingItemDecoration.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/fetcher/SpacingItemDecoration.kt @@ -1,10 +1,11 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later package org.yuzu.yuzu_emu.features.fetcher import android.graphics.Rect import android.view.View +import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView class SpacingItemDecoration(private val spacing: Int) : RecyclerView.ItemDecoration() { @@ -15,8 +16,20 @@ class SpacingItemDecoration(private val spacing: Int) : RecyclerView.ItemDecorat state: RecyclerView.State ) { outRect.bottom = spacing - if (parent.getChildAdapterPosition(view) == 0) { + + val position = parent.getChildAdapterPosition(view) + if (position == RecyclerView.NO_POSITION) return + + if (position == 0) { outRect.top = spacing + return + } + + // If the item is in the first row, but NOT in first column add top spacing as well + val layoutManager = parent.layoutManager + if (layoutManager is GridLayoutManager && layoutManager.spanSizeLookup.getSpanGroupIndex(position, layoutManager.spanCount) == 0) { + outRect.top = spacing + return } } } 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 21a159676d..e47263bfb2 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 @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: 2023 yuzu Emulator Project @@ -10,49 +10,59 @@ import org.yuzu.yuzu_emu.utils.NativeConfig enum class BooleanSetting(override val key: String) : AbstractBooleanSetting { AUDIO_MUTED("audio_muted"), - CPU_DEBUG_MODE("cpu_debug_mode"), FASTMEM("cpuopt_fastmem"), FASTMEM_EXCLUSIVES("cpuopt_fastmem_exclusives"), CORE_SYNC_CORE_SPEED("sync_core_speed"), RENDERER_USE_SPEED_LIMIT("use_speed_limit"), - USE_FAST_CPU_TIME("use_fast_cpu_time"), USE_CUSTOM_CPU_TICKS("use_custom_cpu_ticks"), SKIP_CPU_INNER_INVALIDATION("skip_cpu_inner_invalidation"), + FIX_BLOOM_EFFECTS("fix_bloom_effects"), + CPUOPT_UNSAFE_HOST_MMU("cpuopt_unsafe_host_mmu"), USE_DOCKED_MODE("use_docked_mode"), USE_AUTO_STUB("use_auto_stub"), RENDERER_USE_DISK_SHADER_CACHE("use_disk_shader_cache"), RENDERER_FORCE_MAX_CLOCK("force_max_clock"), + RENDERER_ASYNCHRONOUS_GPU_EMULATION("use_asynchronous_gpu_emulation"), + RENDERER_ASYNC_PRESENTATION("async_presentation"), RENDERER_ASYNCHRONOUS_SHADERS("use_asynchronous_shaders"), - RENDERER_FAST_GPU("use_fast_gpu_time"), RENDERER_REACTIVE_FLUSHING("use_reactive_flushing"), - RENDERER_EARLY_RELEASE_FENCES("early_release_fences"), + ENABLE_BUFFER_HISTORY("enable_buffer_history"), + USE_OPTIMIZED_VERTEX_BUFFERS("use_optimized_vertex_buffers"), SYNC_MEMORY_OPERATIONS("sync_memory_operations"), BUFFER_REORDER_DISABLE("disable_buffer_reorder"), RENDERER_DEBUG("debug"), - RENDERER_PROVOKING_VERTEX("provoking_vertex"), - RENDERER_DESCRIPTOR_INDEXING("descriptor_indexing"), + RENDERER_PATCH_OLD_QCOM_DRIVERS("patch_old_qcom_drivers"), + RENDERER_VERTEX_INPUT_DYNAMIC_STATE("vertex_input_dynamic_state"), RENDERER_SAMPLE_SHADING("sample_shading"), + GPU_UNSWIZZLE_ENABLED("gpu_unswizzle_enabled"), PICTURE_IN_PICTURE("picture_in_picture"), USE_CUSTOM_RTC("custom_rtc_enabled"), BLACK_BACKGROUNDS("black_backgrounds"), + INVERT_CONFIRM_BACK_CONTROLLER_BUTTONS("invert_confirm_back_controller_buttons"), + + ENABLE_FOLDER_BUTTON("enable_folder_button"), + ENABLE_QLAUNCH_BUTTON("enable_qlaunch_button"), + + ENABLE_UPDATE_CHECKS("enable_update_checks"), JOYSTICK_REL_CENTER("joystick_rel_center"), DPAD_SLIDE("dpad_slide"), HAPTIC_FEEDBACK("haptic_feedback"), SHOW_INPUT_OVERLAY("show_input_overlay"), + OVERLAY_SNAP_TO_GRID("overlay_snap_to_grid"), TOUCHSCREEN("touchscreen"), AIRPLANE_MODE("airplane_mode"), SHOW_SOC_OVERLAY("show_soc_overlay"), + SHOW_BUILD_ID("show_build_id"), + SHOW_DRIVER_VERSION("show_driver_version"), SHOW_DEVICE_MODEL("show_device_model"), SHOW_GPU_MODEL("show_gpu_model"), SHOW_SOC_MODEL("show_soc_model"), SHOW_FW_VERSION("show_firmware_version"), SOC_OVERLAY_BACKGROUND("soc_overlay_background"), - - ENABLE_RAII("enable_raii"), - FRAME_INTERPOLATION("frame_interpolation"), -// FRAME_SKIPPING("frame_skipping"), + ENABLE_INPUT_OVERLAY_AUTO_HIDE("enable_input_overlay_auto_hide"), + HIDE_OVERLAY_ON_CONTROLLER_INPUT("hide_overlay_on_controller_input"), PERF_OVERLAY_BACKGROUND("perf_overlay_background"), SHOW_PERFORMANCE_OVERLAY("show_performance_overlay"), @@ -65,10 +75,18 @@ enum class BooleanSetting(override val key: String) : AbstractBooleanSetting { SHOW_POWER_INFO("show_power_info"), SHOW_SHADERS_BUILDING("show_shaders_building"), - DEBUG_FLUSH_BY_LINE("flush_lines"), - USE_LRU_CACHE("use_lru_cache"); + DEBUG_FLUSH_BY_LINE("flush_line"), + DONT_SHOW_DRIVER_SHADER_WARNING("dont_show_driver_shader_warning"), + ENABLE_OVERLAY("enable_overlay"), - external fun isRaiiEnabled(): Boolean + // GPU Logging + GPU_LOGGING_ENABLED("gpu_logging_enabled"), + GPU_LOG_VULKAN_CALLS("gpu_log_vulkan_calls"), + GPU_LOG_SHADER_DUMPS("gpu_log_shader_dumps"), + GPU_LOG_MEMORY_TRACKING("gpu_log_memory_tracking"), + GPU_LOG_DRIVER_DEBUG("gpu_log_driver_debug"), + + ENABLE_QUICK_SETTINGS("enable_quick_settings"); // external fun isFrameSkippingEnabled(): Boolean external fun isFrameInterpolationEnabled(): Boolean diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/ByteSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/ByteSetting.kt index 0d84c16c65..aa4a939952 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/ByteSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/ByteSetting.kt @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later @@ -7,7 +10,7 @@ import org.yuzu.yuzu_emu.utils.NativeConfig enum class ByteSetting(override val key: String) : AbstractByteSetting { AUDIO_VOLUME("volume"), - RENDERER_DYNA_STATE("dyna_state"); + GPU_LOG_LEVEL("gpu_log_level"); override fun getByte(needsGlobal: Boolean): Byte = NativeConfig.getByte(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 21aad8b5d1..99f51243db 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 @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: 2023 yuzu Emulator Project @@ -15,10 +15,8 @@ enum class IntSetting(override val key: String) : AbstractIntSetting { LANGUAGE_INDEX("language_index"), RENDERER_BACKEND("backend"), RENDERER_VRAM_USAGE_MODE("vram_usage_mode"), - RENDERER_SHADER_BACKEND("shader_backend"), RENDERER_NVDEC_EMULATION("nvdec_emulation"), RENDERER_ASTC_DECODE_METHOD("accelerate_astc"), - RENDERER_ASTC_RECOMPRESSION("astc_recompression"), RENDERER_ACCURACY("gpu_accuracy"), RENDERER_RESOLUTION("resolution_setup"), RENDERER_VSYNC("use_vsync"), @@ -27,11 +25,16 @@ enum class IntSetting(override val key: String) : AbstractIntSetting { RENDERER_SCREEN_LAYOUT("screen_layout"), RENDERER_ASPECT_RATIO("aspect_ratio"), RENDERER_OPTIMIZE_SPIRV_OUTPUT("optimize_spirv_output"), + + RENDERER_DYNA_STATE("dyna_state"), DMA_ACCURACY("dma_accuracy"), + FRAME_PACING_MODE("frame_pacing_mode"), AUDIO_OUTPUT_ENGINE("output_engine"), MAX_ANISOTROPY("max_anisotropy"), THEME("theme"), THEME_MODE("theme_mode"), + STATIC_THEME_COLOR("static_theme_color"), + APP_LANGUAGE("app_language"), OVERLAY_SCALE("control_scale"), OVERLAY_OPACITY("control_opacity"), LOCK_DRAWER("lock_drawer"), @@ -40,10 +43,13 @@ enum class IntSetting(override val key: String) : AbstractIntSetting { SOC_OVERLAY_POSITION("soc_overlay_position"), MEMORY_LAYOUT("memory_layout_mode"), FSR_SHARPENING_SLIDER("fsr_sharpening_slider"), - RENDERER_SAMPLE_SHADING_FRACTION("sample_shading_fraction"), + RENDERER_SAMPLE_SHADING("sample_shading_fraction"), FAST_CPU_TIME("fast_cpu_time"), CPU_TICKS("cpu_ticks"), FAST_GPU_TIME("fast_gpu_time"), + GPU_UNSWIZZLE_TEXTURE_SIZE("gpu_unswizzle_texture_size"), + GPU_UNSWIZZLE_STREAM_SIZE("gpu_unswizzle_stream_size"), + GPU_UNSWIZZLE_CHUNK_SIZE("gpu_unswizzle_chunk_size"), BAT_TEMPERATURE_UNIT("bat_temperature_unit"), CABINET_APPLET("cabinet_applet_mode"), CONTROLLER_APPLET("controller_applet_mode"), @@ -59,7 +65,10 @@ enum class IntSetting(override val key: String) : AbstractIntSetting { OFFLINE_WEB_APPLET("offline_web_applet_mode"), LOGIN_SHARE_APPLET("login_share_applet_mode"), WIFI_WEB_AUTH_APPLET("wifi_web_auth_applet_mode"), - MY_PAGE_APPLET("my_page_applet_mode") + MY_PAGE_APPLET("my_page_applet_mode"), + INPUT_OVERLAY_AUTO_HIDE("input_overlay_auto_hide"), + OVERLAY_GRID_SIZE("overlay_grid_size"), + GPU_LOG_RING_BUFFER_SIZE("gpu_log_ring_buffer_size") ; 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 a52f582031..b438812d58 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 @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later package org.yuzu.yuzu_emu.features.settings.model @@ -12,6 +12,7 @@ object Settings { SECTION_SYSTEM(R.string.preferences_system), SECTION_RENDERER(R.string.preferences_graphics), SECTION_PERFORMANCE_STATS(R.string.stats_overlay_options), + SECTION_INPUT_OVERLAY(R.string.input_overlay_options), SECTION_SOC_OVERLAY(R.string.soc_overlay_options), SECTION_AUDIO(R.string.preferences_audio), SECTION_INPUT(R.string.preferences_controls), @@ -23,19 +24,22 @@ object Settings { SECTION_INPUT_PLAYER_SIX, SECTION_INPUT_PLAYER_SEVEN, SECTION_INPUT_PLAYER_EIGHT, - SECTION_THEME(R.string.preferences_theme), + SECTION_APP_SETTINGS(R.string.app_settings), + SECTION_CUSTOM_PATHS(R.string.preferences_custom_paths), SECTION_DEBUG(R.string.preferences_debug), - SECTION_EDEN_VEIL(R.string.eden_veil), + SECTION_FREEDRENO(R.string.freedreno_settings_title), SECTION_APPLETS(R.string.applets_menu); } fun getPlayerString(player: Int): String = YuzuApplication.appContext.getString(R.string.preferences_player, player) + fun getDebugKnobAt(index: Int): Boolean { + return org.yuzu.yuzu_emu.NativeLibrary.getDebugKnobAt(index) + } + const val PREF_FIRST_APP_LAUNCH = "FirstApplicationLaunch" const val PREF_SHOULD_SHOW_DRIVER_WARNING = "ShouldShowDriverWarning" - const val PREF_SHOULD_SHOW_PRE_ALPHA_WARNING = "ShouldShowPreAlphaWarning" - const val PREF_SHOULD_SHOW_EDENS_VEIL_DIALOG = "ShouldShowEdensVeilDialog" const val PREF_MEMORY_WARNING_SHOWN = "MemoryWarningShown" const val SECTION_STATS_OVERLAY = "Stats Overlay" @@ -100,6 +104,8 @@ object Settings { const val PREF_THEME_MODE = "ThemeMode" const val PREF_BLACK_BACKGROUNDS = "BlackBackgrounds" const val PREF_STATIC_THEME_COLOR = "StaticThemeColor" + const val PREF_APP_FULLSCREEN = "AppFullscreen" + const val APP_FULLSCREEN_DEFAULT = false enum class EmulationOrientation(val int: Int) { Unspecified(0), diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/ShortSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/ShortSetting.kt index 16eb4ffdd5..88c3615bdb 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/ShortSetting.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/ShortSetting.kt @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later @@ -6,7 +9,11 @@ package org.yuzu.yuzu_emu.features.settings.model import org.yuzu.yuzu_emu.utils.NativeConfig enum class ShortSetting(override val key: String) : AbstractShortSetting { - RENDERER_SPEED_LIMIT("speed_limit"); + RENDERER_SPEED_LIMIT("speed_limit"), + RENDERER_TURBO_SPEED_LIMIT("turbo_speed_limit"), + RENDERER_SLOW_SPEED_LIMIT("slow_speed_limit"), + DEBUG_KNOBS("debug_knobs") + ; override fun getShort(needsGlobal: Boolean): Short = NativeConfig.getShort(key, needsGlobal) @@ -22,4 +29,4 @@ enum class ShortSetting(override val key: String) : AbstractShortSetting { override fun getValueAsString(needsGlobal: Boolean): String = getShort(needsGlobal).toString() override fun reset() = NativeConfig.setShort(key, defaultValue) -} +} \ No newline at end of file diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/GpuUnswizzleSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/GpuUnswizzleSetting.kt new file mode 100644 index 0000000000..a9a40f6903 --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/GpuUnswizzleSetting.kt @@ -0,0 +1,89 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +package org.yuzu.yuzu_emu.features.settings.model.view + +import androidx.annotation.ArrayRes +import androidx.annotation.StringRes +import org.yuzu.yuzu_emu.features.settings.model.AbstractSetting +import org.yuzu.yuzu_emu.features.settings.model.BooleanSetting +import org.yuzu.yuzu_emu.features.settings.model.IntSetting + +class GpuUnswizzleSetting( + @StringRes titleId: Int = 0, + titleString: String = "", + @StringRes descriptionId: Int = 0, + descriptionString: String = "", + @ArrayRes val textureSizeChoicesId: Int, + @ArrayRes val textureSizeValuesId: Int, + @ArrayRes val streamSizeChoicesId: Int, + @ArrayRes val streamSizeValuesId: Int, + @ArrayRes val chunkSizeChoicesId: Int, + @ArrayRes val chunkSizeValuesId: Int +) : SettingsItem( + object : AbstractSetting { + override val key: String = SettingsItem.GPU_UNSWIZZLE_COMBINED + override val defaultValue: Any = false + override val isSaveable = true + override val isRuntimeModifiable = true + override val isSwitchable = true + override val pairedSettingKey: String = "" + override var global: Boolean + get() { + return BooleanSetting.GPU_UNSWIZZLE_ENABLED.global && + IntSetting.GPU_UNSWIZZLE_TEXTURE_SIZE.global && + IntSetting.GPU_UNSWIZZLE_STREAM_SIZE.global && + IntSetting.GPU_UNSWIZZLE_CHUNK_SIZE.global + } + set(value) { + BooleanSetting.GPU_UNSWIZZLE_ENABLED.global = value + IntSetting.GPU_UNSWIZZLE_TEXTURE_SIZE.global = value + IntSetting.GPU_UNSWIZZLE_STREAM_SIZE.global = value + IntSetting.GPU_UNSWIZZLE_CHUNK_SIZE.global = value + } + override fun getValueAsString(needsGlobal: Boolean): String = "combined" + override fun reset() { + BooleanSetting.GPU_UNSWIZZLE_ENABLED.reset() + IntSetting.GPU_UNSWIZZLE_TEXTURE_SIZE.reset() + IntSetting.GPU_UNSWIZZLE_STREAM_SIZE.reset() + IntSetting.GPU_UNSWIZZLE_CHUNK_SIZE.reset() + } + }, + titleId, + titleString, + descriptionId, + descriptionString +) { + override val type = SettingsItem.TYPE_GPU_UNSWIZZLE + + // Check if GPU unswizzle is enabled via the dedicated boolean setting + fun isEnabled(needsGlobal: Boolean = false): Boolean = + BooleanSetting.GPU_UNSWIZZLE_ENABLED.getBoolean(needsGlobal) + + fun setEnabled(value: Boolean) = + BooleanSetting.GPU_UNSWIZZLE_ENABLED.setBoolean(value) + + fun enable() = setEnabled(true) + + fun disable() = setEnabled(false) + + fun getTextureSize(needsGlobal: Boolean = false): Int = + IntSetting.GPU_UNSWIZZLE_TEXTURE_SIZE.getInt(needsGlobal) + + fun setTextureSize(value: Int) = + IntSetting.GPU_UNSWIZZLE_TEXTURE_SIZE.setInt(value) + + fun getStreamSize(needsGlobal: Boolean = false): Int = + IntSetting.GPU_UNSWIZZLE_STREAM_SIZE.getInt(needsGlobal) + + fun setStreamSize(value: Int) = + IntSetting.GPU_UNSWIZZLE_STREAM_SIZE.setInt(value) + + fun getChunkSize(needsGlobal: Boolean = false): Int = + IntSetting.GPU_UNSWIZZLE_CHUNK_SIZE.getInt(needsGlobal) + + fun setChunkSize(value: Int) = + IntSetting.GPU_UNSWIZZLE_CHUNK_SIZE.setInt(value) + + fun reset() = setting.reset() +} diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/LaunchableSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/LaunchableSetting.kt new file mode 100644 index 0000000000..eb25f0989f --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/LaunchableSetting.kt @@ -0,0 +1,20 @@ +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +package org.yuzu.yuzu_emu.features.settings.model.view + +import android.content.Intent +import androidx.annotation.StringRes + +/** + * A settings item that launches an intent when clicked. + */ +class LaunchableSetting( + @StringRes titleId: Int = 0, + titleString: String = "", + @StringRes descriptionId: Int = 0, + descriptionString: String = "", + val launchIntent: (android.content.Context) -> Intent +) : SettingsItem(emptySetting, titleId, titleString, descriptionId, descriptionString) { + override val type = SettingsItem.TYPE_LAUNCHABLE +} diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/PathSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/PathSetting.kt new file mode 100644 index 0000000000..b5407f0cc0 --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/PathSetting.kt @@ -0,0 +1,40 @@ +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +package org.yuzu.yuzu_emu.features.settings.model.view + +import androidx.annotation.DrawableRes +import androidx.annotation.StringRes + +class PathSetting( + @StringRes titleId: Int = 0, + titleString: String = "", + @StringRes descriptionId: Int = 0, + descriptionString: String = "", + @DrawableRes val iconId: Int = 0, + val pathType: PathType, + val defaultPathGetter: () -> String, + val currentPathGetter: () -> String, + val pathSetter: (String) -> Unit +) : SettingsItem(emptySetting, titleId, titleString, descriptionId, descriptionString) { + + override val type = TYPE_PATH + + enum class PathType { + SAVE_DATA, + NAND, + SDMC + } + + fun getCurrentPath(): String = currentPathGetter() + + fun getDefaultPath(): String = defaultPathGetter() + + fun setPath(path: String) = pathSetter(path) + + fun isUsingDefaultPath(): Boolean = getCurrentPath() == getDefaultPath() + + companion object { + const val TYPE_PATH = 14 + } +} 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 062038aa44..8ca9533f83 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 @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: 2023 yuzu Emulator Project @@ -60,6 +60,11 @@ abstract class SettingsItem( return NativeInput.getStyleIndex(0) != NpadStyleIndex.Handheld } + // Can't edit enable_qlaunch_button if firmware is not available + if (setting.key == BooleanSetting.ENABLE_QLAUNCH_BUTTON.key) { + return NativeLibrary.isFirmwareAvailable() + } + // Can't edit settings that aren't saveable in per-game config even if they are switchable if (NativeConfig.isPerGameConfigLoaded() && !setting.isSaveable) { return false @@ -96,8 +101,13 @@ abstract class SettingsItem( const val TYPE_INT_SINGLE_CHOICE = 9 const val TYPE_INPUT_PROFILE = 10 const val TYPE_STRING_INPUT = 11 + const val TYPE_SPINBOX = 12 + const val TYPE_LAUNCHABLE = 13 + const val TYPE_PATH = 14 + const val TYPE_GPU_UNSWIZZLE = 15 const val FASTMEM_COMBINED = "fastmem_combined" + const val GPU_UNSWIZZLE_COMBINED = "gpu_unswizzle_combined" val emptySetting = object : AbstractSetting { override val key: String = "" @@ -115,13 +125,6 @@ abstract class SettingsItem( // List of all general val settingsItems = HashMap().apply { put(StringInputSetting(StringSetting.DEVICE_NAME, titleId = R.string.device_name)) - put( - SwitchSetting( - BooleanSetting.USE_LRU_CACHE, - titleId = R.string.use_lru_cache, - descriptionId = R.string.use_lru_cache_description - ) - ) put( SwitchSetting( BooleanSetting.RENDERER_USE_SPEED_LIMIT, @@ -131,7 +134,7 @@ abstract class SettingsItem( ) put( SingleChoiceSetting( - ByteSetting.RENDERER_DYNA_STATE, + IntSetting.RENDERER_DYNA_STATE, titleId = R.string.dyna_state, descriptionId = R.string.dyna_state_description, choicesId = R.array.dynaStateEntries, @@ -140,28 +143,14 @@ abstract class SettingsItem( ) put( SwitchSetting( - BooleanSetting.RENDERER_PROVOKING_VERTEX, - titleId = R.string.provoking_vertex, - descriptionId = R.string.provoking_vertex_description - ) - ) - put( - SwitchSetting( - BooleanSetting.RENDERER_DESCRIPTOR_INDEXING, - titleId = R.string.descriptor_indexing, - descriptionId = R.string.descriptor_indexing_description - ) - ) - put( - SwitchSetting( - BooleanSetting.RENDERER_SAMPLE_SHADING, - titleId = R.string.sample_shading, - descriptionId = R.string.sample_shading_description + BooleanSetting.RENDERER_VERTEX_INPUT_DYNAMIC_STATE, + titleId = R.string.vertex_input_dynamic_state, + descriptionId = R.string.vertex_input_dynamic_state_description ) ) put( SliderSetting( - IntSetting.RENDERER_SAMPLE_SHADING_FRACTION, + IntSetting.RENDERER_SAMPLE_SHADING, titleId = R.string.sample_shading_fraction, descriptionId = R.string.sample_shading_fraction_description, units = "%" @@ -177,6 +166,26 @@ abstract class SettingsItem( units = "%" ) ) + put( + SliderSetting( + ShortSetting.RENDERER_TURBO_SPEED_LIMIT, + titleId = R.string.turbo_speed_limit, + descriptionId = R.string.turbo_speed_limit_description, + min = 1, + max = 400, + units = "%" + ) + ) + put( + SliderSetting( + ShortSetting.RENDERER_SLOW_SPEED_LIMIT, + titleId = R.string.slow_speed_limit, + descriptionId = R.string.slow_speed_limit_description, + min = 1, + max = 400, + units = "%" + ) + ) put( SingleChoiceSetting( IntSetting.CPU_BACKEND, @@ -228,28 +237,6 @@ abstract class SettingsItem( override fun reset() = BooleanSetting.USE_DOCKED_MODE.reset() } - put( - SwitchSetting( - BooleanSetting.ENABLE_RAII, - titleId = R.string.enable_raii, - descriptionId = R.string.enable_raii_description - ) - ) - put( - SwitchSetting( - BooleanSetting.FRAME_INTERPOLATION, - titleId = R.string.frame_interpolation, - descriptionId = R.string.frame_interpolation_description - ) - ) - -// put( -// SwitchSetting( -// BooleanSetting.FRAME_SKIPPING, -// titleId = R.string.frame_skipping, -// descriptionId = R.string.frame_skipping_description -// ) -// ) put( SwitchSetting( @@ -297,7 +284,6 @@ abstract class SettingsItem( descriptionId = R.string.use_custom_rtc_description ) ) - put( StringInputSetting( StringSetting.WEB_TOKEN, @@ -326,19 +312,11 @@ abstract class SettingsItem( SingleChoiceSetting( IntSetting.RENDERER_ACCURACY, titleId = R.string.renderer_accuracy, + descriptionId = R.string.renderer_accuracy_description, choicesId = R.array.rendererAccuracyNames, valuesId = R.array.rendererAccuracyValues ) ) - put( - SingleChoiceSetting( - IntSetting.RENDERER_SHADER_BACKEND, - titleId = R.string.shader_backend, - descriptionId = R.string.shader_backend_description, - choicesId = R.array.rendererShaderNames, - valuesId = R.array.rendererShaderValues - ) - ) put( SingleChoiceSetting( IntSetting.RENDERER_NVDEC_EMULATION, @@ -357,15 +335,6 @@ abstract class SettingsItem( valuesId = R.array.astcDecodingMethodValues ) ) - put( - SingleChoiceSetting( - IntSetting.RENDERER_ASTC_RECOMPRESSION, - titleId = R.string.astc_recompression, - descriptionId = R.string.astc_recompression_description, - choicesId = R.array.astcRecompressionMethodNames, - valuesId = R.array.astcRecompressionMethodValues - ) - ) put( SingleChoiceSetting( IntSetting.RENDERER_VRAM_USAGE_MODE, @@ -386,6 +355,60 @@ abstract class SettingsItem( warningMessage = R.string.warning_resolution ) ) + put( + SwitchSetting( + BooleanSetting.INVERT_CONFIRM_BACK_CONTROLLER_BUTTONS, + titleId = R.string.invert_confirm_back_controller_buttons, + descriptionId = R.string.invert_confirm_back_controller_buttons_description + ) + ) + put( + SwitchSetting( + BooleanSetting.SHOW_INPUT_OVERLAY, + titleId = R.string.show_input_overlay, + descriptionId = R.string.show_input_overlay_description + ) + ) + put( + SwitchSetting( + BooleanSetting.OVERLAY_SNAP_TO_GRID, + titleId = R.string.overlay_snap_to_grid, + descriptionId = R.string.overlay_snap_to_grid_description + ) + ) + put( + SliderSetting( + IntSetting.OVERLAY_GRID_SIZE, + titleId = R.string.overlay_grid_size, + descriptionId = R.string.overlay_grid_size_description, + min = 16, + max = 128, + units = "px" + ) + ) + put( + SwitchSetting( + BooleanSetting.ENABLE_INPUT_OVERLAY_AUTO_HIDE, + titleId = R.string.enable_input_overlay_auto_hide, + ) + ) + put( + SpinBoxSetting( + IntSetting.INPUT_OVERLAY_AUTO_HIDE, + titleId = R.string.overlay_auto_hide, + descriptionId = R.string.overlay_auto_hide_description, + min = 1, + max = 999, + valueHint = R.string.seconds + ) + ) + put( + SwitchSetting( + BooleanSetting.HIDE_OVERLAY_ON_CONTROLLER_INPUT, + titleId = R.string.hide_overlay_on_controller_input, + descriptionId = R.string.hide_overlay_on_controller_input_description + ) + ) put( SwitchSetting( @@ -422,7 +445,7 @@ abstract class SettingsItem( SwitchSetting( BooleanSetting.SHOW_FRAMETIME, R.string.show_frametime, - descriptionId = R.string.show_frametime_description + descriptionId = 0 ) ) put( @@ -443,7 +466,7 @@ abstract class SettingsItem( SwitchSetting( BooleanSetting.SHOW_BAT_TEMPERATURE, R.string.show_bat_temperature, - descriptionId = R.string.show_bat_temperature_description + descriptionId = 0 ) ) put( @@ -473,52 +496,65 @@ abstract class SettingsItem( SwitchSetting( BooleanSetting.SHOW_SOC_OVERLAY, R.string.enable_soc_overlay, - descriptionId = R.string.soc_overlay_options_description + descriptionId = 0 ) ) put( SwitchSetting( BooleanSetting.SOC_OVERLAY_BACKGROUND, R.string.perf_overlay_background, - descriptionId = R.string.perf_overlay_background_description + descriptionId = 0 ) ) put( SingleChoiceSetting( IntSetting.SOC_OVERLAY_POSITION, titleId = R.string.overlay_position, - descriptionId = R.string.overlay_position_description, + descriptionId = 0, choicesId = R.array.statsPosition, valuesId = R.array.staticThemeValues ) ) - + put( + SwitchSetting( + BooleanSetting.SHOW_BUILD_ID, + titleId = R.string.show_build_id, + descriptionId = 0 + ) + ) + put( + SwitchSetting( + BooleanSetting.SHOW_DRIVER_VERSION, + titleId = R.string.show_driver_version, + descriptionId = 0 + ) + ) put( SwitchSetting( BooleanSetting.SHOW_DEVICE_MODEL, titleId = R.string.show_device_model, - descriptionId = R.string.show_device_model_description + descriptionId = 0 ) ) put( SwitchSetting( BooleanSetting.SHOW_GPU_MODEL, titleId = R.string.show_gpu_model, - descriptionId = R.string.show_gpu_model_description + descriptionId = 0 ) ) put( SwitchSetting( BooleanSetting.SHOW_SOC_MODEL, titleId = R.string.show_soc_model, - descriptionId = R.string.show_soc_model_description + descriptionId = 0 ) ) put( SwitchSetting( BooleanSetting.SHOW_FW_VERSION, titleId = R.string.show_fw_version, - descriptionId = R.string.show_fw_version_description + descriptionId = 0 ) ) @@ -593,6 +629,20 @@ abstract class SettingsItem( descriptionId = R.string.renderer_force_max_clock_description ) ) + put( + SwitchSetting( + BooleanSetting.RENDERER_ASYNCHRONOUS_GPU_EMULATION, + titleId = R.string.renderer_asynchronous_gpu_emulation, + descriptionId = R.string.renderer_asynchronous_gpu_emulation_description + ) + ) + put( + SwitchSetting( + BooleanSetting.RENDERER_ASYNC_PRESENTATION, + titleId = R.string.renderer_async_presentation, + descriptionId = R.string.renderer_async_presentation_description + ) + ) put( SingleChoiceSetting( IntSetting.RENDERER_OPTIMIZE_SPIRV_OUTPUT, @@ -618,13 +668,6 @@ abstract class SettingsItem( descriptionId = R.string.renderer_asynchronous_shaders_description ) ) - put( - SwitchSetting( - BooleanSetting.RENDERER_FAST_GPU, - titleId = R.string.use_fast_gpu_time, - descriptionId = R.string.use_fast_gpu_time_description - ) - ) put( SingleChoiceSetting( IntSetting.FAST_GPU_TIME, @@ -635,10 +678,42 @@ abstract class SettingsItem( ) ) put( - SwitchSetting( - BooleanSetting.USE_FAST_CPU_TIME, - titleId = R.string.use_fast_cpu_time, - descriptionId = R.string.use_fast_cpu_time_description + SingleChoiceSetting( + IntSetting.GPU_UNSWIZZLE_TEXTURE_SIZE, + titleId = R.string.gpu_unswizzle_texture_size, + descriptionId = R.string.gpu_unswizzle_texture_size_description, + choicesId = R.array.gpuTextureSizeSwizzleEntries, + valuesId = R.array.gpuTextureSizeSwizzleValues + ) + ) + put( + SingleChoiceSetting( + IntSetting.GPU_UNSWIZZLE_STREAM_SIZE, + titleId = R.string.gpu_unswizzle_stream_size, + descriptionId = R.string.gpu_unswizzle_stream_size_description, + choicesId = R.array.gpuSwizzleEntries, + valuesId = R.array.gpuSwizzleValues + ) + ) + put( + SingleChoiceSetting( + IntSetting.GPU_UNSWIZZLE_CHUNK_SIZE, + titleId = R.string.gpu_unswizzle_chunk_size, + descriptionId = R.string.gpu_unswizzle_chunk_size_description, + choicesId = R.array.gpuSwizzleChunkEntries, + valuesId = R.array.gpuSwizzleChunkValues + ) + ) + put( + GpuUnswizzleSetting( + titleId = R.string.gpu_unswizzle_settings, + descriptionId = R.string.gpu_unswizzle_settings_description, + textureSizeChoicesId = R.array.gpuTextureSizeSwizzleEntries, + textureSizeValuesId = R.array.gpuTextureSizeSwizzleValues, + streamSizeChoicesId = R.array.gpuSwizzleEntries, + streamSizeValuesId = R.array.gpuSwizzleValues, + chunkSizeChoicesId = R.array.gpuSwizzleChunkEntries, + chunkSizeValuesId = R.array.gpuSwizzleChunkValues ) ) put( @@ -658,10 +733,11 @@ abstract class SettingsItem( ) ) put( - SliderSetting( + SpinBoxSetting( IntSetting.CPU_TICKS, titleId = R.string.cpu_ticks, descriptionId = 0, + valueHint = R.string.cpu_ticks, min = 77, max = 65535 ) @@ -673,6 +749,20 @@ abstract class SettingsItem( descriptionId = R.string.skip_cpu_inner_invalidation_description ) ) + put( + SwitchSetting( + BooleanSetting.FIX_BLOOM_EFFECTS, + titleId = R.string.fix_bloom_effects, + descriptionId = R.string.fix_bloom_effects_description + ) + ) + put( + SwitchSetting( + BooleanSetting.CPUOPT_UNSAFE_HOST_MMU, + titleId = R.string.cpuopt_unsafe_host_mmu, + descriptionId = R.string.cpuopt_unsafe_host_mmu_description + ) + ) put( SwitchSetting( BooleanSetting.RENDERER_REACTIVE_FLUSHING, @@ -682,9 +772,16 @@ abstract class SettingsItem( ) put( SwitchSetting( - BooleanSetting.RENDERER_EARLY_RELEASE_FENCES, - titleId = R.string.renderer_early_release_fences, - descriptionId = R.string.renderer_early_release_fences_description + BooleanSetting.ENABLE_BUFFER_HISTORY, + titleId = R.string.enable_buffer_history, + descriptionId = R.string.enable_buffer_history_description + ) + ) + put( + SwitchSetting( + BooleanSetting.USE_OPTIMIZED_VERTEX_BUFFERS, + titleId = R.string.use_optimized_vertex_buffers, + descriptionId = R.string.use_optimized_vertex_buffers_description ) ) put( @@ -734,6 +831,43 @@ abstract class SettingsItem( valuesId = R.array.rendererApiValues ) ) + put( + SwitchSetting( + BooleanSetting.ENABLE_UPDATE_CHECKS, + titleId = R.string.enable_update_checks, + descriptionId = R.string.enable_update_checks_description, + ) + ) + put( + SwitchSetting( + BooleanSetting.ENABLE_QUICK_SETTINGS, + titleId = R.string.enable_quick_settings, + descriptionId = R.string.enable_quick_settings_description, + ) + ) + put( + SwitchSetting( + BooleanSetting.ENABLE_FOLDER_BUTTON, + titleId = R.string.enable_folder_button, + descriptionId = R.string.enable_folder_button_description, + ) + ) + put( + SwitchSetting( + BooleanSetting.ENABLE_QLAUNCH_BUTTON, + titleId = R.string.enable_qlaunch_button, + descriptionId = R.string.enable_qlaunch_button_description, + ) + ) + put( + SingleChoiceSetting( + IntSetting.APP_LANGUAGE, + titleId = R.string.app_language, + descriptionId = R.string.app_language_description, + choicesId = R.array.appLanguageNames, + valuesId = R.array.appLanguageValues + ) + ) put( SwitchSetting( BooleanSetting.RENDERER_DEBUG, @@ -741,6 +875,14 @@ abstract class SettingsItem( descriptionId = R.string.renderer_debug_description ) ) + // BCn texture patching debug override + put( + SwitchSetting( + BooleanSetting.RENDERER_PATCH_OLD_QCOM_DRIVERS, + titleId = R.string.patch_old_qcom_drivers, + descriptionId = R.string.patch_old_qcom_drivers_description + ) + ) put( SwitchSetting( BooleanSetting.USE_AUTO_STUB, @@ -748,11 +890,70 @@ abstract class SettingsItem( descriptionId = R.string.use_auto_stub_description ) ) + put( + SpinBoxSetting( + ShortSetting.DEBUG_KNOBS, + titleId = R.string.debug_knobs, + descriptionId = R.string.debug_knobs_description, + valueHint = R.string.debug_knobs_hint, + min = 0, + max = 65535 + ) + ) + + // GPU Logging settings put( SwitchSetting( - BooleanSetting.CPU_DEBUG_MODE, - titleId = R.string.cpu_debug_mode, - descriptionId = R.string.cpu_debug_mode_description + BooleanSetting.GPU_LOGGING_ENABLED, + titleId = R.string.gpu_logging_enabled, + descriptionId = R.string.gpu_logging_enabled_description + ) + ) + put( + SingleChoiceSetting( + ByteSetting.GPU_LOG_LEVEL, + titleId = R.string.gpu_log_level, + descriptionId = R.string.gpu_log_level_description, + choicesId = R.array.gpuLogLevelEntries, + valuesId = R.array.gpuLogLevelValues + ) + ) + put( + SwitchSetting( + BooleanSetting.GPU_LOG_VULKAN_CALLS, + titleId = R.string.gpu_log_vulkan_calls, + descriptionId = R.string.gpu_log_vulkan_calls_description + ) + ) + put( + SwitchSetting( + BooleanSetting.GPU_LOG_SHADER_DUMPS, + titleId = R.string.gpu_log_shader_dumps, + descriptionId = R.string.gpu_log_shader_dumps_description + ) + ) + put( + SwitchSetting( + BooleanSetting.GPU_LOG_MEMORY_TRACKING, + titleId = R.string.gpu_log_memory_tracking, + descriptionId = R.string.gpu_log_memory_tracking_description + ) + ) + put( + SwitchSetting( + BooleanSetting.GPU_LOG_DRIVER_DEBUG, + titleId = R.string.gpu_log_driver_debug, + descriptionId = R.string.gpu_log_driver_debug_description + ) + ) + put( + SpinBoxSetting( + IntSetting.GPU_LOG_RING_BUFFER_SIZE, + titleId = R.string.gpu_log_ring_buffer_size, + descriptionId = R.string.gpu_log_ring_buffer_size_description, + valueHint = R.string.gpu_log_ring_buffer_size_hint, + min = 64, + max = 4096 ) ) @@ -768,9 +969,9 @@ 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 val pairedSettingKey: String = "" override var global: Boolean get() { return BooleanSetting.FASTMEM.global && @@ -807,6 +1008,14 @@ abstract class SettingsItem( descriptionId = R.string.airplane_mode_description ) ) + + put( + SwitchSetting( + BooleanSetting.ENABLE_OVERLAY, + titleId = R.string.enable_overlay, + descriptionId = R.string.enable_overlay_description + ) + ) } } } diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SpinBoxSetting.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SpinBoxSetting.kt new file mode 100644 index 0000000000..0b0d01dfe0 --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SpinBoxSetting.kt @@ -0,0 +1,41 @@ +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +package org.yuzu.yuzu_emu.features.settings.model.view + +import androidx.annotation.StringRes +import org.yuzu.yuzu_emu.features.settings.model.AbstractByteSetting +import org.yuzu.yuzu_emu.features.settings.model.AbstractFloatSetting +import org.yuzu.yuzu_emu.features.settings.model.AbstractIntSetting +import org.yuzu.yuzu_emu.features.settings.model.AbstractSetting +import org.yuzu.yuzu_emu.features.settings.model.AbstractShortSetting + +class SpinBoxSetting( + setting: AbstractSetting, + @StringRes titleId: Int = 0, + titleString: String = "", + @StringRes descriptionId: Int = 0, + descriptionString: String = "", + val valueHint: Int, + val min: Int, + val max: Int +) : SettingsItem(setting, titleId, titleString, descriptionId, descriptionString) { + override val type = TYPE_SPINBOX + + fun getSelectedValue(needsGlobal: Boolean = false) = + when (setting) { + is AbstractByteSetting -> setting.getByte(needsGlobal).toInt() + is AbstractShortSetting -> setting.getShort(needsGlobal).toInt() + is AbstractIntSetting -> setting.getInt(needsGlobal) + is AbstractFloatSetting -> setting.getFloat(needsGlobal).toInt() + else -> 0 + } + + fun setSelectedValue(value: Int) = + when (setting) { + is AbstractByteSetting -> setting.setByte(value.toByte()) + is AbstractShortSetting -> setting.setShort(value.toShort()) + is AbstractFloatSetting -> setting.setFloat(value.toFloat()) + else -> (setting as AbstractIntSetting).setInt(value) + } +} \ No newline at end of file diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/GpuUnswizzleDialogFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/GpuUnswizzleDialogFragment.kt new file mode 100644 index 0000000000..e14bc7639e --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/GpuUnswizzleDialogFragment.kt @@ -0,0 +1,206 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +package org.yuzu.yuzu_emu.features.settings.ui + +import android.app.Dialog +import android.content.DialogInterface +import android.os.Bundle +import android.view.LayoutInflater +import android.widget.ArrayAdapter +import androidx.fragment.app.DialogFragment +import androidx.fragment.app.activityViewModels +import com.google.android.material.dialog.MaterialAlertDialogBuilder +import org.yuzu.yuzu_emu.R +import org.yuzu.yuzu_emu.databinding.DialogGpuUnswizzleBinding +import org.yuzu.yuzu_emu.features.settings.model.view.GpuUnswizzleSetting + +class GpuUnswizzleDialogFragment : DialogFragment() { + private var position = 0 + private val settingsViewModel: SettingsViewModel by activityViewModels() + private lateinit var binding: DialogGpuUnswizzleBinding + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + position = requireArguments().getInt(POSITION) + + if (settingsViewModel.clickedItem == null) dismiss() + } + + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { + binding = DialogGpuUnswizzleBinding.inflate(LayoutInflater.from(requireContext())) + val item = settingsViewModel.clickedItem as GpuUnswizzleSetting + + // Setup texture size dropdown + val textureSizeEntries = resources.getStringArray(item.textureSizeChoicesId) + val textureSizeValues = resources.getIntArray(item.textureSizeValuesId) + val textureSizeAdapter = ArrayAdapter( + requireContext(), + android.R.layout.simple_dropdown_item_1line, + textureSizeEntries.toMutableList() + ) + binding.dropdownTextureSize.setAdapter(textureSizeAdapter) + + // Setup stream size dropdown + val streamSizeEntries = resources.getStringArray(item.streamSizeChoicesId) + val streamSizeValues = resources.getIntArray(item.streamSizeValuesId) + val streamSizeAdapter = ArrayAdapter( + requireContext(), + android.R.layout.simple_dropdown_item_1line, + streamSizeEntries.toMutableList() + ) + binding.dropdownStreamSize.setAdapter(streamSizeAdapter) + + // Setup chunk size dropdown + val chunkSizeEntries = resources.getStringArray(item.chunkSizeChoicesId) + val chunkSizeValues = resources.getIntArray(item.chunkSizeValuesId) + val chunkSizeAdapter = ArrayAdapter( + requireContext(), + android.R.layout.simple_dropdown_item_1line, + chunkSizeEntries.toMutableList() + ) + binding.dropdownChunkSize.setAdapter(chunkSizeAdapter) + + // Load current values + val isEnabled = item.isEnabled() + binding.switchEnable.isChecked = isEnabled + + if (isEnabled) { + val textureSizeIndex = textureSizeValues.indexOf(item.getTextureSize()) + if (textureSizeIndex >= 0) { + binding.dropdownTextureSize.setText(textureSizeEntries[textureSizeIndex], false) + } + + val streamSizeIndex = streamSizeValues.indexOf(item.getStreamSize()) + if (streamSizeIndex >= 0) { + binding.dropdownStreamSize.setText(streamSizeEntries[streamSizeIndex], false) + } + + val chunkSizeIndex = chunkSizeValues.indexOf(item.getChunkSize()) + if (chunkSizeIndex >= 0) { + binding.dropdownChunkSize.setText(chunkSizeEntries[chunkSizeIndex], false) + } + } else { + // Set default/recommended values when disabling + binding.dropdownTextureSize.setText(textureSizeEntries[3], false) + binding.dropdownStreamSize.setText(streamSizeEntries[3], false) + binding.dropdownChunkSize.setText(chunkSizeEntries[3], false) + } + + // Clear adapter filters after setText to fix rotation bug + textureSizeAdapter.filter.filter(null) + streamSizeAdapter.filter.filter(null) + chunkSizeAdapter.filter.filter(null) + + // Enable/disable dropdowns based on switch state + updateDropdownsState(isEnabled) + binding.switchEnable.setOnCheckedChangeListener { _, checked -> + updateDropdownsState(checked) + } + + val dialog = MaterialAlertDialogBuilder(requireContext()) + .setTitle(item.title) + .setView(binding.root) + .create() + + // Setup button listeners + binding.btnDefault.setOnClickListener { + // Reset to defaults + item.reset() + // Refresh values with adapters reset + val textureSizeIndex = textureSizeValues.indexOf(item.getTextureSize()) + if (textureSizeIndex >= 0) { + binding.dropdownTextureSize.setText(textureSizeEntries[textureSizeIndex], false) + } + val streamSizeIndex = streamSizeValues.indexOf(item.getStreamSize()) + if (streamSizeIndex >= 0) { + binding.dropdownStreamSize.setText(streamSizeEntries[streamSizeIndex], false) + } + val chunkSizeIndex = chunkSizeValues.indexOf(item.getChunkSize()) + if (chunkSizeIndex >= 0) { + binding.dropdownChunkSize.setText(chunkSizeEntries[chunkSizeIndex], false) + } + // Clear filters + textureSizeAdapter.filter.filter(null) + streamSizeAdapter.filter.filter(null) + chunkSizeAdapter.filter.filter(null) + + settingsViewModel.setAdapterItemChanged(position) + settingsViewModel.setShouldReloadSettingsList(true) + } + + binding.btnCancel.setOnClickListener { + dialog.dismiss() + } + + binding.btnOk.setOnClickListener { + if (binding.switchEnable.isChecked) { + item.enable() + // Save the selected values + val selectedTextureIndex = textureSizeEntries.indexOf( + binding.dropdownTextureSize.text.toString() + ) + if (selectedTextureIndex >= 0) { + item.setTextureSize(textureSizeValues[selectedTextureIndex]) + } + + val selectedStreamIndex = streamSizeEntries.indexOf( + binding.dropdownStreamSize.text.toString() + ) + if (selectedStreamIndex >= 0) { + item.setStreamSize(streamSizeValues[selectedStreamIndex]) + } + + val selectedChunkIndex = chunkSizeEntries.indexOf( + binding.dropdownChunkSize.text.toString() + ) + if (selectedChunkIndex >= 0) { + item.setChunkSize(chunkSizeValues[selectedChunkIndex]) + } + } else { + // Disable GPU unswizzle + item.disable() + } + + settingsViewModel.setAdapterItemChanged(position) + settingsViewModel.setShouldReloadSettingsList(true) + dialog.dismiss() + } + + // Ensure filters are cleared after dialog is shown + binding.root.post { + textureSizeAdapter.filter.filter(null) + streamSizeAdapter.filter.filter(null) + chunkSizeAdapter.filter.filter(null) + } + + return dialog + } + + private fun updateDropdownsState(enabled: Boolean) { + binding.layoutTextureSize.isEnabled = enabled + binding.dropdownTextureSize.isEnabled = enabled + binding.layoutStreamSize.isEnabled = enabled + binding.dropdownStreamSize.isEnabled = enabled + binding.layoutChunkSize.isEnabled = enabled + binding.dropdownChunkSize.isEnabled = enabled + } + + companion object { + const val TAG = "GpuUnswizzleDialogFragment" + const val POSITION = "Position" + + fun newInstance( + settingsViewModel: SettingsViewModel, + item: GpuUnswizzleSetting, + position: Int + ): GpuUnswizzleDialogFragment { + val dialog = GpuUnswizzleDialogFragment() + val args = Bundle() + args.putInt(POSITION, position) + dialog.arguments = args + settingsViewModel.clickedItem = item + return dialog + } + } +} diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/InputDialogFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/InputDialogFragment.kt index 16a1d05044..d07a6e6aea 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/InputDialogFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/InputDialogFragment.kt @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: 2024 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later @@ -149,7 +152,9 @@ class InputDialogFragment : DialogFragment() { private fun onKeyEvent(event: KeyEvent): Boolean { if (event.source and InputDevice.SOURCE_JOYSTICK != InputDevice.SOURCE_JOYSTICK && - event.source and InputDevice.SOURCE_GAMEPAD != InputDevice.SOURCE_GAMEPAD + event.source and InputDevice.SOURCE_GAMEPAD != InputDevice.SOURCE_GAMEPAD && + event.source and InputDevice.SOURCE_KEYBOARD != InputDevice.SOURCE_KEYBOARD && + event.source and InputDevice.SOURCE_MOUSE != InputDevice.SOURCE_MOUSE ) { return false } @@ -173,7 +178,9 @@ class InputDialogFragment : DialogFragment() { private fun onMotionEvent(event: MotionEvent): Boolean { if (event.source and InputDevice.SOURCE_JOYSTICK != InputDevice.SOURCE_JOYSTICK && - event.source and InputDevice.SOURCE_GAMEPAD != InputDevice.SOURCE_GAMEPAD + event.source and InputDevice.SOURCE_GAMEPAD != InputDevice.SOURCE_GAMEPAD && + event.source and InputDevice.SOURCE_KEYBOARD != InputDevice.SOURCE_KEYBOARD && + event.source and InputDevice.SOURCE_MOUSE != InputDevice.SOURCE_MOUSE ) { return false } diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivity.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivity.kt index 455b3b5ff1..ad1ecba64c 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivity.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivity.kt @@ -1,8 +1,13 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later package org.yuzu.yuzu_emu.features.settings.ui +import android.content.Context +import org.yuzu.yuzu_emu.YuzuApplication import android.os.Bundle import android.view.View import android.view.ViewGroup.MarginLayoutParams @@ -24,6 +29,7 @@ import org.yuzu.yuzu_emu.features.input.NativeInput import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile import org.yuzu.yuzu_emu.fragments.ResetSettingsDialogFragment import org.yuzu.yuzu_emu.utils.* +import org.yuzu.yuzu_emu.utils.collect class SettingsActivity : AppCompatActivity() { private lateinit var binding: ActivitySettingsBinding @@ -32,6 +38,10 @@ class SettingsActivity : AppCompatActivity() { private val settingsViewModel: SettingsViewModel by viewModels() + override fun attachBaseContext(base: Context) { + super.attachBaseContext(YuzuApplication.applyLanguage(base)) + } + override fun onCreate(savedInstanceState: Bundle?) { ThemeHelper.setTheme(this) @@ -93,6 +103,7 @@ class SettingsActivity : AppCompatActivity() { ) setInsets() + applyFullscreenPreference() } fun navigateBack() { @@ -112,6 +123,18 @@ class SettingsActivity : AppCompatActivity() { } } + override fun onResume() { + super.onResume() + applyFullscreenPreference() + } + + override fun onWindowFocusChanged(hasFocus: Boolean) { + super.onWindowFocusChanged(hasFocus) + if (hasFocus) { + applyFullscreenPreference() + } + } + override fun onStop() { super.onStop() Log.info("[SettingsActivity] Settings activity stopping. Saving settings to INI...") @@ -125,6 +148,16 @@ class SettingsActivity : AppCompatActivity() { NativeConfig.savePerGameConfig() NativeConfig.unloadPerGameConfig() } + + if (settingsViewModel.shouldRecreateForLanguageChange.value) { + settingsViewModel.setShouldRecreateForLanguageChange(false) + val relaunchIntent = packageManager?.getLaunchIntentForPackage(packageName) + if (relaunchIntent != null) { + relaunchIntent.addFlags(android.content.Intent.FLAG_ACTIVITY_CLEAR_TASK or android.content.Intent.FLAG_ACTIVITY_NEW_TASK) + startActivity(relaunchIntent) + android.os.Process.killProcess(android.os.Process.myPid()) + } + } } } @@ -168,4 +201,8 @@ class SettingsActivity : AppCompatActivity() { windowInsets } } + + private fun applyFullscreenPreference() { + FullscreenHelper.applyToActivity(this) + } } diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsAdapter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsAdapter.kt index 500ac6e66e..d7311eded5 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsAdapter.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsAdapter.kt @@ -1,5 +1,5 @@ -// SPDX-FileCopyrightText: 2023 yuzu Emulator Project -// SPDX-License-Identifier: GPL-2.0-or-later +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later package org.yuzu.yuzu_emu.features.settings.ui @@ -29,6 +29,7 @@ import org.yuzu.yuzu_emu.databinding.ListItemSettingsHeaderBinding import org.yuzu.yuzu_emu.features.input.NativeInput import org.yuzu.yuzu_emu.features.input.model.AnalogDirection import org.yuzu.yuzu_emu.features.settings.model.AbstractIntSetting +import org.yuzu.yuzu_emu.features.settings.model.Settings import org.yuzu.yuzu_emu.features.settings.model.view.* import org.yuzu.yuzu_emu.features.settings.ui.viewholder.* import org.yuzu.yuzu_emu.utils.ParamPackage @@ -61,6 +62,10 @@ class SettingsAdapter( SliderViewHolder(ListItemSettingBinding.inflate(inflater), this) } + SettingsItem.TYPE_SPINBOX -> { + SpinBoxViewHolder(ListItemSettingBinding.inflate(inflater), this) + } + SettingsItem.TYPE_SUBMENU -> { SubmenuViewHolder(ListItemSettingBinding.inflate(inflater), this) } @@ -89,6 +94,18 @@ class SettingsAdapter( StringInputViewHolder(ListItemSettingBinding.inflate(inflater), this) } + SettingsItem.TYPE_LAUNCHABLE -> { + LaunchableViewHolder(ListItemSettingBinding.inflate(inflater), this) + } + + SettingsItem.TYPE_PATH -> { + PathViewHolder(ListItemSettingBinding.inflate(inflater), this) + } + + SettingsItem.TYPE_GPU_UNSWIZZLE -> { + GpuUnswizzleViewHolder(ListItemSettingBinding.inflate(inflater), this) + } + else -> { HeaderViewHolder(ListItemSettingsHeaderBinding.inflate(inflater), this) } @@ -191,10 +208,30 @@ class SettingsAdapter( position ).show(fragment.childFragmentManager, SettingsDialogFragment.TAG) } + fun onSpinBoxClick(item: SpinBoxSetting, position: Int) { + SettingsDialogFragment.newInstance( + settingsViewModel, + item, + SettingsItem.TYPE_SPINBOX, + position + ).show(fragment.childFragmentManager, SettingsDialogFragment.TAG) + } fun onSubmenuClick(item: SubmenuSetting) { - val action = SettingsNavigationDirections.actionGlobalSettingsFragment(item.menuKey, null) - fragment.view?.findNavController()?.navigate(action) + // Check if this is the Freedreno Settings submenu + if (item.menuKey == Settings.MenuTag.SECTION_FREEDRENO) { + fragment.view?.findNavController()?.navigate( + R.id.action_settingsFragment_to_freedrenoSettingsFragment + ) + } else { + val action = SettingsNavigationDirections.actionGlobalSettingsFragment(item.menuKey, null) + fragment.view?.findNavController()?.navigate(action) + } + } + + fun onLaunchableClick(item: LaunchableSetting) { + val intent = item.launchIntent(context) + fragment.requireActivity().startActivity(intent) } fun onInputProfileClick(item: InputProfileSetting, position: Int) { @@ -413,6 +450,14 @@ class SettingsAdapter( position ).show(fragment.childFragmentManager, SettingsDialogFragment.TAG) + // reset language if detected + if (item.setting.key == "app_language") { + // recreate page apply language change instantly + fragment.requireActivity().recreate() + + settingsViewModel.setShouldRecreateForLanguageChange(true) + } + return true } @@ -422,6 +467,26 @@ class SettingsAdapter( settingsViewModel.setShouldReloadSettingsList(true) } + fun onPathClick(item: PathSetting, position: Int) { + settingsViewModel.clickedItem = item + settingsViewModel.setPathSettingPosition(position) + settingsViewModel.setShouldShowPathPicker(true) + } + + fun onPathReset(item: PathSetting, position: Int) { + settingsViewModel.clickedItem = item + settingsViewModel.setPathSettingPosition(position) + settingsViewModel.setShouldShowPathResetDialog(true) + } + + fun onGpuUnswizzleClick(item: GpuUnswizzleSetting, position: Int) { + GpuUnswizzleDialogFragment.newInstance( + settingsViewModel, + item, + position + ).show(fragment.childFragmentManager, GpuUnswizzleDialogFragment.TAG) + } + private class DiffCallback : DiffUtil.ItemCallback() { override fun areItemsTheSame(oldItem: SettingsItem, newItem: SettingsItem): Boolean { return oldItem.setting.key == newItem.setting.key diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsDialogFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsDialogFragment.kt index dc9f561eca..4e4ac47ea2 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsDialogFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsDialogFragment.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: 2023 yuzu Emulator Project @@ -14,6 +14,10 @@ import android.text.TextWatcher import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.view.MotionEvent +import android.os.Handler +import android.os.Looper +import androidx.appcompat.app.AlertDialog import androidx.core.view.isVisible import androidx.fragment.app.DialogFragment import androidx.fragment.app.activityViewModels @@ -22,14 +26,17 @@ import com.google.android.material.slider.Slider import org.yuzu.yuzu_emu.R import org.yuzu.yuzu_emu.databinding.DialogEditTextBinding import org.yuzu.yuzu_emu.databinding.DialogSliderBinding +import org.yuzu.yuzu_emu.databinding.DialogSpinboxBinding import org.yuzu.yuzu_emu.features.input.NativeInput import org.yuzu.yuzu_emu.features.input.model.AnalogDirection +import org.yuzu.yuzu_emu.features.settings.model.IntSetting import org.yuzu.yuzu_emu.features.settings.model.view.AnalogInputSetting import org.yuzu.yuzu_emu.features.settings.model.view.ButtonInputSetting import org.yuzu.yuzu_emu.features.settings.model.view.IntSingleChoiceSetting import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem import org.yuzu.yuzu_emu.features.settings.model.view.SingleChoiceSetting import org.yuzu.yuzu_emu.features.settings.model.view.SliderSetting +import org.yuzu.yuzu_emu.features.settings.model.view.SpinBoxSetting import org.yuzu.yuzu_emu.features.settings.model.view.StringInputSetting import org.yuzu.yuzu_emu.features.settings.model.view.StringSingleChoiceSetting import org.yuzu.yuzu_emu.utils.ParamPackage @@ -46,6 +53,7 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener private lateinit var sliderBinding: DialogSliderBinding private lateinit var stringInputBinding: DialogEditTextBinding + private lateinit var spinboxBinding: DialogSpinboxBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -61,7 +69,9 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener MaterialAlertDialogBuilder(requireContext()) .setMessage(R.string.reset_setting_confirmation) .setPositiveButton(android.R.string.ok) { _: DialogInterface, _: Int -> - when (val item = settingsViewModel.clickedItem) { + val item = settingsViewModel.clickedItem ?: return@setPositiveButton + clearDialogState() + when (item) { is AnalogInputSetting -> { val stickParam = NativeInput.getStickParam( item.playerIndex, @@ -100,12 +110,17 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener } else -> { - settingsViewModel.clickedItem!!.setting.reset() + item.setting.reset() settingsViewModel.setAdapterItemChanged(position) } } } - .setNegativeButton(android.R.string.cancel, null) + .setNegativeButton(android.R.string.cancel) { _: DialogInterface, _: Int -> + clearDialogState() + } + .setOnCancelListener { + clearDialogState() + } .create() } @@ -142,6 +157,110 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener .create() } + SettingsItem.TYPE_SPINBOX -> { + spinboxBinding = DialogSpinboxBinding.inflate(layoutInflater) + val item = settingsViewModel.clickedItem as SpinBoxSetting + + val currentValue = item.getSelectedValue() + spinboxBinding.editValue.setText(currentValue.toString()) + spinboxBinding.textInputLayout.hint = getString(item.valueHint) + + val dialog = MaterialAlertDialogBuilder(requireContext()) + .setTitle(item.title) + .setView(spinboxBinding.root) + .setPositiveButton(android.R.string.ok, this) + .setNegativeButton(android.R.string.cancel, defaultCancelListener) + .create() + + val updateButtonState = { enabled: Boolean -> + dialog.setOnShowListener { dialogInterface -> + (dialogInterface as AlertDialog).getButton(DialogInterface.BUTTON_POSITIVE)?.isEnabled = enabled + } + if (dialog.isShowing) { + dialog.getButton(DialogInterface.BUTTON_POSITIVE)?.isEnabled = enabled + } + } + + val updateValidity = { value: Int -> + val isValid = value in item.min..item.max + if (isValid) { + spinboxBinding.textInputLayout.error = null + } else { + spinboxBinding.textInputLayout.error = getString( + if (value < item.min) R.string.value_too_low else R.string.value_too_high, + if (value < item.min) item.min else item.max + ) + } + updateButtonState(isValid) + } + + fun attachRepeat(button: View, delta: Int) { + val handler = Handler(Looper.getMainLooper()) + var runnable: Runnable? = null + val initialDelay = 400L + val minDelay = 40L + val accelerationFactor = 0.75f + + button.setOnTouchListener { v, event -> + when (event.action) { + MotionEvent.ACTION_DOWN -> { + val current = spinboxBinding.editValue.text.toString().toIntOrNull() ?: currentValue + val newValue = (current + delta) + spinboxBinding.editValue.setText(newValue.toString()) + updateValidity(newValue) + + var delay = initialDelay + runnable = object : Runnable { + override fun run() { + val curr = spinboxBinding.editValue.text.toString().toIntOrNull() ?: currentValue + val next = curr + delta + spinboxBinding.editValue.setText(next.toString()) + updateValidity(next) + // accelerate + delay = (delay * accelerationFactor).toLong().coerceAtLeast(minDelay) + handler.postDelayed(this, delay) + } + } + handler.postDelayed(runnable!!, initialDelay) + true + } + + MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> { + if (runnable != null) { + handler.removeCallbacks(runnable!!) + runnable = null + } + v.performClick() + true + } + + else -> false + } + } + } + + attachRepeat(spinboxBinding.buttonDecrement, -1) + attachRepeat(spinboxBinding.buttonIncrement, 1) + + spinboxBinding.editValue.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {} + override fun afterTextChanged(s: Editable?) { + val value = s.toString().toIntOrNull() + if (value != null) { + updateValidity(value) + } else { + spinboxBinding.textInputLayout.error = getString(R.string.invalid_value) + updateButtonState(false) + } + } + }) + + updateValidity(currentValue) + + dialog + } + SettingsItem.TYPE_STRING_INPUT -> { stringInputBinding = DialogEditTextBinding.inflate(layoutInflater) val item = settingsViewModel.clickedItem as StringInputSetting @@ -262,6 +381,16 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener .show() } scSetting.setSelectedValue(value) + + if (scSetting.setting.key == IntSetting.RENDERER_SCALING_FILTER.key) { + settingsViewModel.setShouldReloadSettingsList(true) + } + + if (scSetting.setting.key == "app_language") { + settingsViewModel.setShouldRecreateForLanguageChange(true) + // recreate page apply language change instantly + requireActivity().recreate() + } } is StringSingleChoiceSetting -> { @@ -281,6 +410,14 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener sliderSetting.setSelectedValue(settingsViewModel.sliderProgress.value) } + is SpinBoxSetting -> { + val spinBoxSetting = settingsViewModel.clickedItem as SpinBoxSetting + val value = spinboxBinding.editValue.text.toString().toIntOrNull() + if (value != null && value in spinBoxSetting.min..spinBoxSetting.max) { + spinBoxSetting.setSelectedValue(value) + } + } + is StringInputSetting -> { val stringInputSetting = settingsViewModel.clickedItem as StringInputSetting stringInputSetting.setSelectedValue( @@ -293,9 +430,13 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener private fun closeDialog() { settingsViewModel.setAdapterItemChanged(position) + clearDialogState() + dismiss() + } + + private fun clearDialogState() { settingsViewModel.clickedItem = null settingsViewModel.setSliderProgress(-1f) - dismiss() } private fun getValueForSingleChoiceSelection(item: SingleChoiceSetting, which: Int): Int { diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragment.kt index b2fde638db..667141725d 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragment.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: 2023 yuzu Emulator Project @@ -7,10 +7,16 @@ package org.yuzu.yuzu_emu.features.settings.ui import android.annotation.SuppressLint +import android.content.Intent +import android.os.Build import android.os.Bundle +import android.os.Environment +import android.provider.Settings as AndroidSettings import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.Toast +import androidx.activity.result.contract.ActivityResultContracts import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat import androidx.core.view.updatePadding @@ -19,14 +25,19 @@ import androidx.fragment.app.activityViewModels import androidx.navigation.findNavController import androidx.navigation.fragment.navArgs import androidx.recyclerview.widget.LinearLayoutManager +import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.transition.MaterialSharedAxis import org.yuzu.yuzu_emu.R import org.yuzu.yuzu_emu.databinding.FragmentSettingsBinding import org.yuzu.yuzu_emu.features.input.NativeInput import org.yuzu.yuzu_emu.features.settings.model.Settings +import org.yuzu.yuzu_emu.features.settings.model.view.PathSetting import org.yuzu.yuzu_emu.fragments.MessageDialogFragment +import org.yuzu.yuzu_emu.utils.PathUtil import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins import org.yuzu.yuzu_emu.utils.* +import java.io.File +import androidx.core.net.toUri class SettingsFragment : Fragment() { private lateinit var presenter: SettingsFragmentPresenter @@ -39,6 +50,20 @@ class SettingsFragment : Fragment() { private val settingsViewModel: SettingsViewModel by activityViewModels() + private val requestAllFilesPermissionLauncher = registerForActivityResult( + ActivityResultContracts.StartActivityForResult() + ) { + if (hasAllFilesPermission()) { + showPathPickerDialog() + } else { + Toast.makeText( + requireContext(), + R.string.all_files_permission_required, + Toast.LENGTH_LONG + ).show() + } + } + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enterTransition = MaterialSharedAxis(MaterialSharedAxis.X, true) @@ -73,23 +98,8 @@ class SettingsFragment : Fragment() { activity ) - binding.toolbarSettingsLayout.title = if (args.menuTag == Settings.MenuTag.SECTION_ROOT && - args.game != null - ) { - args.game!!.title - } else { - when (args.menuTag) { - Settings.MenuTag.SECTION_INPUT_PLAYER_ONE -> Settings.getPlayerString(1) - Settings.MenuTag.SECTION_INPUT_PLAYER_TWO -> Settings.getPlayerString(2) - Settings.MenuTag.SECTION_INPUT_PLAYER_THREE -> Settings.getPlayerString(3) - Settings.MenuTag.SECTION_INPUT_PLAYER_FOUR -> Settings.getPlayerString(4) - Settings.MenuTag.SECTION_INPUT_PLAYER_FIVE -> Settings.getPlayerString(5) - Settings.MenuTag.SECTION_INPUT_PLAYER_SIX -> Settings.getPlayerString(6) - Settings.MenuTag.SECTION_INPUT_PLAYER_SEVEN -> Settings.getPlayerString(7) - Settings.MenuTag.SECTION_INPUT_PLAYER_EIGHT -> Settings.getPlayerString(8) - else -> getString(args.menuTag.titleId) - } - } + val toolbarTitle = resolveToolbarTitle() + configureToolbar(toolbarTitle) binding.listSettings.apply { adapter = settingsAdapter @@ -134,6 +144,24 @@ class SettingsFragment : Fragment() { } } + settingsViewModel.shouldShowPathPicker.collect( + viewLifecycleOwner, + resetState = { settingsViewModel.setShouldShowPathPicker(false) } + ) { + if (it) { + handlePathPickerRequest() + } + } + + settingsViewModel.shouldShowPathResetDialog.collect( + viewLifecycleOwner, + resetState = { settingsViewModel.setShouldShowPathResetDialog(false) } + ) { + if (it) { + showPathResetDialog() + } + } + if (args.menuTag == Settings.MenuTag.SECTION_ROOT) { binding.toolbarSettings.inflateMenu(R.menu.menu_settings) binding.toolbarSettings.setOnMenuItemClickListener { @@ -150,11 +178,9 @@ class SettingsFragment : Fragment() { } presenter.onViewCreated() - setInsets() } - - private fun getPlayerIndex(): Int = +private fun getPlayerIndex(): Int = when (args.menuTag) { Settings.MenuTag.SECTION_INPUT_PLAYER_ONE -> 0 Settings.MenuTag.SECTION_INPUT_PLAYER_TWO -> 1 @@ -167,6 +193,27 @@ class SettingsFragment : Fragment() { else -> -1 } + private fun resolveToolbarTitle(): String { + if (args.menuTag == Settings.MenuTag.SECTION_ROOT && args.game != null) { + return args.game!!.title + } + return when (args.menuTag) { + Settings.MenuTag.SECTION_INPUT_PLAYER_ONE -> Settings.getPlayerString(1) + Settings.MenuTag.SECTION_INPUT_PLAYER_TWO -> Settings.getPlayerString(2) + Settings.MenuTag.SECTION_INPUT_PLAYER_THREE -> Settings.getPlayerString(3) + Settings.MenuTag.SECTION_INPUT_PLAYER_FOUR -> Settings.getPlayerString(4) + Settings.MenuTag.SECTION_INPUT_PLAYER_FIVE -> Settings.getPlayerString(5) + Settings.MenuTag.SECTION_INPUT_PLAYER_SIX -> Settings.getPlayerString(6) + Settings.MenuTag.SECTION_INPUT_PLAYER_SEVEN -> Settings.getPlayerString(7) + Settings.MenuTag.SECTION_INPUT_PLAYER_EIGHT -> Settings.getPlayerString(8) + else -> getString(args.menuTag.titleId) + } + } + + private fun configureToolbar(title: String) { + binding.toolbarSettings.title = title + } + private fun setInsets() { ViewCompat.setOnApplyWindowInsetsListener( binding.root @@ -184,4 +231,199 @@ class SettingsFragment : Fragment() { windowInsets } } + + private fun hasAllFilesPermission(): Boolean { + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + Environment.isExternalStorageManager() + } else { + true + } + } + + private fun requestAllFilesPermission() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + val intent = Intent(AndroidSettings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION) + intent.data = "package:${requireContext().packageName}".toUri() + requestAllFilesPermissionLauncher.launch(intent) + } + } + + private fun handlePathPickerRequest() { + if (!hasAllFilesPermission()) { + MaterialAlertDialogBuilder(requireContext()) + .setTitle(R.string.all_files_permission_required) + .setMessage(R.string.all_files_permission_required) + .setPositiveButton(R.string.grant_permission) { _, _ -> + requestAllFilesPermission() + } + .setNegativeButton(R.string.cancel, null) + .show() + return + } + showPathPickerDialog() + } + + private fun showPathPickerDialog() { + directoryPickerLauncher.launch(null) + } + + private val directoryPickerLauncher = registerForActivityResult( + ActivityResultContracts.OpenDocumentTree() + ) { uri -> + if (uri != null) { + val pathSetting = settingsViewModel.clickedItem as? PathSetting ?: return@registerForActivityResult + val rawPath = PathUtil.getPathFromUri(uri) + if (rawPath != null) { + handleSelectedPath(pathSetting, rawPath) + } else { + Toast.makeText( + requireContext(), + R.string.invalid_directory, + Toast.LENGTH_SHORT + ).show() + } + } + } + + private fun handleSelectedPath(pathSetting: PathSetting, path: String) { + if (!PathUtil.validateDirectory(path)) { + Toast.makeText( + requireContext(), + R.string.invalid_directory, + Toast.LENGTH_SHORT + ).show() + return + } + + if (pathSetting.pathType == PathSetting.PathType.SAVE_DATA) { + val oldPath = pathSetting.getCurrentPath() + if (oldPath != path) { + promptSaveMigration(pathSetting, oldPath, path) + } + } else { + setPathAndNotify(pathSetting, path) + } + } + + private fun promptSaveMigration(pathSetting: PathSetting, fromPath: String, toPath: String) { + val sourceSavePath = "$fromPath/user/save" + val destSavePath = "$toPath/user/save" + val sourceSaveDir = File(sourceSavePath) + val destSaveDir = File(destSavePath) + + val sourceHasSaves = PathUtil.hasContent(sourceSavePath) + val destHasSaves = PathUtil.hasContent(destSavePath) + + if (!sourceHasSaves) { + setPathAndNotify(pathSetting, toPath) + return + } + + if (destHasSaves) { + MaterialAlertDialogBuilder(requireContext()) + .setTitle(R.string.migrate_save_data) + .setMessage(R.string.destination_has_saves) + .setPositiveButton(R.string.confirm) { _, _ -> + migrateSaveData(pathSetting, sourceSaveDir, destSaveDir, toPath) + } + .setNegativeButton(R.string.skip_migration) { _, _ -> + setPathAndNotify(pathSetting, toPath) + } + .setNeutralButton(R.string.cancel, null) + .show() + } else { + MaterialAlertDialogBuilder(requireContext()) + .setTitle(R.string.migrate_save_data) + .setMessage(R.string.migrate_save_data_question) + .setPositiveButton(R.string.confirm) { _, _ -> + migrateSaveData(pathSetting, sourceSaveDir, destSaveDir, toPath) + } + .setNegativeButton(R.string.skip_migration) { _, _ -> + setPathAndNotify(pathSetting, toPath) + } + .setNeutralButton(R.string.cancel, null) + .show() + } + } + + private fun migrateSaveData( + pathSetting: PathSetting, + sourceDir: File, + destDir: File, + newPath: String + ) { + Thread { + val success = PathUtil.copyDirectory(sourceDir, destDir, overwrite = true) + + requireActivity().runOnUiThread { + if (success) { + setPathAndNotify(pathSetting, newPath) + Toast.makeText( + requireContext(), + R.string.save_migration_complete, + Toast.LENGTH_SHORT + ).show() + } else { + Toast.makeText( + requireContext(), + R.string.save_migration_failed, + Toast.LENGTH_SHORT + ).show() + } + } + }.start() + } + + private fun setPathAndNotify(pathSetting: PathSetting, path: String) { + pathSetting.setPath(path) + NativeConfig.saveGlobalConfig() + + NativeConfig.reloadGlobalConfig() + + val messageResId = if (pathSetting.pathType == PathSetting.PathType.SAVE_DATA) { + R.string.save_directory_set + } else { + R.string.path_set + } + + Toast.makeText( + requireContext(), + messageResId, + Toast.LENGTH_SHORT + ).show() + + val position = settingsViewModel.pathSettingPosition.value + if (position >= 0) { + settingsAdapter?.notifyItemChanged(position) + } + } + + private fun showPathResetDialog() { + val pathSetting = settingsViewModel.clickedItem as? PathSetting ?: return + + if (pathSetting.isUsingDefaultPath()) { + return + } + + val currentPath = pathSetting.getCurrentPath() + val defaultPath = pathSetting.getDefaultPath() + + MaterialAlertDialogBuilder(requireContext()) + .setTitle(R.string.reset_to_nand) + .setMessage(R.string.migrate_save_data_question) + .setPositiveButton(R.string.confirm) { _, _ -> + val sourceSaveDir = File(currentPath, "user/save") + val destSaveDir = File(defaultPath, "user/save") + + if (sourceSaveDir.exists() && sourceSaveDir.listFiles()?.isNotEmpty() == true) { + migrateSaveData(pathSetting, sourceSaveDir, destSaveDir, defaultPath) + } else { + setPathAndNotify(pathSetting, defaultPath) + } + } + .setNegativeButton(R.string.cancel) { _, _ -> + // just dismiss + } + .show() + } } 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 672bcd492c..9a218dc2a2 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 @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later package org.yuzu.yuzu_emu.features.settings.ui @@ -6,10 +6,10 @@ package org.yuzu.yuzu_emu.features.settings.ui import android.annotation.SuppressLint 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 +import org.yuzu.yuzu_emu.activities.EmulationActivity import org.yuzu.yuzu_emu.features.input.NativeInput import org.yuzu.yuzu_emu.features.input.model.AnalogDirection import org.yuzu.yuzu_emu.features.input.model.NativeAnalog @@ -28,6 +28,8 @@ import org.yuzu.yuzu_emu.features.settings.model.StringSetting import org.yuzu.yuzu_emu.features.settings.model.view.* import org.yuzu.yuzu_emu.utils.InputHandler import org.yuzu.yuzu_emu.utils.NativeConfig +import org.yuzu.yuzu_emu.utils.DirectoryInitialization +import org.yuzu.yuzu_emu.utils.FullscreenHelper import androidx.core.content.edit import androidx.fragment.app.FragmentActivity import org.yuzu.yuzu_emu.fragments.MessageDialogFragment @@ -56,19 +58,38 @@ class SettingsFragmentPresenter( val pairedSettingKey = item.setting.pairedSettingKey if (pairedSettingKey.isNotEmpty()) { + val needsGlobal = getNeedsGlobalForKey(pairedSettingKey) val pairedSettingValue = NativeConfig.getBoolean( pairedSettingKey, - if (NativeLibrary.isRunning() && !NativeConfig.isPerGameConfigLoaded()) { - !NativeConfig.usingGlobal(pairedSettingKey) - } else { - NativeConfig.usingGlobal(pairedSettingKey) - } + needsGlobal ) if (!pairedSettingValue) return } add(item) } + private fun getNeedsGlobalForKey(key: String): Boolean { + return if (NativeLibrary.isRunning() && !NativeConfig.isPerGameConfigLoaded()) { + !NativeConfig.usingGlobal(key) + } else { + NativeConfig.usingGlobal(key) + } + } + + private fun isFsrScalingFilterSelected(): Boolean { + val fsrFilterValue = resolveFsrScalingFilterValue() ?: return false + val needsGlobal = getNeedsGlobalForKey(IntSetting.RENDERER_SCALING_FILTER.key) + val selectedFilter = IntSetting.RENDERER_SCALING_FILTER.getInt(needsGlobal) + return selectedFilter == fsrFilterValue + } + + private fun resolveFsrScalingFilterValue(): Int? { + val names = context.resources.getStringArray(R.array.rendererScalingFilterNames) + val values = context.resources.getIntArray(R.array.rendererScalingFilterValues) + val fsrIndex = names.indexOf(context.getString(R.string.scaling_filter_fsr)) + return if (fsrIndex in values.indices) values[fsrIndex] else null + } + // Allows you to show/hide abstract settings based on the paired setting key private fun ArrayList.addAbstract(item: SettingsItem) { val pairedSettingKey = item.setting.pairedSettingKey @@ -82,9 +103,6 @@ class SettingsFragmentPresenter( } fun onViewCreated() { - if (menuTag == MenuTag.SECTION_EDEN_VEIL) { - showEdenVeilWarningDialog() - } loadSettingsList() } @@ -97,6 +115,7 @@ class SettingsFragmentPresenter( MenuTag.SECTION_RENDERER -> addGraphicsSettings(sl) MenuTag.SECTION_PERFORMANCE_STATS -> addPerformanceOverlaySettings(sl) MenuTag.SECTION_SOC_OVERLAY -> addSocOverlaySettings(sl) + MenuTag.SECTION_INPUT_OVERLAY -> addInputOverlaySettings(sl) MenuTag.SECTION_AUDIO -> addAudioSettings(sl) MenuTag.SECTION_INPUT -> addInputSettings(sl) MenuTag.SECTION_INPUT_PLAYER_ONE -> addInputPlayer(sl, 0) @@ -107,10 +126,11 @@ class SettingsFragmentPresenter( MenuTag.SECTION_INPUT_PLAYER_SIX -> addInputPlayer(sl, 5) MenuTag.SECTION_INPUT_PLAYER_SEVEN -> addInputPlayer(sl, 6) MenuTag.SECTION_INPUT_PLAYER_EIGHT -> addInputPlayer(sl, 7) - MenuTag.SECTION_THEME -> addThemeSettings(sl) + MenuTag.SECTION_APP_SETTINGS -> addThemeSettings(sl) MenuTag.SECTION_DEBUG -> addDebugSettings(sl) - MenuTag.SECTION_EDEN_VEIL -> addEdenVeilSettings(sl) + MenuTag.SECTION_FREEDRENO -> addFreedrenoSettings(sl) MenuTag.SECTION_APPLETS -> addAppletSettings(sl) + MenuTag.SECTION_CUSTOM_PATHS -> addCustomPathsSettings(sl) } settingsList = sl adapter.submitList(settingsList) { @@ -156,6 +176,14 @@ class SettingsFragmentPresenter( menuKey = MenuTag.SECTION_SOC_OVERLAY ) ) + add( + SubmenuSetting( + titleId = R.string.input_overlay_options, + iconId = R.drawable.ic_controller, + descriptionId = R.string.input_overlay_options_description, + menuKey = MenuTag.SECTION_INPUT_OVERLAY + ) + ) } add( SubmenuSetting( @@ -173,14 +201,6 @@ class SettingsFragmentPresenter( menuKey = MenuTag.SECTION_DEBUG ) ) - add( - SubmenuSetting( - titleId = R.string.eden_veil, - descriptionId = R.string.eden_veil_description, - iconId = R.drawable.ic_eden_veil, - menuKey = MenuTag.SECTION_EDEN_VEIL - ) - ) add( SubmenuSetting( titleId = R.string.applets_menu, @@ -189,6 +209,16 @@ class SettingsFragmentPresenter( menuKey = MenuTag.SECTION_APPLETS ) ) + if (!NativeConfig.isPerGameConfigLoaded()) { + add( + SubmenuSetting( + titleId = R.string.preferences_custom_paths, + descriptionId = R.string.preferences_custom_paths_description, + iconId = R.drawable.ic_folder_open, + menuKey = MenuTag.SECTION_CUSTOM_PATHS + ) + ) + } add( RunnableSetting( titleId = R.string.reset_to_default, @@ -205,36 +235,74 @@ class SettingsFragmentPresenter( add(StringSetting.DEVICE_NAME.key) add(BooleanSetting.RENDERER_USE_SPEED_LIMIT.key) add(ShortSetting.RENDERER_SPEED_LIMIT.key) + add(ShortSetting.RENDERER_TURBO_SPEED_LIMIT.key) + add(ShortSetting.RENDERER_SLOW_SPEED_LIMIT.key) add(BooleanSetting.USE_DOCKED_MODE.key) add(IntSetting.REGION_INDEX.key) add(IntSetting.LANGUAGE_INDEX.key) add(BooleanSetting.USE_CUSTOM_RTC.key) add(LongSetting.CUSTOM_RTC.key) - add(HeaderSetting(R.string.network)) - add(StringSetting.WEB_TOKEN.key) - add(StringSetting.WEB_USERNAME.key) + add(HeaderSetting(R.string.cpu)) + add(IntSetting.FAST_CPU_TIME.key) + add(BooleanSetting.CORE_SYNC_CORE_SPEED.key) + + add(IntSetting.MEMORY_LAYOUT.key) + add(BooleanSetting.USE_CUSTOM_CPU_TICKS.key) + add(IntSetting.CPU_TICKS.key) + + if (!NativeConfig.isPerGameConfigLoaded()) { + add(HeaderSetting(R.string.network)) + add(StringSetting.WEB_TOKEN.key) + add(StringSetting.WEB_USERNAME.key) + } } } + // TODO(crueter): sub-submenus? private fun addGraphicsSettings(sl: ArrayList) { sl.apply { - add(HeaderSetting(R.string.backend)) + // add(IntSetting.RENDERER_NVDEC_EMULATION.key) + + add(IntSetting.RENDERER_RESOLUTION.key) + add(IntSetting.RENDERER_VSYNC.key) + add(IntSetting.RENDERER_SCALING_FILTER.key) + if (isFsrScalingFilterSelected()) { + add(IntSetting.FSR_SHARPENING_SLIDER.key) + } + add(IntSetting.RENDERER_ANTI_ALIASING.key) + add(IntSetting.RENDERER_OPTIMIZE_SPIRV_OUTPUT.key) + + add(HeaderSetting(R.string.advanced)) add(IntSetting.RENDERER_ACCURACY.key) - add(IntSetting.RENDERER_RESOLUTION.key) + add(IntSetting.DMA_ACCURACY.key) + add(IntSetting.MAX_ANISOTROPY.key) + add(IntSetting.RENDERER_VRAM_USAGE_MODE.key) + add(IntSetting.RENDERER_ASTC_DECODE_METHOD.key) + + add(BooleanSetting.SYNC_MEMORY_OPERATIONS.key) add(BooleanSetting.RENDERER_USE_DISK_SHADER_CACHE.key) add(BooleanSetting.RENDERER_FORCE_MAX_CLOCK.key) - add(BooleanSetting.RENDERER_ASYNCHRONOUS_SHADERS.key) + add(BooleanSetting.RENDERER_ASYNCHRONOUS_GPU_EMULATION.key) + add(BooleanSetting.RENDERER_ASYNC_PRESENTATION.key) add(BooleanSetting.RENDERER_REACTIVE_FLUSHING.key) + add(BooleanSetting.ENABLE_BUFFER_HISTORY.key) + add(BooleanSetting.USE_OPTIMIZED_VERTEX_BUFFERS.key) - add(HeaderSetting(R.string.processing)) + add(HeaderSetting(R.string.hacks)) - add(IntSetting.RENDERER_VSYNC.key) - add(IntSetting.RENDERER_ANTI_ALIASING.key) - add(IntSetting.MAX_ANISOTROPY.key) - add(IntSetting.RENDERER_SCALING_FILTER.key) - add(IntSetting.FSR_SHARPENING_SLIDER.key) + add(IntSetting.FAST_GPU_TIME.key) + add(BooleanSetting.SKIP_CPU_INNER_INVALIDATION.key) + add(BooleanSetting.FIX_BLOOM_EFFECTS.key) + add(BooleanSetting.RENDERER_ASYNCHRONOUS_SHADERS.key) + add(SettingsItem.GPU_UNSWIZZLE_COMBINED) + + add(HeaderSetting(R.string.extensions)) + + add(IntSetting.RENDERER_DYNA_STATE.key) + add(BooleanSetting.RENDERER_VERTEX_INPUT_DYNAMIC_STATE.key) + add(IntSetting.RENDERER_SAMPLE_SHADING.key) add(HeaderSetting(R.string.display)) @@ -264,6 +332,27 @@ class SettingsFragmentPresenter( } } + private fun addInputOverlaySettings(sl: ArrayList) { + sl.apply { + add(BooleanSetting.SHOW_INPUT_OVERLAY.key) + add(BooleanSetting.OVERLAY_SNAP_TO_GRID.key) + add(IntSetting.OVERLAY_GRID_SIZE.key) + add( + LaunchableSetting( + titleId = R.string.edit_overlay_layout, + descriptionId = R.string.edit_overlay_layout_description, + launchIntent = { context -> + EmulationActivity.launchForOverlayEdit(context) + } + ) + ) + add(HeaderSetting(R.string.input_overlay_behavior)) + add(BooleanSetting.ENABLE_INPUT_OVERLAY_AUTO_HIDE.key) + add(IntSetting.INPUT_OVERLAY_AUTO_HIDE.key) + add(BooleanSetting.HIDE_OVERLAY_ON_CONTROLLER_INPUT.key) + } + } + private fun addSocOverlaySettings(sl: ArrayList) { sl.apply { add(HeaderSetting(R.string.stats_overlay_customization)) @@ -272,6 +361,8 @@ class SettingsFragmentPresenter( add(IntSetting.SOC_OVERLAY_POSITION.key) add(HeaderSetting(R.string.stats_overlay_items)) + add(BooleanSetting.SHOW_BUILD_ID.key) + add(BooleanSetting.SHOW_DRIVER_VERSION.key) add(BooleanSetting.SHOW_DEVICE_MODEL.key) add(BooleanSetting.SHOW_GPU_MODEL.key) @@ -436,47 +527,16 @@ class SettingsFragmentPresenter( } } - private fun addEdenVeilSettings(sl: ArrayList) { - sl.apply { - add(HeaderSetting(R.string.veil_extensions)) - add(ByteSetting.RENDERER_DYNA_STATE.key) - add(BooleanSetting.RENDERER_PROVOKING_VERTEX.key) - add(BooleanSetting.RENDERER_DESCRIPTOR_INDEXING.key) - add(BooleanSetting.RENDERER_SAMPLE_SHADING.key) - add(IntSetting.RENDERER_SAMPLE_SHADING_FRACTION.key) - - add(HeaderSetting(R.string.veil_renderer)) - add(BooleanSetting.ENABLE_RAII.key) - add(BooleanSetting.RENDERER_EARLY_RELEASE_FENCES.key) - add(IntSetting.DMA_ACCURACY.key) - add(BooleanSetting.BUFFER_REORDER_DISABLE.key) - add(BooleanSetting.FRAME_INTERPOLATION.key) - add(BooleanSetting.RENDERER_FAST_GPU.key) - add(IntSetting.FAST_GPU_TIME.key) - add(IntSetting.RENDERER_SHADER_BACKEND.key) - add(IntSetting.RENDERER_NVDEC_EMULATION.key) - add(IntSetting.RENDERER_ASTC_DECODE_METHOD.key) - add(IntSetting.RENDERER_ASTC_RECOMPRESSION.key) - add(IntSetting.RENDERER_VRAM_USAGE_MODE.key) - add(IntSetting.RENDERER_OPTIMIZE_SPIRV_OUTPUT.key) - - add(HeaderSetting(R.string.veil_misc)) - add(BooleanSetting.USE_FAST_CPU_TIME.key) - add(IntSetting.FAST_CPU_TIME.key) - add(BooleanSetting.USE_CUSTOM_CPU_TICKS.key) - add(IntSetting.CPU_TICKS.key) - add(BooleanSetting.SKIP_CPU_INNER_INVALIDATION.key) - add(BooleanSetting.USE_LRU_CACHE.key) - add(BooleanSetting.CORE_SYNC_CORE_SPEED.key) - add(BooleanSetting.SYNC_MEMORY_OPERATIONS.key) - add(IntSetting.MEMORY_LAYOUT.key) - } + private fun addFreedrenoSettings(sl: ArrayList) { + // No additional settings needed here - the SubmenuSetting handles navigation + // This method is kept for consistency with other menu sections } private fun addAppletSettings(sl: ArrayList) { sl.apply { add(IntSetting.SWKBD_APPLET.key) add(BooleanSetting.AIRPLANE_MODE.key) + add(BooleanSetting.ENABLE_OVERLAY.key) } } private fun addInputPlayer(sl: ArrayList, playerIndex: Int) { @@ -1014,29 +1074,24 @@ class SettingsFragmentPresenter( IntSetting.THEME.getValueAsString() override val defaultValue: Int = IntSetting.THEME.defaultValue - override fun reset() = IntSetting.THEME.setInt(defaultValue) + override fun reset() { + IntSetting.THEME.setInt(defaultValue) + settingsViewModel.setShouldRecreate(true) + } } - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { - add( - SingleChoiceSetting( - theme, - titleId = R.string.change_app_theme, - choicesId = R.array.themeEntriesA12, - valuesId = R.array.themeValuesA12 - ) - ) - } else { - add( - SingleChoiceSetting( - theme, - titleId = R.string.change_app_theme, - choicesId = R.array.themeEntries, - valuesId = R.array.themeValues - ) - ) + add(HeaderSetting(R.string.app_settings)) + add(IntSetting.APP_LANGUAGE.key) + + if (NativeLibrary.isUpdateCheckerEnabled()) { + add(BooleanSetting.ENABLE_UPDATE_CHECKS.key) } + add(BooleanSetting.ENABLE_QUICK_SETTINGS.key) + add(BooleanSetting.INVERT_CONFIRM_BACK_CONTROLLER_BUTTONS.key) + + add(HeaderSetting(R.string.theme_and_color)) + val themeMode: AbstractIntSetting = object : AbstractIntSetting { override fun getInt(needsGlobal: Boolean): Int = IntSetting.THEME_MODE.getInt() override fun setInt(value: Int) { @@ -1058,28 +1113,6 @@ class SettingsFragmentPresenter( } } - val staticThemeColor: AbstractIntSetting = object : AbstractIntSetting { - val preferences = PreferenceManager.getDefaultSharedPreferences( - YuzuApplication.appContext - ) - override fun getInt(needsGlobal: Boolean): Int = - preferences.getInt(Settings.PREF_STATIC_THEME_COLOR, 0) - override fun setInt(value: Int) { - preferences.edit() { putInt(Settings.PREF_STATIC_THEME_COLOR, value) } - settingsViewModel.setShouldRecreate(true) - } - - override val key: String = Settings.PREF_STATIC_THEME_COLOR - override val isRuntimeModifiable: Boolean = true - override fun getValueAsString(needsGlobal: Boolean): String = - preferences.getInt(Settings.PREF_STATIC_THEME_COLOR, 0).toString() - override val defaultValue: Any = 0 - override fun reset() { - preferences.edit() { putInt(Settings.PREF_STATIC_THEME_COLOR, 0) } - settingsViewModel.setShouldRecreate(true) - } - } - add( SingleChoiceSetting( themeMode, @@ -1089,14 +1122,59 @@ class SettingsFragmentPresenter( ) ) - add( - SingleChoiceSetting( - staticThemeColor, - titleId = R.string.static_theme_color, - choicesId = R.array.staticThemeNames, - valuesId = R.array.staticThemeValues + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + add( + SingleChoiceSetting( + theme, + titleId = R.string.change_app_theme, + choicesId = R.array.themeEntriesA12, + valuesId = R.array.themeValuesA12 + ) ) - ) + } else { + add( + SingleChoiceSetting( + theme, + titleId = R.string.change_app_theme, + choicesId = R.array.themeEntries, + valuesId = R.array.themeValues + ) + ) + } + + val staticThemeColor: AbstractIntSetting = object : AbstractIntSetting { + override fun getInt(needsGlobal: Boolean): Int = + IntSetting.STATIC_THEME_COLOR.getInt(needsGlobal) + + override fun setInt(value: Int) { + IntSetting.STATIC_THEME_COLOR.setInt(value) + settingsViewModel.setShouldRecreate(true) + } + + override val key: String = IntSetting.STATIC_THEME_COLOR.key + override val isRuntimeModifiable: Boolean = true + + override fun getValueAsString(needsGlobal: Boolean): String = + IntSetting.STATIC_THEME_COLOR.getValueAsString(needsGlobal) + + override val defaultValue: Any = IntSetting.STATIC_THEME_COLOR.defaultValue + + override fun reset() { + IntSetting.STATIC_THEME_COLOR.reset() + settingsViewModel.setShouldRecreate(true) + } + } + + if (IntSetting.THEME.getInt() != 1) { + add( + SingleChoiceSetting( + staticThemeColor, + titleId = R.string.static_theme_color, + choicesId = R.array.staticThemeNames, + valuesId = R.array.staticThemeValues + ) + ) + } val blackBackgrounds: AbstractBooleanSetting = object : AbstractBooleanSetting { override fun getBoolean(needsGlobal: Boolean): Boolean = @@ -1129,49 +1207,122 @@ class SettingsFragmentPresenter( descriptionId = R.string.use_black_backgrounds_description ) ) + + val fullscreenSetting: AbstractBooleanSetting = object : AbstractBooleanSetting { + override fun getBoolean(needsGlobal: Boolean): Boolean = + FullscreenHelper.isFullscreenEnabled(context) + + override fun setBoolean(value: Boolean) { + FullscreenHelper.setFullscreenEnabled(context, value) + settingsViewModel.setShouldRecreate(true) + } + + override val key: String = Settings.PREF_APP_FULLSCREEN + override val isRuntimeModifiable: Boolean = true + override val pairedSettingKey: String = "" + override val isSwitchable: Boolean = false + override var global: Boolean = true + override val isSaveable: Boolean = true + override val defaultValue: Boolean = Settings.APP_FULLSCREEN_DEFAULT + + override fun getValueAsString(needsGlobal: Boolean): String = + getBoolean(needsGlobal).toString() + + override fun reset() { + setBoolean(defaultValue) + } + } + + add( + SwitchSetting( + fullscreenSetting, + titleId = R.string.fullscreen_mode, + descriptionId = R.string.fullscreen_mode_description + ) + ) + + add(HeaderSetting(R.string.buttons)) + add(BooleanSetting.ENABLE_FOLDER_BUTTON.key) + add(BooleanSetting.ENABLE_QLAUNCH_BUTTON.key) + if (!NativeLibrary.isFirmwareAvailable()) { + BooleanSetting.ENABLE_QLAUNCH_BUTTON.setBoolean(false) + } } } private fun addDebugSettings(sl: ArrayList) { sl.apply { add(HeaderSetting(R.string.gpu)) + add(IntSetting.RENDERER_BACKEND.key) add(BooleanSetting.RENDERER_DEBUG.key) + add(BooleanSetting.RENDERER_PATCH_OLD_QCOM_DRIVERS.key) + add(BooleanSetting.BUFFER_REORDER_DISABLE.key) add(HeaderSetting(R.string.cpu)) + add(IntSetting.CPU_BACKEND.key) add(IntSetting.CPU_ACCURACY.key) add(BooleanSetting.USE_AUTO_STUB.key) - add(BooleanSetting.CPU_DEBUG_MODE.key) add(SettingsItem.FASTMEM_COMBINED) + add(BooleanSetting.CPUOPT_UNSAFE_HOST_MMU.key) - add(HeaderSetting(R.string.log)) - add(BooleanSetting.DEBUG_FLUSH_BY_LINE.key) + if (!NativeConfig.isPerGameConfigLoaded()) { + add(HeaderSetting(R.string.log)) + + add(BooleanSetting.DEBUG_FLUSH_BY_LINE.key) + } + + add(HeaderSetting(R.string.general)) + + add(ShortSetting.DEBUG_KNOBS.key) + + add(HeaderSetting(R.string.gpu_logging_header)) + add(BooleanSetting.GPU_LOGGING_ENABLED.key) + add(ByteSetting.GPU_LOG_LEVEL.key) + add(BooleanSetting.GPU_LOG_VULKAN_CALLS.key) + add(BooleanSetting.GPU_LOG_SHADER_DUMPS.key) + add(BooleanSetting.GPU_LOG_MEMORY_TRACKING.key) + add(BooleanSetting.GPU_LOG_DRIVER_DEBUG.key) + add(IntSetting.GPU_LOG_RING_BUFFER_SIZE.key) } } - fun showEdenVeilWarningDialog() { - val shouldDisplayVeilWarning = - PreferenceManager.getDefaultSharedPreferences(activity!!.applicationContext) - .getBoolean(Settings.PREF_SHOULD_SHOW_EDENS_VEIL_DIALOG, true) - - if (shouldDisplayVeilWarning) { - activity?.let { - MessageDialogFragment.newInstance( - it, - titleId = R.string.eden_veil_warning_title, - descriptionId = R.string.eden_veil_warning_description, - positiveButtonTitleId = R.string.dont_show_again, - negativeButtonTitleId = R.string.close, - showNegativeButton = true, - positiveAction = { - PreferenceManager.getDefaultSharedPreferences(activity!!.applicationContext) - .edit() { - putBoolean(Settings.PREF_SHOULD_SHOW_EDENS_VEIL_DIALOG, false) - } - } - ).show(it.supportFragmentManager, MessageDialogFragment.TAG) - } + private fun addCustomPathsSettings(sl: ArrayList) { + sl.apply { + add( + PathSetting( + titleId = R.string.custom_save_directory, + descriptionId = R.string.custom_save_directory_description, + iconId = R.drawable.ic_save, + pathType = PathSetting.PathType.SAVE_DATA, + defaultPathGetter = { NativeConfig.getDefaultSaveDir() }, + currentPathGetter = { NativeConfig.getSaveDir() }, + pathSetter = { path -> NativeConfig.setSaveDir(path) } + ) + ) + add( + PathSetting( + titleId = R.string.custom_nand_directory, + descriptionId = R.string.custom_nand_directory_description, + iconId = R.drawable.ic_folder_open, + pathType = PathSetting.PathType.NAND, + defaultPathGetter = { DirectoryInitialization.userDirectory + "/nand" }, + currentPathGetter = { NativeConfig.getNandDir() }, + pathSetter = { path -> NativeConfig.setNandDir(path) } + ) + ) + add( + PathSetting( + titleId = R.string.custom_sdmc_directory, + descriptionId = R.string.custom_sdmc_directory_description, + iconId = R.drawable.ic_folder_open, + pathType = PathSetting.PathType.SDMC, + defaultPathGetter = { DirectoryInitialization.userDirectory + "/sdmc" }, + currentPathGetter = { NativeConfig.getSdmcDir() }, + pathSetter = { path -> NativeConfig.setSdmcDir(path) } + ) + ) } } } diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsSubscreenActivity.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsSubscreenActivity.kt new file mode 100644 index 0000000000..91888dce12 --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsSubscreenActivity.kt @@ -0,0 +1,170 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +package org.yuzu.yuzu_emu.features.settings.ui + +import android.content.Context +import android.os.Bundle +import android.view.View +import android.view.ViewGroup.MarginLayoutParams +import androidx.activity.OnBackPressedCallback +import androidx.appcompat.app.AppCompatActivity +import androidx.core.os.bundleOf +import androidx.core.view.ViewCompat +import androidx.core.view.WindowCompat +import androidx.core.view.WindowInsetsCompat +import androidx.navigation.fragment.NavHostFragment +import androidx.navigation.navArgs +import com.google.android.material.color.MaterialColors +import org.yuzu.yuzu_emu.R +import org.yuzu.yuzu_emu.YuzuApplication +import org.yuzu.yuzu_emu.databinding.ActivitySettingsBinding +import org.yuzu.yuzu_emu.utils.DirectoryInitialization +import org.yuzu.yuzu_emu.utils.FullscreenHelper +import org.yuzu.yuzu_emu.utils.InsetsHelper +import org.yuzu.yuzu_emu.utils.ThemeHelper + +enum class SettingsSubscreen { + PROFILE_MANAGER, + DRIVER_MANAGER, + DRIVER_FETCHER, + FREEDRENO_SETTINGS, + APPLET_LAUNCHER, + INSTALLABLE, + GAME_FOLDERS, + ABOUT, + LICENSES, + GAME_INFO, + ADDONS, +} + +class SettingsSubscreenActivity : AppCompatActivity() { + private lateinit var binding: ActivitySettingsBinding + + private val args by navArgs() + + override fun attachBaseContext(base: Context) { + super.attachBaseContext(YuzuApplication.applyLanguage(base)) + } + + override fun onCreate(savedInstanceState: Bundle?) { + ThemeHelper.setTheme(this) + + super.onCreate(savedInstanceState) + + binding = ActivitySettingsBinding.inflate(layoutInflater) + setContentView(binding.root) + + val navHostFragment = + supportFragmentManager.findFragmentById(R.id.fragment_container) as NavHostFragment + if (savedInstanceState == null) { + val navController = navHostFragment.navController + val navGraph = navController.navInflater.inflate( + R.navigation.settings_subscreen_navigation + ) + navGraph.setStartDestination(resolveStartDestination()) + navController.setGraph(navGraph, createStartDestinationArgs()) + } + + WindowCompat.setDecorFitsSystemWindows(window, false) + + if (InsetsHelper.getSystemGestureType(applicationContext) != + InsetsHelper.GESTURE_NAVIGATION + ) { + binding.navigationBarShade.setBackgroundColor( + ThemeHelper.getColorWithOpacity( + MaterialColors.getColor( + binding.navigationBarShade, + com.google.android.material.R.attr.colorSurface + ), + ThemeHelper.SYSTEM_BAR_ALPHA + ) + ) + } + + onBackPressedDispatcher.addCallback( + this, + object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() = navigateBack() + } + ) + + setInsets() + applyFullscreenPreference() + } + + override fun onStart() { + super.onStart() + if (!DirectoryInitialization.areDirectoriesReady) { + DirectoryInitialization.start() + } + } + + override fun onResume() { + super.onResume() + applyFullscreenPreference() + } + + override fun onWindowFocusChanged(hasFocus: Boolean) { + super.onWindowFocusChanged(hasFocus) + if (hasFocus) { + applyFullscreenPreference() + } + } + + fun navigateBack() { + val navHostFragment = + supportFragmentManager.findFragmentById(R.id.fragment_container) as NavHostFragment + if (!navHostFragment.navController.popBackStack()) { + finish() + } + } + + private fun resolveStartDestination(): Int = + when (args.destination) { + SettingsSubscreen.PROFILE_MANAGER -> R.id.profileManagerFragment + SettingsSubscreen.DRIVER_MANAGER -> R.id.driverManagerFragment + SettingsSubscreen.DRIVER_FETCHER -> R.id.driverFetcherFragment + SettingsSubscreen.FREEDRENO_SETTINGS -> R.id.freedrenoSettingsFragment + SettingsSubscreen.APPLET_LAUNCHER -> R.id.appletLauncherFragment + SettingsSubscreen.INSTALLABLE -> R.id.installableFragment + SettingsSubscreen.GAME_FOLDERS -> R.id.gameFoldersFragment + SettingsSubscreen.ABOUT -> R.id.aboutFragment + SettingsSubscreen.LICENSES -> R.id.licensesFragment + SettingsSubscreen.GAME_INFO -> R.id.gameInfoFragment + SettingsSubscreen.ADDONS -> R.id.addonsFragment + } + + private fun createStartDestinationArgs(): Bundle = + when (args.destination) { + SettingsSubscreen.DRIVER_MANAGER, + SettingsSubscreen.FREEDRENO_SETTINGS -> bundleOf("game" to args.game) + + SettingsSubscreen.GAME_INFO, + SettingsSubscreen.ADDONS -> bundleOf( + "game" to requireNotNull(args.game) { + "Game is required for ${args.destination}" + } + ) + + else -> Bundle() + } + + private fun setInsets() { + ViewCompat.setOnApplyWindowInsetsListener( + binding.navigationBarShade + ) { _: View, windowInsets: WindowInsetsCompat -> + val barInsets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) + + val mlpNavShade = binding.navigationBarShade.layoutParams as MarginLayoutParams + mlpNavShade.height = barInsets.bottom + binding.navigationBarShade.layoutParams = mlpNavShade + + windowInsets + } + } + + private fun applyFullscreenPreference() { + FullscreenHelper.applyToActivity(this) + } +} diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsViewModel.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsViewModel.kt index fbdca04e9c..b1914c3169 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsViewModel.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsViewModel.kt @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later @@ -54,6 +57,18 @@ class SettingsViewModel : ViewModel() { private val _shouldShowResetInputDialog = MutableStateFlow(false) val shouldShowResetInputDialog = _shouldShowResetInputDialog.asStateFlow() + private val _shouldRecreateForLanguageChange = MutableStateFlow(false) + val shouldRecreateForLanguageChange = _shouldRecreateForLanguageChange.asStateFlow() + + private val _shouldShowPathPicker = MutableStateFlow(false) + val shouldShowPathPicker = _shouldShowPathPicker.asStateFlow() + + private val _shouldShowPathResetDialog = MutableStateFlow(false) + val shouldShowPathResetDialog = _shouldShowPathResetDialog.asStateFlow() + + private val _pathSettingPosition = MutableStateFlow(-1) + val pathSettingPosition = _pathSettingPosition.asStateFlow() + fun setShouldRecreate(value: Boolean) { _shouldRecreate.value = value } @@ -103,6 +118,22 @@ class SettingsViewModel : ViewModel() { _shouldShowResetInputDialog.value = value } + fun setShouldRecreateForLanguageChange(value: Boolean) { + _shouldRecreateForLanguageChange.value = value + } + + fun setShouldShowPathPicker(value: Boolean) { + _shouldShowPathPicker.value = value + } + + fun setShouldShowPathResetDialog(value: Boolean) { + _shouldShowPathResetDialog.value = value + } + + fun setPathSettingPosition(value: Int) { + _pathSettingPosition.value = value + } + fun getCurrentDeviceParams(defaultParams: ParamPackage): ParamPackage = try { InputHandler.registeredControllers[currentDevice] diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/GpuUnswizzleViewHolder.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/GpuUnswizzleViewHolder.kt new file mode 100644 index 0000000000..06701eb077 --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/GpuUnswizzleViewHolder.kt @@ -0,0 +1,71 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +package org.yuzu.yuzu_emu.features.settings.ui.viewholder + +import android.view.View +import org.yuzu.yuzu_emu.R +import org.yuzu.yuzu_emu.databinding.ListItemSettingBinding +import org.yuzu.yuzu_emu.features.settings.model.view.GpuUnswizzleSetting +import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem +import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter +import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible + +class GpuUnswizzleViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) : + SettingViewHolder(binding.root, adapter) { + private lateinit var setting: GpuUnswizzleSetting + + override fun bind(item: SettingsItem) { + setting = item as GpuUnswizzleSetting + binding.textSettingName.text = setting.title + binding.textSettingDescription.setVisible(item.description.isNotEmpty()) + binding.textSettingDescription.text = item.description + + binding.textSettingValue.setVisible(true) + val resMgr = binding.root.context.resources + + if (setting.isEnabled()) { + // Show a summary of current settings + val textureSizeEntries = resMgr.getStringArray(setting.textureSizeChoicesId) + val textureSizeValues = resMgr.getIntArray(setting.textureSizeValuesId) + val textureSizeIndex = textureSizeValues.indexOf(setting.getTextureSize()) + val textureSizeLabel = if (textureSizeIndex >= 0) textureSizeEntries[textureSizeIndex] else "?" + + val streamSizeEntries = resMgr.getStringArray(setting.streamSizeChoicesId) + val streamSizeValues = resMgr.getIntArray(setting.streamSizeValuesId) + val streamSizeIndex = streamSizeValues.indexOf(setting.getStreamSize()) + val streamSizeLabel = if (streamSizeIndex >= 0) streamSizeEntries[streamSizeIndex] else "?" + + val chunkSizeEntries = resMgr.getStringArray(setting.chunkSizeChoicesId) + val chunkSizeValues = resMgr.getIntArray(setting.chunkSizeValuesId) + val chunkSizeIndex = chunkSizeValues.indexOf(setting.getChunkSize()) + val chunkSizeLabel = if (chunkSizeIndex >= 0) chunkSizeEntries[chunkSizeIndex] else "?" + + binding.textSettingValue.text = "$textureSizeLabel ⋅ $streamSizeLabel ⋅ $chunkSizeLabel" + } else { + binding.textSettingValue.text = resMgr.getString(R.string.gpu_unswizzle_disabled) + } + + binding.buttonClear.setVisible(setting.clearable) + binding.buttonClear.setOnClickListener { + adapter.onClearClick(setting, bindingAdapterPosition) + } + + setStyle(setting.isEditable, binding) + } + + override fun onClick(clicked: View) { + if (!setting.isEditable) { + return + } + + adapter.onGpuUnswizzleClick(setting, bindingAdapterPosition) + } + + override fun onLongClick(clicked: View): Boolean { + if (setting.isEditable) { + return adapter.onLongClick(setting, bindingAdapterPosition) + } + return false + } +} diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/LaunchableViewHolder.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/LaunchableViewHolder.kt new file mode 100644 index 0000000000..8336517559 --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/LaunchableViewHolder.kt @@ -0,0 +1,42 @@ +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +package org.yuzu.yuzu_emu.features.settings.ui.viewholder + +import android.view.View +import org.yuzu.yuzu_emu.R +import org.yuzu.yuzu_emu.databinding.ListItemSettingBinding +import org.yuzu.yuzu_emu.features.settings.model.view.LaunchableSetting +import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem +import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter +import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible + +class LaunchableViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) : + SettingViewHolder(binding.root, adapter) { + private lateinit var setting: LaunchableSetting + + override fun bind(item: SettingsItem) { + setting = item as LaunchableSetting + + binding.textSettingName.text = setting.title + binding.textSettingDescription.setVisible(setting.description.isNotEmpty()) + binding.textSettingDescription.text = setting.description + + binding.textSettingValue.setVisible(true) + binding.textSettingValue.text = "" + binding.textSettingValue.setCompoundDrawablesRelativeWithIntrinsicBounds( + 0, 0, R.drawable.ic_arrow_forward, 0 + ) + + binding.buttonClear.setVisible(false) + } + + override fun onClick(clicked: View) { + adapter.onLaunchableClick(setting) + } + + override fun onLongClick(clicked: View): Boolean { + // no-op + return true + } +} diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/PathViewHolder.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/PathViewHolder.kt new file mode 100644 index 0000000000..7e0517a6dd --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/PathViewHolder.kt @@ -0,0 +1,64 @@ +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +package org.yuzu.yuzu_emu.features.settings.ui.viewholder + +import android.view.View +import androidx.core.content.res.ResourcesCompat +import org.yuzu.yuzu_emu.R +import org.yuzu.yuzu_emu.databinding.ListItemSettingBinding +import org.yuzu.yuzu_emu.features.settings.model.view.PathSetting +import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem +import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter +import org.yuzu.yuzu_emu.utils.PathUtil +import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible + +class PathViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) : + SettingViewHolder(binding.root, adapter) { + + private lateinit var setting: PathSetting + + override fun bind(item: SettingsItem) { + setting = item as PathSetting + binding.icon.setVisible(setting.iconId != 0) + if (setting.iconId != 0) { + binding.icon.setImageDrawable( + ResourcesCompat.getDrawable( + binding.icon.resources, + setting.iconId, + binding.icon.context.theme + ) + ) + } + + binding.textSettingName.text = setting.title + binding.textSettingDescription.setVisible(setting.description.isNotEmpty()) + binding.textSettingDescription.text = setting.description + + val currentPath = setting.getCurrentPath() + val displayPath = PathUtil.truncatePathForDisplay(currentPath) + + binding.textSettingValue.setVisible(true) + binding.textSettingValue.text = if (setting.isUsingDefaultPath()) { + binding.root.context.getString(R.string.default_string) + } else { + displayPath + } + + binding.buttonClear.setVisible(!setting.isUsingDefaultPath()) + binding.buttonClear.text = binding.root.context.getString(R.string.reset_to_default) + binding.buttonClear.setOnClickListener { + adapter.onPathReset(setting, bindingAdapterPosition) + } + + setStyle(true, binding) + } + + override fun onClick(clicked: View) { + adapter.onPathClick(setting, bindingAdapterPosition) + } + + override fun onLongClick(clicked: View): Boolean { + return false + } +} diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SpinBoxViewHolder.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SpinBoxViewHolder.kt new file mode 100644 index 0000000000..1f9a16b798 --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SpinBoxViewHolder.kt @@ -0,0 +1,44 @@ +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +package org.yuzu.yuzu_emu.features.settings.ui.viewholder + +import android.view.View +import org.yuzu.yuzu_emu.R +import org.yuzu.yuzu_emu.databinding.ListItemSettingBinding +import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem +import org.yuzu.yuzu_emu.features.settings.model.view.SpinBoxSetting +import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter +import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible + +class SpinBoxViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) : + SettingViewHolder(binding.root, adapter) { + private lateinit var setting: SpinBoxSetting + + override fun bind(item: SettingsItem) { + setting = item as SpinBoxSetting + binding.textSettingName.text = setting.title + binding.textSettingDescription.setVisible(item.description.isNotEmpty()) + binding.textSettingDescription.text = setting.description + binding.textSettingValue.setVisible(true) + binding.textSettingValue.text = setting.getSelectedValue().toString() + + binding.buttonClear.setVisible(setting.clearable) + binding.buttonClear.setOnClickListener { + adapter.onClearClick(setting, bindingAdapterPosition) + } + + setStyle(setting.isEditable, binding) + } + override fun onClick(clicked: View) { + if (setting.isEditable) { + adapter.onSpinBoxClick(setting, bindingAdapterPosition) + } + } + override fun onLongClick(clicked: View): Boolean { + if (setting.isEditable) { + return adapter.onLongClick(setting, bindingAdapterPosition) + } + return false + } +} \ No newline at end of file diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AboutFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AboutFragment.kt index 88ec13dd4c..aa2b3c7df2 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AboutFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AboutFragment.kt @@ -1,7 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project -// SPDX-License-Identifier: GPL-3.0-or-later - -// SPDX-FileCopyrightText: 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later package org.yuzu.yuzu_emu.fragments @@ -24,11 +21,13 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.navigation.findNavController import com.google.android.material.transition.MaterialSharedAxis -import org.yuzu.yuzu_emu.BuildConfig +import org.yuzu.yuzu_emu.HomeNavigationDirections import org.yuzu.yuzu_emu.R import org.yuzu.yuzu_emu.databinding.FragmentAboutBinding +import org.yuzu.yuzu_emu.features.settings.ui.SettingsSubscreen import org.yuzu.yuzu_emu.model.HomeViewModel import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins +import org.yuzu.yuzu_emu.NativeLibrary class AboutFragment : Fragment() { private var _binding: FragmentAboutBinding? = null @@ -53,10 +52,10 @@ class AboutFragment : Fragment() { } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) homeViewModel.setStatusBarShadeVisibility(visible = false) - binding.toolbarAbout.setNavigationOnClickListener { - binding.root.findNavController().popBackStack() + requireActivity().onBackPressedDispatcher.onBackPressed() } binding.imageLogo.setOnLongClickListener { @@ -74,15 +73,22 @@ class AboutFragment : Fragment() { ) } binding.buttonLicenses.setOnClickListener { - exitTransition = MaterialSharedAxis(MaterialSharedAxis.X, true) - binding.root.findNavController().navigate(R.id.action_aboutFragment_to_licensesFragment) + val action = HomeNavigationDirections.actionGlobalSettingsSubscreenActivity( + SettingsSubscreen.LICENSES, + null + ) + binding.root.findNavController().navigate(action) } - binding.textVersionName.text = BuildConfig.VERSION_NAME + val buildName = getString(R.string.app_name_suffixed) + val buildVersion = NativeLibrary.getBuildVersion() + val fullVersionText = "$buildName ($buildVersion)" + + binding.textVersionName.text = fullVersionText binding.buttonVersionName.setOnClickListener { val clipBoard = requireContext().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager - val clip = ClipData.newPlainText(getString(R.string.build), BuildConfig.GIT_HASH) + val clip = ClipData.newPlainText(getString(R.string.build), fullVersionText) clipBoard.setPrimaryClip(clip) if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) { @@ -95,7 +101,7 @@ class AboutFragment : Fragment() { } binding.buttonDiscord.setOnClickListener { openLink(getString(R.string.discord_link)) } - binding.buttonRevolt.setOnClickListener { openLink(getString(R.string.revolt_link)) } + binding.buttonStoat.setOnClickListener { openLink(getString(R.string.stoat_link)) } binding.buttonX.setOnClickListener { openLink(getString(R.string.x_link)) } binding.buttonWebsite.setOnClickListener { openLink(getString(R.string.website_link)) } binding.buttonGithub.setOnClickListener { openLink(getString(R.string.github_link)) } diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AddGameFolderDialogFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AddGameFolderDialogFragment.kt index e2cb5f600d..ca66ae3894 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AddGameFolderDialogFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AddGameFolderDialogFragment.kt @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: 2025 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later @@ -32,12 +35,14 @@ class AddGameFolderDialogFragment : DialogFragment() { .setTitle(R.string.add_game_folder) .setPositiveButton(android.R.string.ok) { _: DialogInterface, _: Int -> val newGameDir = GameDir(folderUriString!!, binding.deepScanSwitch.isChecked) - homeViewModel.setGamesDirSelected(true) val calledFromGameFragment = requireArguments().getBoolean( "calledFromGameFragment", false ) - gamesViewModel.addFolder(newGameDir, calledFromGameFragment) + val job = gamesViewModel.addFolder(newGameDir, calledFromGameFragment) + job.invokeOnCompletion { + homeViewModel.setGamesDirSelected(true) + } } .setNegativeButton(android.R.string.cancel, null) .setView(binding.root) 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 573549d84b..96632b4606 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 @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later package org.yuzu.yuzu_emu.fragments @@ -15,11 +15,9 @@ import androidx.core.view.updatePadding import androidx.documentfile.provider.DocumentFile import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels -import androidx.navigation.findNavController import androidx.navigation.fragment.navArgs import androidx.recyclerview.widget.LinearLayoutManager import com.google.android.material.transition.MaterialSharedAxis -import kotlinx.coroutines.launch import org.yuzu.yuzu_emu.R import org.yuzu.yuzu_emu.adapters.AddonAdapter import org.yuzu.yuzu_emu.databinding.FragmentAddonsBinding @@ -27,6 +25,7 @@ import org.yuzu.yuzu_emu.model.AddonViewModel import org.yuzu.yuzu_emu.model.HomeViewModel import org.yuzu.yuzu_emu.utils.AddonUtil import org.yuzu.yuzu_emu.utils.FileUtil.copyFilesTo +import org.yuzu.yuzu_emu.utils.InstallableActions import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins import org.yuzu.yuzu_emu.utils.collect import java.io.File @@ -42,7 +41,7 @@ class AddonsFragment : Fragment() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - addonViewModel.onOpenAddons(args.game) + addonViewModel.onAddonsViewCreated(args.game) enterTransition = MaterialSharedAxis(MaterialSharedAxis.X, true) returnTransition = MaterialSharedAxis(MaterialSharedAxis.X, false) reenterTransition = MaterialSharedAxis(MaterialSharedAxis.X, false) @@ -62,7 +61,7 @@ class AddonsFragment : Fragment() { homeViewModel.setStatusBarShadeVisibility(false) binding.toolbarAddons.setNavigationOnClickListener { - binding.root.findNavController().popBackStack() + requireActivity().onBackPressedDispatcher.onBackPressed() } binding.toolbarAddons.title = getString(R.string.addons_game, args.game.title) @@ -109,6 +108,12 @@ class AddonsFragment : Fragment() { ).show(parentFragmentManager, MessageDialogFragment.TAG) } } + parentFragmentManager.setFragmentResultListener( + ContentTypeSelectionDialogFragment.REQUEST_INSTALL_GAME_UPDATE, + viewLifecycleOwner + ) { _, _ -> + installGameUpdate.launch(arrayOf("*/*")) + } binding.buttonInstall.setOnClickListener { ContentTypeSelectionDialogFragment().show( @@ -122,15 +127,17 @@ class AddonsFragment : Fragment() { override fun onResume() { super.onResume() - addonViewModel.refreshAddons() + addonViewModel.onAddonsViewStarted(args.game) } override fun onDestroy() { + if (activity?.isChangingConfigurations != true) { + addonViewModel.onCloseAddons() + } super.onDestroy() - addonViewModel.onCloseAddons() } - val installAddon = + private val installAddon = registerForActivityResult(ActivityResultContracts.OpenDocumentTree()) { result -> if (result == null) { return@registerForActivityResult @@ -167,7 +174,7 @@ class AddonsFragment : Fragment() { } catch (_: Exception) { return@newInstance errorMessage } - addonViewModel.refreshAddons() + addonViewModel.refreshAddons(force = true) return@newInstance getString(R.string.addon_installed_successfully) }.show(parentFragmentManager, ProgressDialogFragment.TAG) } else { @@ -175,6 +182,17 @@ class AddonsFragment : Fragment() { } } + private val installGameUpdate = + registerForActivityResult(ActivityResultContracts.OpenMultipleDocuments()) { documents -> + InstallableActions.verifyAndInstallContent( + activity = requireActivity(), + fragmentManager = parentFragmentManager, + addonViewModel = addonViewModel, + documents = documents, + programId = args.game.programId + ) + } + private fun setInsets() = ViewCompat.setOnApplyWindowInsetsListener( binding.root diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AppletLauncherFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AppletLauncherFragment.kt index 3ab171a8d4..49237cb756 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AppletLauncherFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/AppletLauncherFragment.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later package org.yuzu.yuzu_emu.fragments @@ -12,7 +12,6 @@ import androidx.core.view.WindowInsetsCompat import androidx.core.view.updatePadding import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels -import androidx.navigation.findNavController import androidx.recyclerview.widget.GridLayoutManager import com.google.android.material.transition.MaterialSharedAxis import org.yuzu.yuzu_emu.R @@ -50,7 +49,7 @@ class AppletLauncherFragment : Fragment() { homeViewModel.setStatusBarShadeVisibility(visible = false) binding.toolbarApplets.setNavigationOnClickListener { - binding.root.findNavController().popBackStack() + requireActivity().onBackPressedDispatcher.onBackPressed() } val applets = listOf( diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/ContentTypeSelectionDialogFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/ContentTypeSelectionDialogFragment.kt index c1d8b9ea5f..fb59a3a52c 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/ContentTypeSelectionDialogFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/ContentTypeSelectionDialogFragment.kt @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later @@ -13,7 +16,6 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder import org.yuzu.yuzu_emu.R import org.yuzu.yuzu_emu.YuzuApplication import org.yuzu.yuzu_emu.model.AddonViewModel -import org.yuzu.yuzu_emu.ui.main.MainActivity class ContentTypeSelectionDialogFragment : DialogFragment() { private val addonViewModel: AddonViewModel by activityViewModels() @@ -31,12 +33,14 @@ class ContentTypeSelectionDialogFragment : DialogFragment() { selectedItem = savedInstanceState.getInt(SELECTED_ITEM) } - val mainActivity = requireActivity() as MainActivity return MaterialAlertDialogBuilder(requireContext()) .setTitle(R.string.select_content_type) .setPositiveButton(android.R.string.ok) { _: DialogInterface, _: Int -> when (selectedItem) { - 0 -> mainActivity.installGameUpdate.launch(arrayOf("*/*")) + 0 -> parentFragmentManager.setFragmentResult( + REQUEST_INSTALL_GAME_UPDATE, + Bundle() + ) else -> { if (!preferences.getBoolean(MOD_NOTICE_SEEN, false)) { preferences.edit().putBoolean(MOD_NOTICE_SEEN, true).apply() @@ -47,7 +51,7 @@ class ContentTypeSelectionDialogFragment : DialogFragment() { } } } - .setSingleChoiceItems(launchOptions, 0) { _: DialogInterface, i: Int -> + .setSingleChoiceItems(launchOptions, selectedItem) { _: DialogInterface, i: Int -> selectedItem = i } .setNegativeButton(android.R.string.cancel, null) @@ -61,6 +65,7 @@ class ContentTypeSelectionDialogFragment : DialogFragment() { companion object { const val TAG = "ContentTypeSelectionDialogFragment" + const val REQUEST_INSTALL_GAME_UPDATE = "RequestInstallGameUpdate" private const val SELECTED_ITEM = "SelectedItem" private const val MOD_NOTICE_SEEN = "ModNoticeSeen" diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/DriverFetcherFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/DriverFetcherFragment.kt index b8d0f2197e..eacc64a63e 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/DriverFetcherFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/DriverFetcherFragment.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later package org.yuzu.yuzu_emu.fragments @@ -13,7 +13,6 @@ import androidx.core.view.WindowInsetsCompat import androidx.core.view.isVisible import androidx.core.view.updatePadding import androidx.fragment.app.activityViewModels -import androidx.navigation.findNavController import androidx.recyclerview.widget.LinearLayoutManager import com.fasterxml.jackson.databind.JsonNode import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper @@ -29,6 +28,7 @@ import org.yuzu.yuzu_emu.R import org.yuzu.yuzu_emu.databinding.FragmentDriverFetcherBinding import org.yuzu.yuzu_emu.features.fetcher.DriverGroupAdapter import org.yuzu.yuzu_emu.model.DriverViewModel +import org.yuzu.yuzu_emu.model.HomeViewModel import org.yuzu.yuzu_emu.utils.GpuDriverHelper import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins import java.io.IOException @@ -45,7 +45,7 @@ class DriverFetcherFragment : Fragment() { private val client = OkHttpClient() private val gpuModel: String? - get() = GpuDriverHelper.getGpuModel() + get() = GpuDriverHelper.hookLibPath?.let { GpuDriverHelper.getGpuModel(hookLibPath = it) } private val adrenoModel: Int get() = parseAdrenoModel() @@ -69,7 +69,8 @@ class DriverFetcherFragment : Fragment() { DriverRepo("Mr. Purple Turnip", "MrPurple666/purple-turnip", 0), DriverRepo("GameHub Adreno 8xx", "crueter/GameHub-8Elite-Drivers", 1), DriverRepo("KIMCHI Turnip", "K11MCH1/AdrenoToolsDrivers", 2, true, SortMode.PublishTime), - DriverRepo("Weab-Chan Freedreno", "Weab-chan/freedreno_turnip-CI", 3) + DriverRepo("Weab-Chan Freedreno", "Weab-chan/freedreno_turnip-CI", 3), + DriverRepo("Whitebelyash Turnip", "whitebelyash/freedreno_turnip-CI", sort=4, false, SortMode.PublishTime), ) private val driverMap = listOf( @@ -79,13 +80,14 @@ class DriverFetcherFragment : Fragment() { IntRange(600, 639) to "Mr. Purple EOL-24.3.4", IntRange(640, 699) to "Mr. Purple T19", IntRange(700, 710) to "KIMCHI 25.2.0_r5", - IntRange(711, 799) to "Mr. Purple T21", + IntRange(711, 799) to "Mr. Purple T23", IntRange(800, 899) to "GameHub Adreno 8xx", IntRange(900, Int.MAX_VALUE) to "Unsupported" ) private lateinit var driverGroupAdapter: DriverGroupAdapter private val driverViewModel: DriverViewModel by activityViewModels() + private val homeViewModel: HomeViewModel by activityViewModels() private fun parseAdrenoModel(): Int { if (gpuModel == null) { @@ -137,9 +139,9 @@ class DriverFetcherFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - + homeViewModel.setStatusBarShadeVisibility(visible = false) binding.toolbarDrivers.setNavigationOnClickListener { - binding.root.findNavController().popBackStack() + requireActivity().onBackPressedDispatcher.onBackPressed() } binding.listDrivers.layoutManager = LinearLayoutManager(context) diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/DriverManagerFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/DriverManagerFragment.kt index f521343272..3aa55522e6 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/DriverManagerFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/DriverManagerFragment.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later package org.yuzu.yuzu_emu.fragments @@ -19,6 +19,7 @@ import androidx.navigation.fragment.navArgs import androidx.preference.PreferenceManager import androidx.recyclerview.widget.GridLayoutManager import com.google.android.material.transition.MaterialSharedAxis +import org.yuzu.yuzu_emu.HomeNavigationDirections import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext @@ -27,7 +28,7 @@ import org.yuzu.yuzu_emu.adapters.DriverAdapter import org.yuzu.yuzu_emu.databinding.FragmentDriverManagerBinding import org.yuzu.yuzu_emu.features.settings.model.Settings import org.yuzu.yuzu_emu.features.settings.model.StringSetting -import org.yuzu.yuzu_emu.model.Driver.Companion.toDriver +import org.yuzu.yuzu_emu.features.settings.ui.SettingsSubscreen import org.yuzu.yuzu_emu.model.DriverViewModel import org.yuzu.yuzu_emu.model.HomeViewModel import org.yuzu.yuzu_emu.utils.FileUtil @@ -91,6 +92,12 @@ class DriverManagerFragment : Fragment() { } } + driverViewModel.shouldShowDriverShaderDialog.collect(viewLifecycleOwner) { shouldShow -> + if (shouldShow) { + showDriverShaderWipeDialog() + } + } + if (!driverViewModel.isInteractionAllowed.value) { DriversLoadingDialogFragment().show( childFragmentManager, @@ -99,7 +106,7 @@ class DriverManagerFragment : Fragment() { } binding.toolbarDrivers.setNavigationOnClickListener { - binding.root.findNavController().popBackStack() + requireActivity().onBackPressedDispatcher.onBackPressed() } binding.buttonInstall.setOnClickListener { @@ -107,9 +114,11 @@ class DriverManagerFragment : Fragment() { } binding.buttonFetch.setOnClickListener { - binding.root.findNavController().navigate( - R.id.action_driverManagerFragment_to_driverFetcherFragment + val action = HomeNavigationDirections.actionGlobalSettingsSubscreenActivity( + SettingsSubscreen.DRIVER_FETCHER, + null ) + binding.root.findNavController().navigate(action) } binding.listDrivers.apply { @@ -132,6 +141,17 @@ class DriverManagerFragment : Fragment() { driverViewModel.onCloseDriverManager(args.game) } + override fun onResume() { + super.onResume() + refreshDriverList() + } + + private fun refreshDriverList() { + driverViewModel.reloadDriverData() + (binding.listDrivers.adapter as? DriverAdapter) + ?.replaceList(driverViewModel.driverList.value) + } + private fun setInsets() = ViewCompat.setOnApplyWindowInsetsListener( binding.root @@ -195,19 +215,23 @@ class DriverManagerFragment : Fragment() { val driverData = GpuDriverHelper.getMetadataFromZip(driverFile) val driverInList = - driverViewModel.driverData.firstOrNull { it.second == driverData } + driverViewModel.driverData.firstOrNull { + it.first == driverPath || it.second == driverData + } if (driverInList != null) { return@newInstance getString(R.string.driver_already_installed) } else { driverViewModel.onDriverAdded(Pair(driverPath, driverData)) withContext(Dispatchers.Main) { if (_binding != null) { + refreshDriverList() val adapter = binding.listDrivers.adapter as DriverAdapter - adapter.addItem(driverData.toDriver()) - adapter.selectItem(adapter.currentList.indices.last) + val selectedPosition = adapter.currentList + .indexOfFirst { it.selected } + .let { if (it == -1) 0 else it } driverViewModel.showClearButton(!StringSetting.DRIVER_PATH.global) binding.listDrivers - .smoothScrollToPosition(adapter.currentList.indices.last) + .smoothScrollToPosition(selectedPosition) } } } @@ -236,4 +260,18 @@ class DriverManagerFragment : Fragment() { ).show(requireActivity().supportFragmentManager, MessageDialogFragment.TAG) } } + + private fun showDriverShaderWipeDialog() { + com.google.android.material.dialog.MaterialAlertDialogBuilder(requireContext()) + .setTitle(R.string.driver_shader_wipe_dialog_title) + .setMessage(R.string.driver_shader_wipe_dialog_message) + .setPositiveButton(android.R.string.ok) { _, _ -> + driverViewModel.onDriverShaderDialogDismissed(dontShowAgain = false) + } + .setNegativeButton(R.string.dont_show_again) { _, _ -> + driverViewModel.onDriverShaderDialogDismissed(dontShowAgain = true) + } + .setCancelable(false) + .show() + } } diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EditUserDialogFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EditUserDialogFragment.kt new file mode 100644 index 0000000000..deff55f503 --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EditUserDialogFragment.kt @@ -0,0 +1,459 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +package org.yuzu.yuzu_emu.fragments + +import android.app.Activity +import android.content.Intent +import android.graphics.Bitmap +import android.graphics.BitmapFactory +import android.graphics.ImageDecoder +import android.net.Uri +import android.os.Build +import android.os.Bundle +import android.provider.MediaStore +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.activity.result.contract.ActivityResultContracts +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.updatePadding +import androidx.core.widget.doAfterTextChanged +import androidx.fragment.app.Fragment +import androidx.fragment.app.activityViewModels +import androidx.lifecycle.lifecycleScope +import androidx.navigation.fragment.findNavController +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.google.android.material.dialog.MaterialAlertDialogBuilder +import com.google.android.material.transition.MaterialSharedAxis +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext +import org.yuzu.yuzu_emu.NativeLibrary +import org.yuzu.yuzu_emu.R +import org.yuzu.yuzu_emu.adapters.FirmwareAvatarAdapter +import org.yuzu.yuzu_emu.databinding.FragmentEditUserDialogBinding +import org.yuzu.yuzu_emu.model.HomeViewModel +import org.yuzu.yuzu_emu.model.ProfileUtils +import org.yuzu.yuzu_emu.model.UserProfile +import java.io.File +import java.io.FileOutputStream +import androidx.core.graphics.scale +import androidx.core.graphics.createBitmap + +class EditUserDialogFragment : Fragment() { + private var _binding: FragmentEditUserDialogBinding? = null + private val binding get() = _binding!! + + private val homeViewModel: HomeViewModel by activityViewModels() + + private var currentUUID: String = "" + private var isEditMode = false + private var selectedImageUri: Uri? = null + private var selectedFirmwareAvatar: Bitmap? = null + private var hasCustomImage = false + private var revertedToDefault = false + + companion object { + private const val ARG_UUID = "uuid" + private const val ARG_USERNAME = "username" + + fun newInstance(profile: UserProfile?): EditUserDialogFragment { + val fragment = EditUserDialogFragment() + profile?.let { + val args = Bundle() + args.putString(ARG_UUID, it.uuid) + args.putString(ARG_USERNAME, it.username) + fragment.arguments = args + } + return fragment + } + } + + private val imagePickerLauncher = registerForActivityResult( + ActivityResultContracts.StartActivityForResult() + ) { result -> + if (result.resultCode == Activity.RESULT_OK) { + result.data?.data?.let { uri -> + selectedImageUri = uri + loadImage(uri) + hasCustomImage = true + binding.buttonRevertImage.visibility = View.VISIBLE + } + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + enterTransition = MaterialSharedAxis(MaterialSharedAxis.X, true) + returnTransition = MaterialSharedAxis(MaterialSharedAxis.X, false) + } + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + _binding = FragmentEditUserDialogBinding.inflate(layoutInflater) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + homeViewModel.setStatusBarShadeVisibility(visible = false) + + val existingUUID = arguments?.getString(ARG_UUID) + val existingUsername = arguments?.getString(ARG_USERNAME) + + if (existingUUID != null && existingUsername != null) { + isEditMode = true + currentUUID = existingUUID + binding.toolbarNewUser.title = getString(R.string.profile_edit_user) + binding.editUsername.setText(existingUsername) + binding.textUuid.text = formatUUID(existingUUID) + binding.buttonGenerateUuid.visibility = View.GONE + + val imagePath = NativeLibrary.getUserImagePath(existingUUID) + val imageFile = File(imagePath) + if (imageFile.exists()) { + val bitmap = BitmapFactory.decodeFile(imagePath) + binding.imageUserAvatar.setImageBitmap(bitmap) + hasCustomImage = true + binding.buttonRevertImage.visibility = View.VISIBLE + } else { + loadDefaultAvatar() + } + } else { + isEditMode = false + currentUUID = ProfileUtils.generateRandomUUID() + binding.toolbarNewUser.title = getString(R.string.profile_new_user) + binding.textUuid.text = formatUUID(currentUUID) + loadDefaultAvatar() + } + + binding.toolbarNewUser.setNavigationOnClickListener { + findNavController().popBackStack() + } + + binding.editUsername.doAfterTextChanged { + validateInput() + } + + binding.buttonGenerateUuid.setOnClickListener { + currentUUID = ProfileUtils.generateRandomUUID() + binding.textUuid.text = formatUUID(currentUUID) + } + + binding.buttonSelectImage.setOnClickListener { + selectImage() + } + + binding.buttonRevertImage.setOnClickListener { + revertToDefaultImage() + } + + if (NativeLibrary.isFirmwareAvailable()) { + binding.buttonFirmwareAvatars.visibility = View.VISIBLE + binding.buttonFirmwareAvatars.setOnClickListener { + showFirmwareAvatarPicker() + } + } + + binding.buttonSave.setOnClickListener { + saveUser() + } + + binding.buttonCancel.setOnClickListener { + findNavController().popBackStack() + } + + validateInput() + setInsets() + } + + private fun showFirmwareAvatarPicker() { + val dialogView = LayoutInflater.from(requireContext()) + .inflate(R.layout.dialog_firmware_avatar_picker, null) + + val gridAvatars = dialogView.findViewById(R.id.grid_avatars) + val progressLoading = dialogView.findViewById(R.id.progress_loading) + val textEmpty = dialogView.findViewById(R.id.text_empty) + + val dialog = MaterialAlertDialogBuilder(requireContext()) + .setTitle(R.string.profile_firmware_avatars) + .setView(dialogView) + .setNegativeButton(android.R.string.cancel, null) + .create() + + dialog.show() + + viewLifecycleOwner.lifecycleScope.launch { + val avatars = withContext(Dispatchers.IO) { + loadFirmwareAvatars() + } + + if (avatars.isEmpty()) { + progressLoading.visibility = View.GONE + textEmpty.visibility = View.VISIBLE + } else { + progressLoading.visibility = View.GONE + gridAvatars.visibility = View.VISIBLE + + val adapter = FirmwareAvatarAdapter(avatars) { selectedAvatar -> + val scaledBitmap = selectedAvatar.scale(256, 256) + binding.imageUserAvatar.setImageBitmap(scaledBitmap) + selectedFirmwareAvatar = scaledBitmap + hasCustomImage = true + binding.buttonRevertImage.visibility = View.VISIBLE + dialog.dismiss() + } + + gridAvatars.apply { + layoutManager = GridLayoutManager(requireContext(), 4) + this.adapter = adapter + } + } + } + } + + private fun loadFirmwareAvatars(): List { + val avatars = mutableListOf() + val count = NativeLibrary.getFirmwareAvatarCount() + + for (i in 0 until count) { + try { + val imageData = NativeLibrary.getFirmwareAvatarImage(i) ?: continue + + val argbData = IntArray(256 * 256) + for (pixel in 0 until 256 * 256) { + val offset = pixel * 4 + val r = imageData[offset].toInt() and 0xFF + val g = imageData[offset + 1].toInt() and 0xFF + val b = imageData[offset + 2].toInt() and 0xFF + val a = imageData[offset + 3].toInt() and 0xFF + argbData[pixel] = (a shl 24) or (r shl 16) or (g shl 8) or b + } + + val bitmap = Bitmap.createBitmap(argbData, 256, 256, Bitmap.Config.ARGB_8888) + avatars.add(bitmap) + } catch (e: Exception) { + continue + } + } + + return avatars + } + + private fun formatUUID(uuid: String): String { + if (uuid.length != 32) return uuid + return buildString { + append(uuid.substring(0, 8)) + append("-") + append(uuid.substring(8, 12)) + append("-") + append(uuid.substring(12, 16)) + append("-") + append(uuid.substring(16, 20)) + append("-") + append(uuid.substring(20, 32)) + } + } + + private fun validateInput() { + val username = binding.editUsername.text.toString() + val isValid = username.isNotEmpty() && username.length <= 32 + binding.buttonSave.isEnabled = isValid + } + + private fun selectImage() { + val intent = Intent(Intent.ACTION_PICK).apply { + type = "image/*" + } + imagePickerLauncher.launch(intent) + } + + private fun loadImage(uri: Uri) { + try { + val bitmap = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + val source = ImageDecoder.createSource(requireContext().contentResolver, uri) + ImageDecoder.decodeBitmap(source) { decoder, _, _ -> + decoder.setTargetSampleSize(1) + } + } else { + @Suppress("DEPRECATION") + MediaStore.Images.Media.getBitmap(requireContext().contentResolver, uri) + } + + val croppedBitmap = centerCropBitmap(bitmap, 256, 256) + binding.imageUserAvatar.setImageBitmap(croppedBitmap) + } catch (e: Exception) { + MaterialAlertDialogBuilder(requireContext()) + .setTitle(R.string.error) + .setMessage(getString(R.string.profile_image_load_error, e.message)) + .setPositiveButton(android.R.string.ok, null) + .show() + } + } + + private fun loadDefaultAvatar() { + val jpegData = NativeLibrary.getDefaultAccountBackupJpeg() + val bitmap = BitmapFactory.decodeByteArray(jpegData, 0, jpegData.size) + binding.imageUserAvatar.setImageBitmap(bitmap) + + hasCustomImage = false + binding.buttonRevertImage.visibility = View.GONE + } + + private fun revertToDefaultImage() { + selectedImageUri = null + selectedFirmwareAvatar = null + revertedToDefault = true + loadDefaultAvatar() + } + + private fun saveUser() { + val username = binding.editUsername.text.toString() + + if (isEditMode) { + if (NativeLibrary.updateUserUsername(currentUUID, username)) { + saveImageIfNeeded() + findNavController().popBackStack() + } else { + showError(getString(R.string.profile_update_failed)) + } + } else { + if (NativeLibrary.createUser(currentUUID, username)) { + saveImageIfNeeded() + findNavController().popBackStack() + } else { + showError(getString(R.string.profile_create_failed)) + } + } + } + + private fun saveImageIfNeeded() { + if (revertedToDefault && isEditMode) { + val imagePath = NativeLibrary.getUserImagePath(currentUUID) + if (imagePath != null) { + val imageFile = File(imagePath) + if (imageFile.exists()) { + imageFile.delete() + } + } + + return + } + + if (!hasCustomImage) { + return + } + + try { + val bitmapToSave: Bitmap? = when { + selectedFirmwareAvatar != null -> selectedFirmwareAvatar + selectedImageUri != null -> { + val bitmap = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + val source = ImageDecoder.createSource( + requireContext().contentResolver, + selectedImageUri!! + ) + ImageDecoder.decodeBitmap(source) + } else { + @Suppress("DEPRECATION") + MediaStore.Images.Media.getBitmap( + requireContext().contentResolver, + selectedImageUri + ) + } + centerCropBitmap(bitmap, 256, 256) + } + + else -> null + } + + if (bitmapToSave == null) { + return + } + + val tempFile = File(requireContext().cacheDir, "temp_avatar_${currentUUID}.jpg") + FileOutputStream(tempFile).use { out -> + bitmapToSave.compress(Bitmap.CompressFormat.JPEG, 100, out) + } + + NativeLibrary.saveUserImage(currentUUID, tempFile.absolutePath) + + tempFile.delete() + } catch (e: Exception) { + showError(getString(R.string.profile_image_save_error, e.message)) + } + } + + private fun centerCropBitmap(source: Bitmap, targetWidth: Int, targetHeight: Int): Bitmap { + val sourceWidth = source.width + val sourceHeight = source.height + + val scale = maxOf( + targetWidth.toFloat() / sourceWidth, + targetHeight.toFloat() / sourceHeight + ) + + val scaledWidth = (sourceWidth * scale).toInt() + val scaledHeight = (sourceHeight * scale).toInt() + + val scaledBitmap = source.scale(scaledWidth, scaledHeight) + + val x = (scaledWidth - targetWidth) / 2 + val y = (scaledHeight - targetHeight) / 2 + + return Bitmap.createBitmap(scaledBitmap, x, y, targetWidth, targetHeight) + } + + private fun showError(message: String) { + MaterialAlertDialogBuilder(requireContext()) + .setTitle(R.string.error) + .setMessage(message) + .setPositiveButton(android.R.string.ok, null) + .show() + } + + private fun setInsets() = + ViewCompat.setOnApplyWindowInsetsListener( + binding.root + ) { _: View, windowInsets: WindowInsetsCompat -> + val barInsets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) + val cutoutInsets = windowInsets.getInsets(WindowInsetsCompat.Type.displayCutout()) + + val leftInset = barInsets.left + cutoutInsets.left + val topInset = cutoutInsets.top + val rightInset = barInsets.right + cutoutInsets.right + val bottomInset = barInsets.bottom + cutoutInsets.bottom + + binding.appbar.updatePadding( + left = leftInset, + top = topInset, + right = rightInset + ) + + binding.scrollContent.updatePadding( + left = leftInset, + right = rightInset + ) + + binding.buttonContainer.updatePadding( + left = leftInset, + right = rightInset, + bottom = bottomInset + ) + + windowInsets + } + + + + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } +} 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 96015e58ec..a4c9eb9039 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 @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: 2023 yuzu Emulator Project @@ -15,6 +15,7 @@ import android.content.Intent import android.content.IntentFilter import android.content.pm.ActivityInfo import android.content.res.Configuration +import android.graphics.Bitmap import android.net.Uri import android.os.BatteryManager import android.os.BatteryManager.* @@ -35,6 +36,8 @@ import android.widget.FrameLayout import android.widget.TextView import android.widget.Toast import androidx.activity.OnBackPressedCallback +import androidx.activity.result.contract.ActivityResultContracts +import androidx.annotation.StringRes import androidx.appcompat.widget.PopupMenu import androidx.core.content.res.ResourcesCompat import androidx.core.graphics.Insets @@ -47,24 +50,35 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.lifecycle.lifecycleScope import androidx.navigation.findNavController +import androidx.navigation.fragment.NavHostFragment import androidx.navigation.fragment.navArgs import androidx.window.layout.FoldingFeature import androidx.window.layout.WindowInfoTracker import androidx.window.layout.WindowLayoutInfo import com.google.android.material.color.MaterialColors import com.google.android.material.dialog.MaterialAlertDialogBuilder +import com.google.android.material.materialswitch.MaterialSwitch import com.google.android.material.textview.MaterialTextView +import kotlinx.coroutines.CancellationException +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.ensureActive +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import org.yuzu.yuzu_emu.HomeNavigationDirections import org.yuzu.yuzu_emu.NativeLibrary import org.yuzu.yuzu_emu.R 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.dialogs.QuickSettings +import org.yuzu.yuzu_emu.features.input.NativeInput 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.model.Settings.EmulationVerticalAlignment +import org.yuzu.yuzu_emu.features.settings.model.ShortSetting import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile import org.yuzu.yuzu_emu.model.DriverViewModel import org.yuzu.yuzu_emu.model.EmulationViewModel @@ -76,18 +90,20 @@ import org.yuzu.yuzu_emu.utils.FileUtil import org.yuzu.yuzu_emu.utils.GameHelper import org.yuzu.yuzu_emu.utils.GameIconUtils import org.yuzu.yuzu_emu.utils.GpuDriverHelper +import org.yuzu.yuzu_emu.utils.InputHandler import org.yuzu.yuzu_emu.utils.Log import org.yuzu.yuzu_emu.utils.NativeConfig +import org.yuzu.yuzu_emu.utils.NativeFreedrenoConfig import org.yuzu.yuzu_emu.utils.ViewUtils import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible import org.yuzu.yuzu_emu.utils.collect import org.yuzu.yuzu_emu.utils.CustomSettingsHandler -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext -import kotlinx.coroutines.Dispatchers +import java.io.ByteArrayOutputStream +import java.io.File +import java.nio.ByteBuffer import kotlin.coroutines.resume import kotlin.coroutines.suspendCoroutine -import java.io.File +import kotlin.or class EmulationFragment : Fragment(), SurfaceHolder.Callback { private lateinit var emulationState: EmulationState @@ -96,6 +112,12 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { private var perfStatsUpdater: (() -> Unit)? = null private var socUpdater: (() -> Unit)? = null + val handler = Handler(Looper.getMainLooper()) + + private var controllerInputReceived = false + private var hasPhysicalControllerConnected = false + private var overlayHiddenByPhysicalController = false + private var _binding: FragmentEmulationBinding? = null private val binding get() = _binding!! @@ -112,12 +134,78 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { private lateinit var gpuModel: String private lateinit var fwVersion: String + private lateinit var buildId: String + private lateinit var driverInUse: String private var intentGame: Game? = null private var isCustomSettingsIntent = false + private var isStoppingForRomSwap = false + private var deferGameSetupUntilStopCompletes = false private var perfStatsRunnable: Runnable? = null private var socRunnable: Runnable? = null + private var isAmiiboPickerOpen = false + private var amiiboLoadJob: Job? = null + + private var wasInputOverlayAutoHidden = false + private var overlayTouchActive = false + private var pausedFrameBitmap: Bitmap? = null + + var shouldUseCustom = false + private var isQuickSettingsMenuOpen = false + private val quickSettings = QuickSettings(this) + + private val loadAmiiboLauncher = + registerForActivityResult(ActivityResultContracts.OpenDocument()) { uri -> + isAmiiboPickerOpen = false + val binding = _binding ?: return@registerForActivityResult + binding.inGameMenu.requestFocus() + + if (!isAdded || uri == null) { + return@registerForActivityResult + } + + if (!NativeLibrary.isRunning()) { + showAmiiboDialog(R.string.amiibo_wrong_state) + return@registerForActivityResult + } + + amiiboLoadJob?.cancel() + val owner = viewLifecycleOwner + amiiboLoadJob = owner.lifecycleScope.launch { + val bytes = readAmiiboFile(uri) + + if (!isAdded) { + return@launch + } + + if (bytes == null || bytes.isEmpty()) { + showAmiiboDialog( + if (bytes == null) R.string.amiibo_unknown_error else R.string.amiibo_not_valid + ) + return@launch + } + + val result = withContext(Dispatchers.IO) { + if (NativeLibrary.isRunning()) { + NativeLibrary.loadAmiibo(bytes) + } else { + AmiiboLoadResult.WrongDeviceState.value + } + } + + if (!isAdded) { + return@launch + } + handleAmiiboLoadResult(result) + }.also { job -> + job.invokeOnCompletion { + if (amiiboLoadJob == job) { + amiiboLoadJob = null + } + } + } + } override fun onAttach(context: Context) { super.onAttach(context) @@ -136,6 +224,10 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { super.onCreate(savedInstanceState) updateOrientation() + if (args.overlayGamelessEditMode) { + return + } + val intent = requireActivity().intent val intentUri: Uri? = intent.data intentGame = null @@ -152,6 +244,14 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { } } + if (emulationViewModel.isEmulationStopping.value) { + deferGameSetupUntilStopCompletes = true + if (game == null) { + game = args.game ?: intentGame + } + return + } + finishGameSetup() } @@ -174,6 +274,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { } game = gameToUse + emulationActivity?.updateSessionGame(gameToUse) } catch (e: Exception) { Log.error("[EmulationFragment] Error during game setup: ${e.message}") Toast.makeText( @@ -210,7 +311,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { // Normal game launch from arguments else -> { - val shouldUseCustom = game?.let { it == args.game && args.custom } ?: false + shouldUseCustom = game?.let { it == args.game && args.custom } ?: false if (shouldUseCustom) { SettingsFile.loadCustomConfig(game!!) @@ -234,9 +335,22 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { throw fallbackException } } + try { + if (GpuDriverHelper.isAdrenoGpu()) { + val programIdHex = game!!.programIdHex + if (NativeFreedrenoConfig.loadPerGameConfigWithGlobalFallback(programIdHex)) { + Log.info("[EmulationFragment] Loaded per-game Freedreno config for $programIdHex") + } else { + Log.info("[EmulationFragment] Using global Freedreno config for $programIdHex") + } + } + } catch (e: Exception) { + Log.warning("[EmulationFragment] Failed to load Freedreno config: ${e.message}") + } emulationState = EmulationState(game!!.path) { - return@EmulationState driverViewModel.isInteractionAllowed.value + return@EmulationState driverViewModel.isInteractionAllowed.value && + !isStoppingForRomSwap } } @@ -452,7 +566,10 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { /** * Ask user if they want to launch with default settings when custom settings fail */ - private suspend fun askUserToLaunchWithDefaultSettings(gameTitle: String, errorMessage: String): Boolean { + private suspend fun askUserToLaunchWithDefaultSettings( + gameTitle: String, + errorMessage: String + ): Boolean { return suspendCoroutine { continuation -> requireActivity().runOnUiThread { MaterialAlertDialogBuilder(requireContext()) @@ -490,6 +607,11 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { return } + if (args.overlayGamelessEditMode) { + setupOverlayGamelessEditMode() + return + } + if (game == null) { Log.warning( "[EmulationFragment] Game not yet initialized in onViewCreated - will be set up by async intent handler" @@ -500,15 +622,55 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { completeViewSetup() } + + private fun setupOverlayGamelessEditMode() { + binding.surfaceInputOverlay.post { + binding.surfaceInputOverlay.refreshControls(gameless = true) + } + + binding.doneControlConfig.setOnClickListener { + finishOverlayGamelessEditMode() + } + + binding.doneControlConfig.visibility = View.VISIBLE + binding.surfaceInputOverlay.setIsInEditMode(true) + binding.drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED) + binding.surfaceInputOverlay.visibility = View.VISIBLE + binding.loadingIndicator.visibility = View.GONE + + // in gameless edit mode, back = done + requireActivity().onBackPressedDispatcher.addCallback( + viewLifecycleOwner, + object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + finishOverlayGamelessEditMode() + } + } + ) + } + + private fun finishOverlayGamelessEditMode() { + binding.surfaceInputOverlay.setIsInEditMode(false) + NativeConfig.saveGlobalConfig() + requireActivity().finish() + } + private fun completeViewSetup() { if (_binding == null || game == null) { return } Log.info("[EmulationFragment] Starting view setup for game: ${game?.title}") - gpuModel = GpuDriverHelper.getGpuModel().toString() + gpuModel = GpuDriverHelper.hookLibPath?.let { GpuDriverHelper.getGpuModel(hookLibPath = it).toString() } ?: "Unknown" fwVersion = NativeLibrary.firmwareVersion() + val buildVersion = NativeLibrary.getBuildVersion() + buildId = buildVersion.split("-").getOrNull(0) ?: "" + driverInUse = driverViewModel.selectedDriverVersion.value + + updateQuickOverlayMenuEntry(BooleanSetting.SHOW_INPUT_OVERLAY.getBoolean()) + onPhysicalControllerStateChanged(InputHandler.androidControllers.isNotEmpty()) + binding.surfaceEmulation.holder.addCallback(this) binding.doneControlConfig.setOnClickListener { stopConfiguringControls() } @@ -530,6 +692,12 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { binding.drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED) binding.inGameMenu.requestFocus() emulationViewModel.setDrawerOpen(true) + updateQuickOverlayMenuEntry(BooleanSetting.SHOW_INPUT_OVERLAY.getBoolean()) + if (drawerView == binding.inGameMenu) { + binding.drawerLayout.closeDrawer(binding.quickSettingsSheet) + } else if (drawerView == binding.quickSettingsSheet) { + binding.drawerLayout.closeDrawer(binding.inGameMenu) + } } override fun onDrawerClosed(drawerView: View) { @@ -543,8 +711,24 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { }) binding.drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED) + if (!BooleanSetting.ENABLE_QUICK_SETTINGS.getBoolean()) { + binding.drawerLayout.setDrawerLockMode( + DrawerLayout.LOCK_MODE_LOCKED_CLOSED, + binding.quickSettingsSheet + ) + } + updateGameTitle() + binding.inGameMenu.menu.findItem(R.id.menu_quick_settings)?.isVisible = + BooleanSetting.ENABLE_QUICK_SETTINGS.getBoolean() + + binding.pausedIcon.setOnClickListener { + if (this::emulationState.isInitialized && emulationState.isPaused) { + resumeEmulationFromUi() + } + } + binding.inGameMenu.menu.findItem(R.id.menu_lock_drawer).apply { val lockMode = IntSetting.LOCK_DRAWER.getInt() val titleId = if (lockMode == DrawerLayout.LOCK_MODE_LOCKED_CLOSED) { @@ -570,42 +754,46 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { when (it.itemId) { R.id.menu_pause_emulation -> { if (emulationState.isPaused) { - emulationState.run(false) - it.title = resources.getString(R.string.emulation_pause) - it.icon = ResourcesCompat.getDrawable( - resources, - R.drawable.ic_pause, - requireContext().theme - ) + resumeEmulationFromUi() } else { - emulationState.pause() - it.title = resources.getString(R.string.emulation_unpause) - it.icon = ResourcesCompat.getDrawable( - resources, - R.drawable.ic_play, - requireContext().theme - ) + pauseEmulationAndCaptureFrame() } binding.inGameMenu.requestFocus() true } + R.id.menu_quick_overlay -> { + val newState = !BooleanSetting.SHOW_INPUT_OVERLAY.getBoolean() + toggleOverlay(newState) + updateQuickOverlayMenuEntry(BooleanSetting.SHOW_INPUT_OVERLAY.getBoolean()) + NativeConfig.saveGlobalConfig() + true + } + R.id.menu_settings -> { val action = HomeNavigationDirections.actionGlobalSettingsActivity( null, Settings.MenuTag.SECTION_ROOT ) binding.inGameMenu.requestFocus() + binding.drawerLayout.closeDrawer(binding.quickSettingsSheet) binding.root.findNavController().navigate(action) true } + if (BooleanSetting.ENABLE_QUICK_SETTINGS.getBoolean()) + R.id.menu_quick_settings else 0 -> { + openQuickSettingsMenu() + true + } + R.id.menu_settings_per_game -> { val action = HomeNavigationDirections.actionGlobalSettingsActivity( args.game, Settings.MenuTag.SECTION_ROOT ) binding.inGameMenu.requestFocus() + binding.drawerLayout.closeDrawer(binding.quickSettingsSheet) binding.root.findNavController().navigate(action) true } @@ -615,6 +803,8 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { true } + R.id.menu_load_amiibo -> handleLoadAmiiboSelection() + R.id.menu_controls -> { val action = HomeNavigationDirections.actionGlobalSettingsActivity( null, @@ -657,6 +847,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { } R.id.menu_exit -> { + clearPausedFrame() emulationState.stop() NativeConfig.reloadGlobalConfig() emulationViewModel.setIsEmulationStopping(true) @@ -669,6 +860,36 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { } } + addQuickSettings() + + binding.drawerLayout.addDrawerListener(object : DrawerListener { + override fun onDrawerSlide(drawerView: View, slideOffset: Float) { + // no op + } + + override fun onDrawerOpened(drawerView: View) { + if (drawerView == binding.quickSettingsSheet) { + isQuickSettingsMenuOpen = true + if (shouldUseCustom) { + SettingsFile.loadCustomConfig(args.game!!) + } + } + } + + override fun onDrawerClosed(drawerView: View) { + if (drawerView == binding.quickSettingsSheet) { + isQuickSettingsMenuOpen = false + if (shouldUseCustom) { + NativeConfig.unloadPerGameConfig() + } + } + } + + override fun onDrawerStateChanged(newState: Int) { + // No op + } + }) + setInsets() requireActivity().onBackPressedDispatcher.addCallback( @@ -683,8 +904,12 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { } ) - GameIconUtils.loadGameIcon(game!!, binding.loadingImage) - binding.loadingTitle.text = game!!.title + game?.let { + GameIconUtils.loadGameIcon(it, binding.loadingImage) + binding.loadingTitle.text = it.title + } ?: run { + binding.loadingTitle.text = "" + } binding.loadingTitle.isSelected = true binding.loadingText.isSelected = true @@ -726,6 +951,8 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { updateShowStatsOverlay() updateSocOverlay() + initializeOverlayAutoHide() + // Re update binding when the specs values get initialized properly binding.inGameMenu.getHeaderView(0).apply { val titleView = findViewById(R.id.text_game_title) @@ -750,6 +977,12 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { ViewUtils.showView(binding.loadingIndicator) ViewUtils.hideView(binding.inputContainer) ViewUtils.hideView(binding.showStatsOverlayText) + } else if (deferGameSetupUntilStopCompletes) { + if (!isAdded) { + return@collect + } + deferGameSetupUntilStopCompletes = false + finishGameSetup() } } emulationViewModel.drawerOpen.collect(viewLifecycleOwner) { @@ -786,50 +1019,50 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { } driverViewModel.isInteractionAllowed.collect(viewLifecycleOwner) { - if (it && !NativeLibrary.isRunning() && !NativeLibrary.isPaused()) { - startEmulation() + if (it && + !isStoppingForRomSwap && + !NativeLibrary.isRunning() && + !NativeLibrary.isPaused() + ) { + if (!DirectoryInitialization.areDirectoriesReady) { + DirectoryInitialization.start() + } + + updateScreenLayout() + + emulationState.run(emulationActivity!!.isActivityRecreated) } } driverViewModel.onLaunchGame() } - private fun startEmulation(programIndex: Int = 0) { - if (!NativeLibrary.isRunning() && !NativeLibrary.isPaused()) { - if (!DirectoryInitialization.areDirectoriesReady) { - DirectoryInitialization.start() - } - - updateScreenLayout() - - emulationState.run(emulationActivity!!.isActivityRecreated, programIndex) - } - } - override fun onConfigurationChanged(newConfig: Configuration) { super.onConfigurationChanged(newConfig) - if (_binding == null) { - return - } + val b = _binding ?: return updateScreenLayout() val showInputOverlay = BooleanSetting.SHOW_INPUT_OVERLAY.getBoolean() if (emulationActivity?.isInPictureInPictureMode == true) { - if (binding.drawerLayout.isOpen) { - binding.drawerLayout.close() + if (b.drawerLayout.isOpen) { + b.drawerLayout.close() } if (showInputOverlay) { - binding.surfaceInputOverlay.setVisible(visible = false, gone = false) + b.surfaceInputOverlay.setVisible(visible = false, gone = false) } } else { - binding.surfaceInputOverlay.setVisible( - showInputOverlay && emulationViewModel.emulationStarted.value - ) + val shouldShowOverlay = if (args.overlayGamelessEditMode) { + true + } else { + showInputOverlay && emulationViewModel.emulationStarted.value && + !hasPhysicalControllerConnected + } + b.surfaceInputOverlay.setVisible(shouldShowOverlay) if (!isInFoldableLayout) { if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { - binding.surfaceInputOverlay.layout = OverlayLayout.Portrait + b.surfaceInputOverlay.layout = OverlayLayout.Portrait } else { - binding.surfaceInputOverlay.layout = OverlayLayout.Landscape + b.surfaceInputOverlay.layout = OverlayLayout.Landscape } } } @@ -844,31 +1077,380 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { } } + private fun addQuickSettings() { + binding.quickSettingsSheet.apply { + val container = binding.quickSettingsSheet.findViewById(R.id.quick_settings_container) + val isFsrSelected = isFsrScalingFilterSelected() + + container.removeAllViews() + + if (shouldUseCustom) { + quickSettings.addPerGameConfigStatusIndicator(container) + } + + lateinit var slowSpeed: MaterialSwitch + lateinit var turboSpeed: MaterialSwitch + + turboSpeed = quickSettings.addCustomToggle( + R.string.turbo_speed_limit, + NativeLibrary.isTurboMode(), + BooleanSetting.RENDERER_USE_SPEED_LIMIT.getBoolean(false), + container + ) { enabled -> + if (enabled) + slowSpeed.isChecked = false + NativeLibrary.setTurboSpeedLimit(enabled) + }!! + + slowSpeed = quickSettings.addCustomToggle( + R.string.slow_speed_limit, + NativeLibrary.isSlowMode(), + BooleanSetting.RENDERER_USE_SPEED_LIMIT.getBoolean(false), + container + ) { enabled -> + if (enabled) + turboSpeed.isChecked = false + NativeLibrary.setSlowSpeedLimit(enabled) + }!! + + quickSettings.addCustomToggle( + R.string.frame_limit_enable, + BooleanSetting.RENDERER_USE_SPEED_LIMIT.getBoolean(false), + true, + container + ) { enabled -> + if (!enabled) { + turboSpeed.isChecked = false + slowSpeed.isChecked = false + } + + turboSpeed.isEnabled = enabled + slowSpeed.isEnabled = enabled + + NativeLibrary.setStandardSpeedLimit(enabled) + }!! + + quickSettings.addSliderSetting( + R.string.frame_limit_slider, + container, + ShortSetting.RENDERER_SPEED_LIMIT, + minValue = 0, + maxValue = 400, + units = "%", + ) + + quickSettings.addBooleanSetting( + R.string.use_docked_mode, + container, + BooleanSetting.USE_DOCKED_MODE, + ) + + quickSettings.addDivider(container) + + quickSettings.addIntSetting( + R.string.renderer_accuracy, + container, + IntSetting.RENDERER_ACCURACY, + R.array.rendererAccuracyNames, + R.array.rendererAccuracyValues + ) + + + quickSettings.addIntSetting( + R.string.renderer_scaling_filter, + container, + IntSetting.RENDERER_SCALING_FILTER, + R.array.rendererScalingFilterNames, + R.array.rendererScalingFilterValues + ) { + addQuickSettings() + } + + if (isFsrSelected) { + quickSettings.addSliderSetting( + R.string.fsr_sharpness, + container, + IntSetting.FSR_SHARPENING_SLIDER, + minValue = 0, + maxValue = 100, + units = "%" + ) + } + + quickSettings.addIntSetting( + R.string.renderer_anti_aliasing, + container, + IntSetting.RENDERER_ANTI_ALIASING, + R.array.rendererAntiAliasingNames, + R.array.rendererAntiAliasingValues + ) + } + } + + private fun isFsrScalingFilterSelected(): Boolean { + val fsrFilterValue = resolveFsrScalingFilterValue() ?: return false + val selectedFilter = IntSetting.RENDERER_SCALING_FILTER.getInt(needsGlobal = false) + return selectedFilter == fsrFilterValue + } + + private fun resolveFsrScalingFilterValue(): Int? { + val names = resources.getStringArray(R.array.rendererScalingFilterNames) + val values = resources.getIntArray(R.array.rendererScalingFilterValues) + val fsrIndex = names.indexOf(getString(R.string.scaling_filter_fsr)) + return if (fsrIndex in values.indices) values[fsrIndex] else null + } + + private fun openQuickSettingsMenu() { + binding.drawerLayout.closeDrawer(binding.inGameMenu) + binding.drawerLayout.openDrawer(binding.quickSettingsSheet) + } + + private fun updateQuickOverlayMenuEntry(isVisible: Boolean) { + val b = _binding ?: return + val item = b.inGameMenu.menu.findItem(R.id.menu_quick_overlay) ?: return + + if (isVisible) { + item.title = getString(R.string.emulation_hide_overlay) + item.icon = ResourcesCompat.getDrawable( + resources, + R.drawable.ic_controller_disconnected, + requireContext().theme + ) + } else { + item.title = getString(R.string.emulation_show_overlay) + item.icon = ResourcesCompat.getDrawable( + resources, + R.drawable.ic_controller, + requireContext().theme + ) + } + } + + private fun updatePauseMenuEntry(isPaused: Boolean) { + val b = _binding ?: return + val pauseItem = b.inGameMenu.menu.findItem(R.id.menu_pause_emulation) ?: return + if (isPaused) { + pauseItem.title = getString(R.string.emulation_unpause) + pauseItem.icon = ResourcesCompat.getDrawable( + resources, + R.drawable.ic_play, + requireContext().theme + ) + } else { + pauseItem.title = getString(R.string.emulation_pause) + pauseItem.icon = ResourcesCompat.getDrawable( + resources, + R.drawable.ic_pause, + requireContext().theme + ) + } + } + + private fun pauseEmulationAndCaptureFrame() { + emulationState.pause() + updatePauseMenuEntry(true) + capturePausedFrameFromCore() + updatePausedFrameVisibility() + } + + private fun capturePausedFrameFromCore() { + lifecycleScope.launch(Dispatchers.Default) { + val frameData = NativeLibrary.getAppletCaptureBuffer() + val width = NativeLibrary.getAppletCaptureWidth() + val height = NativeLibrary.getAppletCaptureHeight() + if (frameData.isEmpty() || width <= 0 || height <= 0) { + Log.warning( + "[EmulationFragment] Paused frame capture returned empty/invalid data. " + + "size=${frameData.size}, width=$width, height=$height" + ) + return@launch + } + + val expectedSize = width * height * 4 + if (frameData.size < expectedSize) { + Log.warning( + "[EmulationFragment] Paused frame buffer smaller than expected. " + + "size=${frameData.size}, expected=$expectedSize" + ) + return@launch + } + + val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888) + bitmap.copyPixelsFromBuffer(ByteBuffer.wrap(frameData, 0, expectedSize)) + + withContext(Dispatchers.Main) { + pausedFrameBitmap?.recycle() + pausedFrameBitmap = bitmap + updatePausedFrameVisibility() + } + } + } + + private fun updatePausedFrameVisibility() { + val b = _binding ?: return + val showPausedUi = this::emulationState.isInitialized && emulationState.isPaused + b.pausedIcon.setVisible(showPausedUi) + + val bitmap = if (showPausedUi) pausedFrameBitmap else null + b.pausedFrameImage.setImageBitmap(bitmap) + b.pausedFrameImage.setVisible(bitmap != null) + } + + private fun resumeEmulationFromUi() { + clearPausedFrame() + emulationState.resume() + updatePauseMenuEntry(emulationState.isPaused) + updatePausedFrameVisibility() + } + + private fun clearPausedFrame() { + val b = _binding + b?.pausedFrameImage?.setVisible(false) + b?.pausedFrameImage?.setImageDrawable(null) + pausedFrameBitmap?.recycle() + pausedFrameBitmap = null + } + + private fun handleLoadAmiiboSelection(): Boolean { + val binding = _binding ?: return true + + binding.inGameMenu.requestFocus() + + if (!NativeLibrary.isRunning()) { + showAmiiboDialog(R.string.amiibo_wrong_state) + return true + } + + when (AmiiboState.fromValue(NativeLibrary.getVirtualAmiiboState())) { + AmiiboState.TagNearby -> { + amiiboLoadJob?.cancel() + NativeInput.onRemoveNfcTag() + showAmiiboDialog(R.string.amiibo_removed_message) + } + + AmiiboState.WaitingForAmiibo -> { + if (isAmiiboPickerOpen) { + return true + } + + isAmiiboPickerOpen = true + binding.drawerLayout.close() + loadAmiiboLauncher.launch(AMIIBO_MIME_TYPES) + } + + else -> showAmiiboDialog(R.string.amiibo_wrong_state) + } + + return true + } + + private fun handleAmiiboLoadResult(result: Int) { + when (AmiiboLoadResult.fromValue(result)) { + AmiiboLoadResult.Success -> { + if (!isAdded) { + return + } + Toast.makeText( + requireContext(), + getString(R.string.amiibo_load_success), + Toast.LENGTH_SHORT + ).show() + } + + AmiiboLoadResult.UnableToLoad -> showAmiiboDialog(R.string.amiibo_in_use) + AmiiboLoadResult.NotAnAmiibo -> showAmiiboDialog(R.string.amiibo_not_valid) + AmiiboLoadResult.WrongDeviceState -> showAmiiboDialog(R.string.amiibo_wrong_state) + AmiiboLoadResult.Unknown -> showAmiiboDialog(R.string.amiibo_unknown_error) + } + } + + private fun showAmiiboDialog(@StringRes messageRes: Int) { + if (!isAdded) { + return + } + + MaterialAlertDialogBuilder(requireContext()) + .setTitle(R.string.amiibo_title) + .setMessage(messageRes) + .setPositiveButton(R.string.ok, null) + .show() + } + + private suspend fun readAmiiboFile(uri: Uri): ByteArray? = + withContext(Dispatchers.IO) { + val resolver = context?.contentResolver ?: return@withContext null + try { + resolver.openInputStream(uri)?.use { stream -> + val buffer = ByteArrayOutputStream() + val chunk = ByteArray(DEFAULT_BUFFER_SIZE) + while (true) { + coroutineContext.ensureActive() + val read = stream.read(chunk) + if (read == -1) { + break + } + buffer.write(chunk, 0, read) + } + buffer.toByteArray() + } + } catch (ce: CancellationException) { + throw ce + } catch (e: Exception) { + Log.error("[EmulationFragment] Failed to read amiibo: ${e.message}") + null + } + } + override fun onPause() { - if (emulationState.isRunning && emulationActivity?.isInPictureInPictureMode != true) { - emulationState.pause() + if (this::emulationState.isInitialized) { + if (emulationState.isRunning && emulationActivity?.isInPictureInPictureMode != true) { + pauseEmulationAndCaptureFrame() + } else { + updatePausedFrameVisibility() + } } super.onPause() } override fun onDestroyView() { super.onDestroyView() + amiiboLoadJob?.cancel() + amiiboLoadJob = null + perfStatsRunnable?.let { perfStatsUpdateHandler.removeCallbacks(it) } + socRunnable?.let { socUpdateHandler.removeCallbacks(it) } + handler.removeCallbacksAndMessages(null) + clearPausedFrame() + _binding?.surfaceInputOverlay?.touchEventListener = null _binding = null + isAmiiboPickerOpen = false } override fun onDetach() { - NativeLibrary.clearEmulationActivity() + if (!hasNewerEmulationFragment()) { + NativeLibrary.clearEmulationActivity() + } super.onDetach() } override fun onResume() { super.onResume() - // If the overlay is enabled, we need to update the position if changed - val position = IntSetting.PERF_OVERLAY_POSITION.getInt() - updateStatsPosition(position) + val b = _binding ?: return + updateStatsPosition(IntSetting.PERF_OVERLAY_POSITION.getInt()) + updateSocPosition(IntSetting.SOC_OVERLAY_POSITION.getInt()) - val socPosition = IntSetting.SOC_OVERLAY_POSITION.getInt() - updateSocPosition(socPosition) + if (this::emulationState.isInitialized) { + b.inGameMenu.post { + if (!this::emulationState.isInitialized || _binding == null) return@post + updatePauseMenuEntry(emulationState.isPaused) + updatePausedFrameVisibility() + } + } + + // if the overlay auto-hide setting is changed while paused, + // we need to reinitialize the auto-hide timer + initializeOverlayAutoHide() + + addQuickSettings() } private fun resetInputOverlay() { @@ -876,12 +1458,13 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { IntSetting.OVERLAY_OPACITY.reset() binding.surfaceInputOverlay.post { binding.surfaceInputOverlay.resetLayoutVisibilityAndPlacement() + binding.surfaceInputOverlay.resetIndividualControlScale() } } @SuppressLint("DefaultLocale") private fun updateShowStatsOverlay() { - val showOverlay = BooleanSetting.SHOW_PERFORMANCE_OVERLAY.getBoolean() + val showPerfOverlay = BooleanSetting.SHOW_PERFORMANCE_OVERLAY.getBoolean() binding.showStatsOverlayText.apply { setTextColor( MaterialColors.getColor( @@ -890,12 +1473,12 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { ) ) } - binding.showStatsOverlayText.setVisible(showOverlay) - if (showOverlay) { - val SYSTEM_FPS = 0 + binding.showStatsOverlayText.setVisible(showPerfOverlay) + if (showPerfOverlay) { + //val SYSTEM_FPS = 0 val FPS = 1 val FRAMETIME = 2 - val SPEED = 3 + //val SPEED = 3 val sb = StringBuilder() perfStatsUpdater = { if (emulationViewModel.emulationStarted.value && @@ -908,20 +1491,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { val actualFps = perfStats[FPS] if (BooleanSetting.SHOW_FPS.getBoolean(needsGlobal)) { - val enableFrameInterpolation = - BooleanSetting.FRAME_INTERPOLATION.getBoolean() -// val enableFrameSkipping = BooleanSetting.FRAME_SKIPPING.getBoolean() - var fpsText = String.format("FPS: %.1f", actualFps) - - if (enableFrameInterpolation) { - fpsText += " " + getString(R.string.enhanced_fps_suffix) - } - -// if (enableFrameSkipping) { -// fpsText += " " + getString(R.string.skipping_fps_suffix) -// } - sb.append(fpsText) } @@ -986,7 +1556,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { val status = batteryIntent?.getIntExtra(BatteryManager.EXTRA_STATUS, -1) val isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || - status == BatteryManager.BATTERY_STATUS_FULL + status == BatteryManager.BATTERY_STATUS_FULL if (isCharging) { sb.append(" ${getString(R.string.charging)}") @@ -1081,7 +1651,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { } private fun updateSocOverlay() { - val showOverlay = BooleanSetting.SHOW_SOC_OVERLAY.getBoolean() + val showSOCOverlay = BooleanSetting.SHOW_SOC_OVERLAY.getBoolean() binding.showSocOverlayText.apply { setTextColor( MaterialColors.getColor( @@ -1090,30 +1660,48 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { ) ) } - binding.showSocOverlayText.setVisible(showOverlay) + binding.showSocOverlayText.setVisible(showSOCOverlay) - if (showOverlay) { + if (showSOCOverlay) { val sb = StringBuilder() - + val appendWithPipe: (String) -> Unit = { text -> + if (text.isNotEmpty()) { + if (sb.isNotEmpty()) sb.append(" | ") + sb.append(text) + } + } socUpdater = { if (emulationViewModel.emulationStarted.value && !emulationViewModel.isEmulationStopping.value ) { sb.setLength(0) + if (BooleanSetting.SHOW_BUILD_ID.getBoolean( + NativeConfig.isPerGameConfigLoaded() + ) + ) { + appendWithPipe(buildId) + } + + if (BooleanSetting.SHOW_DRIVER_VERSION.getBoolean( + NativeConfig.isPerGameConfigLoaded() + ) + ) { + appendWithPipe(driverInUse) + } + if (BooleanSetting.SHOW_DEVICE_MODEL.getBoolean( NativeConfig.isPerGameConfigLoaded() ) ) { - sb.append(Build.MODEL) + appendWithPipe(Build.MODEL) } if (BooleanSetting.SHOW_GPU_MODEL.getBoolean( NativeConfig.isPerGameConfigLoaded() ) ) { - if (sb.isNotEmpty()) sb.append(" | ") - sb.append(gpuModel) + appendWithPipe(gpuModel) } if (Build.VERSION.SDK_INT >= 31) { @@ -1121,8 +1709,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { NativeConfig.isPerGameConfigLoaded() ) ) { - if (sb.isNotEmpty()) sb.append(" | ") - sb.append(Build.SOC_MODEL) + appendWithPipe(Build.SOC_MODEL) } } @@ -1130,8 +1717,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { NativeConfig.isPerGameConfigLoaded() ) ) { - if (sb.isNotEmpty()) sb.append(" | ") - sb.append(fwVersion) + appendWithPipe(fwVersion) } binding.showSocOverlayText.text = sb.toString() @@ -1182,6 +1768,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { } private fun updateScreenLayout() { + val b = _binding ?: return val verticalAlignment = EmulationVerticalAlignment.from(IntSetting.VERTICAL_ALIGNMENT.getInt()) val aspectRatio = when (IntSetting.RENDERER_ASPECT_RATIO.getInt()) { @@ -1193,35 +1780,37 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { } when (verticalAlignment) { EmulationVerticalAlignment.Top -> { - binding.surfaceEmulation.setAspectRatio(aspectRatio) + b.surfaceEmulation.setAspectRatio(aspectRatio) val params = FrameLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT ) params.gravity = Gravity.TOP or Gravity.CENTER_HORIZONTAL - binding.surfaceEmulation.layoutParams = params + b.surfaceEmulation.layoutParams = params } EmulationVerticalAlignment.Center -> { - binding.surfaceEmulation.setAspectRatio(null) - binding.surfaceEmulation.updateLayoutParams { + b.surfaceEmulation.setAspectRatio(null) + b.surfaceEmulation.updateLayoutParams { width = ViewGroup.LayoutParams.MATCH_PARENT height = ViewGroup.LayoutParams.MATCH_PARENT } } EmulationVerticalAlignment.Bottom -> { - binding.surfaceEmulation.setAspectRatio(aspectRatio) + b.surfaceEmulation.setAspectRatio(aspectRatio) val params = FrameLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT ) params.gravity = Gravity.BOTTOM or Gravity.CENTER_HORIZONTAL - binding.surfaceEmulation.layoutParams = params + b.surfaceEmulation.layoutParams = params } } - emulationState.updateSurface() + if (this::emulationState.isInitialized) { + emulationState.updateSurface() + } emulationActivity?.buildPictureInPictureParams() updateOrientation() } @@ -1289,15 +1878,82 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { emulationState.newSurface(holder.surface) } else { - emulationState.newSurface(holder.surface) + // Surface changed due to rotation/config change + // Only update surface reference, don't trigger state changes + emulationState.updateSurfaceReference(holder.surface) } + updatePausedFrameVisibility() } override fun surfaceDestroyed(holder: SurfaceHolder) { - emulationState.clearSurface() + if (this::emulationState.isInitialized && !hasNewerEmulationFragment()) { + emulationState.clearSurface() + } emulationStarted = false } + private fun hasNewerEmulationFragment(): Boolean { + val activity = emulationActivity ?: return false + return try { + val navHostFragment = + activity.supportFragmentManager.findFragmentById(R.id.fragment_container) as? NavHostFragment + ?: return false + val currentFragment = navHostFragment.childFragmentManager.fragments + .filterIsInstance() + .firstOrNull() + currentFragment != null && currentFragment !== this + } catch (_: Exception) { + false + } + } + + // xbzk: called from EmulationActivity when a new game is loaded while this fragment is still active, + // to wait for the emulation thread to stop before allowing the ROM swap to proceed + fun notifyWhenEmulationThreadStops(onStopped: () -> Unit) { + if (!this::emulationState.isInitialized) { + onStopped() + return + } + val emuThread = runCatching { emulationState.emulationThread }.getOrNull() + if (emuThread == null || !emuThread.isAlive) { + onStopped() + return + } + Thread({ + runCatching { emuThread.join() } + Handler(Looper.getMainLooper()).post { + onStopped() + } + }, "RomSwapWait").start() + } + + // xbzk: called from EmulationActivity when a new game is loaded while this + // fragment is still active, to stop the current emulation before swapping the ROM + fun stopForRomSwap() { + if (isStoppingForRomSwap) { + return + } + isStoppingForRomSwap = true + clearPausedFrame() + emulationViewModel.setIsEmulationStopping(true) + _binding?.let { + binding.loadingText.setText(R.string.shutting_down) + ViewUtils.showView(binding.loadingIndicator) + ViewUtils.hideView(binding.inputContainer) + ViewUtils.hideView(binding.showStatsOverlayText) + } + if (this::emulationState.isInitialized) { + emulationState.stop() + if (NativeLibrary.isRunning() || NativeLibrary.isPaused()) { + Log.warning("[EmulationFragment] ROM swap stop fallback: forcing native stop request.") + NativeLibrary.stopEmulation() + } + } else { + NativeLibrary.stopEmulation() + } + NativeConfig.reloadGlobalConfig() + } + private fun showOverlayOptions() { val anchor = binding.inGameMenu.findViewById(R.id.menu_overlay_controls) val popup = PopupMenu(requireContext(), anchor) @@ -1314,6 +1970,8 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { 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_snap_to_grid).isChecked = + BooleanSetting.OVERLAY_SNAP_TO_GRID.getBoolean() findItem(R.id.menu_haptics).isChecked = BooleanSetting.HAPTIC_FEEDBACK.getBoolean() findItem(R.id.menu_touchscreen).isChecked = BooleanSetting.TOUCHSCREEN.getBoolean() } @@ -1342,6 +2000,13 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { true } + R.id.menu_snap_to_grid -> { + it.isChecked = !it.isChecked + BooleanSetting.OVERLAY_SNAP_TO_GRID.setBoolean(it.isChecked) + binding.surfaceInputOverlay.invalidate() + true + } + R.id.menu_adjust_overlay -> { adjustOverlay() true @@ -1390,8 +2055,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { R.id.menu_show_overlay -> { it.isChecked = !it.isChecked - BooleanSetting.SHOW_INPUT_OVERLAY.setBoolean(it.isChecked) - binding.surfaceInputOverlay.refreshControls() + toggleOverlay(it.isChecked) true } @@ -1494,6 +2158,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { .setNeutralButton(R.string.slider_default) { _: DialogInterface?, _: Int -> setControlScale(50) setControlOpacity(100) + binding.surfaceInputOverlay.resetIndividualControlScale() } .show() } @@ -1525,6 +2190,26 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { windowInsets } + + ViewCompat.setOnApplyWindowInsetsListener(binding.quickSettingsSheet) { v, insets -> + val systemBarsInsets: Insets = insets.getInsets(WindowInsetsCompat.Type.systemBars()) + if (v.layoutDirection == View.LAYOUT_DIRECTION_LTR) { + v.setPadding( + systemBarsInsets.left, + systemBarsInsets.top, + 0, + systemBarsInsets.bottom + ) + } else { + v.setPadding( + 0, + systemBarsInsets.top, + systemBarsInsets.right, + systemBarsInsets.bottom + ) + } + insets + } } private class EmulationState( @@ -1559,6 +2244,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { state = State.STOPPED } else { Log.warning("[EmulationFragment] Stop called while already stopped.") + NativeLibrary.stopEmulation() } } @@ -1568,6 +2254,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { Log.debug("[EmulationFragment] Pausing emulation.") NativeLibrary.pauseEmulation() + NativeLibrary.playTimeManagerStop() state = State.PAUSED } else { @@ -1591,6 +2278,29 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { } } + @Synchronized + fun resume() { + if (state != State.PAUSED) { + Log.warning("[EmulationFragment] Resume called while emulation is not paused.") + return + } + if (!emulationCanStart.invoke()) { + Log.warning("[EmulationFragment] Resume blocked by emulationCanStart check.") + return + } + val currentSurface = surface + if (currentSurface == null || !currentSurface.isValid) { + Log.debug("[EmulationFragment] Resume requested with invalid surface.") + return + } + + NativeLibrary.surfaceChanged(currentSurface) + Log.debug("[EmulationFragment] Resuming emulation.") + NativeLibrary.unpauseEmulation() + NativeLibrary.playTimeManagerStart() + state = State.RUNNING + } + @Synchronized fun changeProgram(programIndex: Int) { emulationThread.join() @@ -1612,28 +2322,36 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { @Synchronized fun updateSurface() { - if (surface != null) { + if (surface != null && state == State.RUNNING) { NativeLibrary.surfaceChanged(surface) } } + @Synchronized + fun updateSurfaceReference(surface: Surface?) { + this.surface = surface + if (this.surface != null && state == State.RUNNING) { + NativeLibrary.surfaceChanged(this.surface) + } + } + @Synchronized fun clearSurface() { if (surface == null) { - Log.warning("[EmulationFragment] clearSurface called, but surface already null.") + Log.debug("[EmulationFragment] clearSurface called, but surface already null.") } else { + if (state == State.RUNNING) { + pause() + } + NativeLibrary.surfaceDestroyed() surface = null Log.debug("[EmulationFragment] Surface destroyed.") when (state) { - State.RUNNING -> { - state = State.PAUSED - } - - State.PAUSED -> Log.warning( + State.PAUSED -> Log.debug( "[EmulationFragment] Surface cleared while emulation paused." ) - else -> Log.warning( + else -> Log.debug( "[EmulationFragment] Surface cleared while emulation stopped." ) } @@ -1641,28 +2359,35 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { } private fun runWithValidSurface(programIndex: Int = 0) { - NativeLibrary.surfaceChanged(surface) if (!emulationCanStart.invoke()) { return } + val currentSurface = surface + if (currentSurface == null || !currentSurface.isValid) { + Log.debug("[EmulationFragment] runWithValidSurface called with invalid surface.") + return + } when (state) { State.STOPPED -> { + NativeLibrary.surfaceChanged(currentSurface) emulationThread = Thread({ Log.debug("[EmulationFragment] Starting emulation thread.") NativeLibrary.run(gamePath, programIndex, true) }, "NativeEmulation") emulationThread.start() + state = State.RUNNING } State.PAUSED -> { - Log.debug("[EmulationFragment] Resuming emulation.") - NativeLibrary.unpauseEmulation() + Log.debug( + "[EmulationFragment] Surface restored while emulation paused; " + + "waiting for explicit resume." + ) } else -> Log.debug("[EmulationFragment] Bug, run called while already running.") } - state = State.RUNNING } private enum class State { @@ -1670,8 +2395,158 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { } } + private enum class AmiiboState(val value: Int) { + Disabled(0), + Initialized(1), + WaitingForAmiibo(2), + TagNearby(3); + + companion object { + fun fromValue(value: Int): AmiiboState = + entries.firstOrNull { it.value == value } ?: Disabled + } + } + + private enum class AmiiboLoadResult(val value: Int) { + Success(0), + UnableToLoad(1), + NotAnAmiibo(2), + WrongDeviceState(3), + Unknown(4); + + companion object { + fun fromValue(value: Int): AmiiboLoadResult = + entries.firstOrNull { it.value == value } ?: Unknown + } + } + companion object { + private val AMIIBO_MIME_TYPES = + arrayOf("application/octet-stream", "application/x-binary", "*/*") private val perfStatsUpdateHandler = Handler(Looper.myLooper()!!) private val socUpdateHandler = Handler(Looper.myLooper()!!) } + + private fun startOverlayAutoHideTimer(seconds: Int) { + handler.removeCallbacksAndMessages(null) + val showInputOverlay = BooleanSetting.SHOW_INPUT_OVERLAY.getBoolean() + + handler.postDelayed({ + if (showInputOverlay && isAdded && _binding != null) { + if (overlayTouchActive) { + startOverlayAutoHideTimer(seconds) + } else { + autoHideOverlay() + } + } + }, seconds * 1000L) + } + + fun handleScreenTap(isLongTap: Boolean) { + if (!isAdded || _binding == null) return + if (binding.surfaceInputOverlay.isGamelessMode()) return + if (!BooleanSetting.ENABLE_INPUT_OVERLAY_AUTO_HIDE.getBoolean()) return + // failsafe + val autoHideSeconds = IntSetting.INPUT_OVERLAY_AUTO_HIDE.getInt() + if (autoHideSeconds == 0) { + toggleOverlay(true) + } else { + val showInputOverlay = BooleanSetting.SHOW_INPUT_OVERLAY.getBoolean() + if (!showInputOverlay && !isLongTap && wasInputOverlayAutoHidden) { + toggleOverlay(true) + } + startOverlayAutoHideTimer(autoHideSeconds) + } + } + + private fun initializeOverlayAutoHide() { + if (!isAdded || _binding == null) return + if (binding.surfaceInputOverlay.isGamelessMode()) return + + val autoHideSeconds = IntSetting.INPUT_OVERLAY_AUTO_HIDE.getInt() + val autoHideEnabled = BooleanSetting.ENABLE_INPUT_OVERLAY_AUTO_HIDE.getBoolean() + val showInputOverlay = BooleanSetting.SHOW_INPUT_OVERLAY.getBoolean() + if (autoHideEnabled && showInputOverlay) { + toggleOverlay(true) + startOverlayAutoHideTimer(autoHideSeconds) + } + + binding.surfaceInputOverlay.touchEventListener = { event -> + when (event.actionMasked) { + MotionEvent.ACTION_DOWN, MotionEvent.ACTION_POINTER_DOWN -> { + overlayTouchActive = true + handler.removeCallbacksAndMessages(null) + } + MotionEvent.ACTION_UP, MotionEvent.ACTION_POINTER_UP -> { + overlayTouchActive = event.pointerCount > 1 + if (!overlayTouchActive) handleScreenTap(isLongTap = false) + } + MotionEvent.ACTION_CANCEL -> { + overlayTouchActive = false + handleScreenTap(isLongTap = false) + } + MotionEvent.ACTION_MOVE -> { + overlayTouchActive = true + } + } + } + } + + private fun autoHideOverlay() { + toggleOverlay(false) + wasInputOverlayAutoHidden = true + } + + fun toggleOverlay(enable: Boolean) { + if (!isAdded || _binding == null) return + if (enable && hasPhysicalControllerConnected && !args.overlayGamelessEditMode) return + if (enable == !BooleanSetting.SHOW_INPUT_OVERLAY.getBoolean()) { + // Reset controller input flag so controller can hide overlay again + if (!enable) { + controllerInputReceived = false + } + if (enable) { + wasInputOverlayAutoHidden = false + } + BooleanSetting.SHOW_INPUT_OVERLAY.setBoolean(enable) + updateQuickOverlayMenuEntry(enable) + binding.surfaceInputOverlay.refreshControls() + } + } + + fun onControllerInputDetected() { + if (!BooleanSetting.HIDE_OVERLAY_ON_CONTROLLER_INPUT.getBoolean()) return + if (!BooleanSetting.SHOW_INPUT_OVERLAY.getBoolean()) return + if (controllerInputReceived) return + controllerInputReceived = true + autoHideOverlay() + } + + fun onControllerConnected() { + onPhysicalControllerStateChanged(InputHandler.androidControllers.isNotEmpty()) + } + + fun onControllerDisconnected() { + onPhysicalControllerStateChanged(InputHandler.androidControllers.isNotEmpty()) + } + + fun onPhysicalControllerStateChanged(hasConnectedControllers: Boolean) { + hasPhysicalControllerConnected = hasConnectedControllers + controllerInputReceived = false + if (!isAdded || _binding == null) return + if (binding.surfaceInputOverlay.isGamelessMode()) return + + if (hasConnectedControllers) { + if (BooleanSetting.SHOW_INPUT_OVERLAY.getBoolean()) { + overlayHiddenByPhysicalController = true + toggleOverlay(false) + } + return + } + + if (overlayHiddenByPhysicalController) { + overlayHiddenByPhysicalController = false + toggleOverlay(true) + } + } } diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/FreedrenoSettingsFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/FreedrenoSettingsFragment.kt new file mode 100644 index 0000000000..2eb77690ca --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/FreedrenoSettingsFragment.kt @@ -0,0 +1,212 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +package org.yuzu.yuzu_emu.fragments + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.updatePadding +import androidx.fragment.app.Fragment +import androidx.navigation.fragment.navArgs +import androidx.recyclerview.widget.LinearLayoutManager +import com.google.android.material.snackbar.Snackbar +import com.google.android.material.transition.MaterialSharedAxis +import org.yuzu.yuzu_emu.R +import org.yuzu.yuzu_emu.adapters.FreedrenoPresetAdapter +import org.yuzu.yuzu_emu.adapters.FreedrenoVariableAdapter +import org.yuzu.yuzu_emu.databinding.FragmentFreedrenoSettingsBinding +import org.yuzu.yuzu_emu.model.Game +import org.yuzu.yuzu_emu.utils.NativeFreedrenoConfig +import org.yuzu.yuzu_emu.utils.FreedrenoPresets +import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins + + +class FreedrenoSettingsFragment : Fragment() { + private var _binding: FragmentFreedrenoSettingsBinding? = null + private val binding get() = _binding!! + private val args by navArgs() + private val game: Game? get() = args.game + private val isPerGameConfig: Boolean get() = game != null + + private lateinit var presetAdapter: FreedrenoPresetAdapter + private lateinit var settingsAdapter: FreedrenoVariableAdapter + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + enterTransition = MaterialSharedAxis(MaterialSharedAxis.X, true) + returnTransition = MaterialSharedAxis(MaterialSharedAxis.X, false) + reenterTransition = MaterialSharedAxis(MaterialSharedAxis.X, false) + exitTransition = MaterialSharedAxis(MaterialSharedAxis.X, true) + } + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + _binding = FragmentFreedrenoSettingsBinding.inflate(layoutInflater, container, false) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + NativeFreedrenoConfig.setFreedrenoBasePath(requireContext().cacheDir.absolutePath) + NativeFreedrenoConfig.initializeFreedrenoConfig() + + if (isPerGameConfig) { + NativeFreedrenoConfig.loadPerGameConfig(game!!.programIdHex) + } else { + NativeFreedrenoConfig.reloadFreedrenoConfig() + } + + setupToolbar() + setupAdapters() + loadCurrentSettings() + setupButtonListeners() + setupWindowInsets() + } + + private fun setupToolbar() { + binding.toolbarFreedreno.setNavigationOnClickListener { + requireActivity().onBackPressedDispatcher.onBackPressed() + } + + binding.toolbarFreedreno.title = getString( + if (isPerGameConfig) { + R.string.freedreno_per_game_title + } else { + R.string.freedreno_settings_title + } + ) + binding.toolbarFreedreno.subtitle = null + } + + private fun setupAdapters() { + // Setup presets adapter (horizontal list) + presetAdapter = FreedrenoPresetAdapter { preset -> + applyPreset(preset) + } + binding.listFreedrenoPresets.apply { + adapter = presetAdapter + layoutManager = LinearLayoutManager(requireContext(), LinearLayoutManager.HORIZONTAL, false) + } + presetAdapter.submitList(FreedrenoPresets.ALL_PRESETS) + + // Setup current settings adapter (vertical list) + settingsAdapter = FreedrenoVariableAdapter(requireContext()) { variable, onDelete -> + onDelete() + loadCurrentSettings() // Refresh list after deletion + } + binding.listFreedrenoSettings.apply { + adapter = settingsAdapter + layoutManager = LinearLayoutManager(requireContext()) + } + } + + private fun loadCurrentSettings() { + // Load all currently set environment variables + val variables = mutableListOf() + + // Common variables to check + val commonVars = listOf( + "TU_DEBUG", "FD_MESA_DEBUG", "IR3_SHADER_DEBUG", + "FD_RD_DUMP", "FD_RD_DUMP_FRAMES", "FD_RD_DUMP_TESTNAME", + "TU_BREADCRUMBS", "FD_DEV_FEATURES" + ) + + for (varName in commonVars) { + if (NativeFreedrenoConfig.isFreedrenoEnvSet(varName)) { + val value = NativeFreedrenoConfig.getFreedrenoEnv(varName) + variables.add(FreedrenoVariable(varName, value)) + } + } + + settingsAdapter.submitList(variables) + } + + private fun setupButtonListeners() { + binding.buttonAddVariable.setOnClickListener { + val varName = binding.variableNameInput.text.toString().trim() + val varValue = binding.variableValueInput.text.toString().trim() + + if (varName.isEmpty()) { + showSnackbar(getString(R.string.freedreno_error_empty_name)) + return@setOnClickListener + } + + if (NativeFreedrenoConfig.setFreedrenoEnv(varName, varValue)) { + showSnackbar(getString(R.string.freedreno_variable_added, varName)) + binding.variableNameInput.text?.clear() + binding.variableValueInput.text?.clear() + loadCurrentSettings() + } else { + showSnackbar(getString(R.string.freedreno_error_setting_variable)) + } + } + + binding.buttonClearAll.setOnClickListener { + NativeFreedrenoConfig.clearAllFreedrenoEnv() + showSnackbar(getString(R.string.freedreno_cleared_all)) + loadCurrentSettings() + } + + binding.buttonSave.setOnClickListener { + if (isPerGameConfig) { + NativeFreedrenoConfig.savePerGameConfig(game!!.programIdHex) + showSnackbar(getString(R.string.freedreno_per_game_saved)) + } else { + NativeFreedrenoConfig.saveFreedrenoConfig() + showSnackbar(getString(R.string.freedreno_saved)) + } + } + } + + private fun applyPreset(preset: org.yuzu.yuzu_emu.utils.FreedrenoPreset) { + // Clear all first for consistency + NativeFreedrenoConfig.clearAllFreedrenoEnv() + + // Apply all variables in the preset + for ((varName, varValue) in preset.variables) { + NativeFreedrenoConfig.setFreedrenoEnv(varName, varValue) + } + + showSnackbar(getString(R.string.freedreno_preset_applied, preset.name)) + loadCurrentSettings() + } + + private fun setupWindowInsets() { + ViewCompat.setOnApplyWindowInsetsListener(binding.root) { _, insets -> + val barInsets = insets.getInsets(WindowInsetsCompat.Type.systemBars()) + val cutoutInsets = insets.getInsets(WindowInsetsCompat.Type.displayCutout()) + + val leftInsets = barInsets.left + cutoutInsets.left + val rightInsets = barInsets.right + cutoutInsets.right + + binding.appbarFreedreno.updateMargins(left = leftInsets, right = rightInsets) + binding.scrollFreedreno.updateMargins(left = leftInsets, right = rightInsets) + binding.scrollFreedreno.updatePadding(bottom = barInsets.bottom) + insets + } + } +private fun showSnackbar(message: String) { + Snackbar.make(binding.root, message, Snackbar.LENGTH_SHORT).show() + } + + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } +} + +/** + * Data class representing a Freedreno environment variable. + */ +data class FreedrenoVariable( + val name: String, + val value: String +) diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GameFolderPropertiesDialogFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GameFolderPropertiesDialogFragment.kt index 1ea1e036e6..ff26ac0d89 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GameFolderPropertiesDialogFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GameFolderPropertiesDialogFragment.kt @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later @@ -6,11 +9,13 @@ package org.yuzu.yuzu_emu.fragments import android.app.Dialog import android.content.DialogInterface import android.os.Bundle +import android.view.View import androidx.fragment.app.DialogFragment import androidx.fragment.app.activityViewModels import com.google.android.material.dialog.MaterialAlertDialogBuilder import org.yuzu.yuzu_emu.R import org.yuzu.yuzu_emu.databinding.DialogFolderPropertiesBinding +import org.yuzu.yuzu_emu.model.DirectoryType import org.yuzu.yuzu_emu.model.GameDir import org.yuzu.yuzu_emu.model.GamesViewModel import org.yuzu.yuzu_emu.utils.NativeConfig @@ -25,14 +30,18 @@ class GameFolderPropertiesDialogFragment : DialogFragment() { val binding = DialogFolderPropertiesBinding.inflate(layoutInflater) val gameDir = requireArguments().parcelable(GAME_DIR)!! - // Restore checkbox state - binding.deepScanSwitch.isChecked = - savedInstanceState?.getBoolean(DEEP_SCAN) ?: gameDir.deepScan + // Hide deepScan for external content, do automatically + if (gameDir.type == DirectoryType.EXTERNAL_CONTENT) { + binding.deepScanSwitch.visibility = View.GONE + } else { + // Restore checkbox state for game dirs + binding.deepScanSwitch.isChecked = + savedInstanceState?.getBoolean(DEEP_SCAN) ?: gameDir.deepScan - // Ensure that we can get the checkbox state even if the view is destroyed - deepScan = binding.deepScanSwitch.isChecked - binding.deepScanSwitch.setOnClickListener { deepScan = binding.deepScanSwitch.isChecked + binding.deepScanSwitch.setOnClickListener { + deepScan = binding.deepScanSwitch.isChecked + } } return MaterialAlertDialogBuilder(requireContext()) @@ -41,8 +50,10 @@ class GameFolderPropertiesDialogFragment : DialogFragment() { .setPositiveButton(android.R.string.ok) { _: DialogInterface, _: Int -> val folderIndex = gamesViewModel.folders.value.indexOf(gameDir) if (folderIndex != -1) { - gamesViewModel.folders.value[folderIndex].deepScan = - binding.deepScanSwitch.isChecked + if (gameDir.type == DirectoryType.GAME) { + gamesViewModel.folders.value[folderIndex].deepScan = + binding.deepScanSwitch.isChecked + } gamesViewModel.updateGameDirs() } } diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GameFoldersFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GameFoldersFragment.kt index 87b1533408..6e05df799b 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GameFoldersFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GameFoldersFragment.kt @@ -1,28 +1,31 @@ -// SPDX-FileCopyrightText: 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later package org.yuzu.yuzu_emu.fragments import android.content.Intent +import android.net.Uri import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.Toast +import androidx.activity.result.contract.ActivityResultContracts import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat import androidx.core.view.updatePadding import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels -import androidx.navigation.findNavController import androidx.recyclerview.widget.GridLayoutManager +import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.transition.MaterialSharedAxis -import kotlinx.coroutines.launch import org.yuzu.yuzu_emu.R import org.yuzu.yuzu_emu.adapters.FolderAdapter import org.yuzu.yuzu_emu.databinding.FragmentFoldersBinding +import org.yuzu.yuzu_emu.model.DirectoryType +import org.yuzu.yuzu_emu.model.GameDir import org.yuzu.yuzu_emu.model.GamesViewModel import org.yuzu.yuzu_emu.model.HomeViewModel -import org.yuzu.yuzu_emu.ui.main.MainActivity import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins import org.yuzu.yuzu_emu.utils.collect @@ -33,6 +36,20 @@ class GameFoldersFragment : Fragment() { private val homeViewModel: HomeViewModel by activityViewModels() private val gamesViewModel: GamesViewModel by activityViewModels() + private val getGamesDirectory = + registerForActivityResult(ActivityResultContracts.OpenDocumentTree()) { result -> + if (result != null) { + processGamesDir(result) + } + } + + private val getExternalContentDirectory = + registerForActivityResult(ActivityResultContracts.OpenDocumentTree()) { result -> + if (result != null) { + processExternalContentDir(result) + } + } + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enterTransition = MaterialSharedAxis(MaterialSharedAxis.X, true) @@ -56,7 +73,7 @@ class GameFoldersFragment : Fragment() { homeViewModel.setStatusBarShadeVisibility(visible = false) binding.toolbarFolders.setNavigationOnClickListener { - binding.root.findNavController().popBackStack() + requireActivity().onBackPressedDispatcher.onBackPressed() } binding.listFolders.apply { @@ -71,9 +88,26 @@ class GameFoldersFragment : Fragment() { (binding.listFolders.adapter as FolderAdapter).submitList(it) } - val mainActivity = requireActivity() as MainActivity binding.buttonAdd.setOnClickListener { - mainActivity.getGamesDirectory.launch(Intent(Intent.ACTION_OPEN_DOCUMENT_TREE).data) + // Show a model to choose between Game and External Content + val options = arrayOf( + getString(R.string.games), + getString(R.string.external_content) + ) + + MaterialAlertDialogBuilder(requireContext()) + .setTitle(R.string.add_folders) + .setItems(options) { _, which -> + when (which) { + 0 -> { // Game Folder + getGamesDirectory.launch(Intent(Intent.ACTION_OPEN_DOCUMENT_TREE).data) + } + 1 -> { // External Content Folder + getExternalContentDirectory.launch(null) + } + } + } + .show() } setInsets() @@ -84,6 +118,50 @@ class GameFoldersFragment : Fragment() { gamesViewModel.onCloseGameFoldersFragment() } + private fun processGamesDir(result: Uri) { + requireContext().contentResolver.takePersistableUriPermission( + result, + Intent.FLAG_GRANT_READ_URI_PERMISSION + ) + + val uriString = result.toString() + val folder = gamesViewModel.folders.value.firstOrNull { it.uriString == uriString } + if (folder != null) { + Toast.makeText( + requireContext().applicationContext, + R.string.folder_already_added, + Toast.LENGTH_SHORT + ).show() + return + } + + AddGameFolderDialogFragment.newInstance(uriString, calledFromGameFragment = false) + .show(parentFragmentManager, AddGameFolderDialogFragment.TAG) + } + + private fun processExternalContentDir(result: Uri) { + requireContext().contentResolver.takePersistableUriPermission( + result, + Intent.FLAG_GRANT_READ_URI_PERMISSION + ) + + val uriString = result.toString() + val folder = gamesViewModel.folders.value.firstOrNull { + it.uriString == uriString && it.type == DirectoryType.EXTERNAL_CONTENT + } + if (folder != null) { + Toast.makeText( + requireContext().applicationContext, + R.string.folder_already_added, + Toast.LENGTH_SHORT + ).show() + return + } + + val externalContentDir = GameDir(uriString, deepScan = false, DirectoryType.EXTERNAL_CONTENT) + gamesViewModel.addFolder(externalContentDir, savedFromGameFragment = false) + } + private fun setInsets() = ViewCompat.setOnApplyWindowInsetsListener( binding.root diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GameInfoFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GameInfoFragment.kt index 7863e40ff5..5d6238e5a1 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GameInfoFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GameInfoFragment.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later package org.yuzu.yuzu_emu.fragments @@ -18,7 +18,6 @@ import androidx.core.view.WindowInsetsCompat import androidx.core.view.updatePadding import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels -import androidx.navigation.findNavController import androidx.navigation.fragment.navArgs import com.google.android.material.transition.MaterialSharedAxis import org.yuzu.yuzu_emu.NativeLibrary @@ -64,7 +63,7 @@ class GameInfoFragment : Fragment() { binding.apply { toolbarInfo.title = args.game.title toolbarInfo.setNavigationOnClickListener { - view.findNavController().popBackStack() + requireActivity().onBackPressedDispatcher.onBackPressed() } val pathString = Uri.parse(args.game.path).path ?: "" 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 f55edb418e..c3dea79bae 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 @@ -1,11 +1,13 @@ -// SPDX-FileCopyrightText: 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later package org.yuzu.yuzu_emu.fragments +import android.content.Intent import android.content.pm.ShortcutInfo import android.content.pm.ShortcutManager import android.os.Bundle +import android.provider.DocumentsContract import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -14,31 +16,38 @@ import androidx.activity.result.contract.ActivityResultContracts import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat import androidx.core.view.updatePadding +import androidx.documentfile.provider.DocumentFile import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.lifecycle.lifecycleScope import androidx.navigation.findNavController import androidx.navigation.fragment.navArgs -import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.StaggeredGridLayoutManager import com.google.android.material.transition.MaterialSharedAxis import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext 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.adapters.GamePropertiesAdapter import org.yuzu.yuzu_emu.databinding.FragmentGamePropertiesBinding +import org.yuzu.yuzu_emu.features.DocumentProvider import org.yuzu.yuzu_emu.features.settings.model.Settings +import org.yuzu.yuzu_emu.features.settings.ui.SettingsSubscreen +import org.yuzu.yuzu_emu.model.AddonViewModel import org.yuzu.yuzu_emu.model.DriverViewModel import org.yuzu.yuzu_emu.model.GameProperty import org.yuzu.yuzu_emu.model.GamesViewModel import org.yuzu.yuzu_emu.model.HomeViewModel import org.yuzu.yuzu_emu.model.InstallableProperty +import org.yuzu.yuzu_emu.model.SubMenuPropertySecondaryAction import org.yuzu.yuzu_emu.model.SubmenuProperty import org.yuzu.yuzu_emu.model.TaskState import org.yuzu.yuzu_emu.utils.DirectoryInitialization import org.yuzu.yuzu_emu.utils.FileUtil +import org.yuzu.yuzu_emu.utils.GameHelper import org.yuzu.yuzu_emu.utils.GameIconUtils import org.yuzu.yuzu_emu.utils.GpuDriverHelper import org.yuzu.yuzu_emu.utils.MemoryUtil @@ -54,6 +63,7 @@ class GamePropertiesFragment : Fragment() { private val homeViewModel: HomeViewModel by activityViewModels() private val gamesViewModel: GamesViewModel by activityViewModels() + private val addonViewModel: AddonViewModel by activityViewModels() private val driverViewModel: DriverViewModel by activityViewModels() private val args by navArgs() @@ -104,11 +114,27 @@ class GamePropertiesFragment : Fragment() { binding.title.text = args.game.title binding.title.marquee() + getPlayTime() + binding.buttonStart.setOnClickListener { LaunchGameDialogFragment.newInstance(args.game) .show(childFragmentManager, LaunchGameDialogFragment.TAG) } + if (GameHelper.cachedGameList.isEmpty()) { + binding.buttonStart.isEnabled = false + viewLifecycleOwner.lifecycleScope.launch { + withContext(Dispatchers.IO) { + GameHelper.restoreContentForGame(args.game) + } + if (_binding == null) { + return@launch + } + addonViewModel.onAddonsViewStarted(args.game) + binding.buttonStart.isEnabled = true + } + } + reloadList() homeViewModel.openImportSaves.collect( @@ -124,8 +150,114 @@ class GamePropertiesFragment : Fragment() { } override fun onDestroy() { + val isChangingConfigurations = activity?.isChangingConfigurations == true super.onDestroy() - gamesViewModel.reloadGames(true) + if (!isChangingConfigurations) { + gamesViewModel.reloadGames(true) + } + } + + private fun getPlayTime() { + binding.playtime.text = buildString { + val playTimeSeconds = NativeLibrary.playTimeManagerGetPlayTime(args.game.programId) + + val hours = playTimeSeconds / 3600 + val minutes = (playTimeSeconds % 3600) / 60 + val seconds = playTimeSeconds % 60 + + val readablePlayTime = when { + hours > 0 -> "$hours${getString(R.string.hours_abbr)} $minutes${getString(R.string.minutes_abbr)} $seconds${getString(R.string.seconds_abbr)}" + minutes > 0 -> "$minutes${getString(R.string.minutes_abbr)} $seconds${getString(R.string.seconds_abbr)}" + else -> "$seconds${getString(R.string.seconds_abbr)}" +} + + append(getString(R.string.playtime) + " " + readablePlayTime) + } + + binding.playtime.setOnClickListener { + showEditPlaytimeDialog() + } + } + + private fun showEditPlaytimeDialog() { + val dialogView = layoutInflater.inflate(R.layout.dialog_edit_playtime, null) + val hoursLayout = + dialogView.findViewById(R.id.layout_hours) + val minutesLayout = + dialogView.findViewById(R.id.layout_minutes) + val secondsLayout = + dialogView.findViewById(R.id.layout_seconds) + val hoursInput = + dialogView.findViewById(R.id.input_hours) + val minutesInput = + dialogView.findViewById(R.id.input_minutes) + val secondsInput = + dialogView.findViewById(R.id.input_seconds) + + val playTimeSeconds = NativeLibrary.playTimeManagerGetPlayTime(args.game.programId) + val hours = playTimeSeconds / 3600 + val minutes = (playTimeSeconds % 3600) / 60 + val seconds = playTimeSeconds % 60 + + hoursInput.setText(hours.toString()) + minutesInput.setText(minutes.toString()) + secondsInput.setText(seconds.toString()) + + val dialog = com.google.android.material.dialog.MaterialAlertDialogBuilder(requireContext()) + .setTitle(R.string.edit_playtime) + .setView(dialogView) + .setPositiveButton(android.R.string.ok, null) + .setNegativeButton(android.R.string.cancel, null) + .create() + + dialog.setOnShowListener { + val positiveButton = dialog.getButton(android.app.AlertDialog.BUTTON_POSITIVE) + positiveButton.setOnClickListener { + hoursLayout.error = null + minutesLayout.error = null + secondsLayout.error = null + + val hoursText = hoursInput.text.toString() + val minutesText = minutesInput.text.toString() + val secondsText = secondsInput.text.toString() + + val hoursValue = hoursText.toLongOrNull() ?: 0 + val minutesValue = minutesText.toLongOrNull() ?: 0 + val secondsValue = secondsText.toLongOrNull() ?: 0 + + var hasError = false + + // normally cant be above 9999 + if (hoursValue < 0 || hoursValue > 9999) { + hoursLayout.error = getString(R.string.hours_must_be_between_0_and_9999) + hasError = true + } + + if (minutesValue < 0 || minutesValue > 59) { + minutesLayout.error = getString(R.string.minutes_must_be_between_0_and_59) + hasError = true + } + + if (secondsValue < 0 || secondsValue > 59) { + secondsLayout.error = getString(R.string.seconds_must_be_between_0_and_59) + hasError = true + } + + if (!hasError) { + val totalSeconds = hoursValue * 3600 + minutesValue * 60 + secondsValue + NativeLibrary.playTimeManagerSetPlayTime(args.game.programId, totalSeconds) + getPlayTime() + Toast.makeText( + requireContext(), + R.string.playtime_updated_successfully, + Toast.LENGTH_SHORT + ).show() + dialog.dismiss() + } + } + } + + dialog.show() } private fun reloadList() { @@ -137,54 +269,125 @@ class GamePropertiesFragment : Fragment() { SubmenuProperty( R.string.info, R.string.info_description, - R.drawable.ic_info_outline - ) { - val action = GamePropertiesFragmentDirections - .actionPerGamePropertiesFragmentToGameInfoFragment(args.game) - binding.root.findNavController().navigate(action) - } + R.drawable.ic_info_outline, + action = { + val action = HomeNavigationDirections.actionGlobalSettingsSubscreenActivity( + SettingsSubscreen.GAME_INFO, + args.game + ) + binding.root.findNavController().navigate(action) + } + ) ) add( SubmenuProperty( R.string.preferences_settings, R.string.per_game_settings_description, - R.drawable.ic_settings - ) { - val action = HomeNavigationDirections.actionGlobalSettingsActivity( - args.game, - Settings.MenuTag.SECTION_ROOT - ) - binding.root.findNavController().navigate(action) - } + R.drawable.ic_settings, + action = { + val action = HomeNavigationDirections.actionGlobalSettingsActivity( + args.game, + Settings.MenuTag.SECTION_ROOT + ) + binding.root.findNavController().navigate(action) + }, + secondaryActions = buildList { + val configExists = File( + DirectoryInitialization.userDirectory + + "/config/custom/" + args.game.settingsName + ".ini" + ).exists() + + add(SubMenuPropertySecondaryAction( + isShown = configExists, + descriptionId = R.string.import_config, + iconId = R.drawable.ic_import, + action = { + importConfig.launch(arrayOf("text/ini", "application/octet-stream")) + } + )) + + add(SubMenuPropertySecondaryAction( + isShown = configExists, + descriptionId = R.string.export_config, + iconId = R.drawable.ic_export, + action = { + exportConfig.launch(args.game.settingsName + ".ini") + } + )) + + add(SubMenuPropertySecondaryAction( + isShown = configExists, + descriptionId = R.string.share_game_settings, + iconId = R.drawable.ic_share, + action = { + val configFile = File( + DirectoryInitialization.userDirectory + + "/config/custom/" + args.game.settingsName + ".ini" + ) + if (configFile.exists()) { + shareConfigFile(configFile) + } + } + )) + } + ) ) + if (!args.game.isHomebrew) { + add( + SubmenuProperty( + R.string.add_ons, + R.string.add_ons_description, + R.drawable.ic_edit, + action = { + val action = + HomeNavigationDirections.actionGlobalSettingsSubscreenActivity( + SettingsSubscreen.ADDONS, + args.game + ) + binding.root.findNavController().navigate(action) + } + ) + ) + } + if (GpuDriverHelper.supportsCustomDriverLoading()) { add( SubmenuProperty( R.string.gpu_driver_manager, R.string.install_gpu_driver_description, R.drawable.ic_build, - detailsFlow = driverViewModel.selectedDriverTitle - ) { - val action = GamePropertiesFragmentDirections - .actionPerGamePropertiesFragmentToDriverManagerFragment(args.game) - binding.root.findNavController().navigate(action) - } + detailsFlow = driverViewModel.selectedDriverTitle, + action = { + val action = + HomeNavigationDirections.actionGlobalSettingsSubscreenActivity( + SettingsSubscreen.DRIVER_MANAGER, + args.game + ) + binding.root.findNavController().navigate(action) + } + ) + ) + } + if (GpuDriverHelper.isAdrenoGpu()) { + add( + SubmenuProperty( + R.string.freedreno_per_game_title, + R.string.freedreno_per_game_description, + R.drawable.ic_graphics, + action = { + val action = + HomeNavigationDirections.actionGlobalSettingsSubscreenActivity( + SettingsSubscreen.FREEDRENO_SETTINGS, + args.game + ) + binding.root.findNavController().navigate(action) + } + ) ) } if (!args.game.isHomebrew) { - add( - SubmenuProperty( - R.string.add_ons, - R.string.add_ons_description, - R.drawable.ic_edit - ) { - val action = GamePropertiesFragmentDirections - .actionPerGamePropertiesFragmentToAddonsFragment(args.game) - binding.root.findNavController().navigate(action) - } - ) add( InstallableProperty( R.string.save_data, @@ -245,7 +448,7 @@ class GamePropertiesFragment : Fragment() { R.string.clear_shader_cache, R.string.clear_shader_cache_description, R.drawable.ic_delete, - { + details = { if (shaderCacheDir.exists()) { val bytes = shaderCacheDir.walkTopDown().filter { it.isFile } .map { it.length() }.sum() @@ -253,30 +456,63 @@ class GamePropertiesFragment : Fragment() { } else { MemoryUtil.bytesToSizeUnit(0f) } + }, + action = { + MessageDialogFragment.newInstance( + requireActivity(), + titleId = R.string.clear_shader_cache, + descriptionId = R.string.clear_shader_cache_warning_description, + positiveAction = { + shaderCacheDir.deleteRecursively() + Toast.makeText( + YuzuApplication.appContext, + R.string.cleared_shaders_successfully, + Toast.LENGTH_SHORT + ).show() + homeViewModel.reloadPropertiesList(true) + } + ).show(parentFragmentManager, MessageDialogFragment.TAG) } - ) { - MessageDialogFragment.newInstance( - requireActivity(), - titleId = R.string.clear_shader_cache, - descriptionId = R.string.clear_shader_cache_warning_description, - positiveAction = { - shaderCacheDir.deleteRecursively() - Toast.makeText( - YuzuApplication.appContext, - R.string.cleared_shaders_successfully, - Toast.LENGTH_SHORT - ).show() - homeViewModel.reloadPropertiesList(true) - } - ).show(parentFragmentManager, MessageDialogFragment.TAG) - } + ) + ) + } + if (NativeLibrary.playTimeManagerGetPlayTime(args.game.programId) > 0) { + add( + SubmenuProperty( + R.string.reset_playtime, + R.string.reset_playtime_description, + R.drawable.ic_delete, + action = { + MessageDialogFragment.newInstance( + requireActivity(), + titleId = R.string.reset_playtime, + descriptionId = R.string.reset_playtime_warning_description, + positiveAction = { + NativeLibrary.playTimeManagerResetProgramPlayTime(args.game.programId) + Toast.makeText( + YuzuApplication.appContext, + R.string.playtime_reset_successfully, + Toast.LENGTH_SHORT + ).show() + getPlayTime() + homeViewModel.reloadPropertiesList(true) + } + ).show(parentFragmentManager, MessageDialogFragment.TAG) + } + ) ) } } } binding.listProperties.apply { - layoutManager = - GridLayoutManager(requireContext(), resources.getInteger(R.integer.grid_columns)) + val spanCount = resources.getInteger(R.integer.grid_columns) + val staggered = StaggeredGridLayoutManager( + spanCount, + StaggeredGridLayoutManager.VERTICAL + ).apply { + gapStrategy = StaggeredGridLayoutManager.GAP_HANDLING_MOVE_ITEMS_BETWEEN_SPANS + } + layoutManager = staggered adapter = GamePropertiesAdapter(viewLifecycleOwner, properties) } } @@ -284,6 +520,8 @@ class GamePropertiesFragment : Fragment() { override fun onResume() { super.onResume() driverViewModel.updateDriverNameForGame(args.game) + getPlayTime() + reloadList() } private fun setInsets() = @@ -420,4 +658,89 @@ class GamePropertiesFragment : Fragment() { } }.show(parentFragmentManager, ProgressDialogFragment.TAG) } + + /** + * Imports an ini file from external storage to internal app directory and override per-game config + */ + private val importConfig = registerForActivityResult( + ActivityResultContracts.OpenDocument() + ) { result -> + if (result == null) { + return@registerForActivityResult + } + + val iniResult = FileUtil.copyUriToInternalStorage( + sourceUri = result, + destinationParentPath = + DirectoryInitialization.userDirectory + "/config/custom/", + destinationFilename = args.game.settingsName + ".ini" + ) + if (iniResult?.exists() == true) { + Toast.makeText( + requireContext(), + getString(R.string.import_success), + Toast.LENGTH_SHORT + ).show() + homeViewModel.reloadPropertiesList(true) + } else { + Toast.makeText( + requireContext(), + getString(R.string.import_failed), + Toast.LENGTH_SHORT + ).show() + } + } + + /** + * Exports game's config ini to the specified location in external storage + */ + private val exportConfig = registerForActivityResult( + ActivityResultContracts.CreateDocument("text/ini") + ) { result -> + if (result == null) { + return@registerForActivityResult + } + + ProgressDialogFragment.newInstance( + requireActivity(), + R.string.save_files_exporting, + false + ) { _, _ -> + val configLocation = DirectoryInitialization.userDirectory + + "/config/custom/" + args.game.settingsName + ".ini" + + val iniResult = FileUtil.copyToExternalStorage( + sourcePath = configLocation, + destUri = result + ) + return@newInstance when (iniResult) { + TaskState.Completed -> getString(R.string.export_success) + TaskState.Cancelled, TaskState.Failed -> getString(R.string.export_failed) + } + }.show(parentFragmentManager, ProgressDialogFragment.TAG) + } + + private fun shareConfigFile(configFile: File) { + val file = DocumentFile.fromSingleUri( + requireContext(), + DocumentsContract.buildDocumentUri( + DocumentProvider.AUTHORITY, + "${DocumentProvider.ROOT_ID}/${configFile}" + ) + )!! + + val intent = Intent(Intent.ACTION_SEND) + .setDataAndType(file.uri, FileUtil.TEXT_PLAIN) + .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) + if (file.exists()) { + intent.putExtra(Intent.EXTRA_STREAM, file.uri) + startActivity(Intent.createChooser(intent, getText(R.string.share_game_settings))) + } else { + Toast.makeText( + requireContext(), + getText(R.string.share_config_failed), + Toast.LENGTH_SHORT + ).show() + } + } } diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/HomeSettingsFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/HomeSettingsFragment.kt index 5763f3120f..37eda22c69 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/HomeSettingsFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/HomeSettingsFragment.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later package org.yuzu.yuzu_emu.fragments @@ -36,12 +36,15 @@ import org.yuzu.yuzu_emu.databinding.FragmentHomeSettingsBinding import org.yuzu.yuzu_emu.features.DocumentProvider import org.yuzu.yuzu_emu.features.fetcher.SpacingItemDecoration import org.yuzu.yuzu_emu.features.settings.model.Settings +import org.yuzu.yuzu_emu.features.settings.ui.SettingsSubscreen import org.yuzu.yuzu_emu.model.DriverViewModel import org.yuzu.yuzu_emu.model.HomeSetting import org.yuzu.yuzu_emu.model.HomeViewModel import org.yuzu.yuzu_emu.ui.main.MainActivity import org.yuzu.yuzu_emu.utils.FileUtil +import org.yuzu.yuzu_emu.utils.GpuDriverHelper import org.yuzu.yuzu_emu.utils.Log +import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins class HomeSettingsFragment : Fragment() { private var _binding: FragmentHomeSettingsBinding? = null @@ -68,8 +71,12 @@ class HomeSettingsFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - homeViewModel.setStatusBarShadeVisibility(visible = true) + homeViewModel.setStatusBarShadeVisibility(visible = false) mainActivity = requireActivity() as MainActivity + binding.toolbarHomeSettings.setNavigationOnClickListener { + findNavController().popBackStack() + } + binding.toolbarHomeSettings.title = getString(R.string.preferences_settings) val optionsList: MutableList = mutableListOf().apply { add( @@ -86,6 +93,20 @@ class HomeSettingsFragment : Fragment() { } ) ) + add( + HomeSetting( + R.string.app_settings, + R.string.app_settings_description, + R.drawable.ic_palette, + { + val action = HomeNavigationDirections.actionGlobalSettingsActivity( + null, + Settings.MenuTag.SECTION_APP_SETTINGS + ) + binding.root.findNavController().navigate(action) + } + ) + ) add( HomeSetting( R.string.preferences_controls, @@ -100,14 +121,30 @@ class HomeSettingsFragment : Fragment() { } ) ) + add( + HomeSetting( + R.string.profile_manager, + R.string.profile_manager_description, + R.drawable.ic_account_circle, + { + val action = HomeNavigationDirections.actionGlobalSettingsSubscreenActivity( + SettingsSubscreen.PROFILE_MANAGER, + null + ) + binding.root.findNavController().navigate(action) + } + ) + ) add( HomeSetting( R.string.gpu_driver_manager, R.string.install_gpu_driver_description, R.drawable.ic_build, { - val action = HomeSettingsFragmentDirections - .actionHomeSettingsFragmentToDriverManagerFragment(null) + val action = HomeNavigationDirections.actionGlobalSettingsSubscreenActivity( + SettingsSubscreen.DRIVER_MANAGER, + null + ) binding.root.findNavController().navigate(action) }, { true }, @@ -116,6 +153,23 @@ class HomeSettingsFragment : Fragment() { driverViewModel.selectedDriverTitle ) ) + if (GpuDriverHelper.isAdrenoGpu()) { + add( + HomeSetting( + R.string.freedreno_settings_title, + R.string.gpu_driver_settings, + R.drawable.ic_graphics, + { + val action = + HomeNavigationDirections.actionGlobalSettingsSubscreenActivity( + SettingsSubscreen.FREEDRENO_SETTINGS, + null + ) + binding.root.findNavController().navigate(action) + } + ) + ) + } add( HomeSetting( R.string.multiplayer, @@ -132,8 +186,11 @@ class HomeSettingsFragment : Fragment() { R.string.applets_description, R.drawable.ic_applet, { - binding.root.findNavController() - .navigate(R.id.action_homeSettingsFragment_to_appletLauncherFragment) + val action = HomeNavigationDirections.actionGlobalSettingsSubscreenActivity( + SettingsSubscreen.APPLET_LAUNCHER, + null + ) + binding.root.findNavController().navigate(action) }, { NativeLibrary.isFirmwareAvailable() }, R.string.applets_error_firmware, @@ -146,8 +203,11 @@ class HomeSettingsFragment : Fragment() { R.string.manage_yuzu_data_description, R.drawable.ic_install, { - binding.root.findNavController() - .navigate(R.id.action_homeSettingsFragment_to_installableFragment) + val action = HomeNavigationDirections.actionGlobalSettingsSubscreenActivity( + SettingsSubscreen.INSTALLABLE, + null + ) + binding.root.findNavController().navigate(action) } ) ) @@ -157,8 +217,11 @@ class HomeSettingsFragment : Fragment() { R.string.select_games_folder_description, R.drawable.ic_add, { - binding.root.findNavController() - .navigate(R.id.action_homeSettingsFragment_to_gameFoldersFragment) + val action = HomeNavigationDirections.actionGlobalSettingsSubscreenActivity( + SettingsSubscreen.GAME_FOLDERS, + null + ) + binding.root.findNavController().navigate(action) } ) ) @@ -208,6 +271,14 @@ class HomeSettingsFragment : Fragment() { { shareLog() } ) ) + add( + HomeSetting( + R.string.share_gpu_log, + R.string.share_gpu_log_description, + R.drawable.ic_log, + { shareGpuLog() } + ) + ) add( HomeSetting( R.string.open_user_folder, @@ -218,15 +289,12 @@ class HomeSettingsFragment : Fragment() { ) add( HomeSetting( - R.string.preferences_theme, - R.string.theme_and_color_description, - R.drawable.ic_palette, + R.string.system_information, + R.string.system_information_description, + R.drawable.ic_system, { - val action = HomeNavigationDirections.actionGlobalSettingsActivity( - null, - Settings.MenuTag.SECTION_THEME - ) - binding.root.findNavController().navigate(action) + SystemInfoDialogFragment.newInstance() + .show(parentFragmentManager, SystemInfoDialogFragment.TAG) } ) ) @@ -236,9 +304,11 @@ class HomeSettingsFragment : Fragment() { R.string.about_description, R.drawable.ic_info_outline, { - exitTransition = MaterialSharedAxis(MaterialSharedAxis.X, true) - parentFragmentManager.primaryNavigationFragment?.findNavController() - ?.navigate(R.id.action_homeSettingsFragment_to_aboutFragment) + val action = HomeNavigationDirections.actionGlobalSettingsSubscreenActivity( + SettingsSubscreen.ABOUT, + null + ) + binding.root.findNavController().navigate(action) } ) ) @@ -397,20 +467,57 @@ class HomeSettingsFragment : Fragment() { } } + private fun shareGpuLog() { + val currentLog = DocumentFile.fromSingleUri( + mainActivity, + DocumentsContract.buildDocumentUri( + DocumentProvider.AUTHORITY, + "${DocumentProvider.ROOT_ID}/log/eden_gpu.log" + ) + )!! + val oldLog = DocumentFile.fromSingleUri( + mainActivity, + DocumentsContract.buildDocumentUri( + DocumentProvider.AUTHORITY, + "${DocumentProvider.ROOT_ID}/log/eden_gpu.log.old.txt" + ) + )!! + + val intent = Intent(Intent.ACTION_SEND) + .setDataAndType(currentLog.uri, FileUtil.TEXT_PLAIN) + .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) + if (!Log.gameLaunched && oldLog.exists()) { + intent.putExtra(Intent.EXTRA_STREAM, oldLog.uri) + startActivity(Intent.createChooser(intent, getText(R.string.share_gpu_log))) + } else if (currentLog.exists()) { + intent.putExtra(Intent.EXTRA_STREAM, currentLog.uri) + startActivity(Intent.createChooser(intent, getText(R.string.share_gpu_log))) + } else { + Toast.makeText( + requireContext(), + getText(R.string.share_gpu_log_missing), + Toast.LENGTH_SHORT + ).show() + } + } + private fun setInsets() = - ViewCompat.setOnApplyWindowInsetsListener(binding.root) { view, windowInsets -> + ViewCompat.setOnApplyWindowInsetsListener(binding.root) { _, windowInsets -> val barInsets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) val cutoutInsets = windowInsets.getInsets(WindowInsetsCompat.Type.displayCutout()) + binding.appbarHomeSettings.updateMargins( + left = barInsets.left + cutoutInsets.left, + right = barInsets.right + cutoutInsets.right + ) + binding.scrollViewSettings.updatePadding( - top = barInsets.top + bottom = barInsets.bottom ) binding.homeSettingsList.updatePadding( left = barInsets.left + cutoutInsets.left, - top = cutoutInsets.top, - right = barInsets.right + cutoutInsets.right, - bottom = barInsets.bottom + right = barInsets.right + cutoutInsets.right ) windowInsets diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/InstallableFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/InstallableFragment.kt index c02411d1bb..6510c069e3 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/InstallableFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/InstallableFragment.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later package org.yuzu.yuzu_emu.fragments @@ -14,23 +14,24 @@ import androidx.core.view.WindowInsetsCompat import androidx.core.view.updatePadding import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels -import androidx.navigation.findNavController import androidx.recyclerview.widget.GridLayoutManager import com.google.android.material.transition.MaterialSharedAxis import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import org.yuzu.yuzu_emu.NativeLibrary import org.yuzu.yuzu_emu.R import org.yuzu.yuzu_emu.YuzuApplication import org.yuzu.yuzu_emu.adapters.InstallableAdapter import org.yuzu.yuzu_emu.databinding.FragmentInstallablesBinding +import org.yuzu.yuzu_emu.model.AddonViewModel +import org.yuzu.yuzu_emu.model.DriverViewModel +import org.yuzu.yuzu_emu.model.GamesViewModel import org.yuzu.yuzu_emu.model.HomeViewModel import org.yuzu.yuzu_emu.model.Installable import org.yuzu.yuzu_emu.model.TaskState -import org.yuzu.yuzu_emu.ui.main.MainActivity -import org.yuzu.yuzu_emu.utils.DirectoryInitialization import org.yuzu.yuzu_emu.utils.FileUtil +import org.yuzu.yuzu_emu.utils.InstallableActions +import org.yuzu.yuzu_emu.utils.NativeConfig import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins import org.yuzu.yuzu_emu.utils.collect import java.io.BufferedOutputStream @@ -44,6 +45,9 @@ class InstallableFragment : Fragment() { private val binding get() = _binding!! private val homeViewModel: HomeViewModel by activityViewModels() + private val gamesViewModel: GamesViewModel by activityViewModels() + private val addonViewModel: AddonViewModel by activityViewModels() + private val driverViewModel: DriverViewModel by activityViewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -64,12 +68,10 @@ class InstallableFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - val mainActivity = requireActivity() as MainActivity - homeViewModel.setStatusBarShadeVisibility(visible = false) binding.toolbarInstallables.setNavigationOnClickListener { - binding.root.findNavController().popBackStack() + requireActivity().onBackPressedDispatcher.onBackPressed() } homeViewModel.openImportSaves.collect(viewLifecycleOwner) { @@ -83,8 +85,8 @@ class InstallableFragment : Fragment() { Installable( R.string.user_data, R.string.user_data_description, - install = { mainActivity.importUserData.launch(arrayOf("application/zip")) }, - export = { mainActivity.exportUserData.launch("export.zip") } + install = { importUserDataLauncher.launch(arrayOf("application/zip")) }, + export = { exportUserDataLauncher.launch("export.zip") } ), Installable( R.string.manage_save_data, @@ -99,11 +101,11 @@ class InstallableFragment : Fragment() { }, export = { val oldSaveDataFolder = File( - "${DirectoryInitialization.userDirectory}/nand" + + NativeConfig.getSaveDir() + NativeLibrary.getDefaultProfileSaveDataRoot(false) ) val futureSaveDataFolder = File( - "${DirectoryInitialization.userDirectory}/nand" + + NativeConfig.getSaveDir() + NativeLibrary.getDefaultProfileSaveDataRoot(true) ) if (!oldSaveDataFolder.exists() && !futureSaveDataFolder.exists()) { @@ -126,27 +128,33 @@ class InstallableFragment : Fragment() { Installable( R.string.install_game_content, R.string.install_game_content_description, - install = { mainActivity.installGameUpdate.launch(arrayOf("*/*")) } + install = { installGameUpdateLauncher.launch(arrayOf("*/*")) } ), Installable( R.string.install_firmware, R.string.install_firmware_description, - install = { mainActivity.getFirmware.launch(arrayOf("application/zip")) } + install = { getFirmwareLauncher.launch(arrayOf("application/zip")) } ), Installable( R.string.uninstall_firmware, R.string.uninstall_firmware_description, - install = { mainActivity.uninstallFirmware() } + install = { + InstallableActions.uninstallFirmware( + activity = requireActivity(), + fragmentManager = parentFragmentManager, + homeViewModel = homeViewModel + ) + } ), Installable( R.string.install_prod_keys, R.string.install_prod_keys_description, - install = { mainActivity.getProdKey.launch(arrayOf("*/*")) } + install = { getProdKeyLauncher.launch(arrayOf("*/*")) } ), Installable( R.string.install_amiibo_keys, R.string.install_amiibo_keys_description, - install = { mainActivity.getAmiiboKey.launch(arrayOf("*/*")) } + install = { getAmiiboKeyLauncher.launch(arrayOf("*/*")) } ) ) @@ -179,6 +187,79 @@ class InstallableFragment : Fragment() { windowInsets } + private val getProdKeyLauncher = + registerForActivityResult(ActivityResultContracts.OpenDocument()) { result -> + if (result != null) { + InstallableActions.processKey( + activity = requireActivity(), + fragmentManager = parentFragmentManager, + gamesViewModel = gamesViewModel, + result = result, + extension = "keys" + ) + } + } + + private val getAmiiboKeyLauncher = + registerForActivityResult(ActivityResultContracts.OpenDocument()) { result -> + if (result != null) { + InstallableActions.processKey( + activity = requireActivity(), + fragmentManager = parentFragmentManager, + gamesViewModel = gamesViewModel, + result = result, + extension = "bin" + ) + } + } + + private val getFirmwareLauncher = + registerForActivityResult(ActivityResultContracts.OpenDocument()) { result -> + if (result != null) { + InstallableActions.processFirmware( + activity = requireActivity(), + fragmentManager = parentFragmentManager, + homeViewModel = homeViewModel, + result = result + ) + } + } + + private val installGameUpdateLauncher = + registerForActivityResult(ActivityResultContracts.OpenMultipleDocuments()) { documents -> + InstallableActions.verifyAndInstallContent( + activity = requireActivity(), + fragmentManager = parentFragmentManager, + addonViewModel = addonViewModel, + documents = documents, + programId = addonViewModel.game?.programId + ) + } + + private val importUserDataLauncher = + registerForActivityResult(ActivityResultContracts.OpenDocument()) { result -> + if (result != null) { + InstallableActions.importUserData( + activity = requireActivity(), + fragmentManager = parentFragmentManager, + gamesViewModel = gamesViewModel, + driverViewModel = driverViewModel, + result = result + ) + } + } + + private val exportUserDataLauncher = + registerForActivityResult(ActivityResultContracts.CreateDocument("application/zip")) { result -> + if (result != null) { + InstallableActions.exportUserData( + activity = requireActivity(), + fragmentManager = parentFragmentManager, + result = result + ) + } + } + private val importSaves = registerForActivityResult(ActivityResultContracts.OpenDocument()) { result -> if (result == null) { @@ -213,7 +294,7 @@ class InstallableFragment : Fragment() { } val internalSaveFolder = File( - "${DirectoryInitialization.userDirectory}/nand$baseSaveDir" + "${NativeConfig.getSaveDir()}$baseSaveDir" ) internalSaveFolder.deleteRecursively() internalSaveFolder.mkdir() @@ -290,7 +371,7 @@ class InstallableFragment : Fragment() { cacheSaveDir.mkdir() val oldSaveDataFolder = File( - "${DirectoryInitialization.userDirectory}/nand" + + NativeConfig.getSaveDir() + NativeLibrary.getDefaultProfileSaveDataRoot(false) ) if (oldSaveDataFolder.exists()) { @@ -298,7 +379,7 @@ class InstallableFragment : Fragment() { } val futureSaveDataFolder = File( - "${DirectoryInitialization.userDirectory}/nand" + + NativeConfig.getSaveDir() + NativeLibrary.getDefaultProfileSaveDataRoot(true) ) if (futureSaveDataFolder.exists()) { diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/LicensesFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/LicensesFragment.kt index aa18aa2482..32b72fe38f 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/LicensesFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/LicensesFragment.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later package org.yuzu.yuzu_emu.fragments @@ -13,7 +13,6 @@ import androidx.core.view.WindowInsetsCompat import androidx.core.view.updatePadding import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels -import androidx.navigation.findNavController import androidx.recyclerview.widget.LinearLayoutManager import com.google.android.material.transition.MaterialSharedAxis import org.yuzu.yuzu_emu.R @@ -48,7 +47,7 @@ class LicensesFragment : Fragment() { homeViewModel.setStatusBarShadeVisibility(visible = false) binding.toolbarLicenses.setNavigationOnClickListener { - binding.root.findNavController().popBackStack() + requireActivity().onBackPressedDispatcher.onBackPressed() } val licenses = listOf( diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/ProfileManagerFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/ProfileManagerFragment.kt new file mode 100644 index 0000000000..bd37c4c9c7 --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/ProfileManagerFragment.kt @@ -0,0 +1,200 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +package org.yuzu.yuzu_emu.fragments + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.updatePadding +import androidx.fragment.app.Fragment +import androidx.fragment.app.activityViewModels +import androidx.navigation.fragment.findNavController +import androidx.recyclerview.widget.LinearLayoutManager +import com.google.android.material.dialog.MaterialAlertDialogBuilder +import com.google.android.material.transition.MaterialSharedAxis +import org.yuzu.yuzu_emu.NativeLibrary +import org.yuzu.yuzu_emu.R +import org.yuzu.yuzu_emu.adapters.ProfileAdapter +import org.yuzu.yuzu_emu.databinding.FragmentProfileManagerBinding +import org.yuzu.yuzu_emu.model.HomeViewModel +import org.yuzu.yuzu_emu.model.UserProfile +import org.yuzu.yuzu_emu.utils.NativeConfig +import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins + +class ProfileManagerFragment : Fragment() { + private var _binding: FragmentProfileManagerBinding? = null + private val binding get() = _binding!! + + private val homeViewModel: HomeViewModel by activityViewModels() + private lateinit var profileAdapter: ProfileAdapter + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + enterTransition = MaterialSharedAxis(MaterialSharedAxis.X, true) + returnTransition = MaterialSharedAxis(MaterialSharedAxis.X, false) + reenterTransition = MaterialSharedAxis(MaterialSharedAxis.X, false) + } + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + _binding = FragmentProfileManagerBinding.inflate(layoutInflater) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + homeViewModel.setStatusBarShadeVisibility(visible = false) + + binding.toolbarProfiles.setNavigationOnClickListener { + requireActivity().onBackPressedDispatcher.onBackPressed() + } + + setupRecyclerView() + loadProfiles() + + binding.buttonAddUser.setOnClickListener { + if (NativeLibrary.canCreateUser()) { + findNavController().navigate(R.id.action_profileManagerFragment_to_newUserDialog) + } else { + MaterialAlertDialogBuilder(requireContext()) + .setTitle(R.string.profile_max_users_title) + .setMessage(R.string.profile_max_users_message) + .setPositiveButton(android.R.string.ok, null) + .show() + } + } + + setInsets() + } + + override fun onResume() { + super.onResume() + loadProfiles() + } + + private fun setupRecyclerView() { + profileAdapter = ProfileAdapter( + onProfileClick = { profile -> selectProfile(profile) }, + onEditClick = { profile -> editProfile(profile) }, + onDeleteClick = { profile -> confirmDeleteProfile(profile) } + ) + binding.listProfiles.apply { + layoutManager = LinearLayoutManager(requireContext()) + adapter = profileAdapter + } + } + + private fun loadProfiles() { + val profiles = mutableListOf() + val userUUIDs = NativeLibrary.getAllUsers() ?: emptyArray() + val currentUserUUID = NativeLibrary.getCurrentUser() + + for (uuid in userUUIDs) { + if (uuid.isNotEmpty()) { + val username = NativeLibrary.getUserUsername(uuid) + if (!username.isNullOrEmpty()) { + val imagePath = NativeLibrary.getUserImagePath(uuid) ?: "" + profiles.add(UserProfile(uuid, username, imagePath)) + } + } + } + + profileAdapter.submitList(profiles) + profileAdapter.setCurrentUser(currentUserUUID ?: "") + + binding.buttonAddUser.isEnabled = NativeLibrary.canCreateUser() + } + + private fun selectProfile(profile: UserProfile) { + if (NativeLibrary.setCurrentUser(profile.uuid)) { + loadProfiles() + } + } + + + private fun editProfile(profile: UserProfile) { + val bundle = Bundle().apply { + putString("uuid", profile.uuid) + putString("username", profile.username) + } + findNavController().navigate(R.id.action_profileManagerFragment_to_newUserDialog, bundle) + } + + private fun confirmDeleteProfile(profile: UserProfile) { + val currentUser = NativeLibrary.getCurrentUser() + val isCurrentUser = profile.uuid == currentUser + + MaterialAlertDialogBuilder(requireContext()) + .setTitle(R.string.profile_delete_confirm_title) + .setMessage( + if (isCurrentUser) { + getString(R.string.profile_delete_current_user_message, profile.username) + } else { + getString(R.string.profile_delete_confirm_message, profile.username) + } + ) + .setPositiveButton(R.string.profile_delete) { _, _ -> + deleteProfile(profile) + } + .setNegativeButton(android.R.string.cancel, null) + .show() + } + + private fun deleteProfile(profile: UserProfile) { + val currentUser = NativeLibrary.getCurrentUser() + if (!currentUser.isNullOrEmpty() && profile.uuid == currentUser) { + val users = NativeLibrary.getAllUsers() ?: emptyArray() + for (uuid in users) { + if (uuid.isNotEmpty() && uuid != profile.uuid) { + NativeLibrary.setCurrentUser(uuid) + break + } + } + } + + if (NativeLibrary.removeUser(profile.uuid)) { + loadProfiles() + } + } + + private fun setInsets() { + ViewCompat.setOnApplyWindowInsetsListener( + binding.root + ) { _: View, windowInsets: WindowInsetsCompat -> + val barInsets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) + val cutoutInsets = windowInsets.getInsets(WindowInsetsCompat.Type.displayCutout()) + + val leftInsets = barInsets.left + cutoutInsets.left + val rightInsets = barInsets.right + cutoutInsets.right + + binding.toolbarProfiles.updateMargins(left = leftInsets, right = rightInsets) + binding.listProfiles.updateMargins(left = leftInsets, right = rightInsets) + binding.listProfiles.updatePadding( + bottom = barInsets.bottom + + resources.getDimensionPixelSize(R.dimen.spacing_bottom_list_fab) + ) + + val fabSpacing = resources.getDimensionPixelSize(R.dimen.spacing_fab) + binding.buttonAddUser.updateMargins( + left = leftInsets + fabSpacing, + right = rightInsets + fabSpacing, + bottom = barInsets.bottom + fabSpacing + ) + + windowInsets + } + } + + override fun onDestroyView() { + super.onDestroyView() + NativeConfig.saveGlobalConfig() + _binding = null + } +} diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SetupFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SetupFragment.kt index b7c75c127f..41f2da08a7 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SetupFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SetupFragment.kt @@ -26,7 +26,6 @@ import androidx.navigation.findNavController import androidx.preference.PreferenceManager import androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback import com.google.android.material.transition.MaterialFadeThrough -import kotlinx.coroutines.launch import org.yuzu.yuzu_emu.NativeLibrary import java.io.File import org.yuzu.yuzu_emu.R @@ -34,10 +33,13 @@ import org.yuzu.yuzu_emu.YuzuApplication import org.yuzu.yuzu_emu.adapters.SetupAdapter import org.yuzu.yuzu_emu.databinding.FragmentSetupBinding import org.yuzu.yuzu_emu.features.settings.model.Settings +import org.yuzu.yuzu_emu.model.ButtonState +import org.yuzu.yuzu_emu.model.GamesViewModel import org.yuzu.yuzu_emu.model.HomeViewModel +import org.yuzu.yuzu_emu.model.PageButton import org.yuzu.yuzu_emu.model.SetupCallback import org.yuzu.yuzu_emu.model.SetupPage -import org.yuzu.yuzu_emu.model.StepState +import org.yuzu.yuzu_emu.model.PageState import org.yuzu.yuzu_emu.ui.main.MainActivity import org.yuzu.yuzu_emu.utils.DirectoryInitialization import org.yuzu.yuzu_emu.utils.NativeConfig @@ -50,11 +52,16 @@ class SetupFragment : Fragment() { private val binding get() = _binding!! private val homeViewModel: HomeViewModel by activityViewModels() + private val gamesViewModel: GamesViewModel by activityViewModels() private lateinit var mainActivity: MainActivity private lateinit var hasBeenWarned: BooleanArray + private lateinit var pages: MutableList + + private lateinit var pageButtonCallback: SetupCallback + companion object { const val KEY_NEXT_VISIBILITY = "NextButtonVisibility" const val KEY_BACK_VISIBILITY = "BackButtonVisibility" @@ -94,124 +101,142 @@ class SetupFragment : Fragment() { requireActivity().window.navigationBarColor = ContextCompat.getColor(requireContext(), android.R.color.transparent) - val pages = mutableListOf() + pages = mutableListOf() pages.apply { add( SetupPage( - R.drawable.ic_yuzu_title, - R.string.welcome, - R.string.welcome_description, - 0, - true, - R.string.get_started, - { pageForward() }, - false - ) - ) - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { - add( - SetupPage( - R.drawable.ic_notification, - R.string.notifications, - R.string.notifications_description, - 0, - false, - R.string.give_permission, - { - notificationCallback = it - permissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS) - }, - true, - R.string.notification_warning, - R.string.notification_warning_description, - 0, - { - if (NotificationManagerCompat.from(requireContext()) + R.drawable.ic_permission, + R.string.permissions, + R.string.permissions_description, + mutableListOf().apply { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + add( + PageButton( + R.drawable.ic_notification, + R.string.notifications, + R.string.notifications_description, + { + pageButtonCallback = it + permissionLauncher.launch( + Manifest.permission.POST_NOTIFICATIONS + ) + }, + { + if (NotificationManagerCompat.from(requireContext()) + .areNotificationsEnabled() + ) { + ButtonState.BUTTON_ACTION_COMPLETE + } else { + ButtonState.BUTTON_ACTION_INCOMPLETE + } + }, + false, + false, + ) + ) + } + }, + { + if (NotificationManagerCompat.from(requireContext()) .areNotificationsEnabled() - ) { - StepState.COMPLETE - } else { - StepState.INCOMPLETE - } - } - ) - ) - } - - add( - SetupPage( - R.drawable.ic_key, - R.string.keys, - R.string.keys_description, - R.drawable.ic_add, - true, - R.string.select_keys, - { - keyCallback = it - getProdKey.launch(arrayOf("*/*")) - }, - true, - R.string.install_prod_keys_warning, - R.string.install_prod_keys_warning_description, - R.string.install_prod_keys_warning_help, - { - val file = File(DirectoryInitialization.userDirectory + "/keys/prod.keys") - if (file.exists() && NativeLibrary.areKeysPresent()) { - StepState.COMPLETE + ) { + PageState.COMPLETE } else { - StepState.INCOMPLETE + PageState.INCOMPLETE } } ) ) add( SetupPage( - R.drawable.ic_firmware, - R.string.firmware, - R.string.firmware_description, - R.drawable.ic_add, - true, - R.string.select_firmware, - { - firmwareCallback = it - getFirmware.launch(arrayOf("application/zip")) + R.drawable.ic_folder_open, + R.string.emulator_data, + R.string.emulator_data_description, + mutableListOf().apply { + add( + PageButton( + R.drawable.ic_key, + R.string.keys, + R.string.keys_description, + { + pageButtonCallback = it + getProdKey.launch(arrayOf("*/*")) + }, + { + val file = File( + DirectoryInitialization.userDirectory + "/keys/prod.keys" + ) + if (file.exists() && NativeLibrary.areKeysPresent()) { + ButtonState.BUTTON_ACTION_COMPLETE + } else { + ButtonState.BUTTON_ACTION_INCOMPLETE + } + }, + false, + true, + R.string.install_prod_keys_warning, + R.string.install_prod_keys_warning_description, + R.string.install_prod_keys_warning_help, + ) + ) + add( + PageButton( + R.drawable.ic_firmware, + R.string.firmware, + R.string.firmware_description, + { + pageButtonCallback = it + getFirmware.launch(arrayOf("application/zip")) + }, + { + if (NativeLibrary.isFirmwareAvailable()) { + ButtonState.BUTTON_ACTION_COMPLETE + } else { + ButtonState.BUTTON_ACTION_INCOMPLETE + } + }, + false, + true, + R.string.install_firmware_warning, + R.string.install_firmware_warning_description, + R.string.install_firmware_warning_help, + ) + ) + add( + PageButton( + R.drawable.ic_controller, + R.string.games, + R.string.games_description, + { + pageButtonCallback = it + getGamesDirectory.launch(Intent(Intent.ACTION_OPEN_DOCUMENT_TREE).data) + }, + { + if (NativeConfig.getGameDirs().isNotEmpty()) { + ButtonState.BUTTON_ACTION_COMPLETE + } else { + ButtonState.BUTTON_ACTION_INCOMPLETE + } + }, + false, + true, + R.string.add_games_warning, + R.string.add_games_warning_description, + R.string.add_games_warning_help, + ) + ) }, - true, - R.string.install_firmware_warning, - R.string.install_firmware_warning_description, - R.string.install_firmware_warning_help, { - if (NativeLibrary.isFirmwareAvailable()) { - StepState.COMPLETE + val file = File( + DirectoryInitialization.userDirectory + "/keys/prod.keys" + ) + if (file.exists() && NativeLibrary.areKeysPresent() && + NativeLibrary.isFirmwareAvailable() && NativeConfig.getGameDirs() + .isNotEmpty() + ) { + PageState.COMPLETE } else { - StepState.INCOMPLETE - } - } - ) - ) - - add( - SetupPage( - R.drawable.ic_controller, - R.string.games, - R.string.games_description, - R.drawable.ic_add, - true, - R.string.add_games, - { - gamesDirCallback = it - getGamesDirectory.launch(Intent(Intent.ACTION_OPEN_DOCUMENT_TREE).data) - }, - true, - R.string.add_games_warning, - R.string.add_games_warning_description, - R.string.add_games_warning_help, - { - if (NativeConfig.getGameDirs().isNotEmpty()) { - StepState.COMPLETE - } else { - StepState.INCOMPLETE + PageState.INCOMPLETE } } ) @@ -221,12 +246,22 @@ class SetupFragment : Fragment() { R.drawable.ic_check, R.string.done, R.string.done_description, - R.drawable.ic_arrow_forward, - false, - R.string.text_continue, - { finishSetup() }, - false - ) + mutableListOf().apply { + add( + PageButton( + R.drawable.ic_arrow_forward, + R.string.get_started, + 0, + buttonAction = { + finishSetup() + }, + buttonState = { + ButtonState.BUTTON_ACTION_UNDEFINED + }, + ) + ) + } + ) { PageState.UNDEFINED } ) } @@ -237,7 +272,7 @@ class SetupFragment : Fragment() { homeViewModel.gamesDirSelected.collect( viewLifecycleOwner, resetState = { homeViewModel.setGamesDirSelected(false) } - ) { if (it) gamesDirCallback.onStepCompleted() } + ) { if (it) checkForButtonState.invoke() } binding.viewPager2.apply { adapter = SetupAdapter(requireActivity() as AppCompatActivity, pages) @@ -251,15 +286,18 @@ class SetupFragment : Fragment() { override fun onPageSelected(position: Int) { super.onPageSelected(position) - if (position == 1 && previousPosition == 0) { - ViewUtils.showView(binding.buttonNext) - ViewUtils.showView(binding.buttonBack) - } else if (position == 0 && previousPosition == 1) { + val isFirstPage = position == 0 + val isLastPage = position == pages.size - 1 + + if (isFirstPage) { ViewUtils.hideView(binding.buttonBack) + } else { + ViewUtils.showView(binding.buttonBack) + } + + if (isLastPage) { ViewUtils.hideView(binding.buttonNext) - } else if (position == pages.size - 1 && previousPosition == pages.size - 2) { - ViewUtils.hideView(binding.buttonNext) - } else if (position == pages.size - 2 && previousPosition == pages.size - 1) { + } else { ViewUtils.showView(binding.buttonNext) } @@ -271,35 +309,63 @@ class SetupFragment : Fragment() { val index = binding.viewPager2.currentItem val currentPage = pages[index] - // Checks if the user has completed the task on the current page - if (currentPage.hasWarning) { - val stepState = currentPage.stepCompleted.invoke() - if (stepState != StepState.INCOMPLETE) { - pageForward() - return@setOnClickListener - } + val warningMessages = + mutableListOf>() // title, description, helpLink - if (!hasBeenWarned[index]) { - SetupWarningDialogFragment.newInstance( - currentPage.warningTitleId, - currentPage.warningDescriptionId, - currentPage.warningHelpLinkId, - index - ).show(childFragmentManager, SetupWarningDialogFragment.TAG) - return@setOnClickListener + currentPage.pageButtons?.forEach { button -> + if (button.hasWarning || button.isUnskippable) { + val buttonState = button.buttonState() + if (buttonState == ButtonState.BUTTON_ACTION_COMPLETE) { + return@forEach + } + + if (button.isUnskippable) { + MessageDialogFragment.newInstance( + activity = requireActivity(), + titleId = button.warningTitleId, + descriptionId = button.warningDescriptionId, + helpLinkId = button.warningHelpLinkId + ).show(childFragmentManager, MessageDialogFragment.TAG) + return@setOnClickListener + } + + if (!hasBeenWarned[index]) { + warningMessages.add( + Triple( + button.warningTitleId, + button.warningDescriptionId, + button.warningHelpLinkId + ) + ) + } } } + + if (warningMessages.isNotEmpty()) { + SetupWarningDialogFragment.newInstance( + warningMessages.map { it.first }.toIntArray(), + warningMessages.map { it.second }.toIntArray(), + warningMessages.map { it.third }.toIntArray(), + index + ).show(childFragmentManager, SetupWarningDialogFragment.TAG) + return@setOnClickListener + } pageForward() } binding.buttonBack.setOnClickListener { pageBackward() } + if (savedInstanceState != null) { val nextIsVisible = savedInstanceState.getBoolean(KEY_NEXT_VISIBILITY) val backIsVisible = savedInstanceState.getBoolean(KEY_BACK_VISIBILITY) hasBeenWarned = savedInstanceState.getBooleanArray(KEY_HAS_BEEN_WARNED)!! - binding.buttonNext.setVisible(nextIsVisible) - binding.buttonBack.setVisible(backIsVisible) + if (nextIsVisible) { + binding.buttonNext.visibility = View.VISIBLE + } + if (backIsVisible) { + binding.buttonBack.visibility = View.VISIBLE + } } else { hasBeenWarned = BooleanArray(pages.size) } @@ -307,6 +373,7 @@ class SetupFragment : Fragment() { setInsets() } + override fun onStop() { super.onStop() NativeConfig.saveGlobalConfig() @@ -314,10 +381,8 @@ class SetupFragment : Fragment() { override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) - if (_binding != null) { - outState.putBoolean(KEY_NEXT_VISIBILITY, binding.buttonNext.isVisible) - outState.putBoolean(KEY_BACK_VISIBILITY, binding.buttonBack.isVisible) - } + outState.putBoolean(KEY_NEXT_VISIBILITY, binding.buttonNext.isVisible) + outState.putBoolean(KEY_BACK_VISIBILITY, binding.buttonBack.isVisible) outState.putBooleanArray(KEY_HAS_BEEN_WARNED, hasBeenWarned) } @@ -326,13 +391,27 @@ class SetupFragment : Fragment() { _binding = null } - private lateinit var notificationCallback: SetupCallback + private val checkForButtonState: () -> Unit = { + val page = pages[binding.viewPager2.currentItem] + page.pageButtons?.forEach { + if (it.buttonState() == ButtonState.BUTTON_ACTION_COMPLETE) { + pageButtonCallback.onStepCompleted( + it.titleId, + pageFullyCompleted = false + ) + } + + if (page.pageSteps() == PageState.COMPLETE) { + pageButtonCallback.onStepCompleted(0, pageFullyCompleted = true) + } + } + } @RequiresApi(Build.VERSION_CODES.TIRAMISU) private val permissionLauncher = registerForActivityResult(ActivityResultContracts.RequestPermission()) { if (it) { - notificationCallback.onStepCompleted() + checkForButtonState.invoke() } if (!it && @@ -345,15 +424,13 @@ class SetupFragment : Fragment() { } } - private lateinit var keyCallback: SetupCallback - private lateinit var firmwareCallback: SetupCallback val getProdKey = registerForActivityResult(ActivityResultContracts.OpenDocument()) { result -> if (result != null) { mainActivity.processKey(result, "keys") if (NativeLibrary.areKeysPresent()) { - keyCallback.onStepCompleted() + checkForButtonState.invoke() } } } @@ -363,14 +440,12 @@ class SetupFragment : Fragment() { if (result != null) { mainActivity.processFirmware(result) { if (NativeLibrary.isFirmwareAvailable()) { - firmwareCallback.onStepCompleted() + checkForButtonState.invoke() } } } } - private lateinit var gamesDirCallback: SetupCallback - val getGamesDirectory = registerForActivityResult(ActivityResultContracts.OpenDocumentTree()) { result -> if (result != null) { @@ -379,11 +454,14 @@ class SetupFragment : Fragment() { } private fun finishSetup() { - PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext).edit() + PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext) + .edit() .putBoolean(Settings.PREF_FIRST_APP_LAUNCH, false) .apply() + + gamesViewModel.reloadGames(directoriesChanged = true, firstStartup = false) + mainActivity.finishSetup(binding.root.findNavController()) - mainActivity.showPreAlphaWarningDialog() } fun pageForward() { @@ -406,8 +484,10 @@ class SetupFragment : Fragment() { ViewCompat.setOnApplyWindowInsetsListener( binding.root ) { _: View, windowInsets: WindowInsetsCompat -> - val barInsets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) - val cutoutInsets = windowInsets.getInsets(WindowInsetsCompat.Type.displayCutout()) + val barInsets = + windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()) + val cutoutInsets = + windowInsets.getInsets(WindowInsetsCompat.Type.displayCutout()) val leftPadding = barInsets.left + cutoutInsets.left val topPadding = barInsets.top + cutoutInsets.top @@ -416,11 +496,22 @@ class SetupFragment : Fragment() { if (resources.getBoolean(R.bool.small_layout)) { binding.viewPager2 - .updatePadding(left = leftPadding, top = topPadding, right = rightPadding) + .updatePadding( + left = leftPadding, + top = topPadding, + right = rightPadding + ) binding.constraintButtons - .updatePadding(left = leftPadding, right = rightPadding, bottom = bottomPadding) + .updatePadding( + left = leftPadding, + right = rightPadding, + bottom = bottomPadding + ) } else { - binding.viewPager2.updatePadding(top = topPadding, bottom = bottomPadding) + binding.viewPager2.updatePadding( + top = topPadding, + bottom = bottomPadding + ) binding.constraintButtons .updatePadding( left = leftPadding, diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SetupWarningDialogFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SetupWarningDialogFragment.kt index b2c1d54af3..cfc981aea1 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SetupWarningDialogFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SetupWarningDialogFragment.kt @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later @@ -11,20 +14,21 @@ import android.os.Bundle import androidx.fragment.app.DialogFragment import com.google.android.material.dialog.MaterialAlertDialogBuilder import org.yuzu.yuzu_emu.R +import androidx.core.net.toUri class SetupWarningDialogFragment : DialogFragment() { - private var titleId: Int = 0 - private var descriptionId: Int = 0 - private var helpLinkId: Int = 0 + private var titleIds: IntArray = intArrayOf() + private var descriptionIds: IntArray = intArrayOf() + private var helpLinkIds: IntArray = intArrayOf() private var page: Int = 0 private lateinit var setupFragment: SetupFragment override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - titleId = requireArguments().getInt(TITLE) - descriptionId = requireArguments().getInt(DESCRIPTION) - helpLinkId = requireArguments().getInt(HELP_LINK) + titleIds = requireArguments().getIntArray(TITLES) ?: intArrayOf() + descriptionIds = requireArguments().getIntArray(DESCRIPTIONS) ?: intArrayOf() + helpLinkIds = requireArguments().getIntArray(HELP_LINKS) ?: intArrayOf() page = requireArguments().getInt(PAGE) setupFragment = requireParentFragment() as SetupFragment @@ -38,18 +42,24 @@ class SetupWarningDialogFragment : DialogFragment() { } .setNegativeButton(R.string.warning_cancel, null) - if (titleId != 0) { - builder.setTitle(titleId) - } else { - builder.setTitle("") + val messageBuilder = StringBuilder() + for (i in titleIds.indices) { + if (titleIds[i] != 0) { + messageBuilder.append(getString(titleIds[i])).append("\n\n") + } + if (descriptionIds[i] != 0) { + messageBuilder.append(getString(descriptionIds[i])).append("\n\n") + } } - if (descriptionId != 0) { - builder.setMessage(descriptionId) - } - if (helpLinkId != 0) { + + builder.setTitle("Warning") + builder.setMessage(messageBuilder.toString().trim()) + + if (helpLinkIds.any { it != 0 }) { builder.setNeutralButton(R.string.warning_help) { _: DialogInterface?, _: Int -> - val helpLink = resources.getString(R.string.install_prod_keys_warning_help) - val intent = Intent(Intent.ACTION_VIEW, Uri.parse(helpLink)) + val helpLinkId = helpLinkIds.first { it != 0 } + val helpLink = resources.getString(helpLinkId) + val intent = Intent(Intent.ACTION_VIEW, helpLink.toUri()) startActivity(intent) } } @@ -60,27 +70,27 @@ class SetupWarningDialogFragment : DialogFragment() { companion object { const val TAG = "SetupWarningDialogFragment" - private const val TITLE = "Title" - private const val DESCRIPTION = "Description" - private const val HELP_LINK = "HelpLink" + private const val TITLES = "Titles" + private const val DESCRIPTIONS = "Descriptions" + private const val HELP_LINKS = "HelpLinks" private const val PAGE = "Page" fun newInstance( - titleId: Int, - descriptionId: Int, - helpLinkId: Int, + titleIds: IntArray, + descriptionIds: IntArray, + helpLinkIds: IntArray, page: Int ): SetupWarningDialogFragment { val dialog = SetupWarningDialogFragment() val bundle = Bundle() bundle.apply { - putInt(TITLE, titleId) - putInt(DESCRIPTION, descriptionId) - putInt(HELP_LINK, helpLinkId) + putIntArray(TITLES, titleIds) + putIntArray(DESCRIPTIONS, descriptionIds) + putIntArray(HELP_LINKS, helpLinkIds) putInt(PAGE, page) } dialog.arguments = bundle return dialog } } -} +} \ No newline at end of file diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SystemInfoDialogFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SystemInfoDialogFragment.kt new file mode 100644 index 0000000000..5c914eeb16 --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/SystemInfoDialogFragment.kt @@ -0,0 +1,108 @@ +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +package org.yuzu.yuzu_emu.fragments + +import android.app.ActivityManager +import android.app.Dialog +import android.content.Context +import android.os.Build +import android.os.Bundle +import androidx.fragment.app.DialogFragment +import com.google.android.material.dialog.MaterialAlertDialogBuilder +import org.yuzu.yuzu_emu.NativeLibrary +import org.yuzu.yuzu_emu.R +import org.yuzu.yuzu_emu.databinding.DialogSystemInfoBinding + +class SystemInfoDialogFragment : DialogFragment() { + private var _binding: DialogSystemInfoBinding? = null + private val binding get() = _binding!! + + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { + _binding = DialogSystemInfoBinding.inflate(layoutInflater) + + populateSystemInfo() + + val dialog = MaterialAlertDialogBuilder(requireContext()) + .setTitle(R.string.system_information) + .setPositiveButton(android.R.string.ok, null) + .create() + + dialog.setView(binding.root) + + return dialog + } + + private fun populateSystemInfo() { + val systemInfo = buildString { + // General Device Info + appendLine("=== ${getString(R.string.general_information)} ===") + appendLine("${getString(R.string.device_manufacturer)}: ${Build.MANUFACTURER}") + appendLine("${getString(R.string.device_model)}: ${Build.MODEL}") + appendLine("${getString(R.string.device_name)}: ${Build.DEVICE}") + appendLine("${getString(R.string.product)}: ${Build.PRODUCT}") + appendLine("${getString(R.string.hardware)}: ${Build.HARDWARE}") + appendLine("${getString(R.string.supported_abis)}: ${Build.SUPPORTED_ABIS.joinToString(", ")}") + appendLine("${getString(R.string.android_version)}: ${Build.VERSION.RELEASE} (API ${Build.VERSION.SDK_INT})") + appendLine("${getString(R.string.android_security_patch)}: ${Build.VERSION.SECURITY_PATCH}") + appendLine("${getString(R.string.build_id)}: ${Build.ID}") + + appendLine() + appendLine("=== ${getString(R.string.cpu_info)} ===") + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S && Build.SOC_MODEL.isNotBlank()) { + appendLine("${getString(R.string.soc)} ${Build.SOC_MODEL}") + } + + val cpuSummary = NativeLibrary.getCpuSummary() + if (cpuSummary.isNotEmpty() && cpuSummary != "Unknown") { + appendLine(cpuSummary) + } + + appendLine() + + // GPU Info + appendLine("=== ${getString(R.string.gpu_information)} ===") + try { + val gpuModel = NativeLibrary.getGpuModel() + appendLine("${getString(R.string.gpu_model)}: $gpuModel") + + val vulkanApi = NativeLibrary.getVulkanApiVersion() + appendLine("Vulkan API: $vulkanApi") + + val vulkanDriver = NativeLibrary.getVulkanDriverVersion() + appendLine("${getString(R.string.vulkan_driver_version)}: $vulkanDriver") + } catch (e: Exception) { + appendLine("${getString(R.string.error_getting_emulator_info)}: ${e.message}") + } + appendLine() + + // Memory Info + appendLine("=== ${getString(R.string.memory_info)} ===") + + val activityManager = + requireContext().getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager + val memInfo = ActivityManager.MemoryInfo() + activityManager.getMemoryInfo(memInfo) + val totalDeviceRam = memInfo.totalMem / (1024 * 1024) + + appendLine("${getString(R.string.total_memory)}: $totalDeviceRam MB") + } + + binding.textSystemInfo.text = systemInfo + } + + + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } + + companion object { + const val TAG = "SystemInfoDialogFragment" + + fun newInstance(): SystemInfoDialogFragment { + return SystemInfoDialogFragment() + } + } +} diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/AddonViewModel.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/AddonViewModel.kt index b9c8e49ca4..2331630c4e 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/AddonViewModel.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/AddonViewModel.kt @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later @@ -15,7 +18,7 @@ import org.yuzu.yuzu_emu.utils.NativeConfig import java.util.concurrent.atomic.AtomicBoolean class AddonViewModel : ViewModel() { - private val _patchList = MutableStateFlow(mutableListOf()) + private val _patchList = MutableStateFlow>(emptyList()) val addonList get() = _patchList.asStateFlow() private val _showModInstallPicker = MutableStateFlow(false) @@ -28,28 +31,99 @@ class AddonViewModel : ViewModel() { val addonToDelete = _addonToDelete.asStateFlow() var game: Game? = null + private var loadedGameKey: String? = null private val isRefreshing = AtomicBoolean(false) + private val pendingRefresh = AtomicBoolean(false) - fun onOpenAddons(game: Game) { + fun onAddonsViewCreated(game: Game) { this.game = game - refreshAddons() + refreshAddons(commitEmpty = false) } - fun refreshAddons() { - if (isRefreshing.get() || game == null) { + fun onAddonsViewStarted(game: Game) { + this.game = game + val hasLoadedCurrentGame = loadedGameKey == gameKey(game) + refreshAddons(force = !hasLoadedCurrentGame) + } + + fun refreshAddons(force: Boolean = false, commitEmpty: Boolean = true) { + val currentGame = game ?: return + val currentGameKey = gameKey(currentGame) + if (!force && loadedGameKey == currentGameKey) { return } - isRefreshing.set(true) + if (!isRefreshing.compareAndSet(false, true)) { + if (force) { + pendingRefresh.set(true) + } + return + } + viewModelScope.launch { - withContext(Dispatchers.IO) { - val patchList = ( - NativeLibrary.getPatchesForFile(game!!.path, game!!.programId) - ?: emptyArray() - ).toMutableList() + try { + val patches = withContext(Dispatchers.IO) { + NativeLibrary.getPatchesForFile(currentGame.path, currentGame.programId) + } ?: return@launch + + val patchList = patches.toMutableList() patchList.sortBy { it.name } - _patchList.value = patchList + + // Ensure only one update is enabled + ensureSingleUpdateEnabled(patchList) + + removeDuplicates(patchList) + if (patchList.isEmpty() && !commitEmpty) { + return@launch + } + if (gameKey(game ?: return@launch) != currentGameKey) { + return@launch + } + + _patchList.value = patchList.toList() + loadedGameKey = currentGameKey + } finally { isRefreshing.set(false) + if (pendingRefresh.compareAndSet(true, false)) { + refreshAddons(force = true) + } + } + } + } + + private fun ensureSingleUpdateEnabled(patchList: MutableList) { + val updates = patchList.filter { PatchType.from(it.type) == PatchType.Update } + if (updates.size <= 1) { + return + } + + val enabledUpdates = updates.filter { it.enabled } + + if (enabledUpdates.size > 1) { + val nandOrSdmcEnabled = enabledUpdates.find { + it.name.contains("(NAND)") || it.name.contains("(SDMC)") + } + + val updateToKeep = nandOrSdmcEnabled ?: enabledUpdates.first() + + for (patch in patchList) { + if (PatchType.from(patch.type) == PatchType.Update) { + patch.enabled = (patch === updateToKeep) + } + } + } + } + + private fun removeDuplicates(patchList: MutableList) { + val seen = mutableSetOf() + val iterator = patchList.iterator() + while (iterator.hasNext()) { + val patch = iterator.next() + val key = "${patch.name}|${patch.version}|${patch.type}" + if (seen.contains(key)) { + iterator.remove() + } else { + seen.add(key) } } } @@ -58,32 +132,61 @@ class AddonViewModel : ViewModel() { _addonToDelete.value = patch } + fun enableOnlyThisUpdate(selectedPatch: Patch) { + val currentList = _patchList.value + for (patch in currentList) { + if (PatchType.from(patch.type) == PatchType.Update) { + patch.enabled = (patch === selectedPatch) + } + } + } + fun onDeleteAddon(patch: Patch) { when (PatchType.from(patch.type)) { PatchType.Update -> NativeLibrary.removeUpdate(patch.programId) PatchType.DLC -> NativeLibrary.removeDLC(patch.programId) PatchType.Mod -> NativeLibrary.removeMod(patch.programId, patch.name) } - refreshAddons() + refreshAddons(force = true) } fun onCloseAddons() { - if (_patchList.value.isEmpty()) { + val currentGame = game ?: run { + _patchList.value = emptyList() + loadedGameKey = null + return + } + val currentList = _patchList.value + if (currentList.isEmpty()) { + _patchList.value = emptyList() + loadedGameKey = null + game = null return } NativeConfig.setDisabledAddons( - game!!.programId, - _patchList.value.mapNotNull { + currentGame.programId, + currentList.mapNotNull { if (it.enabled) { null } else { - it.name + if (PatchType.from(it.type) == PatchType.Update) { + if (it.name.contains("(NAND)") || it.name.contains("(SDMC)")) { + it.name + } else if (it.numericVersion != 0L) { + "Update@${it.numericVersion}" + } else { + it.name + } + } else { + it.name + } } }.toTypedArray() ) NativeConfig.saveGlobalConfig() - _patchList.value.clear() + _patchList.value = emptyList() + loadedGameKey = null game = null } @@ -94,4 +197,8 @@ class AddonViewModel : ViewModel() { fun showModNoticeDialog(show: Boolean) { _showModNoticeDialog.value = show } + + private fun gameKey(game: Game): String { + return "${game.programId}|${game.path}" + } } diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/DriverViewModel.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/DriverViewModel.kt index a49c887a12..41f03c2488 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/DriverViewModel.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/DriverViewModel.kt @@ -1,5 +1,5 @@ -// SPDX-FileCopyrightText: 2023 yuzu Emulator Project -// SPDX-License-Identifier: GPL-2.0-or-later +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later package org.yuzu.yuzu_emu.model @@ -16,10 +16,12 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import org.yuzu.yuzu_emu.R import org.yuzu.yuzu_emu.YuzuApplication +import org.yuzu.yuzu_emu.features.settings.model.BooleanSetting import org.yuzu.yuzu_emu.features.settings.model.StringSetting import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile import org.yuzu.yuzu_emu.model.Driver.Companion.toDriver import org.yuzu.yuzu_emu.utils.GpuDriverHelper +import org.yuzu.yuzu_emu.NativeLibrary import org.yuzu.yuzu_emu.utils.GpuDriverMetadata import org.yuzu.yuzu_emu.utils.NativeConfig import java.io.File @@ -47,19 +49,31 @@ class DriverViewModel : ViewModel() { private val _selectedDriverTitle = MutableStateFlow("") val selectedDriverTitle: StateFlow get() = _selectedDriverTitle + private val _selectedDriverVersion = MutableStateFlow("") + val selectedDriverVersion: StateFlow get() = _selectedDriverVersion + private val _showClearButton = MutableStateFlow(false) val showClearButton = _showClearButton.asStateFlow() private val driversToDelete = mutableListOf() + private var previousDriverPath: String = "" + private var activeGame: Game? = null + + private val _shouldShowDriverShaderDialog = MutableStateFlow(false) + val shouldShowDriverShaderDialog: StateFlow get() = _shouldShowDriverShaderDialog + init { updateDriverList() updateDriverNameForGame(null) + previousDriverPath = StringSetting.DRIVER_PATH.getString() } fun reloadDriverData() { _areDriversLoading.value = true driverData = GpuDriverHelper.getDrivers() + .filterNot { driversToDelete.contains(it.first) } + .toMutableList() updateDriverList() _areDriversLoading.value = false } @@ -67,11 +81,13 @@ class DriverViewModel : ViewModel() { fun updateDriverList() { val selectedDriver = GpuDriverHelper.customDriverSettingData val systemDriverData = GpuDriverHelper.getSystemDriverInfo() + val systemDriverTitle = YuzuApplication.appContext.getString(R.string.system_gpu_driver) val newDriverList = mutableListOf( Driver( selectedDriver == GpuDriverMetadata(), - YuzuApplication.appContext.getString(R.string.system_gpu_driver), - systemDriverData?.get(0) ?: "", + systemDriverTitle, + //systemDriverData?.get(0) ?: "", + NativeLibrary.getVulkanDriverVersion().takeIf { !it.isNullOrEmpty() } ?: systemDriverTitle, systemDriverData?.get(1) ?: "" ) ) @@ -79,9 +95,11 @@ class DriverViewModel : ViewModel() { newDriverList.add(it.second.toDriver(it.second == selectedDriver)) } _driverList.value = newDriverList + previousDriverPath = StringSetting.DRIVER_PATH.getString() } fun onOpenDriverManager(game: Game?) { + activeGame = game if (game != null) { SettingsFile.loadCustomConfig(game) } @@ -92,50 +110,106 @@ class DriverViewModel : ViewModel() { _showClearButton.value = value } - fun onDriverSelected(position: Int) { + fun onDriverSelected(position: Int, skipShaderWipe: Boolean = false) { + val newDriverPath = if (position == 0) { + "" + } else { + driverData[position - 1].first + } + + if (!skipShaderWipe && newDriverPath != previousDriverPath) { + activeGame?.let { + wipeGameShaders(it) + + if (!BooleanSetting.DONT_SHOW_DRIVER_SHADER_WARNING.getBoolean(needsGlobal = true)) { + _shouldShowDriverShaderDialog.value = true + } + } + } + if (position == 0) { StringSetting.DRIVER_PATH.setString("") } else { StringSetting.DRIVER_PATH.setString(driverData[position - 1].first) } + previousDriverPath = newDriverPath + } + + fun onDriverShaderDialogDismissed(dontShowAgain: Boolean) { + if (dontShowAgain) { + BooleanSetting.DONT_SHOW_DRIVER_SHADER_WARNING.setBoolean(true) + NativeConfig.saveGlobalConfig() + } + _shouldShowDriverShaderDialog.value = false + } + + private fun wipeGameShaders(game: Game) { + viewModelScope.launch { + withContext(Dispatchers.IO) { + val externalFilesDir = YuzuApplication.appContext.getExternalFilesDir(null) + ?: return@withContext + val shaderDir = File( + externalFilesDir.absolutePath + + "/shader/" + game.settingsName.lowercase() + ) + if (shaderDir.exists()) { + shaderDir.deleteRecursively() + } + } + } } fun onDriverRemoved(removedPosition: Int, selectedPosition: Int) { - driversToDelete.add(driverData[removedPosition - 1].first) - driverData.removeAt(removedPosition - 1) - onDriverSelected(selectedPosition) + val driverIndex = removedPosition - 1 + if (driverIndex !in driverData.indices) { + updateDriverList() + return + } + + driversToDelete.add(driverData[driverIndex].first) + driverData.removeAt(driverIndex) + val safeSelectedPosition = selectedPosition.coerceIn(0, driverData.size) + onDriverSelected(safeSelectedPosition) } fun onDriverAdded(driver: Pair) { if (driversToDelete.contains(driver.first)) { driversToDelete.remove(driver.first) } + + val existingDriverIndex = driverData.indexOfFirst { + it.first == driver.first || it.second == driver.second + } + if (existingDriverIndex != -1) { + onDriverSelected(existingDriverIndex + 1) + return + } driverData.add(driver) onDriverSelected(driverData.size) } fun onCloseDriverManager(game: Game?) { _isDeletingDrivers.value = true - updateDriverNameForGame(game) - if (game == null) { - NativeConfig.saveGlobalConfig() - } else { - NativeConfig.savePerGameConfig() - NativeConfig.unloadPerGameConfig() - NativeConfig.reloadGlobalConfig() - } - - viewModelScope.launch { - withContext(Dispatchers.IO) { - driversToDelete.forEach { - val driver = File(it) - if (driver.exists()) { - driver.delete() - } - } - driversToDelete.clear() - _isDeletingDrivers.value = false + try { + updateDriverNameForGame(game) + if (game == null) { + NativeConfig.saveGlobalConfig() + } else { + NativeConfig.savePerGameConfig() + NativeConfig.unloadPerGameConfig() + NativeConfig.reloadGlobalConfig() } + + driversToDelete.forEach { + val driver = File(it) + if (driver.exists()) { + driver.delete() + } + } + driversToDelete.clear() + } finally { + activeGame = null + _isDeletingDrivers.value = false } } @@ -185,8 +259,15 @@ class DriverViewModel : ViewModel() { } private fun updateName() { - _selectedDriverTitle.value = GpuDriverHelper.customDriverSettingData.name - ?: YuzuApplication.appContext.getString(R.string.system_gpu_driver) + val systemDriverTitle = YuzuApplication.appContext.getString(R.string.system_gpu_driver) + //val systemDriverVersion = GpuDriverHelper.getSystemDriverInfo()?.get(0) ?: systemDriverTitle //title as fallback just in case + val systemDriverVersion = NativeLibrary.getVulkanDriverVersion().takeIf { !it.isNullOrEmpty() } ?: systemDriverTitle + val customDriver = GpuDriverHelper.customDriverSettingData + + _selectedDriverTitle.value = customDriver.name + ?: systemDriverTitle + _selectedDriverVersion.value = customDriver.version + ?: systemDriverVersion } private fun setDriverReady() { diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/Game.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/Game.kt index 6859b77806..799708dfa7 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/Game.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/Game.kt @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later @@ -15,6 +18,7 @@ import org.yuzu.yuzu_emu.YuzuApplication import org.yuzu.yuzu_emu.activities.EmulationActivity import org.yuzu.yuzu_emu.utils.DirectoryInitialization import org.yuzu.yuzu_emu.utils.FileUtil +import org.yuzu.yuzu_emu.utils.NativeConfig import java.time.LocalDateTime import java.time.format.DateTimeFormatter @@ -57,8 +61,7 @@ class Game( }.zip" val saveDir: String - get() = DirectoryInitialization.userDirectory + "/nand" + - NativeLibrary.getSavePath(programId) + get() = NativeConfig.getSaveDir() + NativeLibrary.getSavePath(programId) val addonDir: String get() = DirectoryInitialization.userDirectory + "/load/" + programIdHex + "/" diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/GameDir.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/GameDir.kt index 274bc1c7bc..b7113bf937 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/GameDir.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/GameDir.kt @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later @@ -9,5 +12,14 @@ import kotlinx.parcelize.Parcelize @Parcelize data class GameDir( val uriString: String, - var deepScan: Boolean -) : Parcelable + var deepScan: Boolean, + val type: DirectoryType = DirectoryType.GAME +) : Parcelable { + // Needed for JNI backward compatability + constructor(uriString: String, deepScan: Boolean) : this(uriString, deepScan, DirectoryType.GAME) +} + +enum class DirectoryType { + GAME, + EXTERNAL_CONTENT +} diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/GameProperties.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/GameProperties.kt index 0135a95beb..a186b91688 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/GameProperties.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/GameProperties.kt @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later @@ -24,9 +27,17 @@ data class SubmenuProperty( override val iconId: Int, val details: (() -> String)? = null, val detailsFlow: StateFlow? = null, - val action: () -> Unit + val action: () -> Unit, + val secondaryActions: List? = null ) : GameProperty +data class SubMenuPropertySecondaryAction( + val isShown : Boolean, + val descriptionId: Int, + val iconId: Int, + val action: () -> Unit +) + data class InstallableProperty( override val titleId: Int, override val descriptionId: Int, 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 72ce006a7e..1a63a3ad82 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 @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later package org.yuzu.yuzu_emu.model @@ -56,7 +56,7 @@ class GamesViewModel : ViewModel() { // Ensure keys are loaded so that ROM metadata can be decrypted. NativeLibrary.reloadKeys() - getGameDirs() + getGameDirsAndExternalContent() reloadGames(directoriesChanged = false, firstStartup = true) } @@ -100,42 +100,45 @@ class GamesViewModel : ViewModel() { viewModelScope.launch { withContext(Dispatchers.IO) { - if (firstStartup) { - // Retrieve list of cached games - val storedGames = - PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext) - .getStringSet(GameHelper.KEY_GAMES, emptySet()) - if (storedGames!!.isNotEmpty()) { - val deserializedGames = mutableSetOf() - storedGames.forEach { - val game: Game - try { - game = Json.decodeFromString(it) - } catch (e: Exception) { - // We don't care about any errors related to parsing the game cache - return@forEach - } + try { + if (firstStartup) { + // Retrieve list of cached games + val storedGames = + PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext) + .getStringSet(GameHelper.KEY_GAMES, emptySet()) + if (storedGames!!.isNotEmpty()) { + val deserializedGames = mutableSetOf() + storedGames.forEach { + val game: Game + try { + game = Json.decodeFromString(it) + } catch (e: Exception) { + // We don't care about any errors related to parsing the game cache + return@forEach + } - val gameExists = - DocumentFile.fromSingleUri( - YuzuApplication.appContext, - Uri.parse(game.path) - )?.exists() - if (gameExists == true) { - deserializedGames.add(game) + val gameExists = + DocumentFile.fromSingleUri( + YuzuApplication.appContext, + Uri.parse(game.path) + )?.exists() + if (gameExists == true) { + deserializedGames.add(game) + } } + setGames(deserializedGames.toList()) } - setGames(deserializedGames.toList()) } - } - setGames(GameHelper.getGames()) - reloading.set(false) - _isReloading.value = false - _shouldScrollAfterReload.value = true + setGames(GameHelper.getGames()) + _shouldScrollAfterReload.value = true - if (directoriesChanged) { - setShouldSwapData(true) + if (directoriesChanged) { + setShouldSwapData(true) + } + } finally { + reloading.set(false) + _isReloading.value = false } } } @@ -144,8 +147,19 @@ class GamesViewModel : ViewModel() { fun addFolder(gameDir: GameDir, savedFromGameFragment: Boolean) = viewModelScope.launch { withContext(Dispatchers.IO) { - NativeConfig.addGameDir(gameDir) - getGameDirs(true) + when (gameDir.type) { + DirectoryType.GAME -> { + NativeConfig.addGameDir(gameDir) + val isFirstTimeSetup = PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext) + .getBoolean(org.yuzu.yuzu_emu.features.settings.model.Settings.PREF_FIRST_APP_LAUNCH, true) + getGameDirsAndExternalContent(!isFirstTimeSetup) + } + DirectoryType.EXTERNAL_CONTENT -> { + addExternalContentDir(gameDir.uriString) + NativeConfig.saveGlobalConfig() + getGameDirsAndExternalContent() + } + } } if (savedFromGameFragment) { @@ -165,8 +179,15 @@ class GamesViewModel : ViewModel() { val removedDirIndex = gameDirs.indexOf(gameDir) if (removedDirIndex != -1) { gameDirs.removeAt(removedDirIndex) - NativeConfig.setGameDirs(gameDirs.toTypedArray()) - getGameDirs() + when (gameDir.type) { + DirectoryType.GAME -> { + NativeConfig.setGameDirs(gameDirs.filter { it.type == DirectoryType.GAME }.toTypedArray()) + } + DirectoryType.EXTERNAL_CONTENT -> { + removeExternalContentDir(gameDir.uriString) + } + } + getGameDirsAndExternalContent() } } } @@ -174,15 +195,16 @@ class GamesViewModel : ViewModel() { fun updateGameDirs() = viewModelScope.launch { withContext(Dispatchers.IO) { - NativeConfig.setGameDirs(_folders.value.toTypedArray()) - getGameDirs() + val gameDirs = _folders.value.filter { it.type == DirectoryType.GAME } + NativeConfig.setGameDirs(gameDirs.toTypedArray()) + getGameDirsAndExternalContent() } } fun onOpenGameFoldersFragment() = viewModelScope.launch { withContext(Dispatchers.IO) { - getGameDirs() + getGameDirsAndExternalContent() } } @@ -190,16 +212,36 @@ class GamesViewModel : ViewModel() { NativeConfig.saveGlobalConfig() viewModelScope.launch { withContext(Dispatchers.IO) { - getGameDirs(true) + getGameDirsAndExternalContent(true) } } } - private fun getGameDirs(reloadList: Boolean = false) { - val gameDirs = NativeConfig.getGameDirs() - _folders.value = gameDirs.toMutableList() + private fun getGameDirsAndExternalContent(reloadList: Boolean = false) { + val gameDirs = NativeConfig.getGameDirs().toMutableList() + val externalContentDirs = NativeConfig.getExternalContentDirs().map { + GameDir(it, false, DirectoryType.EXTERNAL_CONTENT) + } + gameDirs.addAll(externalContentDirs) + _folders.value = gameDirs if (reloadList) { reloadGames(true) } } + + private fun addExternalContentDir(path: String) { + val currentDirs = NativeConfig.getExternalContentDirs().toMutableList() + if (!currentDirs.contains(path)) { + currentDirs.add(path) + NativeConfig.setExternalContentDirs(currentDirs.toTypedArray()) + NativeConfig.saveGlobalConfig() + } + } + + private fun removeExternalContentDir(path: String) { + val currentDirs = NativeConfig.getExternalContentDirs().toMutableList() + currentDirs.remove(path) + NativeConfig.setExternalContentDirs(currentDirs.toTypedArray()) + NativeConfig.saveGlobalConfig() + } } diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/HomeViewModel.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/HomeViewModel.kt index 97a60ee184..a06abb394f 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/HomeViewModel.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/HomeViewModel.kt @@ -31,9 +31,6 @@ class HomeViewModel : ViewModel() { private val _checkKeys = MutableStateFlow(false) val checkKeys = _checkKeys.asStateFlow() - private val _checkFirmware = MutableStateFlow(false) - val checkFirmware = _checkFirmware.asStateFlow() - var navigatedToSetup = false fun setStatusBarShadeVisibility(visible: Boolean) { @@ -66,8 +63,4 @@ class HomeViewModel : ViewModel() { fun setCheckKeys(value: Boolean) { _checkKeys.value = value } - - fun setCheckFirmware(value: Boolean) { - _checkFirmware.value = value - } } diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/Patch.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/Patch.kt index 25cb9e3654..a3785dd3ac 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/Patch.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/Patch.kt @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later @@ -12,5 +15,18 @@ data class Patch( val version: String, val type: Int, val programId: String, - val titleId: String -) + val titleId: String, + val numericVersion: Long = 0, + val source: Int = 0 +) { + companion object { + const val SOURCE_UNKNOWN = 0 + const val SOURCE_NAND = 1 + const val SOURCE_SDMC = 2 + const val SOURCE_EXTERNAL = 3 + const val SOURCE_PACKED = 4 + } + + val isRemovable: Boolean + get() = source != SOURCE_EXTERNAL && source != SOURCE_PACKED +} diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/SetupPage.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/SetupPage.kt index 09a128ae65..ae37634ce7 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/SetupPage.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/SetupPage.kt @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later @@ -7,23 +10,36 @@ data class SetupPage( val iconId: Int, val titleId: Int, val descriptionId: Int, - val buttonIconId: Int, - val leftAlignedIcon: Boolean, - val buttonTextId: Int, + val pageButtons: List? = null, + val pageSteps: () -> PageState = { PageState.COMPLETE }, + + ) + +data class PageButton( + val iconId: Int, + val titleId: Int, + val descriptionId: Int, val buttonAction: (callback: SetupCallback) -> Unit, - val hasWarning: Boolean, + val buttonState: () -> ButtonState = { ButtonState.BUTTON_ACTION_UNDEFINED }, + val isUnskippable: Boolean = false, + val hasWarning: Boolean = false, val warningTitleId: Int = 0, val warningDescriptionId: Int = 0, - val warningHelpLinkId: Int = 0, - val stepCompleted: () -> StepState = { StepState.UNDEFINED } + val warningHelpLinkId: Int = 0 ) interface SetupCallback { - fun onStepCompleted() + fun onStepCompleted(pageButtonId: Int, pageFullyCompleted: Boolean) } -enum class StepState { +enum class PageState { COMPLETE, INCOMPLETE, UNDEFINED } + +enum class ButtonState { + BUTTON_ACTION_COMPLETE, + BUTTON_ACTION_INCOMPLETE, + BUTTON_ACTION_UNDEFINED +} diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/UserProfile.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/UserProfile.kt new file mode 100644 index 0000000000..d45874816c --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/UserProfile.kt @@ -0,0 +1,21 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +package org.yuzu.yuzu_emu.model + +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize +data class UserProfile( + val uuid: String, + val username: String, + val imagePath: String = "" +) : Parcelable + +object ProfileUtils { + fun generateRandomUUID(): String { + val uuid = java.util.UUID.randomUUID() + return uuid.toString().replace("-", "") + } +} 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 737e035840..d3b5d86174 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 @@ -1,5 +1,5 @@ -// SPDX-FileCopyrightText: 2023 yuzu Emulator Project -// SPDX-License-Identifier: GPL-2.0-or-later +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later package org.yuzu.yuzu_emu.overlay @@ -8,15 +8,18 @@ import android.content.Context import android.content.SharedPreferences import android.graphics.Bitmap import android.graphics.Canvas +import android.graphics.Color +import android.graphics.Paint import android.graphics.Point import android.graphics.Rect import android.graphics.drawable.Drawable import android.graphics.drawable.VectorDrawable import android.os.Build +import android.os.Handler +import android.os.Looper import android.util.AttributeSet import android.view.HapticFeedbackConstants import android.view.MotionEvent -import android.view.SurfaceView import android.view.View import android.view.View.OnTouchListener import android.view.WindowInsets @@ -38,24 +41,40 @@ import org.yuzu.yuzu_emu.utils.NativeConfig /** * Draws the interactive input overlay on top of the - * [SurfaceView] that is rendering emulation. + * emulation rendering surface. */ class InputOverlay(context: Context, attrs: AttributeSet?) : - SurfaceView(context, attrs), + View(context, attrs), OnTouchListener { private val overlayButtons: MutableSet = HashSet() private val overlayDpads: MutableSet = HashSet() private val overlayJoysticks: MutableSet = HashSet() private var inEditMode = false + private var gamelessMode = false private var buttonBeingConfigured: InputOverlayDrawableButton? = null private var dpadBeingConfigured: InputOverlayDrawableDpad? = null private var joystickBeingConfigured: InputOverlayDrawableJoystick? = null + private var scaleDialog: OverlayScaleDialog? = null + private var touchStartX = 0f + private var touchStartY = 0f + private var hasMoved = false + private val moveThreshold = 20f + + private val gridPaint = Paint().apply { + color = Color.argb(60, 255, 255, 255) + strokeWidth = 1f + style = Paint.Style.STROKE + } + private lateinit var windowInsets: WindowInsets var layout = OverlayLayout.Landscape + // External listener for EmulationFragment joypad overlay auto-hide + var touchEventListener: ((MotionEvent) -> Unit)? = null + override fun onLayout(changed: Boolean, left: Int, top: Int, right: Int, bottom: Int) { super.onLayout(changed, left, top, right, bottom) @@ -83,6 +102,12 @@ class InputOverlay(context: Context, attrs: AttributeSet?) : override fun draw(canvas: Canvas) { super.draw(canvas) + + // Draw grid when in edit mode and snap-to-grid is enabled + if (inEditMode && BooleanSetting.OVERLAY_SNAP_TO_GRID.getBoolean()) { + drawGrid(canvas) + } + for (button in overlayButtons) { button.draw(canvas) } @@ -94,7 +119,31 @@ class InputOverlay(context: Context, attrs: AttributeSet?) : } } + private fun drawGrid(canvas: Canvas) { + val gridSize = IntSetting.OVERLAY_GRID_SIZE.getInt() + val width = canvas.width + val height = canvas.height + + // Draw vertical lines + var x = 0 + while (x <= width) { + canvas.drawLine(x.toFloat(), 0f, x.toFloat(), height.toFloat(), gridPaint) + x += gridSize + } + + // Draw horizontal lines + var y = 0 + while (y <= height) { + canvas.drawLine(0f, y.toFloat(), width.toFloat(), y.toFloat(), gridPaint) + y += gridSize + } + } + override fun onTouch(v: View, event: MotionEvent): Boolean { + try { + touchEventListener?.invoke(event) + } catch (e: Exception) {} + if (inEditMode) { return onTouchWhileEditing(event) } @@ -254,23 +303,44 @@ class InputOverlay(context: Context, attrs: AttributeSet?) : ) { buttonBeingConfigured = button buttonBeingConfigured!!.onConfigureTouch(event) + touchStartX = event.getX(pointerIndex) + touchStartY = event.getY(pointerIndex) + hasMoved = false } MotionEvent.ACTION_MOVE -> if (buttonBeingConfigured != null) { - buttonBeingConfigured!!.onConfigureTouch(event) - invalidate() - return true + val moveDistance = kotlin.math.sqrt( + (event.getX(pointerIndex) - touchStartX).let { it * it } + + (event.getY(pointerIndex) - touchStartY).let { it * it } + ) + + if (moveDistance > moveThreshold) { + hasMoved = true + buttonBeingConfigured!!.onConfigureTouch(event) + invalidate() + return true + } } MotionEvent.ACTION_UP, MotionEvent.ACTION_POINTER_UP -> if (buttonBeingConfigured === button) { - // Persist button position by saving new place. - saveControlPosition( - buttonBeingConfigured!!.overlayControlData.id, - buttonBeingConfigured!!.bounds.centerX(), - buttonBeingConfigured!!.bounds.centerY(), - layout - ) + if (!hasMoved) { + showScaleDialog( + buttonBeingConfigured, + null, + null, + fingerPositionX, + fingerPositionY + ) + } else { + saveControlPosition( + buttonBeingConfigured!!.overlayControlData.id, + buttonBeingConfigured!!.bounds.centerX(), + buttonBeingConfigured!!.bounds.centerY(), + individuaScale = buttonBeingConfigured!!.overlayControlData.individualScale, + layout + ) + } buttonBeingConfigured = null } } @@ -287,23 +357,46 @@ class InputOverlay(context: Context, attrs: AttributeSet?) : ) { dpadBeingConfigured = dpad dpadBeingConfigured!!.onConfigureTouch(event) + touchStartX = event.getX(pointerIndex) + touchStartY = event.getY(pointerIndex) + hasMoved = false } MotionEvent.ACTION_MOVE -> if (dpadBeingConfigured != null) { - dpadBeingConfigured!!.onConfigureTouch(event) - invalidate() - return true + val moveDistance = kotlin.math.sqrt( + (event.getX(pointerIndex) - touchStartX).let { it * it } + + (event.getY(pointerIndex) - touchStartY).let { it * it } + ) + + if (moveDistance > moveThreshold) { + hasMoved = true + dpadBeingConfigured!!.onConfigureTouch(event) + invalidate() + return true + } } MotionEvent.ACTION_UP, MotionEvent.ACTION_POINTER_UP -> if (dpadBeingConfigured === dpad) { - // Persist button position by saving new place. - saveControlPosition( - OverlayControl.COMBINED_DPAD.id, - dpadBeingConfigured!!.bounds.centerX(), - dpadBeingConfigured!!.bounds.centerY(), - layout - ) + if (!hasMoved) { + // This was a click, show scale dialog for dpad + showScaleDialog( + null, + dpadBeingConfigured, + null, + fingerPositionX, + fingerPositionY + ) + } else { + // This was a move, save position + saveControlPosition( + OverlayControl.COMBINED_DPAD.id, + dpadBeingConfigured!!.bounds.centerX(), + dpadBeingConfigured!!.bounds.centerY(), + individuaScale = dpadBeingConfigured!!.individualScale, + layout + ) + } dpadBeingConfigured = null } } @@ -317,21 +410,43 @@ class InputOverlay(context: Context, attrs: AttributeSet?) : ) { joystickBeingConfigured = joystick joystickBeingConfigured!!.onConfigureTouch(event) + touchStartX = event.getX(pointerIndex) + touchStartY = event.getY(pointerIndex) + hasMoved = false } MotionEvent.ACTION_MOVE -> if (joystickBeingConfigured != null) { - joystickBeingConfigured!!.onConfigureTouch(event) - invalidate() + val moveDistance = kotlin.math.sqrt( + (event.getX(pointerIndex) - touchStartX).let { it * it } + + (event.getY(pointerIndex) - touchStartY).let { it * it } + ) + + if (moveDistance > moveThreshold) { + hasMoved = true + joystickBeingConfigured!!.onConfigureTouch(event) + invalidate() + } } MotionEvent.ACTION_UP, MotionEvent.ACTION_POINTER_UP -> if (joystickBeingConfigured != null) { - saveControlPosition( - joystickBeingConfigured!!.prefId, - joystickBeingConfigured!!.bounds.centerX(), - joystickBeingConfigured!!.bounds.centerY(), - layout - ) + if (!hasMoved) { + showScaleDialog( + null, + null, + joystickBeingConfigured, + fingerPositionX, + fingerPositionY + ) + } else { + saveControlPosition( + joystickBeingConfigured!!.prefId, + joystickBeingConfigured!!.bounds.centerX(), + joystickBeingConfigured!!.bounds.centerY(), + individuaScale = joystickBeingConfigured!!.individualScale, + layout + ) + } joystickBeingConfigured = null } } @@ -594,38 +709,140 @@ class InputOverlay(context: Context, attrs: AttributeSet?) : } } - fun refreshControls() { + fun refreshControls(gameless: Boolean = false) { + // Store gameless mode if set to true + if (gameless) { + gamelessMode = true + } + // Remove all the overlay buttons from the HashSet. overlayButtons.clear() overlayDpads.clear() overlayJoysticks.clear() // Add all the enabled overlay items back to the HashSet. - if (BooleanSetting.SHOW_INPUT_OVERLAY.getBoolean()) { + if (gamelessMode || BooleanSetting.SHOW_INPUT_OVERLAY.getBoolean()) { addOverlayControls(layout) } invalidate() } - private fun saveControlPosition(id: String, x: Int, y: Int, layout: OverlayLayout) { + private fun saveControlPosition( + id: String, + x: Int, + y: Int, + individuaScale: Float, + layout: OverlayLayout + ) { val windowSize = getSafeScreenSize(context, Pair(measuredWidth, measuredHeight)) val min = windowSize.first val max = windowSize.second 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 + } + + data?.individualScale = individuaScale + NativeConfig.setOverlayControlData(overlayControlData) } fun setIsInEditMode(editMode: Boolean) { inEditMode = editMode + if (!editMode) { + scaleDialog?.dismiss() + scaleDialog = null + gamelessMode = false + } + + invalidate() } + fun isGamelessMode(): Boolean = gamelessMode + + private fun showScaleDialog( + button: InputOverlayDrawableButton?, + dpad: InputOverlayDrawableDpad?, + joystick: InputOverlayDrawableJoystick?, + x: Int, y: Int + ) { + val overlayControlData = NativeConfig.getOverlayControlData() + // prevent dialog from being spam opened + scaleDialog?.dismiss() + + + when { + button != null -> { + val buttonData = + overlayControlData.firstOrNull { it.id == button.overlayControlData.id } + if (buttonData != null) { + scaleDialog = + OverlayScaleDialog(context, button.overlayControlData) { newScale -> + saveControlPosition( + button.overlayControlData.id, + button.bounds.centerX(), + button.bounds.centerY(), + individuaScale = newScale, + layout + ) + refreshControls() + } + + scaleDialog?.showDialog(x,y, button.bounds.width(), button.bounds.height()) + + } + } + + dpad != null -> { + val dpadData = + overlayControlData.firstOrNull { it.id == OverlayControl.COMBINED_DPAD.id } + if (dpadData != null) { + scaleDialog = OverlayScaleDialog(context, dpadData) { newScale -> + saveControlPosition( + OverlayControl.COMBINED_DPAD.id, + dpad.bounds.centerX(), + dpad.bounds.centerY(), + newScale, + layout + ) + + refreshControls() + } + + scaleDialog?.showDialog(x,y, dpad.bounds.width(), dpad.bounds.height()) + + } + } + + joystick != null -> { + val joystickData = overlayControlData.firstOrNull { it.id == joystick.prefId } + if (joystickData != null) { + scaleDialog = OverlayScaleDialog(context, joystickData) { newScale -> + saveControlPosition( + joystick.prefId, + joystick.bounds.centerX(), + joystick.bounds.centerY(), + individuaScale = newScale, + layout + ) + + refreshControls() + } + + scaleDialog?.showDialog(x,y, joystick.bounds.width(), joystick.bounds.height()) + + } + } + } + } + + /** * Applies and saves all default values for the overlay */ @@ -664,12 +881,24 @@ class InputOverlay(context: Context, attrs: AttributeSet?) : val overlayControlData = NativeConfig.getOverlayControlData() overlayControlData.forEach { it.enabled = OverlayControl.from(it.id)?.defaultVisibility == true + it.individualScale = OverlayControl.from(it.id)?.defaultIndividualScaleResource!! } NativeConfig.setOverlayControlData(overlayControlData) refreshControls() } + fun resetIndividualControlScale() { + val overlayControlData = NativeConfig.getOverlayControlData() + overlayControlData.forEach { data -> + val defaultControlData = OverlayControl.from(data.id) ?: return@forEach + data.individualScale = defaultControlData.defaultIndividualScaleResource + } + NativeConfig.setOverlayControlData(overlayControlData) + NativeConfig.saveGlobalConfig() + refreshControls() + } + private fun defaultOverlayPositionByLayout(layout: OverlayLayout) { val overlayControlData = NativeConfig.getOverlayControlData() for (data in overlayControlData) { @@ -689,6 +918,7 @@ class InputOverlay(context: Context, attrs: AttributeSet?) : } companion object { + // Increase this number every time there is a breaking change to every overlay layout const val OVERLAY_VERSION = 1 @@ -860,6 +1090,9 @@ class InputOverlay(context: Context, attrs: AttributeSet?) : scale *= (IntSetting.OVERLAY_SCALE.getInt() + 50).toFloat() scale /= 100f + // Apply individual scale + scale *= overlayControlData.individualScale.let { if (it > 0f) it else 1f } + // Initialize the InputOverlayDrawableButton. val defaultStateBitmap = getBitmap(context, defaultResId, scale) val pressedStateBitmap = getBitmap(context, pressedResId, scale) @@ -922,11 +1155,20 @@ class InputOverlay(context: Context, attrs: AttributeSet?) : // Resources handle for fetching the initial Drawable resource. val res = context.resources + // Get the dpad control data for individual scale + val overlayControlData = NativeConfig.getOverlayControlData() + val dpadData = overlayControlData.firstOrNull { it.id == OverlayControl.COMBINED_DPAD.id } + // Decide scale based on button ID and user preference var scale = 0.25f scale *= (IntSetting.OVERLAY_SCALE.getInt() + 50).toFloat() scale /= 100f + // Apply individual scale + if (dpadData != null) { + scale *= dpadData.individualScale.let { if (it > 0f) it else 1f } + } + // Initialize the InputOverlayDrawableDpad. val defaultStateBitmap = getBitmap(context, defaultResId, scale) @@ -1000,6 +1242,9 @@ class InputOverlay(context: Context, attrs: AttributeSet?) : scale *= (IntSetting.OVERLAY_SCALE.getInt() + 50).toFloat() scale /= 100f + // Apply individual scale + scale *= overlayControlData.individualScale.let { if (it > 0f) it else 1f } + // Initialize the InputOverlayDrawableJoystick. val bitmapOuter = getBitmap(context, resOuter, scale) val bitmapInnerDefault = getBitmap(context, defaultResInner, 1.0f) 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 fee3d04ee3..da85c875b5 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 @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later @@ -11,6 +14,8 @@ import android.graphics.drawable.BitmapDrawable import android.view.MotionEvent import org.yuzu.yuzu_emu.features.input.NativeInput.ButtonState import org.yuzu.yuzu_emu.features.input.model.NativeButton +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.OverlayControlData /** @@ -121,11 +126,23 @@ class InputOverlayDrawableButton( MotionEvent.ACTION_MOVE -> { controlPositionX += fingerPositionX - previousTouchX controlPositionY += fingerPositionY - previousTouchY + + val finalX = if (BooleanSetting.OVERLAY_SNAP_TO_GRID.getBoolean()) { + snapToGrid(controlPositionX) + } else { + controlPositionX + } + val finalY = if (BooleanSetting.OVERLAY_SNAP_TO_GRID.getBoolean()) { + snapToGrid(controlPositionY) + } else { + controlPositionY + } + setBounds( - controlPositionX, - controlPositionY, - width + controlPositionX, - height + controlPositionY + finalX, + finalY, + width + finalX, + height + finalY ) previousTouchX = fingerPositionX previousTouchY = fingerPositionY @@ -134,6 +151,11 @@ class InputOverlayDrawableButton( return true } + private fun snapToGrid(value: Int): Int { + val gridSize = IntSetting.OVERLAY_GRID_SIZE.getInt() + return ((value + gridSize / 2) / gridSize) * gridSize + } + fun setBounds(left: Int, top: Int, right: Int, bottom: Int) { defaultStateBitmap.setBounds(left, top, right, bottom) pressedStateBitmap.setBounds(left, top, right, bottom) diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableDpad.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableDpad.kt index 0cb6ff2440..3a40bd7419 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableDpad.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableDpad.kt @@ -1,5 +1,5 @@ -// SPDX-FileCopyrightText: 2023 yuzu Emulator Project -// SPDX-License-Identifier: GPL-2.0-or-later +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later package org.yuzu.yuzu_emu.overlay @@ -11,6 +11,8 @@ import android.graphics.drawable.BitmapDrawable import android.view.MotionEvent import org.yuzu.yuzu_emu.features.input.NativeInput.ButtonState import org.yuzu.yuzu_emu.features.input.model.NativeButton +import org.yuzu.yuzu_emu.features.settings.model.BooleanSetting +import org.yuzu.yuzu_emu.features.settings.model.IntSetting /** * Custom [BitmapDrawable] that is capable @@ -42,6 +44,8 @@ class InputOverlayDrawableDpad( val width: Int val height: Int + var individualScale: Float = 1.0f + private val defaultStateBitmap: BitmapDrawable private val pressedOneDirectionStateBitmap: BitmapDrawable private val pressedTwoDirectionsStateBitmap: BitmapDrawable @@ -227,11 +231,23 @@ class InputOverlayDrawableDpad( MotionEvent.ACTION_MOVE -> { controlPositionX += fingerPositionX - previousTouchX controlPositionY += fingerPositionY - previousTouchY + + val finalX = if (BooleanSetting.OVERLAY_SNAP_TO_GRID.getBoolean()) { + snapToGrid(controlPositionX) + } else { + controlPositionX + } + val finalY = if (BooleanSetting.OVERLAY_SNAP_TO_GRID.getBoolean()) { + snapToGrid(controlPositionY) + } else { + controlPositionY + } + setBounds( - controlPositionX, - controlPositionY, - width + controlPositionX, - height + controlPositionY + finalX, + finalY, + width + finalX, + height + finalY ) previousTouchX = fingerPositionX previousTouchY = fingerPositionY @@ -240,6 +256,11 @@ class InputOverlayDrawableDpad( return true } + private fun snapToGrid(value: Int): Int { + val gridSize = IntSetting.OVERLAY_GRID_SIZE.getInt() + return ((value + gridSize / 2) / gridSize) * gridSize + } + fun setPosition(x: Int, y: Int) { controlPositionX = x controlPositionY = y 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 4b07107fca..9943daa069 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 @@ -1,5 +1,5 @@ -// SPDX-FileCopyrightText: 2023 yuzu Emulator Project -// SPDX-License-Identifier: GPL-2.0-or-later +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later package org.yuzu.yuzu_emu.overlay @@ -17,6 +17,7 @@ import org.yuzu.yuzu_emu.features.input.NativeInput.ButtonState import org.yuzu.yuzu_emu.features.input.model.NativeAnalog import org.yuzu.yuzu_emu.features.input.model.NativeButton import org.yuzu.yuzu_emu.features.settings.model.BooleanSetting +import org.yuzu.yuzu_emu.features.settings.model.IntSetting /** * Custom [BitmapDrawable] that is capable @@ -51,6 +52,8 @@ class InputOverlayDrawableJoystick( val width: Int val height: Int + var individualScale: Float = 1.0f + private var opacity: Int = 0 private var virtBounds: Rect @@ -211,25 +214,37 @@ class InputOverlayDrawableJoystick( MotionEvent.ACTION_MOVE -> { controlPositionX += fingerPositionX - previousTouchX controlPositionY += fingerPositionY - previousTouchY + + val finalX = if (BooleanSetting.OVERLAY_SNAP_TO_GRID.getBoolean()) { + snapToGrid(controlPositionX) + } else { + controlPositionX + } + val finalY = if (BooleanSetting.OVERLAY_SNAP_TO_GRID.getBoolean()) { + snapToGrid(controlPositionY) + } else { + controlPositionY + } + bounds = Rect( - controlPositionX, - controlPositionY, - outerBitmap.intrinsicWidth + controlPositionX, - outerBitmap.intrinsicHeight + controlPositionY + finalX, + finalY, + outerBitmap.intrinsicWidth + finalX, + outerBitmap.intrinsicHeight + finalY ) virtBounds = Rect( - controlPositionX, - controlPositionY, - outerBitmap.intrinsicWidth + controlPositionX, - outerBitmap.intrinsicHeight + controlPositionY + finalX, + finalY, + outerBitmap.intrinsicWidth + finalX, + outerBitmap.intrinsicHeight + finalY ) setInnerBounds() bounds = Rect( Rect( - controlPositionX, - controlPositionY, - outerBitmap.intrinsicWidth + controlPositionX, - outerBitmap.intrinsicHeight + controlPositionY + finalX, + finalY, + outerBitmap.intrinsicWidth + finalX, + outerBitmap.intrinsicHeight + finalY ) ) previousTouchX = fingerPositionX @@ -240,6 +255,11 @@ class InputOverlayDrawableJoystick( return true } + private fun snapToGrid(value: Int): Int { + val gridSize = IntSetting.OVERLAY_GRID_SIZE.getInt() + return ((value + gridSize / 2) / gridSize) * gridSize + } + private fun setInnerBounds() { var x = virtBounds.centerX() + (xAxis * (virtBounds.width() / 2)).toInt() var y = virtBounds.centerY() + (yAxis * (virtBounds.height() / 2)).toInt() diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/OverlayScaleDialog.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/OverlayScaleDialog.kt new file mode 100644 index 0000000000..f489ef3b7c --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/OverlayScaleDialog.kt @@ -0,0 +1,124 @@ +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +package org.yuzu.yuzu_emu.overlay + +import android.app.Dialog +import android.content.Context +import android.view.Gravity +import android.view.LayoutInflater +import android.view.WindowManager +import android.widget.TextView +import com.google.android.material.button.MaterialButton +import com.google.android.material.slider.Slider +import org.yuzu.yuzu_emu.R +import org.yuzu.yuzu_emu.overlay.model.OverlayControlData + +class OverlayScaleDialog( + context: Context, + private val overlayControlData: OverlayControlData, + private val onScaleChanged: (Float) -> Unit +) : Dialog(context) { + + private var currentScale = overlayControlData.individualScale + private val originalScale = overlayControlData.individualScale + private lateinit var scaleValueText: TextView + private lateinit var scaleSlider: Slider + + init { + setupDialog() + } + + private fun setupDialog() { + val view = LayoutInflater.from(context).inflate(R.layout.dialog_overlay_scale, null) + setContentView(view) + + window?.setBackgroundDrawable(null) + + window?.apply { + attributes = attributes.apply { + flags = flags and WindowManager.LayoutParams.FLAG_DIM_BEHIND.inv() + flags = flags or WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL + } + } + + scaleValueText = view.findViewById(R.id.scaleValueText) + scaleSlider = view.findViewById(R.id.scaleSlider) + val resetButton = view.findViewById(R.id.resetButton) + val confirmButton = view.findViewById(R.id.confirmButton) + val cancelButton = view.findViewById(R.id.cancelButton) + + scaleValueText.text = String.format("%.1fx", currentScale) + scaleSlider.value = currentScale + + scaleSlider.addOnChangeListener { _, value, input -> + if (input) { + currentScale = value + scaleValueText.text = String.format("%.1fx", currentScale) + } + } + + scaleSlider.addOnSliderTouchListener(object : Slider.OnSliderTouchListener { + override fun onStartTrackingTouch(slider: Slider) { + // pass + } + + override fun onStopTrackingTouch(slider: Slider) { + onScaleChanged(currentScale) + } + }) + + resetButton.setOnClickListener { + currentScale = 1.0f + scaleSlider.value = 1.0f + scaleValueText.text = String.format("%.1fx", currentScale) + onScaleChanged(currentScale) + } + + confirmButton.setOnClickListener { + overlayControlData.individualScale = currentScale + //slider value is already saved on touch dispatch but just to be sure + onScaleChanged(currentScale) + dismiss() + } + + // both cancel button and back gesture should revert the scale change + cancelButton.setOnClickListener { + onScaleChanged(originalScale) + dismiss() + } + + setOnCancelListener { + onScaleChanged(originalScale) + dismiss() + } + } + + fun showDialog(anchorX: Int, anchorY: Int, anchorHeight: Int, anchorWidth: Int) { + show() + + show() + + // TODO: this calculation is a bit rough, improve it later on + window?.let { window -> + val layoutParams = window.attributes + layoutParams.gravity = Gravity.TOP or Gravity.START + + val density = context.resources.displayMetrics.density + val dialogWidthPx = (320 * density).toInt() + val dialogHeightPx = (400 * density).toInt() // set your estimated dialog height + + val screenHeight = context.resources.displayMetrics.heightPixels + + + layoutParams.x = anchorX + anchorWidth / 2 - dialogWidthPx / 2 + layoutParams.y = anchorY + anchorHeight / 2 - dialogHeightPx / 2 + layoutParams.width = dialogWidthPx + + + window.attributes = layoutParams + } + + } + +} \ No newline at end of file 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 index a0eeadf4bc..10cc547d0b 100644 --- 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 @@ -1,5 +1,5 @@ -// SPDX-FileCopyrightText: 2023 yuzu Emulator Project -// SPDX-License-Identifier: GPL-2.0-or-later +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later package org.yuzu.yuzu_emu.overlay.model @@ -12,126 +12,144 @@ enum class OverlayControl( val defaultVisibility: Boolean, @IntegerRes val defaultLandscapePositionResources: Pair, @IntegerRes val defaultPortraitPositionResources: Pair, - @IntegerRes val defaultFoldablePositionResources: Pair + @IntegerRes val defaultFoldablePositionResources: Pair, + val defaultIndividualScaleResource: Float, ) { 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) + Pair(R.integer.BUTTON_A_X_FOLDABLE, R.integer.BUTTON_A_Y_FOLDABLE), + 1.0f ), 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) + Pair(R.integer.BUTTON_B_X_FOLDABLE, R.integer.BUTTON_B_Y_FOLDABLE), + 1.0f ), 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) + Pair(R.integer.BUTTON_X_X_FOLDABLE, R.integer.BUTTON_X_Y_FOLDABLE), + 1.0f ), 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) + Pair(R.integer.BUTTON_Y_X_FOLDABLE, R.integer.BUTTON_Y_Y_FOLDABLE), + 1.0f ), 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) + Pair(R.integer.BUTTON_PLUS_X_FOLDABLE, R.integer.BUTTON_PLUS_Y_FOLDABLE), + 1.0f ), 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) + Pair(R.integer.BUTTON_MINUS_X_FOLDABLE, R.integer.BUTTON_MINUS_Y_FOLDABLE), + 1.0f ), 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) + Pair(R.integer.BUTTON_HOME_X_FOLDABLE, R.integer.BUTTON_HOME_Y_FOLDABLE), + 1.0f ), 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) + Pair(R.integer.BUTTON_CAPTURE_X_FOLDABLE, R.integer.BUTTON_CAPTURE_Y_FOLDABLE), + 1.0f ), 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) + Pair(R.integer.BUTTON_L_X_FOLDABLE, R.integer.BUTTON_L_Y_FOLDABLE), + 1.0f ), 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) + Pair(R.integer.BUTTON_R_X_FOLDABLE, R.integer.BUTTON_R_Y_FOLDABLE), + 1.0f ), 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) + Pair(R.integer.BUTTON_ZL_X_FOLDABLE, R.integer.BUTTON_ZL_Y_FOLDABLE), + 1.0f ), 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) + Pair(R.integer.BUTTON_ZR_X_FOLDABLE, R.integer.BUTTON_ZR_Y_FOLDABLE), + 1.0f ), 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) + Pair(R.integer.BUTTON_STICK_L_X_FOLDABLE, R.integer.BUTTON_STICK_L_Y_FOLDABLE), + 1.0f ), 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) + Pair(R.integer.BUTTON_STICK_R_X_FOLDABLE, R.integer.BUTTON_STICK_R_Y_FOLDABLE), + 1.0f ), 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) + Pair(R.integer.STICK_L_X_FOLDABLE, R.integer.STICK_L_Y_FOLDABLE), + 1.0f ), 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) + Pair(R.integer.STICK_R_X_FOLDABLE, R.integer.STICK_R_Y_FOLDABLE), + 1.0f ), 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) + Pair(R.integer.COMBINED_DPAD_X_FOLDABLE, R.integer.COMBINED_DPAD_Y_FOLDABLE), + 1.0f ); fun getDefaultPositionForLayout(layout: OverlayLayout): Pair { @@ -173,7 +191,8 @@ enum class OverlayControl( defaultVisibility, getDefaultPositionForLayout(OverlayLayout.Landscape), getDefaultPositionForLayout(OverlayLayout.Portrait), - getDefaultPositionForLayout(OverlayLayout.Foldable) + getDefaultPositionForLayout(OverlayLayout.Foldable), + defaultIndividualScaleResource ) companion object { 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 index 26cfeb1db5..6cc5a59c98 100644 --- 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 @@ -1,5 +1,5 @@ -// SPDX-FileCopyrightText: 2023 yuzu Emulator Project -// SPDX-License-Identifier: GPL-2.0-or-later +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later package org.yuzu.yuzu_emu.overlay.model @@ -8,7 +8,8 @@ data class OverlayControlData( var enabled: Boolean, var landscapePosition: Pair, var portraitPosition: Pair, - var foldablePosition: Pair + var foldablePosition: Pair, + var individualScale: Float ) { fun positionFromLayout(layout: OverlayLayout): Pair = when (layout) { 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 03fa1a3a2e..6931a1f9d5 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 @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later package org.yuzu.yuzu_emu.ui @@ -13,6 +13,7 @@ import android.view.View import android.view.ViewGroup import android.view.inputmethod.InputMethodManager import android.widget.PopupMenu +import android.widget.Toast import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.AppCompatActivity import androidx.core.view.ViewCompat @@ -27,10 +28,14 @@ import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager import androidx.swiperefreshlayout.widget.SwipeRefreshLayout +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.adapters.GameAdapter import org.yuzu.yuzu_emu.databinding.FragmentGamesBinding +import org.yuzu.yuzu_emu.features.settings.model.BooleanSetting +import org.yuzu.yuzu_emu.model.AppletInfo import org.yuzu.yuzu_emu.model.Game import org.yuzu.yuzu_emu.model.GamesViewModel import org.yuzu.yuzu_emu.model.HomeViewModel @@ -53,6 +58,7 @@ class GamesFragment : Fragment() { private var originalHeaderLeftMargin: Int? = null private var lastViewType: Int = GameAdapter.VIEW_TYPE_GRID + private var fallbackBottomInset: Int = 0 companion object { private const val SEARCH_TEXT = "SearchText" @@ -172,10 +178,16 @@ class GamesFragment : Fragment() { setupTopView() + updateButtonsVisibility() + binding.addDirectory.setOnClickListener { getGamesDirectory.launch(Intent(Intent.ACTION_OPEN_DOCUMENT_TREE).data) } + binding.launchQlaunch?.setOnClickListener { + launchQLaunch() + } + setInsets() } @@ -185,6 +197,10 @@ class GamesFragment : Fragment() { val currentViewType = getCurrentViewType() val savedViewType = if (isLandscape || currentViewType != GameAdapter.VIEW_TYPE_CAROUSEL) currentViewType else GameAdapter.VIEW_TYPE_GRID + //This prevents Grid/List views from reusing scaled or otherwise modified ViewHolders left over from the carousel. + adapter = null + recycledViewPool.clear() + gameAdapter.setViewType(savedViewType) currentFilter = preferences.getInt(PREF_SORT_TYPE, View.NO_ID) @@ -194,6 +210,10 @@ class GamesFragment : Fragment() { val columns = resources.getInteger(R.integer.game_columns_grid) GridLayoutManager(context, columns) } + GameAdapter.VIEW_TYPE_GRID_COMPACT -> { + val columns = resources.getInteger(R.integer.game_columns_grid) + GridLayoutManager(context, columns) + } GameAdapter.VIEW_TYPE_LIST -> { val columns = resources.getInteger(R.integer.game_columns_list) GridLayoutManager(context, columns) @@ -204,12 +224,12 @@ class GamesFragment : Fragment() { else -> throw IllegalArgumentException("Invalid view type: $savedViewType") } if (savedViewType == GameAdapter.VIEW_TYPE_CAROUSEL) { - doOnNextLayout { - (this as? CarouselRecyclerView)?.setCarouselMode(true, gameAdapter) - adapter = gameAdapter + (binding.gridGames as? View)?.let { it -> ViewCompat.requestApplyInsets(it)} + doOnNextLayout { //Carousel: important to avoid overlap issues + (this as? CarouselRecyclerView)?.notifyLaidOut(fallbackBottomInset) } } else { - (this as? CarouselRecyclerView)?.setCarouselMode(false) + (this as? CarouselRecyclerView)?.setupCarousel(false) } adapter = gameAdapter lastViewType = savedViewType @@ -233,9 +253,8 @@ class GamesFragment : Fragment() { override fun onResume() { super.onResume() if (getCurrentViewType() == GameAdapter.VIEW_TYPE_CAROUSEL) { - (binding.gridGames as? CarouselRecyclerView)?.restoreScrollState( - gamesViewModel.lastScrollPosition - ) + (binding.gridGames as? CarouselRecyclerView)?.setupCarousel(true) + (binding.gridGames as? CarouselRecyclerView)?.restoreScrollState(gamesViewModel.lastScrollPosition) } } @@ -300,6 +319,7 @@ class GamesFragment : Fragment() { val currentViewType = getCurrentViewType() when (currentViewType) { GameAdapter.VIEW_TYPE_LIST -> popup.menu.findItem(R.id.view_list).isChecked = true + GameAdapter.VIEW_TYPE_GRID_COMPACT -> popup.menu.findItem(R.id.view_grid_compact).isChecked = true GameAdapter.VIEW_TYPE_GRID -> popup.menu.findItem(R.id.view_grid).isChecked = true GameAdapter.VIEW_TYPE_CAROUSEL -> popup.menu.findItem(R.id.view_carousel).isChecked = true } @@ -314,6 +334,14 @@ class GamesFragment : Fragment() { true } + R.id.view_grid_compact -> { + if (getCurrentViewType() == GameAdapter.VIEW_TYPE_CAROUSEL) onPause() + setCurrentViewType(GameAdapter.VIEW_TYPE_GRID_COMPACT) + applyGridGamesBinding() + item.isChecked = true + true + } + R.id.view_list -> { if (getCurrentViewType() == GameAdapter.VIEW_TYPE_CAROUSEL) onPause() setCurrentViewType(GameAdapter.VIEW_TYPE_LIST) @@ -428,6 +456,47 @@ class GamesFragment : Fragment() { } } + private fun launchQLaunch() { + try { + val appletPath = NativeLibrary.getAppletLaunchPath(AppletInfo.QLaunch.entryId) + if (appletPath.isEmpty()) { + Toast.makeText( + requireContext(), + R.string.applets_error_applet, + Toast.LENGTH_SHORT + ).show() + return + } + + NativeLibrary.setCurrentAppletId(AppletInfo.QLaunch.appletId) + + val qlaunchGame = Game( + title = getString(R.string.qlaunch_applet), + path = appletPath + ) + + val action = HomeNavigationDirections.actionGlobalEmulationActivity(qlaunchGame) + findNavController().navigate(action) + } catch (e: Exception) { + Toast.makeText( + requireContext(), + "Failed to launch QLaunch: ${e.message}", + Toast.LENGTH_SHORT + ).show() + } + } + + private fun updateButtonsVisibility() { + val showQLaunch = BooleanSetting.ENABLE_QLAUNCH_BUTTON.getBoolean() + val showFolder = BooleanSetting.ENABLE_FOLDER_BUTTON.getBoolean() + val isFirmwareAvailable = NativeLibrary.isFirmwareAvailable() + + val shouldShowQLaunch = showQLaunch && isFirmwareAvailable + binding.launchQlaunch.visibility = if (shouldShowQLaunch) View.VISIBLE else View.GONE + + binding.addDirectory.visibility = if (showFolder) View.VISIBLE else View.GONE + } + private fun setInsets() = ViewCompat.setOnApplyWindowInsetsListener( binding.root @@ -481,6 +550,18 @@ class GamesFragment : Fragment() { mlpFab.rightMargin = rightInset + fabPadding binding.addDirectory.layoutParams = mlpFab + binding.launchQlaunch?.let { qlaunchButton -> + val mlpQLaunch = qlaunchButton.layoutParams as ViewGroup.MarginLayoutParams + mlpQLaunch.leftMargin = leftInset + fabPadding + mlpQLaunch.bottomMargin = barInsets.bottom + fabPadding + qlaunchButton.layoutParams = mlpQLaunch + } + + val navInsets = windowInsets.getInsets(WindowInsetsCompat.Type.navigationBars()) + val gestureInsets = windowInsets.getInsets(WindowInsetsCompat.Type.systemGestures()) + val bottomInset = maxOf(navInsets.bottom, gestureInsets.bottom, cutoutInsets.bottom) + fallbackBottomInset = bottomInset + (binding.gridGames as? CarouselRecyclerView)?.notifyInsetsReady(bottomInset) windowInsets } } 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 fffaa1e3ba..584322df50 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 @@ -1,9 +1,10 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later package org.yuzu.yuzu_emu.ui.main import android.content.Intent +import android.content.Context import android.net.Uri import android.os.Bundle import android.view.View @@ -23,30 +24,38 @@ import androidx.navigation.NavController import androidx.navigation.fragment.NavHostFragment import androidx.preference.PreferenceManager import com.google.android.material.color.MaterialColors +import com.google.android.material.dialog.MaterialAlertDialogBuilder import java.io.File -import java.io.FilenameFilter import org.yuzu.yuzu_emu.NativeLibrary import org.yuzu.yuzu_emu.R import org.yuzu.yuzu_emu.databinding.ActivityMainBinding import org.yuzu.yuzu_emu.dialogs.NetPlayDialog import org.yuzu.yuzu_emu.features.settings.model.Settings import org.yuzu.yuzu_emu.fragments.AddGameFolderDialogFragment -import org.yuzu.yuzu_emu.fragments.ProgressDialogFragment import org.yuzu.yuzu_emu.fragments.MessageDialogFragment import org.yuzu.yuzu_emu.model.AddonViewModel import org.yuzu.yuzu_emu.model.DriverViewModel import org.yuzu.yuzu_emu.model.GamesViewModel import org.yuzu.yuzu_emu.model.HomeViewModel -import org.yuzu.yuzu_emu.model.InstallResult -import org.yuzu.yuzu_emu.model.TaskState +import android.os.Build import org.yuzu.yuzu_emu.model.TaskViewModel import org.yuzu.yuzu_emu.utils.* import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible -import java.io.BufferedInputStream -import java.io.BufferedOutputStream -import java.util.zip.ZipEntry -import java.util.zip.ZipInputStream import androidx.core.content.edit +import org.yuzu.yuzu_emu.activities.EmulationActivity +import kotlin.text.compareTo +import androidx.core.net.toUri +import com.google.android.material.progressindicator.LinearProgressIndicator +import com.google.android.material.textview.MaterialTextView +import org.yuzu.yuzu_emu.features.settings.model.BooleanSetting +import org.yuzu.yuzu_emu.YuzuApplication +import org.yuzu.yuzu_emu.updater.APKDownloader +import org.yuzu.yuzu_emu.updater.APKInstaller +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext +import androidx.documentfile.provider.DocumentFile class MainActivity : AppCompatActivity(), ThemeProvider { private lateinit var binding: ActivityMainBinding @@ -62,41 +71,8 @@ class MainActivity : AppCompatActivity(), ThemeProvider { private val CHECKED_DECRYPTION = "CheckedDecryption" private var checkedDecryption = false - private val CHECKED_FIRMWARE = "CheckedFirmware" - private var checkedFirmware = false - - private val requestBluetoothPermissionsLauncher = - registerForActivityResult( - androidx.activity.result.contract.ActivityResultContracts.RequestMultiplePermissions() - ) { permissions -> - val granted = permissions.entries.all { it.value } - if (granted) { - // Permissions were granted. - Toast.makeText(this, R.string.bluetooth_permissions_granted, Toast.LENGTH_SHORT) - .show() - } else { - // Permissions were denied. - Toast.makeText(this, R.string.bluetooth_permissions_denied, Toast.LENGTH_LONG) - .show() - } - } - - private fun checkAndRequestBluetoothPermissions() { - // This check is only necessary for Android 12 (API level 31) and above. - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) { - val permissionsToRequest = arrayOf( - android.Manifest.permission.BLUETOOTH_SCAN, - android.Manifest.permission.BLUETOOTH_CONNECT - ) - - val permissionsNotGranted = permissionsToRequest.filter { - checkSelfPermission(it) != android.content.pm.PackageManager.PERMISSION_GRANTED - } - - if (permissionsNotGranted.isNotEmpty()) { - requestBluetoothPermissionsLauncher.launch(permissionsNotGranted.toTypedArray()) - } - } + override fun attachBaseContext(base: Context) { + super.attachBaseContext(YuzuApplication.applyLanguage(base)) } override fun onCreate(savedInstanceState: Bundle?) { @@ -110,13 +86,21 @@ class MainActivity : AppCompatActivity(), ThemeProvider { binding = ActivityMainBinding.inflate(layoutInflater) - setContentView(binding.root) + display?.let { + val supportedModes = it.supportedModes + val maxRefreshRate = supportedModes.maxByOrNull { mode -> mode.refreshRate } - checkAndRequestBluetoothPermissions() + if (maxRefreshRate != null) { + val layoutParams = window.attributes + layoutParams.preferredDisplayModeId = maxRefreshRate.modeId + window.attributes = layoutParams + } + } + + setContentView(binding.root) if (savedInstanceState != null) { checkedDecryption = savedInstanceState.getBoolean(CHECKED_DECRYPTION) - checkedFirmware = savedInstanceState.getBoolean(CHECKED_FIRMWARE) } if (!checkedDecryption) { val firstTimeSetup = PreferenceManager.getDefaultSharedPreferences(applicationContext) @@ -127,16 +111,6 @@ class MainActivity : AppCompatActivity(), ThemeProvider { checkedDecryption = true } - if (!checkedFirmware) { - val firstTimeSetup = PreferenceManager.getDefaultSharedPreferences(applicationContext) - .getBoolean(Settings.PREF_FIRST_APP_LAUNCH, true) - if (!firstTimeSetup) { - checkFirmware() - showPreAlphaWarningDialog() - } - checkedFirmware = true - } - WindowCompat.setDecorFitsSystemWindows(window, false) window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING) @@ -183,37 +157,137 @@ class MainActivity : AppCompatActivity(), ThemeProvider { if (it) checkKeys() } - homeViewModel.checkFirmware.collect( - this, - resetState = { homeViewModel.setCheckFirmware(false) } - ) { - if (it) checkFirmware() - } + // Dismiss previous notifications (should not happen unless a crash occurred) + EmulationActivity.stopForegroundService(this) + val firstTimeSetup = PreferenceManager.getDefaultSharedPreferences(applicationContext) + .getBoolean(Settings.PREF_FIRST_APP_LAUNCH, true) + + if (!firstTimeSetup && NativeLibrary.isUpdateCheckerEnabled() && BooleanSetting.ENABLE_UPDATE_CHECKS.getBoolean()) { + checkForUpdates() + } setInsets() + applyFullscreenPreference() } - fun showPreAlphaWarningDialog() { - val shouldDisplayAlphaWarning = - PreferenceManager.getDefaultSharedPreferences(applicationContext) - .getBoolean(Settings.PREF_SHOULD_SHOW_PRE_ALPHA_WARNING, true) - if (shouldDisplayAlphaWarning) { - MessageDialogFragment.newInstance( - this, - titleId = R.string.pre_alpha_warning_title, - descriptionId = R.string.pre_alpha_warning_description, - positiveButtonTitleId = R.string.dont_show_again, - negativeButtonTitleId = R.string.close, - showNegativeButton = true, - positiveAction = { - PreferenceManager.getDefaultSharedPreferences(applicationContext).edit() { - putBoolean(Settings.PREF_SHOULD_SHOW_PRE_ALPHA_WARNING, false) + private fun checkForUpdates() { + Thread { + val latestVersion = NativeLibrary.checkForUpdate() + if (latestVersion != null) { + runOnUiThread { + val tag: String = latestVersion[0] + val name: String = latestVersion[1] + showUpdateDialog(tag, name) + } + } + }.start() + } + + private fun showUpdateDialog(tag: String, name: String) { + MaterialAlertDialogBuilder(this) + .setTitle(R.string.update_available) + .setMessage(getString(R.string.update_available_description, name)) + .setPositiveButton(android.R.string.ok) { _, _ -> + var artifact = tag + // Nightly builds have a slightly different format + if (NativeLibrary.isNightlyBuild()) { + artifact = tag.substringAfter('.', tag) + } + downloadAndInstallUpdate(tag, artifact) + } + .setNeutralButton(R.string.cancel) { dialog, _ -> + dialog.dismiss() + } + .setNegativeButton(R.string.dont_show_again) { dialog, _ -> + BooleanSetting.ENABLE_UPDATE_CHECKS.setBoolean(false) + NativeConfig.saveGlobalConfig() + dialog.dismiss() + } + .show() + } + + private fun downloadAndInstallUpdate(version: String, artifact: String) { + CoroutineScope(Dispatchers.IO).launch { + val packageId = applicationContext.packageName + val apkUrl = NativeLibrary.getUpdateApkUrl(version, artifact, packageId) + val apkFile = File(cacheDir, "update-$artifact.apk") + + withContext(Dispatchers.Main) { + showDownloadProgressDialog() + } + + val downloader = APKDownloader(apkUrl, apkFile) + downloader.download( + onProgress = { progress -> + runOnUiThread { + updateDownloadProgress(progress) + } + }, + onComplete = { success -> + runOnUiThread { + dismissDownloadProgressDialog() + if (success) { + val installer = APKInstaller(this@MainActivity) + installer.install( + apkFile, + onComplete = { + Toast.makeText( + this@MainActivity, + R.string.update_installed_successfully, + Toast.LENGTH_LONG + ).show() + }, + onFailure = { exception -> + Toast.makeText( + this@MainActivity, + getString(R.string.update_install_failed, exception.message), + Toast.LENGTH_LONG + ).show() + } + ) + } else { + Toast.makeText( + this@MainActivity, + getString(R.string.update_download_failed) + "\n\nURL: $apkUrl", + Toast.LENGTH_LONG + ).show() + } } } - ).show(supportFragmentManager, MessageDialogFragment.TAG) + ) } } + private var progressDialog: androidx.appcompat.app.AlertDialog? = null + private var progressBar: LinearProgressIndicator? = null + private var progressMessage: MaterialTextView? = null + + private fun showDownloadProgressDialog() { + val progressView = layoutInflater.inflate(R.layout.dialog_download_progress, null) + progressBar = progressView.findViewById(R.id.download_progress_bar) + progressMessage = progressView.findViewById(R.id.download_progress_message) + + progressDialog = MaterialAlertDialogBuilder(this) + .setTitle(R.string.downloading_update) + .setView(progressView) + .setCancelable(false) + .create() + progressDialog?.show() + } + + private fun updateDownloadProgress(progress: Int) { + progressBar?.progress = progress + progressMessage?.text = "$progress%" + } + + private fun dismissDownloadProgressDialog() { + progressDialog?.dismiss() + progressDialog = null + progressBar = null + progressMessage = null + } + + fun displayMultiplayerDialog() { val dialog = NetPlayDialog(this) dialog.show() @@ -228,25 +302,9 @@ class MainActivity : AppCompatActivity(), ThemeProvider { ).show(supportFragmentManager, MessageDialogFragment.TAG) } } - - private fun checkFirmware() { - val resultCode: Int = NativeLibrary.verifyFirmware() - if (resultCode == 0) return - - val resultString: String = - resources.getStringArray(R.array.verifyFirmwareResults)[resultCode] - - MessageDialogFragment.newInstance( - titleId = R.string.firmware_invalid, - descriptionString = resultString, - helpLinkId = R.string.firmware_missing_help - ).show(supportFragmentManager, MessageDialogFragment.TAG) - } - override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) outState.putBoolean(CHECKED_DECRYPTION, checkedDecryption) - outState.putBoolean(CHECKED_FIRMWARE, checkedFirmware) } fun finishSetup(navController: NavController) { @@ -286,6 +344,14 @@ class MainActivity : AppCompatActivity(), ThemeProvider { override fun onResume() { ThemeHelper.setCorrectTheme(this) super.onResume() + applyFullscreenPreference() + } + + override fun onWindowFocusChanged(hasFocus: Boolean) { + super.onWindowFocusChanged(hasFocus) + if (hasFocus) { + applyFullscreenPreference() + } } private fun setInsets() = ViewCompat.setOnApplyWindowInsetsListener( @@ -305,11 +371,20 @@ class MainActivity : AppCompatActivity(), ThemeProvider { windowInsets } + private fun applyFullscreenPreference() { + FullscreenHelper.applyToActivity(this) + } + override fun setTheme(resId: Int) { super.setTheme(resId) themeId = resId } + override fun onDestroy() { + EmulationActivity.stopForegroundService(this) + super.onDestroy() + } + val getGamesDirectory = registerForActivityResult(ActivityResultContracts.OpenDocumentTree()) { result -> if (result != null) { @@ -317,6 +392,13 @@ class MainActivity : AppCompatActivity(), ThemeProvider { } } + val getExternalContentDirectory = + registerForActivityResult(ActivityResultContracts.OpenDocumentTree()) { result -> + if (result != null) { + processExternalContentDir(result) + } + } + fun processGamesDir(result: Uri, calledFromGameFragment: Boolean = false) { contentResolver.takePersistableUriPermission( result, @@ -338,6 +420,29 @@ class MainActivity : AppCompatActivity(), ThemeProvider { .show(supportFragmentManager, AddGameFolderDialogFragment.TAG) } + fun processExternalContentDir(result: Uri) { + contentResolver.takePersistableUriPermission( + result, + Intent.FLAG_GRANT_READ_URI_PERMISSION + ) + + val uriString = result.toString() + val folder = gamesViewModel.folders.value.firstOrNull { + it.uriString == uriString && it.type == org.yuzu.yuzu_emu.model.DirectoryType.EXTERNAL_CONTENT + } + if (folder != null) { + Toast.makeText( + applicationContext, + R.string.folder_already_added, + Toast.LENGTH_SHORT + ).show() + return + } + + val externalContentDir = org.yuzu.yuzu_emu.model.GameDir(uriString, false, org.yuzu.yuzu_emu.model.DirectoryType.EXTERNAL_CONTENT) + gamesViewModel.addFolder(externalContentDir, savedFromGameFragment = false) + } + val getProdKey = registerForActivityResult(ActivityResultContracts.OpenDocument()) { result -> if (result != null) { processKey(result, "keys") @@ -351,35 +456,13 @@ class MainActivity : AppCompatActivity(), ThemeProvider { } fun processKey(result: Uri, extension: String = "keys") { - contentResolver.takePersistableUriPermission( - result, - Intent.FLAG_GRANT_READ_URI_PERMISSION + InstallableActions.processKey( + activity = this, + fragmentManager = supportFragmentManager, + gamesViewModel = gamesViewModel, + result = result, + extension = extension ) - - val resultCode: Int = NativeLibrary.installKeys(result.toString(), extension) - - if (resultCode == 0) { - // TODO(crueter): It may be worth it to switch some of these Toasts to snackbars, - // since most of it is foreground-only anyways. - Toast.makeText( - applicationContext, - R.string.keys_install_success, - Toast.LENGTH_SHORT - ).show() - - gamesViewModel.reloadGames(true) - - return - } - - val resultString: String = - resources.getStringArray(R.array.installKeysResults)[resultCode] - - MessageDialogFragment.newInstance( - titleId = R.string.keys_failed, - descriptionString = resultString, - helpLinkId = R.string.keys_missing_help - ).show(supportFragmentManager, MessageDialogFragment.TAG) } val getFirmware = registerForActivityResult(ActivityResultContracts.OpenDocument()) { result -> @@ -389,218 +472,30 @@ class MainActivity : AppCompatActivity(), ThemeProvider { } fun processFirmware(result: Uri, onComplete: (() -> Unit)? = null) { - val filterNCA = FilenameFilter { _, dirName -> dirName.endsWith(".nca") } - - val firmwarePath = - File(DirectoryInitialization.userDirectory + "/nand/system/Contents/registered/") - val cacheFirmwareDir = File("${cacheDir.path}/registered/") - - ProgressDialogFragment.newInstance( - this, - R.string.firmware_installing - ) { progressCallback, _ -> - var messageToShow: Any - try { - FileUtil.unzipToInternalStorage( - result.toString(), - cacheFirmwareDir, - progressCallback - ) - val unfilteredNumOfFiles = cacheFirmwareDir.list()?.size ?: -1 - val filteredNumOfFiles = cacheFirmwareDir.list(filterNCA)?.size ?: -2 - messageToShow = if (unfilteredNumOfFiles != filteredNumOfFiles) { - MessageDialogFragment.newInstance( - this, - titleId = R.string.firmware_installed_failure, - descriptionId = R.string.firmware_installed_failure_description - ) - } else { - firmwarePath.deleteRecursively() - cacheFirmwareDir.copyRecursively(firmwarePath, true) - NativeLibrary.initializeSystem(true) - homeViewModel.setCheckKeys(true) - homeViewModel.setCheckFirmware(true) - getString(R.string.save_file_imported_success) - } - } catch (e: Exception) { - Log.error("[MainActivity] Firmware install failed - ${e.message}") - messageToShow = getString(R.string.fatal_error) - } finally { - cacheFirmwareDir.deleteRecursively() - } - messageToShow - }.apply { - onDialogComplete = onComplete - }.show(supportFragmentManager, ProgressDialogFragment.TAG) + InstallableActions.processFirmware( + activity = this, + fragmentManager = supportFragmentManager, + homeViewModel = homeViewModel, + result = result, + onComplete = onComplete + ) } fun uninstallFirmware() { - val firmwarePath = - File(DirectoryInitialization.userDirectory + "/nand/system/Contents/registered/") - ProgressDialogFragment.newInstance( - this, - R.string.firmware_uninstalling - ) { progressCallback, _ -> - var messageToShow: Any - try { - // Ensure the firmware directory exists before attempting to delete - if (firmwarePath.exists()) { - firmwarePath.deleteRecursively() - // Optionally reinitialize the system or perform other necessary steps - NativeLibrary.initializeSystem(true) - homeViewModel.setCheckKeys(true) - homeViewModel.setCheckFirmware(true) - messageToShow = getString(R.string.firmware_uninstalled_success) - } else { - messageToShow = getString(R.string.firmware_uninstalled_failure) - } - } catch (e: Exception) { - Log.error("[MainActivity] Firmware uninstall failed - ${e.message}") - messageToShow = getString(R.string.fatal_error) - } - messageToShow - }.show(supportFragmentManager, ProgressDialogFragment.TAG) - } - - val installGameUpdate = registerForActivityResult( - ActivityResultContracts.OpenMultipleDocuments() - ) { documents: List -> - if (documents.isEmpty()) { - return@registerForActivityResult - } - - if (addonViewModel.game == null) { - installContent(documents) - return@registerForActivityResult - } - - ProgressDialogFragment.newInstance( - this@MainActivity, - R.string.verifying_content, - false - ) { _, _ -> - var updatesMatchProgram = true - for (document in documents) { - val valid = NativeLibrary.doesUpdateMatchProgram( - addonViewModel.game!!.programId, - document.toString() - ) - if (!valid) { - updatesMatchProgram = false - break - } - } - - if (updatesMatchProgram) { - homeViewModel.setContentToInstall(documents) - } else { - MessageDialogFragment.newInstance( - this@MainActivity, - titleId = R.string.content_install_notice, - descriptionId = R.string.content_install_notice_description, - positiveAction = { homeViewModel.setContentToInstall(documents) }, - negativeAction = {} - ) - } - }.show(supportFragmentManager, ProgressDialogFragment.TAG) + InstallableActions.uninstallFirmware( + activity = this, + fragmentManager = supportFragmentManager, + homeViewModel = homeViewModel + ) } private fun installContent(documents: List) { - ProgressDialogFragment.newInstance( - this@MainActivity, - R.string.installing_game_content - ) { progressCallback, messageCallback -> - var installSuccess = 0 - var installOverwrite = 0 - var errorBaseGame = 0 - var error = 0 - documents.forEach { - messageCallback.invoke(FileUtil.getFilename(it)) - when ( - InstallResult.from( - NativeLibrary.installFileToNand( - it.toString(), - progressCallback - ) - ) - ) { - InstallResult.Success -> { - installSuccess += 1 - } - - InstallResult.Overwrite -> { - installOverwrite += 1 - } - - InstallResult.BaseInstallAttempted -> { - errorBaseGame += 1 - } - - InstallResult.Failure -> { - error += 1 - } - } - } - - addonViewModel.refreshAddons() - - val separator = System.lineSeparator() ?: "\n" - val installResult = StringBuilder() - if (installSuccess > 0) { - installResult.append( - getString( - R.string.install_game_content_success_install, - installSuccess - ) - ) - installResult.append(separator) - } - if (installOverwrite > 0) { - installResult.append( - getString( - R.string.install_game_content_success_overwrite, - installOverwrite - ) - ) - installResult.append(separator) - } - val errorTotal: Int = errorBaseGame + error - if (errorTotal > 0) { - installResult.append(separator) - installResult.append( - getString( - R.string.install_game_content_failed_count, - errorTotal - ) - ) - installResult.append(separator) - if (errorBaseGame > 0) { - installResult.append(separator) - installResult.append( - getString(R.string.install_game_content_failure_base) - ) - installResult.append(separator) - } - if (error > 0) { - installResult.append( - getString(R.string.install_game_content_failure_description) - ) - installResult.append(separator) - } - return@newInstance MessageDialogFragment.newInstance( - this, - titleId = R.string.install_game_content_failure, - descriptionString = installResult.toString().trim(), - helpLinkId = R.string.install_game_content_help_link - ) - } else { - return@newInstance MessageDialogFragment.newInstance( - this, - titleId = R.string.install_game_content_success, - descriptionString = installResult.toString().trim() - ) - } - }.show(supportFragmentManager, ProgressDialogFragment.TAG) + InstallableActions.installContent( + activity = this, + fragmentManager = supportFragmentManager, + addonViewModel = addonViewModel, + documents = documents + ) } val exportUserData = registerForActivityResult( @@ -609,25 +504,11 @@ class MainActivity : AppCompatActivity(), ThemeProvider { if (result == null) { return@registerForActivityResult } - - ProgressDialogFragment.newInstance( - this, - R.string.exporting_user_data, - true - ) { progressCallback, _ -> - val zipResult = FileUtil.zipFromInternalStorage( - File(DirectoryInitialization.userDirectory!!), - DirectoryInitialization.userDirectory!!, - BufferedOutputStream(contentResolver.openOutputStream(result)), - progressCallback, - compression = false - ) - return@newInstance when (zipResult) { - TaskState.Completed -> getString(R.string.user_data_export_success) - TaskState.Failed -> R.string.export_failed - TaskState.Cancelled -> R.string.user_data_export_cancelled - } - }.show(supportFragmentManager, ProgressDialogFragment.TAG) + InstallableActions.exportUserData( + activity = this, + fragmentManager = supportFragmentManager, + result = result + ) } val importUserData = @@ -635,58 +516,12 @@ class MainActivity : AppCompatActivity(), ThemeProvider { if (result == null) { return@registerForActivityResult } - - ProgressDialogFragment.newInstance( - this, - R.string.importing_user_data - ) { progressCallback, _ -> - val checkStream = - ZipInputStream(BufferedInputStream(contentResolver.openInputStream(result))) - var isYuzuBackup = false - checkStream.use { stream -> - var ze: ZipEntry? = null - while (stream.nextEntry?.also { ze = it } != null) { - val itemName = ze!!.name.trim() - if (itemName == "/config/config.ini" || itemName == "config/config.ini") { - isYuzuBackup = true - return@use - } - } - } - if (!isYuzuBackup) { - return@newInstance MessageDialogFragment.newInstance( - this, - titleId = R.string.invalid_yuzu_backup, - descriptionId = R.string.user_data_import_failed_description - ) - } - - // Clear existing user data - NativeConfig.unloadGlobalConfig() - File(DirectoryInitialization.userDirectory!!).deleteRecursively() - - // Copy archive to internal storage - try { - FileUtil.unzipToInternalStorage( - result.toString(), - File(DirectoryInitialization.userDirectory!!), - progressCallback - ) - } catch (e: Exception) { - return@newInstance MessageDialogFragment.newInstance( - this, - titleId = R.string.import_failed, - descriptionId = R.string.user_data_import_failed_description - ) - } - - // Reinitialize relevant data - NativeLibrary.initializeSystem(true) - NativeConfig.initializeGlobalConfig() - gamesViewModel.reloadGames(false) - driverViewModel.reloadDriverData() - - return@newInstance getString(R.string.user_data_import_success) - }.show(supportFragmentManager, ProgressDialogFragment.TAG) + InstallableActions.importUserData( + activity = this, + fragmentManager = supportFragmentManager, + gamesViewModel = gamesViewModel, + driverViewModel = driverViewModel, + result = result + ) } } diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/updater/APKDownloader.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/updater/APKDownloader.kt new file mode 100644 index 0000000000..4484bfd5de --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/updater/APKDownloader.kt @@ -0,0 +1,61 @@ +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +package org.yuzu.yuzu_emu.updater + +import okhttp3.Call +import okhttp3.Callback +import okhttp3.OkHttpClient +import okhttp3.Request +import okhttp3.Response +import java.io.File +import java.io.FileOutputStream +import java.io.IOException + +class APKDownloader(private val url: String, private val outputFile: File) { + + fun download(onProgress: (Int) -> Unit, onComplete: (Boolean) -> Unit) { + val client = OkHttpClient() + val request = Request.Builder().url(url).build() + + client.newCall(request).enqueue(object : Callback { + override fun onFailure(call: Call, e: IOException) { + e.printStackTrace() + onComplete(false) + } + + override fun onResponse(call: Call, response: Response) { + if (response.isSuccessful) { + response.body?.let { body -> + val contentLength = body.contentLength() + try { + val inputStream = body.byteStream() + val outputStream = FileOutputStream(outputFile) + val buffer = ByteArray(4096) + var bytesRead: Int + var totalBytesRead: Long = 0 + + while (inputStream.read(buffer).also { bytesRead = it } != -1) { + outputStream.write(buffer, 0, bytesRead) + totalBytesRead += bytesRead + val progress = (totalBytesRead * 100 / contentLength).toInt() + onProgress(progress) + } + outputStream.flush() + outputStream.close() + inputStream.close() + onComplete(true) + } catch (e: IOException) { + e.printStackTrace() + onComplete(false) + } + } ?: run { + onComplete(false) + } + } else { + onComplete(false) + } + } + }) + } +} diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/updater/APKInstaller.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/updater/APKInstaller.kt new file mode 100644 index 0000000000..9014597ff9 --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/updater/APKInstaller.kt @@ -0,0 +1,41 @@ +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +package org.yuzu.yuzu_emu.updater + +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.net.Uri +import androidx.core.content.FileProvider +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch +import java.io.File + +class APKInstaller(private val context: Context) { + + fun install(apkFile: File, onComplete: () -> Unit, onFailure: (Exception) -> Unit) { + try { + val apkUri: Uri = FileProvider.getUriForFile( + context, + context.applicationContext.packageName + ".provider", + apkFile + ) + val intent = Intent(Intent.ACTION_VIEW) + intent.setDataAndType(apkUri, "application/vnd.android.package-archive") + intent.flags = Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_ACTIVITY_NEW_TASK + context.startActivity(intent) + + GlobalScope.launch { + val receiver = AppInstallReceiver(onComplete, onFailure) + context.registerReceiver(receiver, IntentFilter().apply { + addAction(Intent.ACTION_PACKAGE_ADDED) + addAction(Intent.ACTION_PACKAGE_REPLACED) + addDataScheme("package") + }) + } + } catch (e: Exception) { + onFailure(e) + } + } +} diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/updater/AppInstallReceiver.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/updater/AppInstallReceiver.kt new file mode 100644 index 0000000000..d58c7c2de2 --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/updater/AppInstallReceiver.kt @@ -0,0 +1,30 @@ +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +package org.yuzu.yuzu_emu.updater + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.util.Log + +class AppInstallReceiver( + private val onComplete: () -> Unit, + private val onFailure: (Exception) -> Unit +) : BroadcastReceiver() { + + override fun onReceive(context: Context, intent: Intent) { + val packageName = intent.data?.schemeSpecificPart + when (intent.action) { + Intent.ACTION_PACKAGE_ADDED, Intent.ACTION_PACKAGE_REPLACED -> { + Log.i("AppInstallReceiver", "Package installed or updated: $packageName") + onComplete() + context.unregisterReceiver(this) + } + else -> { + onFailure(Exception("Installation failed for package: $packageName")) + context.unregisterReceiver(this) + } + } + } +} diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/AddonUtil.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/AddonUtil.kt index 8cc5ea71f2..b5613a7a76 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/AddonUtil.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/AddonUtil.kt @@ -1,8 +1,11 @@ +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later package org.yuzu.yuzu_emu.utils object AddonUtil { - val validAddonDirectories = listOf("cheats", "exefs", "romfs") + val validAddonDirectories = listOf("cheats", "exefs", "romfs", "romfslite") } diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/ControllerNavigationGlobalHook.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/ControllerNavigationGlobalHook.kt new file mode 100644 index 0000000000..5be60bdbf9 --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/ControllerNavigationGlobalHook.kt @@ -0,0 +1,168 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +package org.yuzu.yuzu_emu.utils + +import android.app.Activity +import android.app.Application +import android.os.Bundle +import android.view.InputDevice +import android.view.KeyEvent +import android.view.View +import android.view.Window +import androidx.activity.ComponentActivity +import org.yuzu.yuzu_emu.NativeLibrary +import org.yuzu.yuzu_emu.R +import org.yuzu.yuzu_emu.features.settings.model.BooleanSetting +import java.util.concurrent.atomic.AtomicBoolean + +object ControllerNavigationGlobalHook { + private val installed = AtomicBoolean(false) + + fun install(application: Application) { + if (!installed.compareAndSet(false, true)) { + return + } + application.registerActivityLifecycleCallbacks(HookInstaller) + } + + private object HookInstaller : Application.ActivityLifecycleCallbacks { + override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) { + installHookIfNeeded(activity) + } + + override fun onActivityResumed(activity: Activity) { + installHookIfNeeded(activity) + } + + override fun onActivityStarted(activity: Activity) = Unit + override fun onActivityPaused(activity: Activity) = Unit + override fun onActivityStopped(activity: Activity) = Unit + override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) = Unit + override fun onActivityDestroyed(activity: Activity) = Unit + } + + private fun installHookIfNeeded(activity: Activity) { + val window = activity.window ?: return + val currentCallback = window.callback ?: return + if (currentCallback is ControllerNavigationWindowCallback) { + return + } + window.callback = ControllerNavigationWindowCallback(activity, currentCallback) + } + + private class ControllerNavigationWindowCallback( + private val activity: Activity, + private val delegate: Window.Callback + ) : Window.Callback by delegate { + private val componentActivity = activity as? ComponentActivity + + override fun dispatchKeyEvent(event: KeyEvent): Boolean { + if (activity.isFinishing || activity.isDestroyed) { + return delegate.dispatchKeyEvent(event) + } + + if (!BooleanSetting.INVERT_CONFIRM_BACK_CONTROLLER_BUTTONS.getBoolean()) { + return delegate.dispatchKeyEvent(event) + } + + if (!isControllerInput(event) || componentActivity == null) { + return delegate.dispatchKeyEvent(event) + } + if (shouldBypassInGameplay()) { + return delegate.dispatchKeyEvent(event) + } + + if (isConfirmAction(event.keyCode)) { + return when (event.action) { + KeyEvent.ACTION_DOWN -> { + if (event.repeatCount == 0) { + componentActivity.onBackPressedDispatcher.onBackPressed() + } + true + } + KeyEvent.ACTION_UP -> true + else -> false + } + } + + if (isBackAction(event.keyCode)) { + val remappedEvent = KeyEvent( + event.downTime, + event.eventTime, + event.action, + KeyEvent.KEYCODE_DPAD_CENTER, + event.repeatCount, + event.metaState, + event.deviceId, + event.scanCode, + event.flags, + event.source + ) + return delegate.dispatchKeyEvent(remappedEvent) + } + + return delegate.dispatchKeyEvent(event) + } + + private fun shouldBypassInGameplay(): Boolean { + if (activity.javaClass.name != "org.yuzu.yuzu_emu.activities.EmulationActivity") { + return false + } + if (!NativeLibrary.isRunning()) { + return false + } + + val surface = activity.findViewById(R.id.surface_emulation) ?: return false + if (!surface.isShown || surface.visibility != View.VISIBLE) { + return false + } + + val focused = activity.currentFocus + if (focused != null) { + val inputOverlay = activity.findViewById(R.id.surface_input_overlay) + if (!isDescendantOf(focused, inputOverlay)) { + return false + } + } + + return true + } + + private fun isDescendantOf(view: View, parent: View?): Boolean { + if (parent == null) { + return false + } + + var current: View? = view + while (current != null) { + if (current === parent) { + return true + } + current = current.parent as? View + } + + return false + } + + private fun isControllerInput(event: KeyEvent): Boolean { + val source = event.source + val deviceSources = event.device?.sources ?: InputDevice.getDevice(event.deviceId)?.sources ?: 0 + return hasControllerSource(source) || hasControllerSource(deviceSources) + } + + private fun isConfirmAction(keyCode: Int): Boolean { + return keyCode == KeyEvent.KEYCODE_BUTTON_A + } + + private fun isBackAction(keyCode: Int): Boolean { + return keyCode == KeyEvent.KEYCODE_BUTTON_B + } + + private fun hasControllerSource(source: Int): Boolean { + return source and InputDevice.SOURCE_GAMEPAD == InputDevice.SOURCE_GAMEPAD || + source and InputDevice.SOURCE_JOYSTICK == InputDevice.SOURCE_JOYSTICK || + source and InputDevice.SOURCE_DPAD == InputDevice.SOURCE_DPAD + } + } +} diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/CustomSettingsHandler.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/CustomSettingsHandler.kt index a317be14d5..377313d0aa 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/CustomSettingsHandler.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/CustomSettingsHandler.kt @@ -124,11 +124,16 @@ object CustomSettingsHandler { // Check for driver requirements if activity and driverViewModel are provided if (activity != null && driverViewModel != null) { - val driverPath = extractDriverPath(customSettings) - if (driverPath != null) { - Log.info("[CustomSettingsHandler] Custom settings specify driver: $driverPath") + val rawDriverPath = extractDriverPath(customSettings) + if (rawDriverPath != null) { + // Normalize to local storage path (we only store drivers under driverStoragePath) + val driverFilename = rawDriverPath.substringAfterLast('/') + .substringAfterLast('\\') + val localDriverPath = "${GpuDriverHelper.driverStoragePath}$driverFilename" + Log.info("[CustomSettingsHandler] Custom settings specify driver: $rawDriverPath (normalized: $localDriverPath)") + // Check if driver exists in the driver storage - val driverFile = File(driverPath) + val driverFile = File(localDriverPath) if (!driverFile.exists()) { Log.info("[CustomSettingsHandler] Driver not found locally: ${driverFile.name}") @@ -182,7 +187,7 @@ object CustomSettingsHandler { } // Attempt to download and install the driver - val driverUri = DriverResolver.ensureDriverAvailable(driverPath, activity) { progress -> + val driverUri = DriverResolver.ensureDriverAvailable(driverFilename, activity) { progress -> progressChannel.trySend(progress.toInt()) } @@ -209,12 +214,12 @@ object CustomSettingsHandler { return null } - // Verify the downloaded driver - val installedFile = File(driverPath) + // Verify the downloaded driver (from normalized local path) + val installedFile = File(localDriverPath) val metadata = GpuDriverHelper.getMetadataFromZip(installedFile) if (metadata.name == null) { Log.error( - "[CustomSettingsHandler] Downloaded driver is invalid: $driverPath" + "[CustomSettingsHandler] Downloaded driver is invalid: $localDriverPath" ) Toast.makeText( activity, @@ -232,7 +237,7 @@ object CustomSettingsHandler { } // Add to driver list - driverViewModel.onDriverAdded(Pair(driverPath, metadata)) + driverViewModel.onDriverAdded(Pair(localDriverPath, metadata)) Log.info( "[CustomSettingsHandler] Successfully downloaded and installed driver: ${metadata.name}" ) @@ -268,7 +273,7 @@ object CustomSettingsHandler { // Driver exists, verify it's valid val metadata = GpuDriverHelper.getMetadataFromZip(driverFile) if (metadata.name == null) { - Log.error("[CustomSettingsHandler] Invalid driver file: $driverPath") + Log.error("[CustomSettingsHandler] Invalid driver file: $localDriverPath") Toast.makeText( activity, activity.getString( @@ -459,6 +464,8 @@ object CustomSettingsHandler { if (inGpuDriverSection && trimmed.startsWith("driver_path=")) { return trimmed.substringAfter("driver_path=") + .trim() + .removeSurrounding("\"", "\"") } } 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 de0794a17f..f961c5e984 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 @@ -1,5 +1,5 @@ -// SPDX-FileCopyrightText: 2023 yuzu Emulator Project -// SPDX-License-Identifier: GPL-2.0-or-later +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later package org.yuzu.yuzu_emu.utils @@ -23,8 +23,9 @@ object DirectoryInitialization { fun start() { if (!areDirectoriesReady) { initializeInternalStorage() - NativeLibrary.initializeSystem(false) NativeConfig.initializeGlobalConfig() + NativeLibrary.initializeSystem(false) + NativeLibrary.reloadProfiles() migrateSettings() areDirectoriesReady = true } @@ -60,6 +61,12 @@ object DirectoryInitialization { saveConfig = true } + val staticThemeColor = preferences.migratePreference(Settings.PREF_STATIC_THEME_COLOR) + if (staticThemeColor != null) { + IntSetting.STATIC_THEME_COLOR.setInt(staticThemeColor) + saveConfig = true + } + val blackBackgrounds = preferences.migratePreference(Settings.PREF_BLACK_BACKGROUNDS) if (blackBackgrounds != null) { @@ -170,7 +177,8 @@ object DirectoryInitialization { buttonEnabled, Pair(landscapeXPosition, landscapeYPosition), Pair(portraitXPosition, portraitYPosition), - Pair(foldableXPosition, foldableYPosition) + Pair(foldableXPosition, foldableYPosition), + OverlayControl.map[buttonId]?.defaultIndividualScaleResource ?: 1.0f ) overlayControlDataMap[buttonId] = controlData setOverlayData = true diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/DriverResolver.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/DriverResolver.kt index 74f98ccbd2..2072344bdf 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/DriverResolver.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/DriverResolver.kt @@ -68,6 +68,48 @@ object DriverResolver { val filename: String ) + // Matching helpers + private val KNOWN_SUFFIXES = listOf( + ".adpkg.zip", + ".zip", + ".7z", + ".tar.gz", + ".tar.xz", + ".rar" + ) + + private fun stripKnownSuffixes(name: String): String { + var result = name + var changed: Boolean + do { + changed = false + for (s in KNOWN_SUFFIXES) { + if (result.endsWith(s, ignoreCase = true)) { + result = result.dropLast(s.length) + changed = true + } + } + } while (changed) + return result + } + + private fun normalizeName(name: String): String { + val base = stripKnownSuffixes(name.lowercase()) + // Remove non-alphanumerics to make substring checks resilient + return base.replace(Regex("[^a-z0-9]+"), " ").trim() + } + + private fun tokenize(name: String): Set = + normalizeName(name).split(Regex("\\s+")).filter { it.isNotBlank() }.toSet() + + // Jaccard similarity between two sets + private fun jaccard(a: Set, b: Set): Double { + if (a.isEmpty() || b.isEmpty()) return 0.0 + val inter = a.intersect(b).size.toDouble() + val uni = a.union(b).size.toDouble() + return if (uni == 0.0) 0.0 else inter / uni + } + /** * Resolve a driver download URL from its filename * @param filename The driver filename (e.g., "turnip_mrpurple-T19-toasted.adpkg.zip") @@ -98,7 +140,7 @@ object DriverResolver { async { searchRepository(repoPath, filename) } - }.mapNotNull { it.await() }.firstOrNull().also { resolved -> + }.firstNotNullOfOrNull { it.await() }.also { resolved -> // Cache the result if found resolved?.let { urlCache[filename] = it @@ -119,22 +161,56 @@ object DriverResolver { releaseCache[repoPath] = it } - // Search through all releases and artifacts + // First pass: exact name (case-insensitive) against asset filenames + val target = filename.lowercase() for (release in releases) { for (artifact in release.artifacts) { - if (artifact.name == filename) { - Log.info( - "[DriverResolver] Found $filename in $repoPath/${release.tagName}" - ) + if (artifact.name.equals(filename, ignoreCase = true) || artifact.name.lowercase() == target) { + Log.info("[DriverResolver] Found $filename in $repoPath/${release.tagName}") return@withContext ResolvedDriver( downloadUrl = artifact.url.toString(), repoPath = repoPath, releaseTag = release.tagName, - filename = filename + filename = artifact.name ) } } } + + // Second pass: fuzzy match by asset filenames only + val reqNorm = normalizeName(filename) + val reqTokens = tokenize(filename) + var best: ResolvedDriver? = null + var bestScore = 0.0 + + for (release in releases) { + for (artifact in release.artifacts) { + val artNorm = normalizeName(artifact.name) + val artTokens = tokenize(artifact.name) + + var score = jaccard(reqTokens, artTokens) + // Boost if one normalized name contains the other + if (artNorm.contains(reqNorm) || reqNorm.contains(artNorm)) { + score = maxOf(score, 0.92) + } + + if (score > bestScore) { + bestScore = score + best = ResolvedDriver( + downloadUrl = artifact.url.toString(), + repoPath = repoPath, + releaseTag = release.tagName, + filename = artifact.name + ) + } + } + } + + // Threshold to avoid bad guesses, this worked fine in testing but might need tuning + if (best != null && bestScore >= 0.6) { + Log.info("[DriverResolver] Fuzzy matched $filename -> ${best.filename} in ${best.repoPath} (score=%.2f)".format(bestScore)) + return@withContext best + } null } catch (e: Exception) { Log.error("[DriverResolver] Failed to search $repoPath: ${e.message}") @@ -296,8 +372,8 @@ object DriverResolver { context: Context, onProgress: ((Float) -> Unit)? = null ): Uri? { - // Extract filename from path - val filename = driverPath.substringAfterLast('/') + // Extract filename from path (support both separators) + val filename = driverPath.substringAfterLast('/').substringAfterLast('\\') // Check if driver already exists locally val localPath = "${GpuDriverHelper.driverStoragePath}$filename" 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 52ee7b01ea..1deba1aade 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 @@ -18,6 +18,7 @@ import java.net.URLDecoder import java.util.zip.ZipEntry import java.util.zip.ZipInputStream import org.yuzu.yuzu_emu.YuzuApplication +import org.yuzu.yuzu_emu.features.DocumentProvider import org.yuzu.yuzu_emu.model.MinimalDocumentFile import org.yuzu.yuzu_emu.model.TaskState import java.io.BufferedOutputStream @@ -291,6 +292,39 @@ object FileUtil { null } + /** + * Copies a file from internal appdata storage to an external Uri. + */ + fun copyToExternalStorage( + sourcePath: String, + destUri: Uri, + progressCallback: (max: Long, progress: Long) -> Boolean = { _, _ -> false } + ): TaskState { + try { + val totalBytes = getFileSize(sourcePath) + var progressBytes = 0L + val inputStream = getInputStream(sourcePath) + BufferedInputStream(inputStream).use { bis -> + context.contentResolver.openOutputStream(destUri, "wt")?.use { outputStream -> + val buffer = ByteArray(1024 * 4) + var len: Int + while (bis.read(buffer).also { len = it } != -1) { + if (progressCallback.invoke(totalBytes, progressBytes)) { + return TaskState.Cancelled + } + outputStream.write(buffer, 0, len) + progressBytes += len + } + outputStream.flush() + } ?: return TaskState.Failed + } + } catch (e: Exception) { + Log.error("[FileUtil] Failed exporting file - ${e.message}") + return TaskState.Failed + } + return TaskState.Completed + } + /** * Extracts the given zip file into the given directory. * @param path String representation of a [Uri] or a typical path delimited by '/' diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/ForegroundService.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/ForegroundService.kt new file mode 100644 index 0000000000..c181656d99 --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/ForegroundService.kt @@ -0,0 +1,79 @@ +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +// Copyright 2023 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +package org.yuzu.yuzu_emu.utils + +import android.app.PendingIntent +import android.app.Service +import android.content.Intent +import android.os.IBinder +import androidx.core.app.NotificationCompat +import androidx.core.app.NotificationManagerCompat +import org.yuzu.yuzu_emu.R +import org.yuzu.yuzu_emu.activities.EmulationActivity + +/** + * A service that shows a permanent notification in the background to avoid the app getting + * cleared from memory by the system. + */ +class ForegroundService : Service() { + companion object { + const val EMULATION_RUNNING_NOTIFICATION = 0x1000 + + const val ACTION_STOP = "stop" + } + + private fun showRunningNotification() { + // Intent is used to resume emulation if the notification is clicked + val contentIntent = PendingIntent.getActivity( + this, + 0, + Intent(this, EmulationActivity::class.java), + PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT + ) + val builder = + NotificationCompat.Builder(this, getString(R.string.app_notification_channel_id)) + .setSmallIcon(R.drawable.ic_stat_notification_logo) + .setContentTitle(getString(R.string.app_name)) + .setContentText(getString(R.string.app_notification_running)) + .setPriority(NotificationCompat.PRIORITY_DEFAULT) + .setOngoing(true) + .setVibrate(null) + .setSound(null) + .setContentIntent(contentIntent) + startForeground(EMULATION_RUNNING_NOTIFICATION, builder.build()) + } + + override fun onBind(intent: Intent): IBinder? { + return null + } + + override fun onCreate() { + showRunningNotification() + } + + override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { + if (intent?.action == ACTION_STOP) { + try { + NotificationManagerCompat.from(this).cancel(EMULATION_RUNNING_NOTIFICATION) + stopForeground(STOP_FOREGROUND_REMOVE) + } catch (e: Exception) { + Log.error("Failed to stop foreground service") + } + stopSelfResult(startId) + return START_NOT_STICKY + } + + if (intent != null) { + showRunningNotification() + } + return START_STICKY + } + + override fun onDestroy() = + NotificationManagerCompat.from(this).cancel(EMULATION_RUNNING_NOTIFICATION) +} diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/FullscreenHelper.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/FullscreenHelper.kt new file mode 100644 index 0000000000..62c83e1806 --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/FullscreenHelper.kt @@ -0,0 +1,52 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +package org.yuzu.yuzu_emu.utils + +import android.app.Activity +import android.content.Context +import android.view.Window +import androidx.core.content.edit +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.WindowInsetsControllerCompat +import androidx.preference.PreferenceManager +import org.yuzu.yuzu_emu.features.settings.model.Settings + +object FullscreenHelper { + fun isFullscreenEnabled(context: Context): Boolean { + return PreferenceManager.getDefaultSharedPreferences(context).getBoolean( + Settings.PREF_APP_FULLSCREEN, + Settings.APP_FULLSCREEN_DEFAULT + ) + } + + fun setFullscreenEnabled(context: Context, enabled: Boolean) { + PreferenceManager.getDefaultSharedPreferences(context).edit { + putBoolean(Settings.PREF_APP_FULLSCREEN, enabled) + } + } + + fun shouldHideSystemBars(activity: Activity): Boolean { + val rootInsets = ViewCompat.getRootWindowInsets(activity.window.decorView) + val barsCurrentlyHidden = + rootInsets?.isVisible(WindowInsetsCompat.Type.systemBars())?.not() ?: false + return isFullscreenEnabled(activity) || barsCurrentlyHidden + } + + fun applyToWindow(window: Window, hideSystemBars: Boolean) { + val controller = WindowInsetsControllerCompat(window, window.decorView) + + if (hideSystemBars) { + controller.hide(WindowInsetsCompat.Type.systemBars()) + controller.systemBarsBehavior = + WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE + } else { + controller.show(WindowInsetsCompat.Type.systemBars()) + } + } + + fun applyToActivity(activity: Activity) { + applyToWindow(activity.window, isFullscreenEnabled(activity)) + } +} diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/GameHelper.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/GameHelper.kt index e27bc94696..64e035afbe 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/GameHelper.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/GameHelper.kt @@ -1,16 +1,18 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later -// SPDX-FileCopyrightText: 2025 Eden Emulator Project -// SPDX-License-Identifier: GPL-3.0-or-later - package org.yuzu.yuzu_emu.utils import android.content.SharedPreferences import android.net.Uri +import android.provider.DocumentsContract import androidx.preference.PreferenceManager import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json +import java.io.File import org.yuzu.yuzu_emu.NativeLibrary import org.yuzu.yuzu_emu.YuzuApplication import org.yuzu.yuzu_emu.model.Game @@ -49,15 +51,21 @@ object GameHelper { // Remove previous filesystem provider information so we can get up to date version info NativeLibrary.clearFilesystemProvider() + val mountedContainerUris = mutableSetOf() + mountExternalContentDirectories(mountedContainerUris) + val badDirs = mutableListOf() gameDirs.forEachIndexed { index: Int, gameDir: GameDir -> val gameDirUri = gameDir.uriString.toUri() val isValid = FileUtil.isTreeUriValid(gameDirUri) if (isValid) { + val scanDepth = if (gameDir.deepScan) 3 else 1 + addGamesRecursive( games, FileUtil.listFiles(gameDirUri), - if (gameDir.deepScan) 3 else 1 + scanDepth, + mountedContainerUris ) } else { badDirs.add(index) @@ -88,10 +96,49 @@ object GameHelper { return games.toList() } + fun restoreContentForGame(game: Game) { + NativeLibrary.reloadKeys() + + val mountedContainerUris = mutableSetOf() + mountExternalContentDirectories(mountedContainerUris) + mountGameFolderContent(Uri.parse(game.path), mountedContainerUris) + NativeLibrary.addFileToFilesystemProvider(game.path) + } + + // File extensions considered as external content, buuut should + // be done better imo. + private val externalContentExtensions = setOf("nsp", "xci") + + private fun scanContentContainersRecursive( + files: Array, + depth: Int, + onContainerFound: (MinimalDocumentFile) -> Unit + ) { + if (depth <= 0) { + return + } + + files.forEach { + if (it.isDirectory) { + scanContentContainersRecursive( + FileUtil.listFiles(it.uri), + depth - 1, + onContainerFound + ) + } else { + val extension = FileUtil.getExtension(it.uri).lowercase() + if (externalContentExtensions.contains(extension)) { + onContainerFound(it) + } + } + } + } + private fun addGamesRecursive( games: MutableList, files: Array, - depth: Int + depth: Int, + mountedContainerUris: MutableSet ) { if (depth <= 0) { return @@ -102,11 +149,20 @@ object GameHelper { addGamesRecursive( games, FileUtil.listFiles(it.uri), - depth - 1 + depth - 1, + mountedContainerUris ) } else { - if (Game.extensions.contains(FileUtil.getExtension(it.uri))) { - val game = getGame(it.uri, true) + val extension = FileUtil.getExtension(it.uri).lowercase() + val filePath = it.uri.toString() + + if (externalContentExtensions.contains(extension) && + mountedContainerUris.add(filePath)) { + NativeLibrary.addGameFolderFileToFilesystemProvider(filePath) + } + + if (Game.extensions.contains(extension)) { + val game = getGame(it.uri, true, false) if (game != null) { games.add(game) } @@ -115,14 +171,85 @@ object GameHelper { } } - fun getGame(uri: Uri, addedToLibrary: Boolean): Game? { + private fun mountExternalContentDirectories(mountedContainerUris: MutableSet) { + val uniqueExternalContentDirs = linkedSetOf() + NativeConfig.getExternalContentDirs().forEach { externalDir -> + if (externalDir.isNotEmpty()) { + uniqueExternalContentDirs.add(externalDir) + } + } + + for (externalDir in uniqueExternalContentDirs) { + val externalDirUri = externalDir.toUri() + if (FileUtil.isTreeUriValid(externalDirUri)) { + scanContentContainersRecursive(FileUtil.listFiles(externalDirUri), 3) { + val containerUri = it.uri.toString() + if (mountedContainerUris.add(containerUri)) { + NativeLibrary.addFileToFilesystemProvider(containerUri) + } + } + } + } + } + + private fun mountGameFolderContent(gameUri: Uri, mountedContainerUris: MutableSet) { + if (gameUri.scheme == "content") { + val parentUri = getParentDocumentUri(gameUri) ?: return + scanContentContainersRecursive(FileUtil.listFiles(parentUri), 1) { + val containerUri = it.uri.toString() + if (mountedContainerUris.add(containerUri)) { + NativeLibrary.addGameFolderFileToFilesystemProvider(containerUri) + } + } + return + } + + val gameFile = File(gameUri.path ?: gameUri.toString()) + val parentDir = gameFile.parentFile ?: return + parentDir.listFiles()?.forEach { sibling -> + if (!sibling.isFile) { + return@forEach + } + + val extension = sibling.extension.lowercase() + if (externalContentExtensions.contains(extension)) { + val containerUri = Uri.fromFile(sibling).toString() + if (mountedContainerUris.add(containerUri)) { + NativeLibrary.addGameFolderFileToFilesystemProvider(containerUri) + } + } + } + } + + private fun getParentDocumentUri(uri: Uri): Uri? { + return try { + val documentId = DocumentsContract.getDocumentId(uri) + val separatorIndex = documentId.lastIndexOf('/') + if (separatorIndex == -1) { + null + } else { + val parentDocumentId = documentId.substring(0, separatorIndex) + DocumentsContract.buildDocumentUriUsingTree(uri, parentDocumentId) + } + } catch (_: Exception) { + null + } + } + + fun getGame( + uri: Uri, + addedToLibrary: Boolean, + registerFilesystemProvider: Boolean = true + ): Game? { val filePath = uri.toString() if (!GameMetadata.getIsValid(filePath)) { return null } - // Needed to update installed content information - NativeLibrary.addFileToFilesystemProvider(filePath) + if (registerFilesystemProvider) { + // Needed to update installed content information + NativeLibrary.addFileToFilesystemProvider(filePath) + } var name = GameMetadata.getTitle(filePath) diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/GpuDriverHelper.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/GpuDriverHelper.kt index 99f7fd81fe..13d5da3a5a 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/GpuDriverHelper.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/GpuDriverHelper.kt @@ -23,10 +23,16 @@ object GpuDriverHelper { private const val META_JSON_FILENAME = "meta.json" private var fileRedirectionPath: String? = null var driverInstallationPath: String? = null - private var hookLibPath: String? = null + internal var hookLibPath: String? = null val driverStoragePath get() = DirectoryInitialization.userDirectory!! + "/gpu_drivers/" + fun initializeFreedrenoConfigEarly() { + NativeFreedrenoConfig.setFreedrenoBasePath(YuzuApplication.appContext.cacheDir.absolutePath) + NativeFreedrenoConfig.initializeFreedrenoConfig() + NativeFreedrenoConfig.reloadFreedrenoConfig() + } + fun initializeDriverParameters() { try { // Initialize the file redirection directory. @@ -40,11 +46,9 @@ object GpuDriverHelper { throw RuntimeException(e) } - // Initialize directories. initializeDirectories() - - // Initialize hook libraries directory. hookLibPath = YuzuApplication.appContext.applicationInfo.nativeLibraryDir + "/" + NativeFreedrenoConfig.reloadFreedrenoConfig() // Initialize GPU driver. NativeLibrary.initializeGpuDriver( @@ -211,9 +215,17 @@ object GpuDriverHelper { external fun getGpuModel( surface: Surface = Surface(SurfaceTexture(true)), - hookLibPath: String = GpuDriverHelper.hookLibPath!! + hookLibPath: String ): String? + fun isAdrenoGpu(): Boolean { + return try { + supportsCustomDriverLoading() + } catch (e: Exception) { + false + } + } + // Parse the custom driver metadata to retrieve the name. val installedCustomDriverData: GpuDriverMetadata get() = GpuDriverMetadata(File(driverInstallationPath + META_JSON_FILENAME)) @@ -238,4 +250,18 @@ object GpuDriverHelper { driverStorageDirectory.mkdirs() } } + + /** + * Checks if a driver zip with the given filename is already present and valid in the + * internal driver storage directory. Validation requires a readable meta.json with a name. + */ + fun isDriverZipInstalledByName(fileName: String): Boolean { + // Normalize separators in case upstream sent a path + val baseName = fileName.substringAfterLast('/') + .substringAfterLast('\\') + val candidate = File("$driverStoragePath$baseName") + if (!candidate.exists() || candidate.length() == 0L) return false + val metadata = getMetadataFromZip(candidate) + return metadata.name != null + } } diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/InputHandler.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/InputHandler.kt index 2c7356e6a7..1909a73319 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/InputHandler.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/InputHandler.kt @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later @@ -14,6 +17,60 @@ object InputHandler { var androidControllers = mapOf() var registeredControllers = mutableListOf() + private val controllerButtons = intArrayOf( + KeyEvent.KEYCODE_BUTTON_A, + KeyEvent.KEYCODE_BUTTON_B, + KeyEvent.KEYCODE_BUTTON_X, + KeyEvent.KEYCODE_BUTTON_Y, + KeyEvent.KEYCODE_BUTTON_L1, + KeyEvent.KEYCODE_BUTTON_R1, + KeyEvent.KEYCODE_BUTTON_L2, + KeyEvent.KEYCODE_BUTTON_R2, + KeyEvent.KEYCODE_BUTTON_THUMBL, + KeyEvent.KEYCODE_BUTTON_THUMBR, + KeyEvent.KEYCODE_BUTTON_START, + KeyEvent.KEYCODE_BUTTON_SELECT, + KeyEvent.KEYCODE_DPAD_UP, + KeyEvent.KEYCODE_DPAD_DOWN, + KeyEvent.KEYCODE_DPAD_LEFT, + KeyEvent.KEYCODE_DPAD_RIGHT + ) + + private val controllerAxes = intArrayOf( + MotionEvent.AXIS_X, + MotionEvent.AXIS_Y, + MotionEvent.AXIS_Z, + MotionEvent.AXIS_RX, + MotionEvent.AXIS_RY, + MotionEvent.AXIS_RZ, + MotionEvent.AXIS_HAT_X, + MotionEvent.AXIS_HAT_Y, + MotionEvent.AXIS_LTRIGGER, + MotionEvent.AXIS_RTRIGGER + ) + + fun isPhysicalGameController(device: InputDevice?): Boolean { + device ?: return false + + if (device.isVirtual) { + return false + } + + val sources = device.sources + val hasControllerSource = + sources and InputDevice.SOURCE_GAMEPAD == InputDevice.SOURCE_GAMEPAD || + sources and InputDevice.SOURCE_JOYSTICK == InputDevice.SOURCE_JOYSTICK + if (!hasControllerSource) { + return false + } + + val hasControllerButtons = device.hasKeys(*controllerButtons).any { it } + val hasControllerAxes = device.motionRanges.any { range -> + controllerAxes.contains(range.axis) + } + return hasControllerButtons || hasControllerAxes + } + fun dispatchKeyEvent(event: KeyEvent): Boolean { val action = when (event.action) { KeyEvent.ACTION_DOWN -> NativeInput.ButtonState.PRESSED @@ -57,10 +114,7 @@ object InputHandler { val inputSettings = NativeConfig.getInputSettings(true) deviceIds.forEach { deviceId -> InputDevice.getDevice(deviceId)?.apply { - // Verify that the device has gamepad buttons, control sticks, or both. - if (sources and InputDevice.SOURCE_GAMEPAD == InputDevice.SOURCE_GAMEPAD || - sources and InputDevice.SOURCE_JOYSTICK == InputDevice.SOURCE_JOYSTICK - ) { + if (isPhysicalGameController(this)) { if (!gameControllerDeviceIds.contains(controllerNumber)) { gameControllerDeviceIds[controllerNumber] = YuzuPhysicalDevice( this, diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/InstallableActions.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/InstallableActions.kt new file mode 100644 index 0000000000..882bae965b --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/InstallableActions.kt @@ -0,0 +1,399 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +package org.yuzu.yuzu_emu.utils + +import android.content.Intent +import android.net.Uri +import android.widget.Toast +import androidx.fragment.app.FragmentActivity +import androidx.fragment.app.FragmentManager +import org.yuzu.yuzu_emu.NativeLibrary +import org.yuzu.yuzu_emu.R +import org.yuzu.yuzu_emu.fragments.MessageDialogFragment +import org.yuzu.yuzu_emu.fragments.ProgressDialogFragment +import org.yuzu.yuzu_emu.model.AddonViewModel +import org.yuzu.yuzu_emu.model.DriverViewModel +import org.yuzu.yuzu_emu.model.GamesViewModel +import org.yuzu.yuzu_emu.model.HomeViewModel +import org.yuzu.yuzu_emu.model.InstallResult +import org.yuzu.yuzu_emu.model.TaskState +import java.io.BufferedInputStream +import java.io.BufferedOutputStream +import java.io.File +import java.io.FilenameFilter +import java.util.zip.ZipEntry +import java.util.zip.ZipInputStream + +object InstallableActions { + private fun verifyGameContentAndInstall( + activity: FragmentActivity, + fragmentManager: FragmentManager, + documents: List, + programId: String?, + onInstallConfirmed: () -> Unit + ) { + if (documents.isEmpty()) { + return + } + + if (programId == null) { + onInstallConfirmed() + return + } + + ProgressDialogFragment.newInstance( + activity, + R.string.verifying_content, + false + ) { _, _ -> + var updatesMatchProgram = true + for (document in documents) { + val valid = NativeLibrary.doesUpdateMatchProgram( + programId, + document.toString() + ) + if (!valid) { + updatesMatchProgram = false + break + } + } + + activity.runOnUiThread { + if (updatesMatchProgram) { + onInstallConfirmed() + } else { + MessageDialogFragment.newInstance( + activity, + titleId = R.string.content_install_notice, + descriptionId = R.string.content_install_notice_description, + positiveAction = onInstallConfirmed, + negativeAction = {} + ).show(fragmentManager, MessageDialogFragment.TAG) + } + } + return@newInstance Any() + }.show(fragmentManager, ProgressDialogFragment.TAG) + } + + fun verifyAndInstallContent( + activity: FragmentActivity, + fragmentManager: FragmentManager, + addonViewModel: AddonViewModel, + documents: List, + programId: String? + ) { + verifyGameContentAndInstall( + activity = activity, + fragmentManager = fragmentManager, + documents = documents, + programId = programId + ) { + installContent( + activity = activity, + fragmentManager = fragmentManager, + addonViewModel = addonViewModel, + documents = documents + ) + } + } + + fun processKey( + activity: FragmentActivity, + fragmentManager: FragmentManager, + gamesViewModel: GamesViewModel, + result: Uri, + extension: String = "keys" + ) { + activity.contentResolver.takePersistableUriPermission( + result, + Intent.FLAG_GRANT_READ_URI_PERMISSION + ) + + val resultCode = NativeLibrary.installKeys(result.toString(), extension) + if (resultCode == 0) { + Toast.makeText( + activity.applicationContext, + R.string.keys_install_success, + Toast.LENGTH_SHORT + ).show() + gamesViewModel.reloadGames(true) + return + } + + val resultString = activity.resources.getStringArray(R.array.installKeysResults)[resultCode] + MessageDialogFragment.newInstance( + titleId = R.string.keys_failed, + descriptionString = resultString, + helpLinkId = R.string.keys_missing_help + ).show(fragmentManager, MessageDialogFragment.TAG) + } + + fun processFirmware( + activity: FragmentActivity, + fragmentManager: FragmentManager, + homeViewModel: HomeViewModel, + result: Uri, + onComplete: (() -> Unit)? = null + ) { + val filterNCA = FilenameFilter { _, dirName -> dirName.endsWith(".nca") } + val firmwarePath = File(NativeConfig.getNandDir() + "/system/Contents/registered/") + val cacheFirmwareDir = File("${activity.cacheDir.path}/registered/") + + ProgressDialogFragment.newInstance( + activity, + R.string.firmware_installing + ) { progressCallback, _ -> + var messageToShow: Any + try { + FileUtil.unzipToInternalStorage( + result.toString(), + cacheFirmwareDir, + progressCallback + ) + val unfilteredNumOfFiles = cacheFirmwareDir.list()?.size ?: -1 + val filteredNumOfFiles = cacheFirmwareDir.list(filterNCA)?.size ?: -2 + messageToShow = if (unfilteredNumOfFiles != filteredNumOfFiles) { + MessageDialogFragment.newInstance( + activity, + titleId = R.string.firmware_installed_failure, + descriptionId = R.string.firmware_installed_failure_description + ) + } else { + firmwarePath.deleteRecursively() + cacheFirmwareDir.copyRecursively(firmwarePath, overwrite = true) + NativeLibrary.initializeSystem(true) + homeViewModel.setCheckKeys(true) + activity.getString(R.string.save_file_imported_success) + } + } catch (_: Exception) { + messageToShow = activity.getString(R.string.fatal_error) + } finally { + cacheFirmwareDir.deleteRecursively() + } + messageToShow + }.apply { + onDialogComplete = onComplete + }.show(fragmentManager, ProgressDialogFragment.TAG) + } + + fun uninstallFirmware( + activity: FragmentActivity, + fragmentManager: FragmentManager, + homeViewModel: HomeViewModel + ) { + val firmwarePath = File(NativeConfig.getNandDir() + "/system/Contents/registered/") + ProgressDialogFragment.newInstance( + activity, + R.string.firmware_uninstalling + ) { _, _ -> + val messageToShow: Any = try { + if (firmwarePath.exists()) { + firmwarePath.deleteRecursively() + NativeLibrary.initializeSystem(true) + homeViewModel.setCheckKeys(true) + activity.getString(R.string.firmware_uninstalled_success) + } else { + activity.getString(R.string.firmware_uninstalled_failure) + } + } catch (_: Exception) { + activity.getString(R.string.fatal_error) + } + messageToShow + }.show(fragmentManager, ProgressDialogFragment.TAG) + } + + fun installContent( + activity: FragmentActivity, + fragmentManager: FragmentManager, + addonViewModel: AddonViewModel, + documents: List + ) { + ProgressDialogFragment.newInstance( + activity, + R.string.installing_game_content + ) { progressCallback, messageCallback -> + var installSuccess = 0 + var installOverwrite = 0 + var errorBaseGame = 0 + var error = 0 + documents.forEach { + messageCallback.invoke(FileUtil.getFilename(it)) + when ( + InstallResult.from( + NativeLibrary.installFileToNand( + it.toString(), + progressCallback + ) + ) + ) { + InstallResult.Success -> installSuccess += 1 + InstallResult.Overwrite -> installOverwrite += 1 + InstallResult.BaseInstallAttempted -> errorBaseGame += 1 + InstallResult.Failure -> error += 1 + } + } + + addonViewModel.refreshAddons(force = true) + + val separator = System.lineSeparator() ?: "\n" + val installResult = StringBuilder() + if (installSuccess > 0) { + installResult.append( + activity.getString( + R.string.install_game_content_success_install, + installSuccess + ) + ) + installResult.append(separator) + } + if (installOverwrite > 0) { + installResult.append( + activity.getString( + R.string.install_game_content_success_overwrite, + installOverwrite + ) + ) + installResult.append(separator) + } + val errorTotal = errorBaseGame + error + if (errorTotal > 0) { + installResult.append(separator) + installResult.append( + activity.getString( + R.string.install_game_content_failed_count, + errorTotal + ) + ) + installResult.append(separator) + if (errorBaseGame > 0) { + installResult.append(separator) + installResult.append(activity.getString(R.string.install_game_content_failure_base)) + installResult.append(separator) + } + if (error > 0) { + installResult.append( + activity.getString(R.string.install_game_content_failure_description) + ) + installResult.append(separator) + } + return@newInstance MessageDialogFragment.newInstance( + activity, + titleId = R.string.install_game_content_failure, + descriptionString = installResult.toString().trim(), + helpLinkId = R.string.install_game_content_help_link + ) + } else { + return@newInstance MessageDialogFragment.newInstance( + activity, + titleId = R.string.install_game_content_success, + descriptionString = installResult.toString().trim() + ) + } + }.show(fragmentManager, ProgressDialogFragment.TAG) + } + + fun exportUserData( + activity: FragmentActivity, + fragmentManager: FragmentManager, + result: Uri + ) { + val userDirectory = DirectoryInitialization.userDirectory + if (userDirectory == null) { + Toast.makeText( + activity.applicationContext, + R.string.fatal_error, + Toast.LENGTH_SHORT + ).show() + return + } + + ProgressDialogFragment.newInstance( + activity, + R.string.exporting_user_data, + true + ) { progressCallback, _ -> + val zipResult = FileUtil.zipFromInternalStorage( + File(userDirectory), + userDirectory, + BufferedOutputStream(activity.contentResolver.openOutputStream(result)), + progressCallback, + compression = false + ) + return@newInstance when (zipResult) { + TaskState.Completed -> activity.getString(R.string.user_data_export_success) + TaskState.Failed -> R.string.export_failed + TaskState.Cancelled -> R.string.user_data_export_cancelled + } + }.show(fragmentManager, ProgressDialogFragment.TAG) + } + + fun importUserData( + activity: FragmentActivity, + fragmentManager: FragmentManager, + gamesViewModel: GamesViewModel, + driverViewModel: DriverViewModel, + result: Uri + ) { + val userDirectory = DirectoryInitialization.userDirectory + if (userDirectory == null) { + Toast.makeText( + activity.applicationContext, + R.string.fatal_error, + Toast.LENGTH_SHORT + ).show() + return + } + + ProgressDialogFragment.newInstance( + activity, + R.string.importing_user_data + ) { progressCallback, _ -> + val checkStream = ZipInputStream( + BufferedInputStream(activity.contentResolver.openInputStream(result)) + ) + var isYuzuBackup = false + checkStream.use { stream -> + var ze: ZipEntry? = null + while (stream.nextEntry?.also { ze = it } != null) { + val itemName = ze!!.name.trim() + if (itemName == "/config/config.ini" || itemName == "config/config.ini") { + isYuzuBackup = true + return@use + } + } + } + if (!isYuzuBackup) { + return@newInstance MessageDialogFragment.newInstance( + activity, + titleId = R.string.invalid_yuzu_backup, + descriptionId = R.string.user_data_import_failed_description + ) + } + + NativeConfig.unloadGlobalConfig() + File(userDirectory).deleteRecursively() + + try { + FileUtil.unzipToInternalStorage( + result.toString(), + File(userDirectory), + progressCallback + ) + } catch (_: Exception) { + return@newInstance MessageDialogFragment.newInstance( + activity, + titleId = R.string.import_failed, + descriptionId = R.string.user_data_import_failed_description + ) + } + + NativeLibrary.initializeSystem(true) + NativeConfig.initializeGlobalConfig() + gamesViewModel.reloadGames(false) + driverViewModel.reloadDriverData() + + return@newInstance activity.getString(R.string.user_data_import_success) + }.show(fragmentManager, ProgressDialogFragment.TAG) + } +} diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/Log.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/Log.kt index aebe84b0f1..2f0f42093f 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/Log.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/Log.kt @@ -1,7 +1,11 @@ +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later package org.yuzu.yuzu_emu.utils +import org.yuzu.yuzu_emu.NativeLibrary import android.os.Build @@ -25,6 +29,15 @@ object Log { if (Build.VERSION.SDK_INT > Build.VERSION_CODES.R) { info("SoC Manufacturer - ${Build.SOC_MANUFACTURER}") info("SoC Model - ${Build.SOC_MODEL}") + NativeLibrary.getCpuSummary().split('\n').forEach { + info("CPU Info - $it") + } + } + NativeLibrary.getVulkanDriverVersion().split('\n').forEach { + info("Vulkan Driver: - $it") + } + NativeLibrary.getVulkanApiVersion().split('\n').forEach { + info("Vulkan API Version: - $it") } info("Total System Memory - ${MemoryUtil.getDeviceRAM()}") } 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 7228f25d24..d1b5b1373d 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 @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later @@ -183,4 +186,30 @@ object NativeConfig { */ @Synchronized external fun saveControlPlayerValues() + + /** + * Directory paths getters and setters + */ + @Synchronized + external fun getSaveDir(): String + @Synchronized + external fun getDefaultSaveDir(): String + @Synchronized + external fun setSaveDir(path: String) + @Synchronized + external fun getNandDir(): String + @Synchronized + external fun setNandDir(path: String) + @Synchronized + external fun getSdmcDir(): String + @Synchronized + external fun setSdmcDir(path: String) + + /** + * External Content Provider + */ + @Synchronized + external fun getExternalContentDirs(): Array + @Synchronized + external fun setExternalContentDirs(dirs: Array) } diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/NativeFreedrenoConfig.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/NativeFreedrenoConfig.kt new file mode 100644 index 0000000000..f9c3f71c36 --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/NativeFreedrenoConfig.kt @@ -0,0 +1,174 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +package org.yuzu.yuzu_emu.utils + +/** + * Provides access to Freedreno/Turnip driver configuration through JNI bindings. + * + * This class allows Java/Kotlin code to configure Freedreno environment variables + * for the GPU driver (Turnip/Freedreno) that runs in the emulator on Android. + * + * Variables must be set BEFORE starting emulation for them to take effect. + * + * See https://docs.mesa3d.org/drivers/freedreno.html for documentation. + */ +object NativeFreedrenoConfig { + + @Synchronized + external fun setFreedrenoBasePath(basePath: String) + + @Synchronized + external fun initializeFreedrenoConfig() + + @Synchronized + external fun saveFreedrenoConfig() + + @Synchronized + external fun reloadFreedrenoConfig() + + @Synchronized + external fun setFreedrenoEnv(varName: String, value: String): Boolean + + @Synchronized + external fun getFreedrenoEnv(varName: String): String + + @Synchronized + external fun isFreedrenoEnvSet(varName: String): Boolean + + @Synchronized + external fun clearFreedrenoEnv(varName: String): Boolean + + @Synchronized + external fun clearAllFreedrenoEnv() + + @Synchronized + external fun getFreedrenoEnvSummary(): String + + @Synchronized + external fun setCurrentProgramId(programId: String) + + @Synchronized + external fun loadPerGameConfig(programId: String): Boolean + + @Synchronized + external fun loadPerGameConfigWithGlobalFallback(programId: String): Boolean + + @Synchronized + external fun savePerGameConfig(programId: String): Boolean + + @Synchronized + external fun hasPerGameConfig(programId: String): Boolean + + @Synchronized + external fun deletePerGameConfig(programId: String): Boolean +} + +/** + * Data class representing a Freedreno preset configuration. + * Presets are commonly used debugging/profiling configurations. + */ +data class FreedrenoPreset( + val name: String, // Display name (e.g., "Debug - CPU Memory") + val description: String, // Description of what this preset does + val icon: String, // Icon identifier + val variables: Map // Map of env vars to set +) + +/** + * Predefined Freedreno presets for quick configuration. + */ +object FreedrenoPresets { + + val DEBUG_CPU_MEMORY = FreedrenoPreset( + name = "Debug - CPU Memory", + description = "Use CPU memory (slower but more stable)", + icon = "ic_debug_cpu", + variables = mapOf( + "TU_DEBUG" to "sysmem" + ) + ) + + val DEBUG_UBWC_DISABLED = FreedrenoPreset( + name = "Debug - No UBWC", + description = "Disable UBWC compression for debugging", + icon = "ic_debug_ubwc", + variables = mapOf( + "TU_DEBUG" to "noubwc" + ) + ) + + val DEBUG_NO_BINNING = FreedrenoPreset( + name = "Debug - No Binning", + description = "Disable binning optimization", + icon = "ic_debug_bin", + variables = mapOf( + "TU_DEBUG" to "nobin" + ) + ) + + val CAPTURE_RENDERPASS = FreedrenoPreset( + name = "Capture - Renderpass", + description = "Capture command stream data for debugging", + icon = "ic_capture", + variables = mapOf( + "FD_RD_DUMP" to "enable" + ) + ) + + val CAPTURE_FRAMES = FreedrenoPreset( + name = "Capture - First 100 Frames", + description = "Capture command stream for first 100 frames only", + icon = "ic_capture", + variables = mapOf( + "FD_RD_DUMP" to "enable", + "FD_RD_DUMP_FRAMES" to "0-100" + ) + ) + + val SHADER_DEBUG = FreedrenoPreset( + name = "Shader Debug", + description = "Enable IR3 shader compiler debugging", + icon = "ic_shader", + variables = mapOf( + "IR3_SHADER_DEBUG" to "nouboopt,spillall" + ) + ) + + val GPU_HANG_TRACE = FreedrenoPreset( + name = "GPU Hang Trace", + description = "Trace GPU progress for debugging hangs", + icon = "ic_hang_trace", + variables = mapOf( + "TU_BREADCRUMBS" to "1" + ) + ) + + val DEV_FEATURES_UBWC_HINT = FreedrenoPreset( + name = "Dev - UBWC Flag Hint", + description = "Enable TP UBWC flag hint for development", + icon = "ic_dev_features", + variables = mapOf( + "FD_DEV_FEATURES" to "enable_tp_ubwc_flag_hint=1" + ) + ) + + val PERFORMANCE_DEFAULT = FreedrenoPreset( + name = "Performance - Default", + description = "Clear all debug options for performance", + icon = "ic_performance", + variables = emptyMap() // Clears all when applied + ) + + val ALL_PRESETS = listOf( + DEBUG_CPU_MEMORY, + DEBUG_UBWC_DISABLED, + DEBUG_NO_BINNING, + CAPTURE_RENDERPASS, + CAPTURE_FRAMES, + SHADER_DEBUG, + GPU_HANG_TRACE, + DEV_FEATURES_UBWC_HINT, + PERFORMANCE_DEFAULT + ) +} diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/PathUtil.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/PathUtil.kt new file mode 100644 index 0000000000..744e1d149c --- /dev/null +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/PathUtil.kt @@ -0,0 +1,95 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +package org.yuzu.yuzu_emu.utils + +import android.net.Uri +import android.provider.DocumentsContract +import java.io.File + +object PathUtil { + + /** + * Converts a content:// URI from the Storage Access Framework to a real filesystem path. + */ + fun getPathFromUri(uri: Uri): String? { + val docId = try { + DocumentsContract.getTreeDocumentId(uri) + } catch (_: Exception) { + return null + } + + if (docId.startsWith("primary:")) { + val relativePath = docId.substringAfter(":") + val primaryStoragePath = android.os.Environment.getExternalStorageDirectory().absolutePath + return "$primaryStoragePath/$relativePath" + } + + // external SD cards and other volumes) + val storageIdString = docId.substringBefore(":") + val removablePath = getRemovableStoragePath(storageIdString) + if (removablePath != null) { + return "$removablePath/${docId.substringAfter(":")}" + } + + return null + } + + /** + * Validates that a path is a valid, writable directory. + * Creates the directory if it doesn't exist. + */ + fun validateDirectory(path: String): Boolean { + val dir = File(path) + + if (!dir.exists()) { + if (!dir.mkdirs()) { + return false + } + } + + return dir.isDirectory && dir.canWrite() + } + + /** + * Copies a directory recursively from source to destination. + */ + fun copyDirectory(source: File, destination: File, overwrite: Boolean = true): Boolean { + return try { + source.copyRecursively(destination, overwrite) + true + } catch (_: Exception) { + false + } + } + + /** + * Checks if a directory has any content. + */ + fun hasContent(path: String): Boolean { + val dir = File(path) + return dir.exists() && dir.listFiles()?.isNotEmpty() == true + } + + + fun truncatePathForDisplay(path: String, maxLength: Int = 40): String { + return if (path.length > maxLength) { + "...${path.takeLast(maxLength - 3)}" + } else { + path + } + } + + fun getRemovableStoragePath(idString: String): String? { + val possibleMountPaths = listOf("/mnt/media_rw/$idString", "/storage/$idString") + + for (mountPath in possibleMountPaths) { + val pathFile = File(mountPath); + if (pathFile.exists()) { + return pathFile.absolutePath + } + } + + return null + } +} 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 3e138c0244..83335b5e1c 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 @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later package org.yuzu.yuzu_emu.utils @@ -52,7 +52,7 @@ object ThemeHelper { } private fun getSelectedStaticThemeColor(): Int { - val themeIndex = preferences.getInt(Settings.PREF_STATIC_THEME_COLOR, 0) + val themeIndex = IntSetting.STATIC_THEME_COLOR.getInt(false) val themes = arrayOf( R.style.Theme_Eden_Main, R.style.Theme_Yuzu_Main_Violet, diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/views/CarouselRecyclerView.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/views/CarouselRecyclerView.kt index 8a66ebf11f..24dafbcd32 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/views/CarouselRecyclerView.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/views/CarouselRecyclerView.kt @@ -1,9 +1,6 @@ // SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later -// SPDX-FileCopyrightText: 2023 yuzu Emulator Project -// SPDX-License-Identifier: GPL-2.0-or-later - package org.yuzu.yuzu_emu.ui import android.content.Context @@ -19,9 +16,9 @@ import org.yuzu.yuzu_emu.adapters.GameAdapter import androidx.core.view.doOnNextLayout import org.yuzu.yuzu_emu.YuzuApplication import androidx.preference.PreferenceManager - +import androidx.core.view.WindowInsetsCompat /** - * CarouselRecyclerView encapsulates all carousel logic for the games UI. + * CarouselRecyclerView encapsulates all carousel content for the games UI. * It manages overlapping cards, center snapping, custom drawing order, * joypad & fling navigation and mid-screen swipe-to-refresh. */ @@ -33,6 +30,7 @@ class CarouselRecyclerView @JvmOverloads constructor( private var overlapFactor: Float = 0f private var overlapPx: Int = 0 + private var bottomInset: Int = -1 private var overlapDecoration: OverlappingDecoration? = null private var pagerSnapHelper: PagerSnapHelper? = null private var scalingScrollListener: OnScrollListener? = null @@ -54,6 +52,24 @@ class CarouselRecyclerView @JvmOverloads constructor( private val preferences = PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext) + private val carouselAdapterObserver = object : RecyclerView.AdapterDataObserver() { + override fun onChanged() { + if (!pendingScrollAfterReload) return + doOnNextLayout { + refreshView() + pendingScrollAfterReload = false + } + } + } + + private val isCarouselMode: Boolean + get() { + val lm = layoutManager as? LinearLayoutManager + return lm != null && + lm.orientation == RecyclerView.HORIZONTAL && + lm !is androidx.recyclerview.widget.GridLayoutManager + } + var flingMultiplier: Float = 1f var pendingScrollAfterReload: Boolean = false @@ -69,6 +85,18 @@ class CarouselRecyclerView @JvmOverloads constructor( setChildrenDrawingOrderEnabled(true) } + override fun setAdapter(adapter: Adapter<*>?) { + val oldAdapter = this.adapter as? GameAdapter + + if (oldAdapter !== adapter) { + oldAdapter?.unregisterAdapterDataObserver(carouselAdapterObserver) + } + + super.setAdapter(adapter) + + (adapter as? GameAdapter)?.registerAdapterDataObserver(carouselAdapterObserver) + } + private fun calculateCenter(width: Int, paddingStart: Int, paddingEnd: Int): Int { return paddingStart + (width - paddingStart - paddingEnd) / 2 } @@ -78,14 +106,14 @@ class CarouselRecyclerView @JvmOverloads constructor( } private fun getLayoutManagerCenter(layoutManager: RecyclerView.LayoutManager): Int { - return if (layoutManager is LinearLayoutManager) { - calculateCenter( + if (isCarouselMode) { + return calculateCenter( layoutManager.width, layoutManager.paddingStart, layoutManager.paddingEnd ) } else { - width / 2 + return width / 2 } } @@ -94,6 +122,8 @@ class CarouselRecyclerView @JvmOverloads constructor( } fun restoreScrollState(position: Int = 0, attempts: Int = 0) { + if (!isCarouselMode) return + val lm = layoutManager as? LinearLayoutManager ?: return if (lm.findLastVisibleItemPosition() == RecyclerView.NO_POSITION && attempts < 10) { post { restoreScrollState(position, attempts + 1) } @@ -103,6 +133,10 @@ class CarouselRecyclerView @JvmOverloads constructor( } fun getClosestChildPosition(fullRange: Boolean = false): Int { + if (!isCarouselMode) { + return RecyclerView.NO_POSITION + } + val lm = layoutManager as? LinearLayoutManager ?: return RecyclerView.NO_POSITION var minDistance = Int.MAX_VALUE var closestPosition = RecyclerView.NO_POSITION @@ -201,52 +235,66 @@ class CarouselRecyclerView @JvmOverloads constructor( } } - fun setCarouselMode(enabled: Boolean, gameAdapter: GameAdapter? = null) { + fun refreshView() { + if (isCarouselMode) { + updateChildScalesAndAlpha() + focusCenteredCard() + } + } + + fun notifyInsetsReady(newBottomInset: Int) { + if (bottomInset != newBottomInset) { + bottomInset = newBottomInset + } + + if (isCarouselMode) { + setupCarousel(true) + } else { + setupCarousel(false) + } + } + + fun notifyLaidOut(fallBackBottomInset: Int) { + if (bottomInset < 0) bottomInset = fallBackBottomInset + var gameAdapter = adapter as? GameAdapter ?: return + var newCardSize = cardSize(bottomInset) + if (gameAdapter.cardSize != newCardSize) { + gameAdapter.setCardSize(newCardSize) + } + + if (isCarouselMode) { + setupCarousel(true) + } + } + + fun cardSize(bottomInset: Int): Int { + val internalFactor = resources.getFraction(R.fraction.carousel_card_size_factor, 1, 1) + val userFactor = preferences.getFloat(CAROUSEL_CARD_SIZE_FACTOR, internalFactor).coerceIn( + 0f, + 1f + ) + return (userFactor * (height - bottomInset)).toInt() + } + + fun setupCarousel(enabled: Boolean) { if (enabled) { + val gameAdapter = adapter as? GameAdapter ?: return + if (gameAdapter.cardSize == 0) return + if (bottomInset < 0) return + useCustomDrawingOrder = true + val cardSize = gameAdapter.cardSize - val insets = rootWindowInsets - val bottomInset = insets?.getInsets(android.view.WindowInsets.Type.systemBars())?.bottom ?: 0 - val internalFactor = resources.getFraction(R.fraction.carousel_card_size_factor, 1, 1) - val userFactor = preferences.getFloat(CAROUSEL_CARD_SIZE_FACTOR, internalFactor).coerceIn( - 0f, - 1f - ) - val cardSize = (userFactor * (height - bottomInset)).toInt() - gameAdapter?.setCardSize(cardSize) - - val internalOverlapFactor = resources.getFraction( - R.fraction.carousel_overlap_factor, - 1, - 1 - ) - overlapFactor = preferences.getFloat(CAROUSEL_OVERLAP_FACTOR, internalOverlapFactor).coerceIn( - 0f, - 1f - ) + val internalOverlapFactor = resources.getFraction(R.fraction.carousel_overlap_factor,1,1) + overlapFactor = preferences.getFloat(CAROUSEL_OVERLAP_FACTOR, internalOverlapFactor).coerceIn(0f,1f) overlapPx = (cardSize * overlapFactor).toInt() - val internalFlingMultiplier = resources.getFraction( - R.fraction.carousel_fling_multiplier, - 1, - 1 - ) + val internalFlingMultiplier = resources.getFraction(R.fraction.carousel_fling_multiplier,1,1) flingMultiplier = preferences.getFloat( CAROUSEL_FLING_MULTIPLIER, internalFlingMultiplier ).coerceIn(1f, 5f) - gameAdapter?.registerAdapterDataObserver(object : RecyclerView.AdapterDataObserver() { - override fun onChanged() { - if (pendingScrollAfterReload) { - post { - jigglyScroll() - pendingScrollAfterReload = false - } - } - } - }) - // Detach SnapHelper during setup pagerSnapHelper?.attachToRecyclerView(null) @@ -256,7 +304,7 @@ class CarouselRecyclerView @JvmOverloads constructor( addItemDecoration(overlapDecoration!!) } - // Gradual scalingAdd commentMore actions + // Gradual scaling on scroll if (scalingScrollListener == null) { scalingScrollListener = object : OnScrollListener() { override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { @@ -305,23 +353,27 @@ class CarouselRecyclerView @JvmOverloads constructor( override fun onScrollStateChanged(state: Int) { super.onScrollStateChanged(state) - if (state == RecyclerView.SCROLL_STATE_IDLE) { + if (state == RecyclerView.SCROLL_STATE_IDLE && isCarouselMode) { focusCenteredCard() } } override fun scrollToPosition(position: Int) { + if (isCarouselMode) { + (layoutManager as? LinearLayoutManager)?.scrollToPositionWithOffset(position, overlapPx) + doOnNextLayout { + refreshView() + } + } else { super.scrollToPosition(position) - (layoutManager as? LinearLayoutManager)?.scrollToPositionWithOffset(position, overlapPx) - doOnNextLayout { - updateChildScalesAndAlpha() - focusCenteredCard() } } private var lastFocusSearchTime: Long = 0 override fun focusSearch(focused: View, direction: Int): View? { - if (layoutManager !is LinearLayoutManager) return super.focusSearch(focused, direction) + if (!isCarouselMode) { + return super.focusSearch(focused, direction) + } val vh = findContainingViewHolder(focused) ?: return super.focusSearch(focused, direction) val itemCount = adapter?.itemCount ?: return super.focusSearch(focused, direction) val position = vh.bindingAdapterPosition @@ -356,6 +408,8 @@ class CarouselRecyclerView @JvmOverloads constructor( focused } } + // Prevent focus from escaping to external UI elements when forced snapping was removed + View.FOCUS_DOWN -> focused else -> super.focusSearch(focused, direction) } } @@ -381,12 +435,6 @@ class CarouselRecyclerView @JvmOverloads constructor( return sorted[i].first } - fun jigglyScroll() { - scrollBy(-1, 0) - scrollBy(1, 0) - focusCenteredCard() - } - inner class OverlappingDecoration(private val overlap: Int) : ItemDecoration() { override fun getItemOffsets( outRect: Rect, @@ -425,7 +473,7 @@ class CarouselRecyclerView @JvmOverloads constructor( // NEEDED: fixes center snapping, but introduces ghost movement override fun findSnapView(layoutManager: RecyclerView.LayoutManager): View? { - if (layoutManager !is LinearLayoutManager) return null + if (!isCarouselMode) return null return layoutManager.findViewByPosition(getClosestChildPosition()) } @@ -434,12 +482,10 @@ class CarouselRecyclerView @JvmOverloads constructor( layoutManager: RecyclerView.LayoutManager, targetView: View ): IntArray? { - if (layoutManager !is LinearLayoutManager) { - return super.calculateDistanceToFinalSnap( - layoutManager, - targetView - ) + if (!isCarouselMode) { + return super.calculateDistanceToFinalSnap(layoutManager, targetView) } + val out = IntArray(2) out[0] = getChildDistanceToCenter(targetView).toInt() out[1] = 0 @@ -452,8 +498,11 @@ class CarouselRecyclerView @JvmOverloads constructor( velocityX: Int, velocityY: Int ): Int { - if (layoutManager !is LinearLayoutManager) return RecyclerView.NO_POSITION + if (!isCarouselMode) return RecyclerView.NO_POSITION + val closestPosition = this@CarouselRecyclerView.getClosestChildPosition() + if (closestPosition == RecyclerView.NO_POSITION) return RecyclerView.NO_POSITION + val internalMaxFling = resources.getInteger(R.integer.carousel_max_fling_count) val maxFling = preferences.getInt(CAROUSEL_MAX_FLING_COUNT, internalMaxFling).coerceIn( 1, diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/views/GradientBorderCardView.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/views/GradientBorderCardView.kt index 8f730fc490..d6c0709d57 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/views/GradientBorderCardView.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/views/GradientBorderCardView.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: 2023 yuzu Emulator Project @@ -11,8 +11,7 @@ import android.graphics.* import android.util.AttributeSet import com.google.android.material.card.MaterialCardView import org.yuzu.yuzu_emu.R -import org.yuzu.yuzu_emu.features.settings.model.Settings -import androidx.preference.PreferenceManager +import org.yuzu.yuzu_emu.features.settings.model.IntSetting class GradientBorderCardView @JvmOverloads constructor( context: Context, @@ -35,14 +34,18 @@ class GradientBorderCardView @JvmOverloads constructor( updateThemeState() } - private fun updateThemeState() { - val prefs = PreferenceManager.getDefaultSharedPreferences(context) - val themeIndex = try { - prefs.getInt(Settings.PREF_STATIC_THEME_COLOR, 0) - } catch (e: Exception) { - 0 // Default to Eden theme if error + private fun updateBorderState() { + val shouldShow = isPressed || isFocused || isSelected + if (showGradientBorder != shouldShow) { + showGradientBorder = shouldShow + invalidate() } + } + + private fun updateThemeState() { + val themeIndex = IntSetting.STATIC_THEME_COLOR.getInt(false) isEdenTheme = themeIndex == 0 + invalidate() } override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) { @@ -93,27 +96,22 @@ class GradientBorderCardView @JvmOverloads constructor( override fun onFocusChanged(gainFocus: Boolean, direction: Int, previouslyFocusedRect: Rect?) { super.onFocusChanged(gainFocus, direction, previouslyFocusedRect) - showGradientBorder = gainFocus - invalidate() + updateBorderState() } override fun setSelected(selected: Boolean) { super.setSelected(selected) - showGradientBorder = selected - invalidate() + updateBorderState() } override fun setPressed(pressed: Boolean) { super.setPressed(pressed) - if (pressed) { - showGradientBorder = true - invalidate() - } + updateBorderState() } override fun onDraw(canvas: Canvas) { super.onDraw(canvas) - if (showGradientBorder && !isPressed) { + if (showGradientBorder) { canvas.drawPath(borderPath, borderPaint) } } @@ -121,6 +119,5 @@ class GradientBorderCardView @JvmOverloads constructor( override fun onAttachedToWindow() { super.onAttachedToWindow() updateThemeState() - requestLayout() } } diff --git a/src/android/app/src/main/jni/CMakeLists.txt b/src/android/app/src/main/jni/CMakeLists.txt index 1e30b16d96..c68e206d24 100644 --- a/src/android/app/src/main/jni/CMakeLists.txt +++ b/src/android/app/src/main/jni/CMakeLists.txt @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +# SPDX-License-Identifier: GPL-3.0-or-later + # SPDX-FileCopyrightText: 2023 yuzu Emulator Project # SPDX-License-Identifier: GPL-3.0-or-later @@ -7,6 +10,7 @@ add_library(yuzu-android SHARED native.cpp native.h native_config.cpp + native_freedreno.cpp android_settings.cpp game_metadata.cpp native_log.cpp @@ -17,14 +21,15 @@ add_library(yuzu-android SHARED set_property(TARGET yuzu-android PROPERTY IMPORTED_LOCATION ${FFmpeg_LIBRARY_DIR}) -target_link_libraries(yuzu-android PRIVATE audio_core common core input_common frontend_common Vulkan::Headers) +target_link_libraries(yuzu-android PRIVATE audio_core common core input_common frontend_common video_core) target_link_libraries(yuzu-android PRIVATE android camera2ndk EGL glad jnigraphics log) if (ARCHITECTURE_arm64) target_link_libraries(yuzu-android PRIVATE adrenotools) endif() -if (ENABLE_OPENSSL OR ENABLE_WEB_SERVICE) - target_link_libraries(yuzu-android PRIVATE OpenSSL::SSL cpp-jwt::cpp-jwt) +target_link_libraries(yuzu-android PRIVATE OpenSSL::SSL cpp-jwt::cpp-jwt) +if (ENABLE_UPDATE_CHECKER) + target_compile_definitions(yuzu-android PUBLIC ENABLE_UPDATE_CHECKER) endif() - set(CPACK_PACKAGE_EXECUTABLES ${CPACK_PACKAGE_EXECUTABLES} yuzu-android) +set(CPACK_PACKAGE_EXECUTABLES ${CPACK_PACKAGE_EXECUTABLES} yuzu-android) diff --git a/src/android/app/src/main/jni/android_config.cpp b/src/android/app/src/main/jni/android_config.cpp index a79a64afbb..f697084348 100644 --- a/src/android/app/src/main/jni/android_config.cpp +++ b/src/android/app/src/main/jni/android_config.cpp @@ -1,7 +1,9 @@ -// SPDX-FileCopyrightText: 2023 yuzu Emulator Project -// SPDX-License-Identifier: GPL-2.0-or-later +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later -#include +#include +#include +#include #include #include "android_config.h" #include "android_settings.h" @@ -31,6 +33,12 @@ void AndroidConfig::ReadAndroidValues() { if (global) { ReadAndroidUIValues(); ReadUIValues(); + BeginGroup(Settings::TranslateCategory(Settings::Category::DataStorage)); + Settings::values.ext_content_from_game_dirs = ReadBooleanSetting( + std::string("ext_content_from_game_dirs"), + std::make_optional( + Settings::values.ext_content_from_game_dirs.GetDefault())); + EndGroup(); ReadOverlayValues(); } ReadDriverValues(); @@ -68,6 +76,36 @@ void AndroidConfig::ReadPathValues() { } EndArray(); + // Read external content directories + Settings::values.external_content_dirs.clear(); + const int external_dirs_size = BeginArray(std::string("external_content_dirs")); + for (int i = 0; i < external_dirs_size; ++i) { + SetArrayIndex(i); + std::string dir_path = ReadStringSetting(std::string("path")); + if (!dir_path.empty()) { + Settings::values.external_content_dirs.push_back(dir_path); + } + } + EndArray(); + + const auto nand_dir_setting = ReadStringSetting(std::string("nand_directory")); + if (!nand_dir_setting.empty()) { + Common::FS::SetEdenPath(Common::FS::EdenPath::NANDDir, nand_dir_setting); + } + + const auto sdmc_dir_setting = ReadStringSetting(std::string("sdmc_directory")); + if (!sdmc_dir_setting.empty()) { + Common::FS::SetEdenPath(Common::FS::EdenPath::SDMCDir, sdmc_dir_setting); + } + + const auto save_dir_setting = ReadStringSetting(std::string("save_directory")); + if (save_dir_setting.empty()) { + Common::FS::SetEdenPath(Common::FS::EdenPath::SaveDir, + Common::FS::GetEdenPathString(Common::FS::EdenPath::NANDDir)); + } else { + Common::FS::SetEdenPath(Common::FS::EdenPath::SaveDir, save_dir_setting); + } + EndGroup(); } @@ -103,6 +141,7 @@ void AndroidConfig::ReadOverlayValues() { ReadDoubleSetting(std::string("foldable\\x_position")); control_data.foldable_position.second = ReadDoubleSetting(std::string("foldable\\y_position")); + control_data.individual_scale = static_cast(ReadDoubleSetting(std::string("individual_scale"))); AndroidSettings::values.overlay_control_data.push_back(control_data); } EndArray(); @@ -221,6 +260,34 @@ void AndroidConfig::SavePathValues() { } EndArray(); + // Save external content directories + BeginArray(std::string("external_content_dirs")); + for (size_t i = 0; i < Settings::values.external_content_dirs.size(); ++i) { + SetArrayIndex(i); + WriteStringSetting(std::string("path"), Settings::values.external_content_dirs[i]); + } + EndArray(); + + // Save custom NAND directory + const auto nand_path = Common::FS::GetEdenPathString(Common::FS::EdenPath::NANDDir); + WriteStringSetting(std::string("nand_directory"), nand_path, + std::make_optional(std::string(""))); + + // Save custom SDMC directory + const auto sdmc_path = Common::FS::GetEdenPathString(Common::FS::EdenPath::SDMCDir); + WriteStringSetting(std::string("sdmc_directory"), sdmc_path, + std::make_optional(std::string(""))); + + // Save custom save directory + const auto save_path = Common::FS::GetEdenPathString(Common::FS::EdenPath::SaveDir); + if (save_path == nand_path) { + WriteStringSetting(std::string("save_directory"), std::string(""), + std::make_optional(std::string(""))); + } else { + WriteStringSetting(std::string("save_directory"), save_path, + std::make_optional(std::string(""))); + } + EndGroup(); } @@ -255,6 +322,7 @@ void AndroidConfig::SaveOverlayValues() { control_data.foldable_position.first); WriteDoubleSetting(std::string("foldable\\y_position"), control_data.foldable_position.second); + WriteDoubleSetting(std::string("individual_scale"), static_cast(control_data.individual_scale)); } EndArray(); diff --git a/src/android/app/src/main/jni/android_settings.h b/src/android/app/src/main/jni/android_settings.h index cd18f1e5b3..8628021f75 100644 --- a/src/android/app/src/main/jni/android_settings.h +++ b/src/android/app/src/main/jni/android_settings.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: 2023 yuzu Emulator Project @@ -24,6 +24,7 @@ namespace AndroidSettings { std::pair landscape_position; std::pair portrait_position; std::pair foldable_position; + float individual_scale; }; struct Values { @@ -53,14 +54,20 @@ namespace AndroidSettings { Settings::SwitchableSetting driver_path{linkage, "", "driver_path", Settings::Category::GpuDriver}; - // LRU Cache - Settings::SwitchableSetting use_lru_cache{linkage, true, "use_lru_cache", - Settings::Category::System}; - Settings::Setting theme{linkage, 0, "theme", Settings::Category::Android}; Settings::Setting theme_mode{linkage, -1, "theme_mode", Settings::Category::Android}; + Settings::Setting static_theme_color{linkage, 0, "static_theme_color", Settings::Category::Android}; Settings::Setting black_backgrounds{linkage, false, "black_backgrounds", Settings::Category::Android}; + Settings::Setting app_language{linkage, 0, "app_language", Settings::Category::Android}; + Settings::Setting enable_update_checks{linkage, true, "enable_update_checks", + Settings::Category::Android}; + Settings::Setting enable_folder_button{linkage, true, "enable_folder_button", + Settings::Category::Android}; + Settings::Setting enable_qlaunch_button{linkage, false, "enable_qlaunch_button", + Settings::Category::Android}; + Settings::Setting invert_confirm_back_controller_buttons{ + linkage, false, "invert_confirm_back_controller_buttons", Settings::Category::Android}; // Input/performance overlay settings std::vector overlay_control_data; @@ -79,6 +86,20 @@ namespace AndroidSettings { Settings::Category::Overlay, Settings::Specialization::Paired, true, true}; + Settings::Setting enable_input_overlay_auto_hide{linkage, false, + "enable_input_overlay_auto_hide", + Settings::Category::Overlay, + Settings::Specialization::Default, true, + true,}; + + Settings::Setting input_overlay_auto_hide{linkage, 5, "input_overlay_auto_hide", + Settings::Category::Overlay, + Settings::Specialization::Default, true, true, &enable_input_overlay_auto_hide}; + Settings::Setting hide_overlay_on_controller_input{linkage, false, + "hide_overlay_on_controller_input", + Settings::Category::Overlay, + Settings::Specialization::Default, true, + true}; Settings::Setting perf_overlay_background{linkage, false, "perf_overlay_background", Settings::Category::Overlay, Settings::Specialization::Default, true, @@ -128,6 +149,10 @@ namespace AndroidSettings { Settings::Setting show_input_overlay{linkage, true, "show_input_overlay", Settings::Category::Overlay}; + Settings::Setting overlay_snap_to_grid{linkage, false, "overlay_snap_to_grid", + Settings::Category::Overlay}; + Settings::Setting overlay_grid_size{linkage, 32, "overlay_grid_size", + Settings::Category::Overlay}; Settings::Setting touchscreen{linkage, true, "touchscreen", Settings::Category::Overlay}; Settings::Setting lock_drawer{linkage, false, "lock_drawer", @@ -138,7 +163,14 @@ namespace AndroidSettings { Settings::Setting show_soc_overlay{linkage, true, "show_soc_overlay", Settings::Category::Overlay, Settings::Specialization::Paired, true, true}; - + Settings::Setting show_build_id{linkage, true, "show_build_id", + Settings::Category::Overlay, + Settings::Specialization::Default, true, true, + &show_performance_overlay}; + Settings::Setting show_driver_version{linkage, true, "show_driver_version", + Settings::Category::Overlay, + Settings::Specialization::Default, true, true, + &show_performance_overlay}; Settings::Setting show_device_model{linkage, true, "show_device_model", Settings::Category::Overlay, Settings::Specialization::Default, true, true, @@ -169,9 +201,14 @@ namespace AndroidSettings { Settings::Specialization::Default, true, true, &show_soc_overlay}; - Settings::Setting dont_show_eden_veil_warning{linkage, false, - "dont_show_eden_veil_warning", - Settings::Category::Miscellaneous}; + // MISC + Settings::Setting dont_show_driver_shader_warning{linkage, false, + "dont_show_driver_shader_warning", + Settings::Category::Android, Settings::Specialization::Default, true, true}; + Settings::Setting enable_quick_settings{linkage, true, + "enable_quick_settings", + Settings::Category::Android, Settings::Specialization::Default, true, + false}; }; extern Values values; diff --git a/src/android/app/src/main/jni/emu_window/emu_window.cpp b/src/android/app/src/main/jni/emu_window/emu_window.cpp index 06db553691..6886dac172 100644 --- a/src/android/app/src/main/jni/emu_window/emu_window.cpp +++ b/src/android/app/src/main/jni/emu_window/emu_window.cpp @@ -1,10 +1,20 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later #include +#include +#include +#include +#include +#include + #include "common/android/id_cache.h" -#include "common/logging/log.h" +#include "common/logging.h" +#include "common/settings.h" #include "input_common/drivers/android.h" #include "input_common/drivers/touch_screen.h" #include "input_common/drivers/virtual_amiibo.h" @@ -14,6 +24,20 @@ #include "jni/native.h" void EmuWindow_Android::OnSurfaceChanged(ANativeWindow* surface) { + if (!surface) { + LOG_INFO(Frontend, "EmuWindow_Android::OnSurfaceChanged received null surface"); + m_window_width = 0; + m_window_height = 0; + window_info.render_surface = nullptr; + m_last_frame_rate_hint = -1.0f; + m_pending_frame_rate_hint = -1.0f; + m_pending_frame_rate_hint_votes = 0; + m_smoothed_present_rate = 0.0f; + m_last_frame_display_time = {}; + m_pending_frame_rate_since = {}; + return; + } + m_window_width = ANativeWindow_getWidth(surface); m_window_height = ANativeWindow_getHeight(surface); @@ -21,6 +45,7 @@ void EmuWindow_Android::OnSurfaceChanged(ANativeWindow* surface) { UpdateCurrentFramebufferLayout(m_window_width, m_window_height); window_info.render_surface = reinterpret_cast(surface); + UpdateFrameRateHint(); } void EmuWindow_Android::OnTouchPressed(int id, float x, float y) { @@ -40,6 +65,9 @@ void EmuWindow_Android::OnTouchReleased(int id) { } void EmuWindow_Android::OnFrameDisplayed() { + UpdateObservedFrameRate(); + UpdateFrameRateHint(); + if (!m_first_frame) { Common::Android::RunJNIOnFiber( [&](JNIEnv* env) { EmulationSession::GetInstance().OnEmulationStarted(); }); @@ -47,6 +75,175 @@ void EmuWindow_Android::OnFrameDisplayed() { } } +void EmuWindow_Android::UpdateObservedFrameRate() { + const auto now = Clock::now(); + if (m_last_frame_display_time.time_since_epoch().count() != 0) { + const auto frame_time = std::chrono::duration(now - m_last_frame_display_time); + const float seconds = frame_time.count(); + if (seconds > 0.0f) { + const float instantaneous_rate = 1.0f / seconds; + if (std::isfinite(instantaneous_rate) && instantaneous_rate >= 1.0f && + instantaneous_rate <= 240.0f) { + constexpr float SmoothingFactor = 0.15f; + if (m_smoothed_present_rate <= 0.0f) { + m_smoothed_present_rate = instantaneous_rate; + } else { + m_smoothed_present_rate += + (instantaneous_rate - m_smoothed_present_rate) * SmoothingFactor; + } + } + } + } + m_last_frame_display_time = now; +} + +float EmuWindow_Android::QuantizeFrameRateHint(float frame_rate) { + if (!std::isfinite(frame_rate) || frame_rate <= 0.0f) { + return 0.0f; + } + + frame_rate = std::clamp(frame_rate, 1.0f, 240.0f); + + constexpr float Step = 0.5f; + return std::round(frame_rate / Step) * Step; +} + +float EmuWindow_Android::GetFrameTimeVerifiedHint() const { + if (!EmulationSession::GetInstance().IsRunning()) { + return 0.0f; + } + + const double frame_time_scale = + EmulationSession::GetInstance().System().GetPerfStats().GetLastFrameTimeScale(); + if (!std::isfinite(frame_time_scale) || frame_time_scale <= 0.0) { + return 0.0f; + } + + const float verified_rate = + std::clamp(60.0f / static_cast(frame_time_scale), 0.0f, 240.0f); + return QuantizeFrameRateHint(verified_rate); +} + +float EmuWindow_Android::GetFrameRateHint() const { + const float observed_rate = std::clamp(m_smoothed_present_rate, 0.0f, 240.0f); + const float frame_time_verified_hint = GetFrameTimeVerifiedHint(); + + if (m_last_frame_rate_hint > 0.0f && observed_rate > 0.0f) { + const float tolerance = std::max(m_last_frame_rate_hint * 0.12f, 4.0f); + if (std::fabs(observed_rate - m_last_frame_rate_hint) <= tolerance) { + return m_last_frame_rate_hint; + } + } + + const float observed_hint = QuantizeFrameRateHint(observed_rate); + if (observed_hint > 0.0f) { + if (frame_time_verified_hint > 0.0f) { + const float tolerance = std::max(observed_hint * 0.20f, 3.0f); + if (std::fabs(observed_hint - frame_time_verified_hint) <= tolerance) { + return QuantizeFrameRateHint((observed_hint + frame_time_verified_hint) * 0.5f); + } + } + return observed_hint; + } + + if (frame_time_verified_hint > 0.0f) { + return frame_time_verified_hint; + } + + constexpr float NominalFrameRate = 60.0f; + if (!Settings::values.use_speed_limit.GetValue()) { + return NominalFrameRate; + } + + const u16 speed_limit = Settings::SpeedLimit(); + if (speed_limit == 0) { + return 0.0f; + } + + const float speed_limited_rate = + NominalFrameRate * (static_cast(std::min(speed_limit, 100)) / 100.0f); + return QuantizeFrameRateHint(speed_limited_rate); +} + +void EmuWindow_Android::UpdateFrameRateHint() { + auto* const surface = reinterpret_cast(window_info.render_surface); + if (!surface) { + return; + } + + const auto now = Clock::now(); + const float frame_rate_hint = GetFrameRateHint(); + if (std::fabs(frame_rate_hint - m_last_frame_rate_hint) < 0.01f) { + m_pending_frame_rate_hint = frame_rate_hint; + m_pending_frame_rate_hint_votes = 0; + m_pending_frame_rate_since = {}; + return; + } + + if (frame_rate_hint == 0.0f) { + m_pending_frame_rate_hint = frame_rate_hint; + m_pending_frame_rate_hint_votes = 0; + m_pending_frame_rate_since = now; + } else if (m_last_frame_rate_hint >= 0.0f) { + if (std::fabs(frame_rate_hint - m_pending_frame_rate_hint) >= 0.01f) { + m_pending_frame_rate_hint = frame_rate_hint; + m_pending_frame_rate_hint_votes = 1; + m_pending_frame_rate_since = now; + return; + } + + ++m_pending_frame_rate_hint_votes; + if (m_pending_frame_rate_since.time_since_epoch().count() == 0) { + m_pending_frame_rate_since = now; + } + + const auto stable_for = now - m_pending_frame_rate_since; + const float reference_rate = std::max(frame_rate_hint, 1.0f); + const auto stable_duration = std::chrono::duration_cast( + std::chrono::duration(std::clamp(3.0f / reference_rate, 0.15f, 0.40f))); + constexpr std::uint32_t MinStableVotes = 3; + + if (m_pending_frame_rate_hint_votes < MinStableVotes || stable_for < stable_duration) { + return; + } + } else { + m_pending_frame_rate_since = now; + } + + using SetFrameRateWithChangeStrategyFn = + int32_t (*)(ANativeWindow*, float, int8_t, int8_t); + using SetFrameRateFn = int32_t (*)(ANativeWindow*, float, int8_t); + static const auto set_frame_rate_with_change_strategy = + reinterpret_cast( + dlsym(RTLD_DEFAULT, "ANativeWindow_setFrameRateWithChangeStrategy")); + static const auto set_frame_rate = reinterpret_cast( + dlsym(RTLD_DEFAULT, "ANativeWindow_setFrameRate")); + + constexpr int8_t FrameRateCompatibilityDefault = 0; + constexpr int8_t ChangeFrameRateOnlyIfSeamless = 0; + + int32_t result = -1; + if (set_frame_rate_with_change_strategy) { + result = set_frame_rate_with_change_strategy(surface, frame_rate_hint, + FrameRateCompatibilityDefault, + ChangeFrameRateOnlyIfSeamless); + } else if (set_frame_rate) { + result = set_frame_rate(surface, frame_rate_hint, FrameRateCompatibilityDefault); + } else { + return; + } + + if (result != 0) { + LOG_DEBUG(Frontend, "Failed to update Android surface frame rate hint: {}", result); + return; + } + + m_last_frame_rate_hint = frame_rate_hint; + m_pending_frame_rate_hint = frame_rate_hint; + m_pending_frame_rate_hint_votes = 0; + m_pending_frame_rate_since = {}; +} + EmuWindow_Android::EmuWindow_Android(ANativeWindow* surface, std::shared_ptr driver_library) : m_driver_library{driver_library} { diff --git a/src/android/app/src/main/jni/emu_window/emu_window.h b/src/android/app/src/main/jni/emu_window/emu_window.h index d7b5fc6dac..b73e8b9b4d 100644 --- a/src/android/app/src/main/jni/emu_window/emu_window.h +++ b/src/android/app/src/main/jni/emu_window/emu_window.h @@ -1,8 +1,13 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later #pragma once +#include +#include #include #include @@ -50,10 +55,24 @@ public: }; private: + using Clock = std::chrono::steady_clock; + + void UpdateFrameRateHint(); + void UpdateObservedFrameRate(); + [[nodiscard]] float GetFrameRateHint() const; + [[nodiscard]] float GetFrameTimeVerifiedHint() const; + [[nodiscard]] static float QuantizeFrameRateHint(float frame_rate); + float m_window_width{}; float m_window_height{}; std::shared_ptr m_driver_library; bool m_first_frame = false; + float m_last_frame_rate_hint = -1.0f; + float m_pending_frame_rate_hint = -1.0f; + float m_smoothed_present_rate = 0.0f; + Clock::time_point m_last_frame_display_time{}; + Clock::time_point m_pending_frame_rate_since{}; + std::uint32_t m_pending_frame_rate_hint_votes = 0; }; diff --git a/src/android/app/src/main/jni/game_metadata.cpp b/src/android/app/src/main/jni/game_metadata.cpp index c33763b471..9acba456f1 100644 --- a/src/android/app/src/main/jni/game_metadata.cpp +++ b/src/android/app/src/main/jni/game_metadata.cpp @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later @@ -18,7 +21,7 @@ struct RomMetadata { bool isHomebrew; }; -std::unordered_map m_rom_metadata_cache; +ankerl::unordered_dense::map m_rom_metadata_cache; RomMetadata CacheRomMetadata(const std::string& path) { const auto file = @@ -93,6 +96,11 @@ jboolean Java_org_yuzu_yuzu_1emu_utils_GameMetadata_getIsValid(JNIEnv* env, jobj return false; } + if ((file_type == Loader::FileType::NSP || file_type == Loader::FileType::XCI) && + !Loader::IsBootableGameContainer(file, file_type)) { + return false; + } + u64 program_id = 0; Loader::ResultStatus res = loader->ReadProgramId(program_id); if (res != Loader::ResultStatus::Success) { diff --git a/src/android/app/src/main/jni/native.cpp b/src/android/app/src/main/jni/native.cpp index f8f175d313..210689ce55 100644 --- a/src/android/app/src/main/jni/native.cpp +++ b/src/android/app/src/main/jni/native.cpp @@ -1,16 +1,28 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later +#define VMA_IMPLEMENTATION +#include "video_core/vulkan_common/vma.h" #include +#include +#include #include +#include +#include +#include +#include #include #include +#include +#include #include +#include +#include #ifdef ARCHITECTURE_arm64 #include #endif @@ -30,18 +42,23 @@ #include "common/detached_tasks.h" #include "common/dynamic_library.h" #include "common/fs/path_util.h" -#include "common/logging/backend.h" -#include "common/logging/log.h" +#include "common/logging.h" #include "common/scm_rev.h" #include "common/scope_exit.h" #include "common/settings.h" #include "common/string_util.h" +#include "frontend_common/play_time_manager.h" +#include "core/constants.h" #include "core/core.h" #include "core/cpu_manager.h" #include "core/crypto/key_manager.h" #include "core/file_sys/card_image.h" #include "core/file_sys/content_archive.h" +#include "core/file_sys/control_metadata.h" #include "core/file_sys/fs_filesystem.h" +#include "core/file_sys/romfs.h" +#include "core/file_sys/nca_metadata.h" +#include "core/file_sys/romfs.h" #include "core/file_sys/submission_package.h" #include "core/file_sys/vfs/vfs.h" #include "core/file_sys/vfs/vfs_real.h" @@ -53,6 +70,7 @@ #include "core/frontend/applets/profile_select.h" #include "core/frontend/applets/software_keyboard.h" #include "core/frontend/applets/web_browser.h" +#include "common/android/applets/web_browser.h" #include "core/hle/service/am/applet_manager.h" #include "core/hle/service/am/frontend/applets.h" #include "core/hle/service/filesystem/filesystem.h" @@ -60,12 +78,18 @@ #include "core/loader/loader.h" #include "frontend_common/config.h" #include "frontend_common/firmware_manager.h" +#ifdef ENABLE_UPDATE_CHECKER +#include "frontend_common/update_checker.h" +#endif #include "hid_core/frontend/emulated_controller.h" #include "hid_core/hid_core.h" #include "hid_core/hid_types.h" +#include "input_common/drivers/virtual_amiibo.h" #include "jni/native.h" #include "video_core/renderer_base.h" #include "video_core/renderer_vulkan/renderer_vulkan.h" +#include "video_core/capture.h" +#include "video_core/textures/decoders.h" #include "video_core/vulkan_common/vulkan_instance.h" #include "video_core/vulkan_common/vulkan_surface.h" #include "video_core/shader_notify.h" @@ -85,6 +109,9 @@ std::atomic g_battery_percentage = {100}; std::atomic g_is_charging = {false}; std::atomic g_has_battery = {true}; +// playtime +std::unique_ptr play_time_manager; + EmulationSession::EmulationSession() { m_vfs = std::make_shared(); } @@ -189,6 +216,10 @@ void EmulationSession::ConfigureFilesystemProvider(const std::string& filepath) return; } + if (m_manual_provider->AddEntriesFromContainer(file)) { + return; + } + auto loader = Loader::GetLoader(m_system, file); if (!loader) { return; @@ -205,20 +236,16 @@ void EmulationSession::ConfigureFilesystemProvider(const std::string& filepath) m_manual_provider->AddEntry(FileSys::TitleType::Application, FileSys::GetCRTypeFromNCAType(FileSys::NCA{file}.GetType()), program_id, file); - } else if (res2 == Loader::ResultStatus::Success && - (file_type == Loader::FileType::XCI || file_type == Loader::FileType::NSP)) { - const auto nsp = file_type == Loader::FileType::NSP - ? std::make_shared(file) - : FileSys::XCI{file}.GetSecurePartitionNSP(); - for (const auto& title : nsp->GetNCAs()) { - for (const auto& entry : title.second) { - m_manual_provider->AddEntry(entry.first.first, entry.first.second, title.first, - entry.second->GetBaseFile()); - } - } } } +void EmulationSession::ConfigureFilesystemProviderFromGameFolder(const std::string& filepath) { + if (!Settings::values.ext_content_from_game_dirs.GetValue()) { + return; + } + ConfigureFilesystemProvider(filepath); +} + void EmulationSession::InitializeSystem(bool reload) { if (!reload) { // Initialize logging system @@ -255,6 +282,7 @@ Core::SystemResultStatus EmulationSession::InitializeEmulation(const std::string // Initialize system. jauto android_keyboard = std::make_unique(); + jauto android_webapplet = std::make_unique(); m_software_keyboard = android_keyboard.get(); m_system.SetShuttingDown(false); m_system.ApplySettings(); @@ -269,7 +297,7 @@ Core::SystemResultStatus EmulationSession::InitializeEmulation(const std::string nullptr, // Photo Viewer nullptr, // Profile Selector std::move(android_keyboard), // Software Keyboard - nullptr, // Web Browser + std::move(android_webapplet),// Web Browser nullptr, // Net Connect }); @@ -453,6 +481,205 @@ static Core::SystemResultStatus RunEmulation(const std::string& filepath, return Core::SystemResultStatus::Success; } +namespace { + +struct CpuPartInfo { + u32 vendor; + u32 part; + const char* name; +}; + +constexpr CpuPartInfo s_cpu_list[] = { + // ARM - 0x41 + {0x41, 0xd01, "Cortex-A32"}, + {0x41, 0xd02, "Cortex-A34"}, + {0x41, 0xd04, "Cortex-A35"}, + {0x41, 0xd03, "Cortex-A53"}, + {0x41, 0xd05, "Cortex-A55"}, + {0x41, 0xd46, "Cortex-A510"}, + {0x41, 0xd80, "Cortex-A520"}, + {0x41, 0xd88, "Cortex-A520AE"}, + {0x41, 0xd07, "Cortex-A57"}, + {0x41, 0xd06, "Cortex-A65"}, + {0x41, 0xd43, "Cortex-A65AE"}, + {0x41, 0xd08, "Cortex-A72"}, + {0x41, 0xd09, "Cortex-A73"}, + {0x41, 0xd0a, "Cortex-A75"}, + {0x41, 0xd0b, "Cortex-A76"}, + {0x41, 0xd0e, "Cortex-A76AE"}, + {0x41, 0xd0d, "Cortex-A77"}, + {0x41, 0xd41, "Cortex-A78"}, + {0x41, 0xd42, "Cortex-A78AE"}, + {0x41, 0xd4b, "Cortex-A78C"}, + {0x41, 0xd47, "Cortex-A710"}, + {0x41, 0xd4d, "Cortex-A715"}, + {0x41, 0xd81, "Cortex-A720"}, + {0x41, 0xd89, "Cortex-A720AE"}, + {0x41, 0xd87, "Cortex-A725"}, + {0x41, 0xd44, "Cortex-X1"}, + {0x41, 0xd4c, "Cortex-X1C"}, + {0x41, 0xd48, "Cortex-X2"}, + {0x41, 0xd4e, "Cortex-X3"}, + {0x41, 0xd82, "Cortex-X4"}, + {0x41, 0xd85, "Cortex-X925"}, + {0x41, 0xd4a, "Neoverse E1"}, + {0x41, 0xd0c, "Neoverse N1"}, + {0x41, 0xd49, "Neoverse N2"}, + {0x41, 0xd8e, "Neoverse N3"}, + {0x41, 0xd40, "Neoverse V1"}, + {0x41, 0xd4f, "Neoverse V2"}, + {0x41, 0xd84, "Neoverse V3"}, + {0x41, 0xd83, "Neoverse V3AE"}, + // Qualcomm - 0x51 + {0x51, 0x201, "Kryo"}, + {0x51, 0x205, "Kryo"}, + {0x51, 0x211, "Kryo"}, + {0x51, 0x800, "Kryo 385 Gold"}, + {0x51, 0x801, "Kryo 385 Silver"}, + {0x51, 0x802, "Kryo 485 Gold"}, + {0x51, 0x803, "Kryo 485 Silver"}, + {0x51, 0x804, "Kryo 680 Prime"}, + {0x51, 0x805, "Kryo 680 Gold"}, + {0x51, 0x06f, "Krait"}, + {0x51, 0xc00, "Falkor"}, + {0x51, 0xc01, "Saphira"}, + {0x51, 0x001, "Oryon"}, +}; + +const char* find_cpu_name(u32 vendor, u32 part) { + for (const auto& cpu : s_cpu_list) { + if (cpu.vendor == vendor && cpu.part == part) { + return cpu.name; + } + } + return nullptr; +} + +u64 read_midr_sysfs(u32 cpu_id) { + char path[128]; + std::snprintf(path, sizeof(path), "/sys/devices/system/cpu/cpu%u/regs/identification/midr_el1", cpu_id); + + FILE* f = std::fopen(path, "r"); + if (!f) return 0; + + char value[32]; + if (!std::fgets(value, sizeof(value), f)) { + std::fclose(f); + return 0; + } + std::fclose(f); + + return std::strtoull(value, nullptr, 16); +} + +std::pair get_pretty_cpus() { + std::map core_layout; + u32 valid_cpus = 0; + for (u32 i = 0; i < std::thread::hardware_concurrency(); ++i) { + const auto midr = read_midr_sysfs(i); + if (midr == 0) break; + + valid_cpus++; + core_layout[midr]++; + } + + std::string cpus; + + if (!core_layout.empty()) { + const CpuPartInfo* lowest_part = nullptr; + u32 lowest_part_id = 0xFFFFFFFF; + + for (const auto& [midr, count] : core_layout) { + const auto vendor = (midr >> 24) & 0xff; + const auto part = (midr >> 4) & 0xfff; + + if (!cpus.empty()) cpus += " + "; + cpus += fmt::format("{}x {}", count, find_cpu_name(vendor, part)); + } + } + + return {valid_cpus, cpus}; +} + +std::string get_arm_cpu_name() { + std::map core_layout; + for (u32 i = 0; i < std::thread::hardware_concurrency(); ++i) { + const auto midr = read_midr_sysfs(i); + if (midr == 0) break; + + core_layout[midr]++; + } + + if (!core_layout.empty()) { + const CpuPartInfo* lowest_part = nullptr; + u32 lowest_part_id = 0xFFFFFFFF; + + for (const auto& [midr, count] : core_layout) { + const auto vendor = (midr >> 24) & 0xff; + const auto part = (midr >> 4) & 0xfff; + + for (const auto& cpu : s_cpu_list) { + if (cpu.vendor == vendor && cpu.part == part) { + if (cpu.part < lowest_part_id) { + lowest_part_id = cpu.part; + lowest_part = &cpu; + } + break; + } + } + } + + if (lowest_part) { + return lowest_part->name; + } + } + + FILE* f = std::fopen("/proc/cpuinfo", "r"); + if (!f) return ""; + + char buf[512]; + std::string result; + + auto trim = [](std::string& s) { + const auto start = s.find_first_not_of(" \t\r\n"); + const auto end = s.find_last_not_of(" \t\r\n"); + s = (start == std::string::npos) ? "" : s.substr(start, end - start + 1); + }; + + while (std::fgets(buf, sizeof(buf), f)) { + std::string line(buf); + if (line.find("Hardware") == 0) { + auto pos = line.find(':'); + if (pos != std::string::npos) { + result = line.substr(pos + 1); + trim(result); + break; + } + } + } + std::fclose(f); + + if (!result.empty()) { + std::transform(result.begin(), result.end(), result.begin(), ::tolower); + } + + return result; +} + +const char* fallback_cpu_detection() { + static std::string s_result = []() -> std::string { + std::string result = get_arm_cpu_name(); + if (result.empty()) { + return "Cortex-A34"; + } + return result; + }(); + + return s_result.c_str(); +} + +} // namespace + extern "C" { void Java_org_yuzu_yuzu_1emu_NativeLibrary_surfaceChanged(JNIEnv* env, jobject instance, @@ -462,9 +689,10 @@ void Java_org_yuzu_yuzu_1emu_NativeLibrary_surfaceChanged(JNIEnv* env, jobject i } void Java_org_yuzu_yuzu_1emu_NativeLibrary_surfaceDestroyed(JNIEnv* env, jobject instance) { - ANativeWindow_release(EmulationSession::GetInstance().NativeWindow()); + if (auto* native_window = EmulationSession::GetInstance().NativeWindow(); native_window) { + ANativeWindow_release(native_window); + } EmulationSession::GetInstance().SetNativeWindow(nullptr); - EmulationSession::GetInstance().SurfaceChanged(); } void Java_org_yuzu_yuzu_1emu_NativeLibrary_setAppDirectory(JNIEnv* env, jobject instance, @@ -511,11 +739,28 @@ jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_doesUpdateMatchProgram(JNIEnv* en return false; } -void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_initializeGpuDriver(JNIEnv* env, jclass clazz, +void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_initializeGpuDriver(JNIEnv* env, + [[maybe_unused]] jclass clazz, jstring hook_lib_dir, jstring custom_driver_dir, jstring custom_driver_name, jstring file_redirect_dir) { + // Log active Freedreno environment variables + const char* tu_debug = getenv("TU_DEBUG"); + const char* fd_debug = getenv("FD_MESA_DEBUG"); + const char* ir3_debug = getenv("IR3_SHADER_DEBUG"); + const char* fd_rd_dump = getenv("FD_RD_DUMP"); + const char* tu_breadcrumbs = getenv("TU_BREADCRUMBS"); + + if (tu_debug || fd_debug || ir3_debug || fd_rd_dump || tu_breadcrumbs) { + LOG_INFO(Frontend, "[Freedreno] Initializing GPU driver with configuration:"); + if (tu_debug) LOG_INFO(Frontend, "[Freedreno] TU_DEBUG={}", tu_debug); + if (fd_debug) LOG_INFO(Frontend, "[Freedreno] FD_MESA_DEBUG={}", fd_debug); + if (ir3_debug) LOG_INFO(Frontend, "[Freedreno] IR3_SHADER_DEBUG={}", ir3_debug); + if (fd_rd_dump) LOG_INFO(Frontend, "[Freedreno] FD_RD_DUMP={}", fd_rd_dump); + if (tu_breadcrumbs) LOG_INFO(Frontend, "[Freedreno] TU_BREADCRUMBS={}", tu_breadcrumbs); + } + EmulationSession::GetInstance().InitializeGpuDriver( Common::Android::GetJString(env, hook_lib_dir), Common::Android::GetJString(env, custom_driver_dir), @@ -545,6 +790,7 @@ jboolean JNICALL Java_org_yuzu_yuzu_1emu_utils_GpuDriverHelper_supportsCustomDri jobjectArray Java_org_yuzu_yuzu_1emu_utils_GpuDriverHelper_getSystemDriverInfo( JNIEnv* env, jobject j_obj, jobject j_surf, jstring j_hook_lib_dir) { +#ifdef ARCHITECTURE_arm64 const char* file_redirect_dir_{}; int featureFlags{}; std::string hook_lib_dir = Common::Android::GetJString(env, j_hook_lib_dir); @@ -567,15 +813,19 @@ jobjectArray Java_org_yuzu_yuzu_1emu_utils_GpuDriverHelper_getSystemDriverInfo( auto version_string = fmt::format("{}.{}.{}", VK_API_VERSION_MAJOR(driver_version), VK_API_VERSION_MINOR(driver_version), VK_API_VERSION_PATCH(driver_version)); - - jobjectArray j_driver_info = env->NewObjectArray( - 2, Common::Android::GetStringClass(), Common::Android::ToJString(env, version_string)); - env->SetObjectArrayElement(j_driver_info, 1, - Common::Android::ToJString(env, device.GetDriverName())); + auto driver_name = device.GetDriverName(); +#else + auto driver_version = "1.0.0"; + auto version_string = "1.1.0"; //Assume lowest Vulkan level + auto driver_name = "generic"; +#endif + jobjectArray j_driver_info = env->NewObjectArray(2, Common::Android::GetStringClass(), Common::Android::ToJString(env, version_string)); + env->SetObjectArrayElement(j_driver_info, 1, Common::Android::ToJString(env, driver_name)); return j_driver_info; } jstring Java_org_yuzu_yuzu_1emu_utils_GpuDriverHelper_getGpuModel(JNIEnv *env, jobject j_obj, jobject j_surf, jstring j_hook_lib_dir) { +#ifdef ARCHITECTURE_arm64 const char* file_redirect_dir_{}; int featureFlags{}; std::string hook_lib_dir = Common::Android::GetJString(env, j_hook_lib_dir); @@ -596,7 +846,12 @@ jstring Java_org_yuzu_yuzu_1emu_utils_GpuDriverHelper_getGpuModel(JNIEnv *env, j const std::string model_name{device.GetModelName()}; + window.release(); + return Common::Android::ToJString(env, model_name); +#else + return Common::Android::ToJString(env, "no-info"); +#endif } jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_reloadKeys(JNIEnv* env, jclass clazz) { @@ -624,6 +879,40 @@ jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_isPaused(JNIEnv* env, jclass claz return static_cast(EmulationSession::GetInstance().IsPaused()); } +jbyteArray Java_org_yuzu_yuzu_1emu_NativeLibrary_getAppletCaptureBuffer(JNIEnv* env, jclass clazz) { + using namespace VideoCore::Capture; + + if (!EmulationSession::GetInstance().IsRunning()) { + return env->NewByteArray(0); + } + + const auto tiled = EmulationSession::GetInstance().System().GPU().GetAppletCaptureBuffer(); + if (tiled.size() < TiledSize) { + return env->NewByteArray(0); + } + + std::vector linear(LinearWidth * LinearHeight * BytesPerPixel); + Tegra::Texture::UnswizzleTexture(linear, tiled, BytesPerPixel, LinearWidth, LinearHeight, + LinearDepth, BlockHeight, BlockDepth); + + auto buffer = env->NewByteArray(static_cast(linear.size())); + if (!buffer) { + return env->NewByteArray(0); + } + + env->SetByteArrayRegion(buffer, 0, static_cast(linear.size()), + reinterpret_cast(linear.data())); + return buffer; +} + +jint Java_org_yuzu_yuzu_1emu_NativeLibrary_getAppletCaptureWidth(JNIEnv* env, jclass clazz) { + return static_cast(VideoCore::Capture::LinearWidth); +} + +jint Java_org_yuzu_yuzu_1emu_NativeLibrary_getAppletCaptureHeight(JNIEnv* env, jclass clazz) { + return static_cast(VideoCore::Capture::LinearHeight); +} + void Java_org_yuzu_yuzu_1emu_NativeLibrary_initializeSystem(JNIEnv* env, jclass clazz, jboolean reload) { // Initialize the emulated system. @@ -672,6 +961,209 @@ jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getGpuDriver(JNIEnv* env, jobject env, EmulationSession::GetInstance().System().GPU().Renderer().GetDeviceVendor()); } +jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getCpuSummary(JNIEnv* env, jobject /*jobj*/) { + get_arm_cpu_name(); + constexpr const char* CPUINFO_PATH = "/proc/cpuinfo"; + + auto trim = [](std::string& s) { + const auto start = s.find_first_not_of(" \t\r\n"); + const auto end = s.find_last_not_of(" \t\r\n"); + s = (start == std::string::npos) ? "" : s.substr(start, end - start + 1); + }; + + auto to_lower = [](std::string s) { + for (auto& c : s) c = std::tolower(c); + return s; + }; + + try { + std::string result; + std::pair pretty_cpus = get_pretty_cpus(); + u32 threads = pretty_cpus.first; + std::string cpus = pretty_cpus.second; + + fmt::format_to(std::back_inserter(result), "CPUs: {}\n{} Threads", + cpus, threads); + + FILE* f = std::fopen(CPUINFO_PATH, "r"); + if (!f) return Common::Android::ToJString(env, result); + + char buf[512]; + + if (f) { + std::set feature_set; + while (std::fgets(buf, sizeof(buf), f)) { + std::string line(buf); + if (line.find("Features") == 0 || line.find("features") == 0) { + auto pos = line.find(':'); + if (pos != std::string::npos) { + std::string feat_line = line.substr(pos + 1); + trim(feat_line); + + std::istringstream iss(feat_line); + std::string feature; + while (iss >> feature) { + feature_set.insert(to_lower(feature)); + } + } + } + } + std::fclose(f); + + bool has_neon = feature_set.count("neon") || feature_set.count("asimd"); + bool has_fp = feature_set.count("fp") || feature_set.count("vfp"); + bool has_sve = feature_set.count("sve"); + bool has_sve2 = feature_set.count("sve2"); + bool has_crypto = feature_set.count("aes") || feature_set.count("sha1") || + feature_set.count("sha2") || feature_set.count("pmull"); + bool has_dotprod = feature_set.count("asimddp") || feature_set.count("dotprod"); + bool has_i8mm = feature_set.count("i8mm"); + bool has_bf16 = feature_set.count("bf16"); + bool has_atomics = feature_set.count("atomics") || feature_set.count("lse"); + + std::string features; + if (has_neon || has_fp) { + features += "NEON"; + if (has_dotprod) features += "+DP"; + if (has_i8mm) features += "+I8MM"; + if (has_bf16) features += "+BF16"; + } + + if (has_sve) { + if (!features.empty()) features += " | "; + features += "SVE"; + if (has_sve2) features += "2"; + } + + if (has_crypto) { + if (!features.empty()) features += " | "; + features += "Crypto"; + } + + if (has_atomics) { + if (!features.empty()) features += " | "; + features += "LSE"; + } + + if (!features.empty()) { + result += "\nFeatures: " + features; + } + } + + fmt::format_to(std::back_inserter(result), "\nLLVM CPU: {}", fallback_cpu_detection()); + + return Common::Android::ToJString(env, result); + } catch (...) { + return Common::Android::ToJString(env, "Unknown"); + } +} + + +namespace { +constexpr u32 VENDOR_QUALCOMM = 0x5143; +constexpr u32 VENDOR_ARM = 0x13B5; + +VkPhysicalDeviceProperties GetVulkanDeviceProperties() { + Common::DynamicLibrary library; + if (!library.Open("libvulkan.so")) { + return {}; + } + + Vulkan::vk::InstanceDispatch dld; + // TODO: warn the user that Vulkan is unavailable rather than hard crash + const auto instance = Vulkan::CreateInstance(library, dld, VK_API_VERSION_1_1); + const auto physical_devices = instance.EnumeratePhysicalDevices(); + if (physical_devices.empty()) { + return {}; + } + + const Vulkan::vk::PhysicalDevice physical_device(physical_devices[0], dld); + return physical_device.GetProperties(); +} +} // namespace + +jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getVulkanDriverVersion(JNIEnv* env, jobject jobj) { + try { + const auto props = GetVulkanDeviceProperties(); + if (props.deviceID == 0) { + return Common::Android::ToJString(env, "N/A"); + } + + const u32 driver_version = props.driverVersion; + const u32 vendor_id = props.vendorID; + + if (driver_version == 0) { + return Common::Android::ToJString(env, "N/A"); + } + + std::string version_str; + + if (vendor_id == VENDOR_QUALCOMM) { + const u32 major = (driver_version >> 24) << 2; + const u32 minor = (driver_version >> 12) & 0xFFF; + const u32 patch = driver_version & 0xFFF; + version_str = fmt::format("{}.{}.{}", major, minor, patch); + } + else if (vendor_id == VENDOR_ARM) { + u32 major = VK_API_VERSION_MAJOR(driver_version); + u32 minor = VK_API_VERSION_MINOR(driver_version); + u32 patch = VK_API_VERSION_PATCH(driver_version); + + // ARM custom encoding for newer drivers + if (major > 10) { + major = (driver_version >> 22) & 0x3FF; + minor = (driver_version >> 12) & 0x3FF; + patch = driver_version & 0xFFF; + } + version_str = fmt::format("{}.{}.{}", major, minor, patch); + } + // Standard Vulkan version encoding for other vendors + else { + const u32 major = VK_API_VERSION_MAJOR(driver_version); + const u32 minor = VK_API_VERSION_MINOR(driver_version); + const u32 patch = VK_API_VERSION_PATCH(driver_version); + version_str = fmt::format("{}.{}.{}", major, minor, patch); + } + + return Common::Android::ToJString(env, version_str); + } catch (...) { + return Common::Android::ToJString(env, "N/A"); + } +} + +jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getVulkanApiVersion(JNIEnv* env, jobject jobj) { + try { + const auto props = GetVulkanDeviceProperties(); + if (props.deviceID == 0) { + return Common::Android::ToJString(env, "N/A"); + } + + const u32 api_version = props.apiVersion; + const u32 major = VK_API_VERSION_MAJOR(api_version); + const u32 minor = VK_API_VERSION_MINOR(api_version); + const u32 patch = VK_API_VERSION_PATCH(api_version); + const u32 variant = VK_API_VERSION_VARIANT(api_version); + + // Include variant if non-zero (rare on Android) + const std::string version_str = variant > 0 + ? fmt::format("{}.{}.{}.{}", variant, major, minor, patch) + : fmt::format("{}.{}.{}", major, minor, patch); + + return Common::Android::ToJString(env, version_str); + } catch (...) { + return Common::Android::ToJString(env, "N/A"); + } +} + +jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getGpuModel(JNIEnv* env, jobject jobj) { + const auto props = GetVulkanDeviceProperties(); + if (props.deviceID == 0) { + return Common::Android::ToJString(env, "Unknown"); + } + + return Common::Android::ToJString(env, props.deviceName); +} + void Java_org_yuzu_yuzu_1emu_NativeLibrary_applySettings(JNIEnv* env, jobject jobj) { EmulationSession::GetInstance().System().ApplySettings(); EmulationSession::GetInstance().System().HIDCore().ReloadInputDevices(); @@ -681,6 +1173,43 @@ void Java_org_yuzu_yuzu_1emu_NativeLibrary_logSettings(JNIEnv* env, jobject jobj Settings::LogSettings(); } +jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_getDebugKnobAt(JNIEnv* env, jobject jobj, jint index) { + return static_cast(Settings::getDebugKnobAt(static_cast(index))); +} + +void Java_org_yuzu_yuzu_1emu_NativeLibrary_setTurboSpeedLimit(JNIEnv *env, jobject jobj, jboolean enabled) { + if (enabled) { + Settings::values.use_speed_limit.SetValue(true); + Settings::SetSpeedMode(Settings::SpeedMode::Turbo); + } else { + Settings::SetSpeedMode(Settings::SpeedMode::Standard); + } +} + +void Java_org_yuzu_yuzu_1emu_NativeLibrary_setSlowSpeedLimit(JNIEnv *env, jobject jobj, jboolean enabled) { + if (enabled) { + Settings::values.use_speed_limit.SetValue(true); + Settings::SetSpeedMode(Settings::SpeedMode::Slow); + } else { + Settings::SetSpeedMode(Settings::SpeedMode::Standard); + } +} + +void Java_org_yuzu_yuzu_1emu_NativeLibrary_setStandardSpeedLimit(JNIEnv *env, jobject jobj, jboolean enabled) { + Settings::values.use_speed_limit.SetValue(enabled); + if (enabled) { + Settings::SetSpeedMode(Settings::SpeedMode::Standard); + } +} + +jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_isTurboMode(JNIEnv *env, jobject jobj) { + return Settings::values.current_speed_mode.GetValue() == Settings::SpeedMode::Turbo; +} + +jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_isSlowMode(JNIEnv *env, jobject jobj) { + return Settings::values.current_speed_mode.GetValue() == Settings::SpeedMode::Slow; +} + void Java_org_yuzu_yuzu_1emu_NativeLibrary_run(JNIEnv* env, jobject jobj, jstring j_path, jint j_program_index, jboolean j_frontend_initiated) { @@ -731,6 +1260,56 @@ void Java_org_yuzu_yuzu_1emu_NativeLibrary_initializeEmptyUserDirectory(JNIEnv* } } +void Java_org_yuzu_yuzu_1emu_NativeLibrary_playTimeManagerInit(JNIEnv* env, jobject obj) { + // for some reason the full user directory isnt initialized in Android, so we need to create it + const auto play_time_dir = Common::FS::GetEdenPath(Common::FS::EdenPath::PlayTimeDir); + if (!Common::FS::IsDir(play_time_dir) && !Common::FS::CreateDir(play_time_dir)) + LOG_WARNING(Frontend, "Failed to create play time directory"); + + play_time_manager = std::make_unique(); +} + +void Java_org_yuzu_yuzu_1emu_NativeLibrary_playTimeManagerStart(JNIEnv* env, jobject obj) { + if (play_time_manager) { + play_time_manager->SetProgramId(EmulationSession::GetInstance().System().GetApplicationProcessProgramID()); + play_time_manager->Start(); + } +} + +void Java_org_yuzu_yuzu_1emu_NativeLibrary_playTimeManagerStop(JNIEnv* env, jobject obj) { + if (play_time_manager) + play_time_manager->Stop(); +} + +jlong Java_org_yuzu_yuzu_1emu_NativeLibrary_playTimeManagerGetPlayTime(JNIEnv* env, jobject obj, jstring jprogramId) { + if (play_time_manager) { + u64 program_id = EmulationSession::GetProgramId(env, jprogramId); + return play_time_manager->GetPlayTime(program_id); + } + return 0UL; +} + +jlong Java_org_yuzu_yuzu_1emu_NativeLibrary_playTimeManagerGetCurrentTitleId(JNIEnv* env, + jobject obj) { + return EmulationSession::GetInstance().System().GetApplicationProcessProgramID(); +} + +void Java_org_yuzu_yuzu_1emu_NativeLibrary_playTimeManagerResetProgramPlayTime(JNIEnv* env, jobject obj, + jstring jprogramId) { + if (play_time_manager) { + u64 program_id = EmulationSession::GetProgramId(env, jprogramId); + play_time_manager->ResetProgramPlayTime(program_id); + } +} + +void Java_org_yuzu_yuzu_1emu_NativeLibrary_playTimeManagerSetPlayTime(JNIEnv* env, jobject obj, + jstring jprogramId, jlong playTimeSeconds) { + if (play_time_manager) { + u64 program_id = EmulationSession::GetProgramId(env, jprogramId); + play_time_manager->SetPlayTime(program_id, u64(playTimeSeconds)); + } +} + jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getAppletLaunchPath(JNIEnv* env, jclass clazz, jlong jid) { auto bis_system = @@ -784,10 +1363,6 @@ jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_firmwareVersion(JNIEnv* env, jclas return Common::Android::ToJString(env, display_version); } -jint Java_org_yuzu_yuzu_1emu_NativeLibrary_verifyFirmware(JNIEnv* env, jclass clazz) { - return static_cast(FirmwareManager::VerifyFirmware(EmulationSession::GetInstance().System())); -} - jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_gameRequiresFirmware(JNIEnv* env, jclass clazz, jstring jprogramId) { auto program_id = EmulationSession::GetProgramId(env, jprogramId); @@ -830,7 +1405,8 @@ jobjectArray Java_org_yuzu_yuzu_1emu_NativeLibrary_getPatchesForFile(JNIEnv* env Common::Android::ToJString(env, patch.name), Common::Android::ToJString(env, patch.version), static_cast(patch.type), Common::Android::ToJString(env, std::to_string(patch.program_id)), - Common::Android::ToJString(env, std::to_string(patch.title_id))); + Common::Android::ToJString(env, std::to_string(patch.title_id)), + static_cast(patch.numeric_version), static_cast(patch.source)); env->SetObjectArrayElement(jpatchArray, i, jpatch); ++i; } @@ -911,12 +1487,12 @@ jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getSavePath(JNIEnv* env, jobject j const auto user_id = manager.GetUser(static_cast(0)); ASSERT(user_id); - const auto nandDir = Common::FS::GetEdenPath(Common::FS::EdenPath::NANDDir); - auto vfsNandDir = system.GetFilesystem()->OpenDirectory(Common::FS::PathToUTF8String(nandDir), + const auto saveDir = Common::FS::GetEdenPath(Common::FS::EdenPath::SaveDir); + auto vfsSaveDir = system.GetFilesystem()->OpenDirectory(Common::FS::PathToUTF8String(saveDir), FileSys::OpenMode::Read); const auto user_save_data_path = FileSys::SaveDataFactory::GetFullPath( - {}, vfsNandDir, FileSys::SaveDataSpaceId::User, FileSys::SaveDataType::Account, program_id, + {}, vfsSaveDir, FileSys::SaveDataSpaceId::User, FileSys::SaveDataType::Account, program_id, user_id->AsU128(), 0); return Common::Android::ToJString(env, user_save_data_path); } @@ -940,6 +1516,12 @@ void Java_org_yuzu_yuzu_1emu_NativeLibrary_addFileToFilesystemProvider(JNIEnv* e Common::Android::GetJString(env, jpath)); } +void Java_org_yuzu_yuzu_1emu_NativeLibrary_addGameFolderFileToFilesystemProvider( + JNIEnv* env, jobject jobj, jstring jpath) { + EmulationSession::GetInstance().ConfigureFilesystemProviderFromGameFolder( + Common::Android::GetJString(env, jpath)); +} + void Java_org_yuzu_yuzu_1emu_NativeLibrary_clearFilesystemProvider(JNIEnv* env, jobject jobj) { EmulationSession::GetInstance().GetContentProvider()->ClearAllEntries(); } @@ -950,6 +1532,44 @@ jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_areKeysPresent(JNIEnv* env, jobje return ContentManager::AreKeysPresent(); } +jint Java_org_yuzu_yuzu_1emu_NativeLibrary_getVirtualAmiiboState(JNIEnv* env, jobject jobj) { + if (!EmulationSession::GetInstance().IsRunning()) { + return static_cast(InputCommon::VirtualAmiibo::State::Disabled); + } + + auto* virtual_amiibo = + EmulationSession::GetInstance().GetInputSubsystem().GetVirtualAmiibo(); + if (virtual_amiibo == nullptr) { + return static_cast(InputCommon::VirtualAmiibo::State::Disabled); + } + + return static_cast(virtual_amiibo->GetCurrentState()); +} + +jint Java_org_yuzu_yuzu_1emu_NativeLibrary_loadAmiibo(JNIEnv* env, jobject jobj, + jbyteArray jdata) { + if (!EmulationSession::GetInstance().IsRunning() || jdata == nullptr) { + return static_cast(InputCommon::VirtualAmiibo::Info::WrongDeviceState); + } + + auto* virtual_amiibo = + EmulationSession::GetInstance().GetInputSubsystem().GetVirtualAmiibo(); + if (virtual_amiibo == nullptr) { + return static_cast(InputCommon::VirtualAmiibo::Info::Unknown); + } + + const jsize length = env->GetArrayLength(jdata); + std::vector bytes(static_cast(length)); + if (length > 0) { + env->GetByteArrayRegion(jdata, 0, length, + reinterpret_cast(bytes.data())); + } + + const auto info = + virtual_amiibo->LoadAmiibo(std::span(bytes.data(), bytes.size())); + return static_cast(info); +} + JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_initMultiplayer( JNIEnv* env, [[maybe_unused]] jobject obj) { @@ -1055,4 +1675,492 @@ JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_updatePowerState( g_is_charging.store(isCharging, std::memory_order_relaxed); g_has_battery.store(hasBattery, std::memory_order_relaxed); } + +JNIEXPORT jboolean JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_isUpdateCheckerEnabled( + JNIEnv* env, + jobject obj) { +#ifdef ENABLE_UPDATE_CHECKER + return JNI_TRUE; +#else + return JNI_FALSE; +#endif + } + +JNIEXPORT jboolean JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_isNightlyBuild( + JNIEnv* env, + jobject obj) { +#ifdef NIGHTLY_BUILD + return JNI_TRUE; +#else + return JNI_FALSE; +#endif +} + +#ifdef ENABLE_UPDATE_CHECKER + + +JNIEXPORT jobjectArray JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_checkForUpdate( + JNIEnv* env, + jobject obj) { + std::optional release = UpdateChecker::GetUpdate(); + if (!release) return nullptr; + + const std::string tag = release->tag; + const std::string name = release->name; + + jobjectArray result = env->NewObjectArray(2, env->FindClass("java/lang/String"), nullptr); + + const jstring jtag = env->NewStringUTF(tag.c_str()); + const jstring jname = env->NewStringUTF(name.c_str()); + + env->SetObjectArrayElement(result, 0, jtag); + env->SetObjectArrayElement(result, 1, jname); + env->DeleteLocalRef(jtag); + env->DeleteLocalRef(jname); + + return result; +} + +JNIEXPORT jstring JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_getUpdateUrl( + JNIEnv* env, + jobject obj, + jstring version) { + const char* version_str = env->GetStringUTFChars(version, nullptr); + const std::string url = fmt::format("{}/{}/releases/tag/{}", + std::string{Common::g_build_auto_update_website}, + std::string{Common::g_build_auto_update_repo}, + version_str); + env->ReleaseStringUTFChars(version, version_str); + return env->NewStringUTF(url.c_str()); +} + +JNIEXPORT jstring JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_getUpdateApkUrl( + JNIEnv* env, + jobject obj, + jstring tag, + jstring artifact, + jstring packageId) { + const char* version_str = env->GetStringUTFChars(tag, nullptr); + const char* artifact_str = env->GetStringUTFChars(artifact, nullptr); + const char* package_id_str = env->GetStringUTFChars(packageId, nullptr); + + std::string variant; + std::string package_id(package_id_str); + + if (package_id.find("dev.legacy.eden_emulator") != std::string::npos) { + variant = "legacy"; + } else if (package_id.find("com.miHoYo.Yuanshen") != std::string::npos) { + variant = "optimized"; + } else { +#ifdef ARCHITECTURE_arm64 + variant = "standard"; +#else + variant = "chromeos"; +#endif + } + + const std::string apk_filename = fmt::format("Eden-Android-{}-{}.apk", artifact_str, variant); + const std::string url = fmt::format("{}/{}/releases/download/{}/{}", + std::string{Common::g_build_auto_update_website}, + std::string{Common::g_build_auto_update_repo}, + version_str, + apk_filename); + + env->ReleaseStringUTFChars(tag, version_str); + env->ReleaseStringUTFChars(artifact, artifact_str); + env->ReleaseStringUTFChars(packageId, package_id_str); + return env->NewStringUTF(url.c_str()); +} +#endif + +JNIEXPORT jstring JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_getBuildVersion( + JNIEnv* env, + [[maybe_unused]] jobject obj) { + return env->NewStringUTF(Common::g_build_version); +} + +JNIEXPORT jobjectArray JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_getAllUsers( + JNIEnv* env, + [[maybe_unused]] jobject obj) { + auto& manager = EmulationSession::GetInstance().System().GetProfileManager(); + + manager.ResetUserSaveFile(); + + if (manager.GetUserCount() == 0) { + manager.CreateNewUser(Common::UUID::MakeRandom(), "Eden"); + manager.WriteUserSaveFile(); + } + + const auto& users = manager.GetAllUsers(); + + jclass string_class = env->FindClass("java/lang/String"); + if (!string_class) { + return env->NewObjectArray(0, env->FindClass("java/lang/Object"), nullptr); + } + + jsize valid_count = 0; + for (const auto& user : users) { + if (user.IsValid()) { + valid_count++; + } + } + + jobjectArray result = env->NewObjectArray(valid_count, string_class, nullptr); + if (!result) { + return env->NewObjectArray(0, string_class, nullptr); + } + + // fill array sequentially with only valid users + jsize array_index = 0; + for (const auto& user : users) { + if (user.IsValid()) { + jstring uuid_str = env->NewStringUTF(user.FormattedString().c_str()); + if (uuid_str) { + env->SetObjectArrayElement(result, array_index++, uuid_str); + } + } + } + + return result; +} + +JNIEXPORT jstring JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_getUserUsername( + JNIEnv* env, + [[maybe_unused]] jobject obj, + jstring juuid) { + auto& manager = EmulationSession::GetInstance().System().GetProfileManager(); + const auto uuid_string = Common::Android::GetJString(env, juuid); + const auto uuid = Common::UUID{uuid_string}; + + Service::Account::ProfileBase profile{}; + if (!manager.GetProfileBase(uuid, profile)) { + jstring result = env->NewStringUTF(""); + return result ? result : env->NewStringUTF(""); + } + + const auto text = Common::StringFromFixedZeroTerminatedBuffer( + reinterpret_cast(profile.username.data()), profile.username.size()); + jstring result = env->NewStringUTF(text.c_str()); + return result ? result : env->NewStringUTF(""); +} + +JNIEXPORT jlong JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_getUserCount( + JNIEnv* env, + [[maybe_unused]] jobject obj) { + auto& manager = EmulationSession::GetInstance().System().GetProfileManager(); + return static_cast(manager.GetUserCount()); +} + +JNIEXPORT jboolean JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_canCreateUser( + JNIEnv* env, + [[maybe_unused]] jobject obj) { + auto& manager = EmulationSession::GetInstance().System().GetProfileManager(); + return manager.CanSystemRegisterUser(); +} + +JNIEXPORT jboolean JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_createUser( + JNIEnv* env, + [[maybe_unused]] jobject obj, + jstring juuid, + jstring jusername) { + auto& manager = EmulationSession::GetInstance().System().GetProfileManager(); + const auto uuid_string = Common::Android::GetJString(env, juuid); + const auto username = Common::Android::GetJString(env, jusername); + const auto uuid = Common::UUID{uuid_string}; + + const auto result = manager.CreateNewUser(uuid, username); + if (result.IsSuccess()) { + manager.WriteUserSaveFile(); + return true; + } + return false; +} + +JNIEXPORT jboolean JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_updateUserUsername( + JNIEnv* env, + [[maybe_unused]] jobject obj, + jstring juuid, + jstring jusername) { + auto& manager = EmulationSession::GetInstance().System().GetProfileManager(); + const auto uuid_string = Common::Android::GetJString(env, juuid); + const auto username = Common::Android::GetJString(env, jusername); + const auto uuid = Common::UUID{uuid_string}; + + Service::Account::ProfileBase profile{}; + if (!manager.GetProfileBase(uuid, profile)) { + return false; + } + + std::fill(profile.username.begin(), profile.username.end(), '\0'); + std::copy(username.begin(), username.end(), profile.username.begin()); + + if (manager.SetProfileBase(uuid, profile)) { + manager.WriteUserSaveFile(); + return true; + } + return false; +} + +JNIEXPORT jboolean JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_removeUser( + JNIEnv* env, + [[maybe_unused]] jobject obj, + jstring juuid) { + auto& manager = EmulationSession::GetInstance().System().GetProfileManager(); + const auto uuid_string = Common::Android::GetJString(env, juuid); + const auto uuid = Common::UUID{uuid_string}; + + const auto user_index = manager.GetUserIndex(uuid); + if (!user_index) { + return false; + } + + if (Settings::values.current_user.GetValue() == static_cast(*user_index)) { + Settings::values.current_user = 0; + } + + if (manager.RemoveUser(uuid)) { + manager.WriteUserSaveFile(); + manager.ResetUserSaveFile(); + return true; + } + return false; +} + +JNIEXPORT jstring JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_getCurrentUser( + JNIEnv* env, + [[maybe_unused]] jobject obj) { + auto& manager = EmulationSession::GetInstance().System().GetProfileManager(); + const auto user_id = manager.GetUser(Settings::values.current_user.GetValue()); + if (!user_id) { + jstring result = env->NewStringUTF(""); + return result ? result : env->NewStringUTF(""); + } + jstring result = env->NewStringUTF(user_id->FormattedString().c_str()); + return result ? result : env->NewStringUTF(""); +} + +JNIEXPORT jboolean JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_setCurrentUser( + JNIEnv* env, + [[maybe_unused]] jobject obj, + jstring juuid) { + auto& manager = EmulationSession::GetInstance().System().GetProfileManager(); + const auto uuid_string = Common::Android::GetJString(env, juuid); + const auto uuid = Common::UUID{uuid_string}; + + const auto index = manager.GetUserIndex(uuid); + if (index) { + Settings::values.current_user = static_cast(*index); + return true; + } + return false; +} + +JNIEXPORT jstring JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_getUserImagePath( + JNIEnv* env, + [[maybe_unused]] jobject obj, + jstring juuid) { + const auto uuid_string = Common::Android::GetJString(env, juuid); + const auto uuid = Common::UUID{uuid_string}; + + const auto path = Common::FS::GetEdenPath(Common::FS::EdenPath::NANDDir) / + fmt::format("system/save/8000000000000010/su/avators/{}.jpg", uuid.FormattedString()); + + jstring result = Common::Android::ToJString(env, Common::FS::PathToUTF8String(path)); + return result ? result : env->NewStringUTF(""); +} + +JNIEXPORT jboolean JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_saveUserImage( + JNIEnv* env, + [[maybe_unused]] jobject obj, + jstring juuid, + jstring jimagePath) { + const auto uuid_string = Common::Android::GetJString(env, juuid); + const auto uuid = Common::UUID{uuid_string}; + const auto image_source = Common::Android::GetJString(env, jimagePath); + + const auto dest_path = Common::FS::GetEdenPath(Common::FS::EdenPath::NANDDir) / + fmt::format("system/save/8000000000000010/su/avators/{}.jpg", uuid.FormattedString()); + + const auto dest_dir = dest_path.parent_path(); + if (!Common::FS::CreateDirs(dest_dir)) { + return false; + } + + try { + std::filesystem::copy_file(image_source, dest_path, + std::filesystem::copy_options::overwrite_existing); + return true; + } catch (const std::filesystem::filesystem_error& e) { + LOG_ERROR(Common_Filesystem, "Failed to copy image file: {}", e.what()); + return false; + } +} + +JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_reloadProfiles( + JNIEnv* env, + [[maybe_unused]] jobject obj) { + auto& manager = EmulationSession::GetInstance().System().GetProfileManager(); + manager.ResetUserSaveFile(); + + // create a default user if non exist + if (manager.GetUserCount() == 0) { + manager.CreateNewUser(Common::UUID::MakeRandom(), "Eden"); + manager.WriteUserSaveFile(); + } + + LOG_INFO(Service_ACC, "Profile manager reloaded, user count: {}", manager.GetUserCount()); +} + +// for firmware avatar images +static std::vector DecompressYaz0(const FileSys::VirtualFile& file) { + if (!file) { + return std::vector(); + } + + uint32_t magic{}; + file->ReadObject(&magic, 0); + if (magic != Common::MakeMagic('Y', 'a', 'z', '0')) { + return std::vector(); + } + + uint32_t decoded_length{}; + file->ReadObject(&decoded_length, 4); + decoded_length = Common::swap32(decoded_length); + + std::size_t input_size = file->GetSize() - 16; + std::vector input(input_size); + file->ReadBytes(input.data(), input_size, 16); + + uint32_t input_offset{}; + uint32_t output_offset{}; + std::vector output(decoded_length); + + uint16_t mask{}; + uint8_t header{}; + + while (output_offset < decoded_length) { + if ((mask >>= 1) == 0) { + if (input_offset >= input.size()) break; + header = input[input_offset++]; + mask = 0x80; + } + + if ((header & mask) != 0) { + if (output_offset >= output.size() || input_offset >= input.size()) { + break; + } + output[output_offset++] = input[input_offset++]; + } else { + if (input_offset + 1 >= input.size()) break; + uint8_t byte1 = input[input_offset++]; + uint8_t byte2 = input[input_offset++]; + + uint32_t dist = ((byte1 & 0xF) << 8) | byte2; + uint32_t position = output_offset - (dist + 1); + + uint32_t length = byte1 >> 4; + if (length == 0) { + if (input_offset >= input.size()) break; + length = static_cast(input[input_offset++]) + 0x12; + } else { + length += 2; + } + + for (uint32_t i = 0; i < length && output_offset < decoded_length; ++i) { + output[output_offset++] = output[position++]; + } + } + } + + return output; +} + +static FileSys::VirtualDir GetFirmwareAvatarDirectory() { + constexpr u64 AvatarImageDataId = 0x010000000000080AULL; + + auto* bis_system = EmulationSession::GetInstance().System().GetFileSystemController().GetSystemNANDContents(); + if (!bis_system) { + return nullptr; + } + + const auto nca = bis_system->GetEntry(AvatarImageDataId, FileSys::ContentRecordType::Data); + if (!nca) { + return nullptr; + } + + const auto romfs = nca->GetRomFS(); + if (!romfs) { + return nullptr; + } + + const auto extracted = FileSys::ExtractRomFS(romfs); + if (!extracted) { + return nullptr; + } + + return extracted->GetSubdirectory("chara"); +} + +JNIEXPORT jint JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_getFirmwareAvatarCount( + JNIEnv* env, + [[maybe_unused]] jobject obj) { + const auto chara_dir = GetFirmwareAvatarDirectory(); + if (!chara_dir) { + return 0; + } + + int count = 0; + for (const auto& item : chara_dir->GetFiles()) { + if (item->GetExtension() == "szs") { + count++; + } + } + return count; +} + +JNIEXPORT jbyteArray JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_getFirmwareAvatarImage( + JNIEnv* env, + [[maybe_unused]] jobject obj, + jint index) { + const auto chara_dir = GetFirmwareAvatarDirectory(); + if (!chara_dir) { + return nullptr; + } + + int current_index = 0; + for (const auto& item : chara_dir->GetFiles()) { + if (item->GetExtension() != "szs") { + continue; + } + + if (current_index == index) { + auto image_data = DecompressYaz0(item); + if (image_data.empty()) { + return nullptr; + } + + jbyteArray result = env->NewByteArray(image_data.size()); + if (result) { + env->SetByteArrayRegion(result, 0, image_data.size(), + reinterpret_cast(image_data.data())); + } + return result; + } + current_index++; + } + + return nullptr; +} + +JNIEXPORT jbyteArray JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_getDefaultAccountBackupJpeg( + JNIEnv* env, + [[maybe_unused]] jobject obj) { + jbyteArray result = env->NewByteArray(Core::Constants::ACCOUNT_BACKUP_JPEG.size()); + if (result) { + env->SetByteArrayRegion(result, 0, Core::Constants::ACCOUNT_BACKUP_JPEG.size(), + reinterpret_cast(Core::Constants::ACCOUNT_BACKUP_JPEG.data())); + } + return result; +} + } // extern "C" diff --git a/src/android/app/src/main/jni/native.h b/src/android/app/src/main/jni/native.h index dfbc8b2943..f2e5c2cfd6 100644 --- a/src/android/app/src/main/jni/native.h +++ b/src/android/app/src/main/jni/native.h @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later @@ -46,6 +49,7 @@ public: const Core::PerfStatsResults& PerfStats(); int ShadersBuilding(); void ConfigureFilesystemProvider(const std::string& filepath); + void ConfigureFilesystemProviderFromGameFolder(const std::string& filepath); void InitializeSystem(bool reload); void SetAppletId(int applet_id); Core::SystemResultStatus InitializeEmulation(const std::string& filepath, diff --git a/src/android/app/src/main/jni/native_config.cpp b/src/android/app/src/main/jni/native_config.cpp index 0b26280c6c..647fdbb997 100644 --- a/src/android/app/src/main/jni/native_config.cpp +++ b/src/android/app/src/main/jni/native_config.cpp @@ -1,5 +1,5 @@ -// SPDX-FileCopyrightText: 2023 yuzu Emulator Project -// SPDX-License-Identifier: GPL-2.0-or-later +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later #include @@ -9,9 +9,11 @@ #include "android_settings.h" #include "common/android/android_common.h" #include "common/android/id_cache.h" -#include "common/logging/log.h" +#include "common/fs/path_util.h" +#include "common/logging.h" #include "common/settings.h" #include "frontend_common/config.h" +#include "frontend_common/settings_generator.h" #include "native.h" std::unique_ptr global_config; @@ -36,6 +38,7 @@ extern "C" { void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_initializeGlobalConfig(JNIEnv* env, jobject obj) { global_config = std::make_unique(); + FrontendCommon::GenerateSettings(); } void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_unloadGlobalConfig(JNIEnv* env, jobject obj) { @@ -369,7 +372,9 @@ jobjectArray Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getOverlayControlData(JN env->NewObject(Common::Android::GetOverlayControlDataClass(), Common::Android::GetOverlayControlDataConstructor(), Common::Android::ToJString(env, control_data.id), control_data.enabled, - jlandscapePosition, jportraitPosition, jfoldablePosition); + jlandscapePosition, jportraitPosition, jfoldablePosition, + control_data.individual_scale); + env->SetObjectArrayElement(joverlayControlDataArray, i, jcontrolData); } return joverlayControlDataArray; @@ -418,9 +423,12 @@ void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_setOverlayControlData( env, env->GetObjectField(jfoldablePosition, Common::Android::GetPairSecondField()))); + float individual_scale = static_cast(env->GetFloatField( + joverlayControlData, Common::Android::GetOverlayControlDataIndividualScaleField())); + AndroidSettings::values.overlay_control_data.push_back(AndroidSettings::OverlayControlData{ Common::Android::GetJString(env, jidString), enabled, landscape_position, - portrait_position, foldable_position}); + portrait_position, foldable_position, individual_scale}); } } @@ -540,4 +548,61 @@ void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_saveControlPlayerValues(JNIEnv* } } +jstring Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getSaveDir(JNIEnv* env, jobject obj) { + return Common::Android::ToJString(env, + Common::FS::GetEdenPathString(Common::FS::EdenPath::SaveDir)); +} + +jstring Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getDefaultSaveDir(JNIEnv* env, jobject obj) { + return Common::Android::ToJString(env, + Common::FS::GetEdenPathString(Common::FS::EdenPath::NANDDir)); +} + +void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_setSaveDir(JNIEnv* env, jobject obj, jstring jpath) { + auto path = Common::Android::GetJString(env, jpath); + Common::FS::SetEdenPath(Common::FS::EdenPath::SaveDir, path); +} + +jstring Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getNandDir(JNIEnv* env, jobject obj) { + return Common::Android::ToJString(env, + Common::FS::GetEdenPathString(Common::FS::EdenPath::NANDDir)); +} + +void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_setNandDir(JNIEnv* env, jobject obj, jstring jpath) { + auto path = Common::Android::GetJString(env, jpath); + Common::FS::SetEdenPath(Common::FS::EdenPath::NANDDir, path); +} + +jstring Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getSdmcDir(JNIEnv* env, jobject obj) { + return Common::Android::ToJString(env, + Common::FS::GetEdenPathString(Common::FS::EdenPath::SDMCDir)); +} + +void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_setSdmcDir(JNIEnv* env, jobject obj, jstring jpath) { + auto path = Common::Android::GetJString(env, jpath); + Common::FS::SetEdenPath(Common::FS::EdenPath::SDMCDir, path); +} + +jobjectArray Java_org_yuzu_yuzu_1emu_utils_NativeConfig_getExternalContentDirs(JNIEnv* env, + jobject obj) { + const auto& dirs = Settings::values.external_content_dirs; + jobjectArray jdirsArray = + env->NewObjectArray(dirs.size(), Common::Android::GetStringClass(), + Common::Android::ToJString(env, "")); + for (size_t i = 0; i < dirs.size(); ++i) { + env->SetObjectArrayElement(jdirsArray, i, Common::Android::ToJString(env, dirs[i])); + } + return jdirsArray; +} + +void Java_org_yuzu_yuzu_1emu_utils_NativeConfig_setExternalContentDirs(JNIEnv* env, jobject obj, + jobjectArray jdirs) { + Settings::values.external_content_dirs.clear(); + const int size = env->GetArrayLength(jdirs); + for (int i = 0; i < size; ++i) { + auto jdir = static_cast(env->GetObjectArrayElement(jdirs, i)); + Settings::values.external_content_dirs.push_back(Common::Android::GetJString(env, jdir)); + } +} + } // extern "C" diff --git a/src/android/app/src/main/jni/native_freedreno.cpp b/src/android/app/src/main/jni/native_freedreno.cpp new file mode 100644 index 0000000000..e0f57a8595 --- /dev/null +++ b/src/android/app/src/main/jni/native_freedreno.cpp @@ -0,0 +1,482 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + +/** + * @file native_freedreno.cpp + * @brief JNI bindings for Freedreno/Turnip GPU driver configuration. + * + * Provides runtime configuration of Mesa Freedreno environment variables + * for the Turnip Vulkan driver on Adreno GPUs. + * + * @see https://docs.mesa3d.org/drivers/freedreno.html + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "common/android/android_common.h" +#include "common/logging.h" +#include "native.h" + +namespace { + +struct FreedrenoConfig { + std::map env_vars; + std::string config_file_path; +}; + +std::unique_ptr g_config; +std::string g_base_path; +std::string g_current_program_id; + +constexpr const char* kConfigFileName = ".freedreno.conf"; +constexpr const char* kPerGameConfigDir = "freedreno_games"; + +void LogActiveVariables() { + if (!g_config || g_config->env_vars.empty()) { + return; + } + for (const auto& [key, value] : g_config->env_vars) { + LOG_INFO(Frontend, "[Freedreno] {}={}", key, value); + } +} + +bool ApplyEnvironmentVariable(const std::string& key, const std::string& value) { + if (setenv(key.c_str(), value.c_str(), 1) != 0) { + LOG_ERROR(Frontend, "[Freedreno] Failed to set {}={} (errno: {})", key, value, errno); + return false; + } + return true; +} + +void ClearAllEnvironmentVariables() { + if (!g_config) return; + for (const auto& [key, value] : g_config->env_vars) { + unsetenv(key.c_str()); + } + g_config->env_vars.clear(); +} + +std::string GetConfigPath() { + return g_base_path + "/" + kConfigFileName; +} + +std::string GetPerGameConfigPath(const std::string& program_id) { + return g_base_path + "/" + kPerGameConfigDir + "/" + program_id + ".conf"; +} + +void EnsurePerGameConfigDir() { + std::string dir_path = g_base_path + "/" + kPerGameConfigDir; + mkdir(dir_path.c_str(), 0755); +} + +bool LoadConfigFromFile(const std::string& config_path) { + if (!g_config) return false; + + FILE* file = fopen(config_path.c_str(), "r"); + if (!file) { + return false; + } + + char line[512]; + int count = 0; + while (fgets(line, sizeof(line), file)) { + size_t len = strlen(line); + if (len > 0 && line[len - 1] == '\n') { + line[len - 1] = '\0'; + len--; + } + + if (len == 0 || line[0] == '#') { + continue; + } + + const char* eq = strchr(line, '='); + if (!eq) { + continue; + } + + std::string key(line, eq - line); + std::string value(eq + 1); + + g_config->env_vars[key] = value; + ApplyEnvironmentVariable(key, value); + count++; + } + + fclose(file); + return count > 0; +} + +bool SaveConfigToFile(const std::string& config_path) { + if (!g_config) return false; + + FILE* file = fopen(config_path.c_str(), "w"); + if (!file) { + LOG_ERROR(Frontend, "[Freedreno] Failed to open {} for writing", config_path); + return false; + } + + fprintf(file, "# Freedreno/Turnip Configuration\n"); + fprintf(file, "# Auto-generated by Eden Emulator\n\n"); + + for (const auto& [key, value] : g_config->env_vars) { + fprintf(file, "%s=%s\n", key.c_str(), value.c_str()); + } + + fclose(file); + return true; +} + +} // anonymous namespace + +extern "C" { + +JNIEXPORT void JNICALL +Java_org_yuzu_yuzu_1emu_utils_NativeFreedrenoConfig_setFreedrenoBasePath( + JNIEnv* env, [[maybe_unused]] jobject obj, jstring jbasePath) { + g_base_path = Common::Android::GetJString(env, jbasePath); +} + +JNIEXPORT void JNICALL +Java_org_yuzu_yuzu_1emu_utils_NativeFreedrenoConfig_initializeFreedrenoConfig( + [[maybe_unused]] JNIEnv* env, [[maybe_unused]] jobject obj) { + if (!g_config) { + g_config = std::make_unique(); + LOG_INFO(Frontend, "[Freedreno] Configuration system initialized"); + } +} + +JNIEXPORT void JNICALL +Java_org_yuzu_yuzu_1emu_utils_NativeFreedrenoConfig_saveFreedrenoConfig( + [[maybe_unused]] JNIEnv* env, [[maybe_unused]] jobject obj) { + if (!g_config) { + LOG_WARNING(Frontend, "[Freedreno] Cannot save: not initialized"); + return; + } + + const std::string config_path = GetConfigPath(); + FILE* file = fopen(config_path.c_str(), "w"); + if (!file) { + LOG_ERROR(Frontend, "[Freedreno] Failed to open {} for writing", config_path); + return; + } + + fprintf(file, "# Freedreno/Turnip Configuration\n"); + fprintf(file, "# Auto-generated by Eden Emulator\n\n"); + + for (const auto& [key, value] : g_config->env_vars) { + fprintf(file, "%s=%s\n", key.c_str(), value.c_str()); + } + + fclose(file); + g_config->config_file_path = config_path; + + LOG_INFO(Frontend, "[Freedreno] Saved {} variables to {}", + g_config->env_vars.size(), config_path); +} + +JNIEXPORT void JNICALL +Java_org_yuzu_yuzu_1emu_utils_NativeFreedrenoConfig_reloadFreedrenoConfig( + [[maybe_unused]] JNIEnv* env, [[maybe_unused]] jobject obj) { + if (!g_config) { + LOG_WARNING(Frontend, "[Freedreno] Cannot reload: not initialized"); + return; + } + + const std::string config_path = GetConfigPath(); + g_config->env_vars.clear(); + + FILE* file = fopen(config_path.c_str(), "r"); + if (!file) { + LOG_DEBUG(Frontend, "[Freedreno] No config file found at {}", config_path); + return; + } + + char line[512]; + while (fgets(line, sizeof(line), file)) { + // Remove trailing newline + size_t len = strlen(line); + if (len > 0 && line[len - 1] == '\n') { + line[len - 1] = '\0'; + len--; + } + + // Skip empty lines and comments + if (len == 0 || line[0] == '#') { + continue; + } + + // Parse key=value + const char* eq = strchr(line, '='); + if (!eq) { + continue; + } + + std::string key(line, eq - line); + std::string value(eq + 1); + + g_config->env_vars[key] = value; + ApplyEnvironmentVariable(key, value); + } + + fclose(file); + g_config->config_file_path = config_path; + + if (!g_config->env_vars.empty()) { + LOG_INFO(Frontend, "[Freedreno] Loaded {} variables:", g_config->env_vars.size()); + LogActiveVariables(); + } +} + +JNIEXPORT jboolean JNICALL +Java_org_yuzu_yuzu_1emu_utils_NativeFreedrenoConfig_setFreedrenoEnv( + JNIEnv* env, [[maybe_unused]] jobject obj, jstring jvarName, jstring jvalue) { + if (!g_config) { + return JNI_FALSE; + } + + auto var_name = Common::Android::GetJString(env, jvarName); + auto value = Common::Android::GetJString(env, jvalue); + + if (var_name.empty()) { + return JNI_FALSE; + } + + g_config->env_vars[var_name] = value; + + if (!ApplyEnvironmentVariable(var_name, value)) { + return JNI_FALSE; + } + + LOG_INFO(Frontend, "[Freedreno] Set {}={}", var_name, value); + + if (var_name == "FD_DEV_FEATURES") { + LOG_INFO(Frontend, "[Freedreno] FD_DEV_FEATURES enabled: {}", value); + } + + return JNI_TRUE; +} + +JNIEXPORT jstring JNICALL +Java_org_yuzu_yuzu_1emu_utils_NativeFreedrenoConfig_getFreedrenoEnv( + JNIEnv* env, [[maybe_unused]] jobject obj, jstring jvarName) { + if (!g_config) { + return env->NewStringUTF(""); + } + + auto var_name = Common::Android::GetJString(env, jvarName); + auto it = g_config->env_vars.find(var_name); + + if (it != g_config->env_vars.end()) { + return env->NewStringUTF(it->second.c_str()); + } + + return env->NewStringUTF(""); +} + +JNIEXPORT jboolean JNICALL +Java_org_yuzu_yuzu_1emu_utils_NativeFreedrenoConfig_isFreedrenoEnvSet( + JNIEnv* env, [[maybe_unused]] jobject obj, jstring jvarName) { + if (!g_config) { + return JNI_FALSE; + } + + auto var_name = Common::Android::GetJString(env, jvarName); + auto it = g_config->env_vars.find(var_name); + + return (it != g_config->env_vars.end() && !it->second.empty()) ? JNI_TRUE : JNI_FALSE; +} + +JNIEXPORT jboolean JNICALL +Java_org_yuzu_yuzu_1emu_utils_NativeFreedrenoConfig_clearFreedrenoEnv( + JNIEnv* env, [[maybe_unused]] jobject obj, jstring jvarName) { + if (!g_config) { + return JNI_FALSE; + } + + auto var_name = Common::Android::GetJString(env, jvarName); + auto it = g_config->env_vars.find(var_name); + + if (it != g_config->env_vars.end()) { + g_config->env_vars.erase(it); + unsetenv(var_name.c_str()); + LOG_INFO(Frontend, "[Freedreno] Cleared {}", var_name); + return JNI_TRUE; + } + + return JNI_FALSE; +} + +JNIEXPORT void JNICALL +Java_org_yuzu_yuzu_1emu_utils_NativeFreedrenoConfig_clearAllFreedrenoEnv( + [[maybe_unused]] JNIEnv* env, [[maybe_unused]] jobject obj) { + if (!g_config) { + return; + } + + for (const auto& [key, value] : g_config->env_vars) { + unsetenv(key.c_str()); + } + + size_t count = g_config->env_vars.size(); + g_config->env_vars.clear(); + + if (count > 0) { + LOG_INFO(Frontend, "[Freedreno] Cleared all {} variables", count); + } +} + +JNIEXPORT jstring JNICALL +Java_org_yuzu_yuzu_1emu_utils_NativeFreedrenoConfig_getFreedrenoEnvSummary( + JNIEnv* env, [[maybe_unused]] jobject obj) { + if (!g_config || g_config->env_vars.empty()) { + return env->NewStringUTF(""); + } + + std::string summary; + for (const auto& [key, value] : g_config->env_vars) { + if (!summary.empty()) { + summary += ","; + } + summary += key + "=" + value; + } + + return env->NewStringUTF(summary.c_str()); +} + +JNIEXPORT void JNICALL +Java_org_yuzu_yuzu_1emu_utils_NativeFreedrenoConfig_setCurrentProgramId( + JNIEnv* env, [[maybe_unused]] jobject obj, jstring jprogramId) { + g_current_program_id = Common::Android::GetJString(env, jprogramId); +} + +JNIEXPORT jboolean JNICALL +Java_org_yuzu_yuzu_1emu_utils_NativeFreedrenoConfig_loadPerGameConfig( + JNIEnv* env, [[maybe_unused]] jobject obj, jstring jprogramId) { + if (!g_config) { + return JNI_FALSE; + } + + auto program_id = Common::Android::GetJString(env, jprogramId); + if (program_id.empty()) { + return JNI_FALSE; + } + + // Clear current environment variables first + ClearAllEnvironmentVariables(); + g_current_program_id = program_id; + + // Try to load per-game config - do NOT fall back to global + // Per-game config should start empty if no config exists yet + std::string per_game_path = GetPerGameConfigPath(program_id); + if (LoadConfigFromFile(per_game_path)) { + LOG_INFO(Frontend, "[Freedreno] Loaded per-game config for {}", program_id); + LogActiveVariables(); + return JNI_TRUE; + } + + // No per-game config exists - start with empty config + LOG_INFO(Frontend, "[Freedreno] No per-game config for {}, starting empty", program_id); + return JNI_FALSE; +} + +JNIEXPORT jboolean JNICALL +Java_org_yuzu_yuzu_1emu_utils_NativeFreedrenoConfig_loadPerGameConfigWithGlobalFallback( + JNIEnv* env, [[maybe_unused]] jobject obj, jstring jprogramId) { + if (!g_config) { + return JNI_FALSE; + } + + auto program_id = Common::Android::GetJString(env, jprogramId); + if (program_id.empty()) { + return JNI_FALSE; + } + + // Clear current environment variables first + ClearAllEnvironmentVariables(); + g_current_program_id = program_id; + + // Try to load per-game config first + std::string per_game_path = GetPerGameConfigPath(program_id); + if (LoadConfigFromFile(per_game_path)) { + LOG_INFO(Frontend, "[Freedreno] Loaded per-game config for {}", program_id); + LogActiveVariables(); + return JNI_TRUE; + } + + // Fall back to global config for emulation + std::string global_path = GetConfigPath(); + if (LoadConfigFromFile(global_path)) { + LOG_INFO(Frontend, "[Freedreno] No per-game config for {}, using global for emulation", program_id); + LogActiveVariables(); + } + + return JNI_FALSE; +} + +JNIEXPORT jboolean JNICALL +Java_org_yuzu_yuzu_1emu_utils_NativeFreedrenoConfig_savePerGameConfig( + JNIEnv* env, [[maybe_unused]] jobject obj, jstring jprogramId) { + if (!g_config) { + return JNI_FALSE; + } + + auto program_id = Common::Android::GetJString(env, jprogramId); + if (program_id.empty()) { + return JNI_FALSE; + } + + EnsurePerGameConfigDir(); + std::string config_path = GetPerGameConfigPath(program_id); + + if (SaveConfigToFile(config_path)) { + LOG_INFO(Frontend, "[Freedreno] Saved per-game config for {}", program_id); + return JNI_TRUE; + } + + return JNI_FALSE; +} + +JNIEXPORT jboolean JNICALL +Java_org_yuzu_yuzu_1emu_utils_NativeFreedrenoConfig_hasPerGameConfig( + JNIEnv* env, [[maybe_unused]] jobject obj, jstring jprogramId) { + auto program_id = Common::Android::GetJString(env, jprogramId); + if (program_id.empty()) { + return JNI_FALSE; + } + + std::string config_path = GetPerGameConfigPath(program_id); + FILE* file = fopen(config_path.c_str(), "r"); + if (file) { + fclose(file); + return JNI_TRUE; + } + return JNI_FALSE; +} + +JNIEXPORT jboolean JNICALL +Java_org_yuzu_yuzu_1emu_utils_NativeFreedrenoConfig_deletePerGameConfig( + JNIEnv* env, [[maybe_unused]] jobject obj, jstring jprogramId) { + auto program_id = Common::Android::GetJString(env, jprogramId); + if (program_id.empty()) { + return JNI_FALSE; + } + + std::string config_path = GetPerGameConfigPath(program_id); + if (remove(config_path.c_str()) == 0) { + LOG_INFO(Frontend, "[Freedreno] Deleted per-game config for {}", program_id); + return JNI_TRUE; + } + return JNI_FALSE; +} + +} // extern "C" diff --git a/src/android/app/src/main/jni/native_input.cpp b/src/android/app/src/main/jni/native_input.cpp index 5b69826c75..730d4f0a27 100644 --- a/src/android/app/src/main/jni/native_input.cpp +++ b/src/android/app/src/main/jni/native_input.cpp @@ -1,3 +1,6 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: 2024 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later @@ -18,7 +21,7 @@ #include "input_common/drivers/virtual_gamepad.h" #include "native.h" -std::unordered_map> map_profiles; +ankerl::unordered_dense::map> map_profiles; bool IsHandheldOnly() { const auto npad_style_set = diff --git a/src/android/app/src/main/jni/native_log.cpp b/src/android/app/src/main/jni/native_log.cpp index 95dd1f0573..c6b6fe95b7 100644 --- a/src/android/app/src/main/jni/native_log.cpp +++ b/src/android/app/src/main/jni/native_log.cpp @@ -1,8 +1,11 @@ +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #include -#include +#include #include extern "C" { diff --git a/src/android/app/src/main/legacy/drawable/ic_icon_bg.png b/src/android/app/src/main/legacy/drawable/ic_icon_bg.png new file mode 100644 index 0000000000..f3d4c55dea Binary files /dev/null and b/src/android/app/src/main/legacy/drawable/ic_icon_bg.png differ diff --git a/src/android/app/src/main/legacy/drawable/ic_icon_bg_orig.png b/src/android/app/src/main/legacy/drawable/ic_icon_bg_orig.png new file mode 100644 index 0000000000..5859c43f86 Binary files /dev/null and b/src/android/app/src/main/legacy/drawable/ic_icon_bg_orig.png differ diff --git a/src/android/app/src/main/res/drawable-hdpi/ic_stat_notification_logo.png b/src/android/app/src/main/res/drawable-hdpi/ic_stat_notification_logo.png index 5f82432397..7ea5c71380 100644 Binary files a/src/android/app/src/main/res/drawable-hdpi/ic_stat_notification_logo.png and b/src/android/app/src/main/res/drawable-hdpi/ic_stat_notification_logo.png differ diff --git a/src/android/app/src/main/res/drawable-xhdpi/ic_stat_notification_logo.png b/src/android/app/src/main/res/drawable-xhdpi/ic_stat_notification_logo.png index 9c80904a86..d1b8f5d358 100644 Binary files a/src/android/app/src/main/res/drawable-xhdpi/ic_stat_notification_logo.png and b/src/android/app/src/main/res/drawable-xhdpi/ic_stat_notification_logo.png differ diff --git a/src/android/app/src/main/res/drawable-xhdpi/tv_banner.png b/src/android/app/src/main/res/drawable-xhdpi/tv_banner.png index d1541d8ec6..1b6ee05b59 100644 Binary files a/src/android/app/src/main/res/drawable-xhdpi/tv_banner.png and b/src/android/app/src/main/res/drawable-xhdpi/tv_banner.png differ diff --git a/src/android/app/src/main/res/drawable-xxhdpi/ic_stat_notification_logo.png b/src/android/app/src/main/res/drawable-xxhdpi/ic_stat_notification_logo.png index 63ef14ce0f..1d01126b30 100644 Binary files a/src/android/app/src/main/res/drawable-xxhdpi/ic_stat_notification_logo.png and b/src/android/app/src/main/res/drawable-xxhdpi/ic_stat_notification_logo.png differ diff --git a/src/android/app/src/main/res/drawable/circle_white.xml b/src/android/app/src/main/res/drawable/circle_white.xml new file mode 100644 index 0000000000..c94e68679a --- /dev/null +++ b/src/android/app/src/main/res/drawable/circle_white.xml @@ -0,0 +1,4 @@ + + + + diff --git a/src/android/app/src/main/res/drawable/gradient_overlay_bottom.xml b/src/android/app/src/main/res/drawable/gradient_overlay_bottom.xml new file mode 100644 index 0000000000..f74cfa0d05 --- /dev/null +++ b/src/android/app/src/main/res/drawable/gradient_overlay_bottom.xml @@ -0,0 +1,9 @@ + + + + diff --git a/src/android/app/src/main/res/drawable/ic_account_circle.xml b/src/android/app/src/main/res/drawable/ic_account_circle.xml new file mode 100644 index 0000000000..f2b564d6f8 --- /dev/null +++ b/src/android/app/src/main/res/drawable/ic_account_circle.xml @@ -0,0 +1,9 @@ + + + diff --git a/src/android/app/src/main/res/drawable/ic_icon_bg.png b/src/android/app/src/main/res/drawable/ic_icon_bg.png deleted file mode 100644 index 30b29a32d8..0000000000 Binary files a/src/android/app/src/main/res/drawable/ic_icon_bg.png and /dev/null differ diff --git a/src/android/app/src/main/res/drawable/ic_icon_bg_orig.png b/src/android/app/src/main/res/drawable/ic_icon_bg_orig.png deleted file mode 100644 index 9ebc6ce17c..0000000000 Binary files a/src/android/app/src/main/res/drawable/ic_icon_bg_orig.png and /dev/null differ diff --git a/src/android/app/src/main/res/drawable/ic_launcher.xml b/src/android/app/src/main/res/drawable/ic_launcher.xml deleted file mode 100644 index 29ca039176..0000000000 --- a/src/android/app/src/main/res/drawable/ic_launcher.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/android/app/src/main/res/drawable/ic_launcher_foreground.png b/src/android/app/src/main/res/drawable/ic_launcher_foreground.png new file mode 100644 index 0000000000..53f1cace9b Binary files /dev/null and b/src/android/app/src/main/res/drawable/ic_launcher_foreground.png differ diff --git a/src/android/app/src/main/res/drawable/ic_permission.xml b/src/android/app/src/main/res/drawable/ic_permission.xml new file mode 100644 index 0000000000..b28cb13845 --- /dev/null +++ b/src/android/app/src/main/res/drawable/ic_permission.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/src/android/app/src/main/res/drawable/ic_revolt.xml b/src/android/app/src/main/res/drawable/ic_stoat.xml similarity index 100% rename from src/android/app/src/main/res/drawable/ic_revolt.xml rename to src/android/app/src/main/res/drawable/ic_stoat.xml diff --git a/src/android/app/src/main/res/drawable/ic_yuzu.png b/src/android/app/src/main/res/drawable/ic_yuzu.png new file mode 100644 index 0000000000..fce02afa1f Binary files /dev/null and b/src/android/app/src/main/res/drawable/ic_yuzu.png differ diff --git a/src/android/app/src/main/res/drawable/ic_yuzu.xml b/src/android/app/src/main/res/drawable/ic_yuzu.xml deleted file mode 100644 index 4ddf362420..0000000000 --- a/src/android/app/src/main/res/drawable/ic_yuzu.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/android/app/src/main/res/drawable/ic_yuzu_full.xml b/src/android/app/src/main/res/drawable/ic_yuzu_full.xml deleted file mode 100644 index 680a5ff4f7..0000000000 --- a/src/android/app/src/main/res/drawable/ic_yuzu_full.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/android/app/src/main/res/drawable/ic_yuzu_icon.xml b/src/android/app/src/main/res/drawable/ic_yuzu_icon.xml deleted file mode 100644 index 24c71cad9b..0000000000 --- a/src/android/app/src/main/res/drawable/ic_yuzu_icon.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/android/app/src/main/res/drawable/ic_yuzu_splash.png b/src/android/app/src/main/res/drawable/ic_yuzu_splash.png new file mode 100644 index 0000000000..0e43cb9374 Binary files /dev/null and b/src/android/app/src/main/res/drawable/ic_yuzu_splash.png differ diff --git a/src/android/app/src/main/res/drawable/ic_yuzu_title.xml b/src/android/app/src/main/res/drawable/ic_yuzu_title.xml deleted file mode 100644 index a58038a69a..0000000000 --- a/src/android/app/src/main/res/drawable/ic_yuzu_title.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/android/app/src/main/res/drawable/item_release_box.xml b/src/android/app/src/main/res/drawable/item_release_box.xml index 2f2ada1961..0e692713a8 100644 --- a/src/android/app/src/main/res/drawable/item_release_box.xml +++ b/src/android/app/src/main/res/drawable/item_release_box.xml @@ -1,7 +1,7 @@ - + diff --git a/src/android/app/src/main/res/layout-land/dialog_lobby_browser.xml b/src/android/app/src/main/res/layout-land/dialog_lobby_browser.xml new file mode 100644 index 0000000000..88d06d4873 --- /dev/null +++ b/src/android/app/src/main/res/layout-land/dialog_lobby_browser.xml @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/android/app/src/main/res/layout-land/dialog_multiplayer_connect.xml b/src/android/app/src/main/res/layout-land/dialog_multiplayer_connect.xml new file mode 100644 index 0000000000..7a9064f9b9 --- /dev/null +++ b/src/android/app/src/main/res/layout-land/dialog_multiplayer_connect.xml @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/android/app/src/main/res/layout-land/fragment_games.xml b/src/android/app/src/main/res/layout-land/fragment_games.xml index d264f58baf..4d492c6c4b 100644 --- a/src/android/app/src/main/res/layout-land/fragment_games.xml +++ b/src/android/app/src/main/res/layout-land/fragment_games.xml @@ -44,7 +44,12 @@ style="@style/EdenCard" android:layout_width="match_parent" android:layout_height="48dp" + android:background="@android:color/transparent" app:cardCornerRadius="24dp" + app:cardBackgroundColor="@android:color/transparent" + app:cardElevation="0dp" + app:strokeColor="?attr/colorOutline" + app:strokeWidth="1dp" android:padding="4dp" > @@ -103,7 +108,12 @@ style="@style/EdenCard" android:layout_width="42dp" android:layout_height="42dp" + android:background="@android:color/transparent" app:cardCornerRadius="21dp" + app:cardBackgroundColor="@android:color/transparent" + app:cardElevation="0dp" + app:strokeColor="?attr/colorOutline" + app:strokeWidth="1dp" android:padding="8dp" > @@ -127,7 +137,12 @@ style="@style/EdenCard" android:layout_width="42dp" android:layout_height="42dp" + android:background="@android:color/transparent" app:cardCornerRadius="21dp" + app:cardBackgroundColor="@android:color/transparent" + app:cardElevation="0dp" + app:strokeColor="?attr/colorOutline" + app:strokeWidth="1dp" android:padding="8dp" > @@ -151,7 +166,12 @@ style="@style/EdenCard" android:layout_width="42dp" android:layout_height="42dp" + android:background="@android:color/transparent" app:cardCornerRadius="21dp" + app:cardBackgroundColor="@android:color/transparent" + app:cardElevation="0dp" + app:strokeColor="?attr/colorOutline" + app:strokeWidth="1dp" android:padding="8dp" > @@ -220,6 +240,23 @@ android:textColor="?attr/colorOnPrimary" app:backgroundTint="?attr/colorPrimary" app:iconTint="?attr/colorOnPrimary" + app:rippleColor="#99FFFFFF" + /> + + \ No newline at end of file diff --git a/src/android/app/src/main/res/layout-w1000dp/card_installable_icon.xml b/src/android/app/src/main/res/layout-w1000dp/card_installable_icon.xml index 59ee1aad30..6fe4256c49 100644 --- a/src/android/app/src/main/res/layout-w1000dp/card_installable_icon.xml +++ b/src/android/app/src/main/res/layout-w1000dp/card_installable_icon.xml @@ -12,70 +12,83 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" - android:orientation="horizontal" - android:gravity="center_vertical" + android:orientation="vertical" android:paddingHorizontal="24dp" android:paddingVertical="16dp"> - - + android:gravity="center_vertical" + android:orientation="horizontal"> - + - + android:layout_weight="1" + android:orientation="vertical"> + + + + + + -